> ## Documentation Index
> Fetch the complete documentation index at: https://docs.case.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Trademark Search

> Look up US trademark status and details via the USPTO TSDR system

Look up US trademark applications and registrations via the [USPTO Trademark Status & Document Retrieval (TSDR)](https://tsdr.uspto.gov/) system. Supports lookup by serial number or registration number. Returns mark text, owner, goods/services, Nice classes, filing/registration dates, attorney of record, and mark images.

## Look up a trademark

```bash title="Endpoint" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
POST /legal/v1/trademark-search
```

<CodeGroup>
  ```bash title="cURL" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  curl -X POST https://api.case.dev/legal/v1/trademark-search \
    -H "Authorization: Bearer $CASEDEV_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "serialNumber": "97123456"
    }'
  ```

  ```bash title="CLI" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  casedev legal:v1 trademark-search \
    --serial-number 97123456
  ```

  ```typescript title="Typescript" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  // Look up by serial number
  const result = await client.legal.trademarkSearch({
    serialNumber: '97123456',
  });

  console.log(`${result.markText} — ${result.status}`);
  console.log(`Owner: ${result.owner?.name}`);
  console.log(`Classes: ${result.niceClasses.join(', ')}`);

  for (const gs of result.goodsAndServices) {
    console.log(`  Class ${gs.classNumber}: ${gs.description}`);
  }
  ```

  ```python title="Python" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  # Look up by serial number
  result = client.legal.v1.trademark_search(
      serial_number='97123456'
  )

  print(f'{result.mark_text} — {result.status}')
  print(f'Owner: {result.owner.name}')
  print(f'Classes: {", ".join(str(c) for c in result.nice_classes)}')

  for gs in result.goods_and_services:
      print(f'  Class {gs.class_number}: {gs.description}')
  ```

  ```go title="Go" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  result, _ := client.Legal.V1.TrademarkSearch(ctx, casedev.LegalV1TrademarkSearchParams{
      SerialNumber: casedev.F("97123456"),
  })

  fmt.Printf("%s — %s\n", result.MarkText, result.Status)
  fmt.Printf("Owner: %s\n", result.Owner.Name)

  for _, gs := range result.GoodsAndServices {
      fmt.Printf("  Class %s: %s\n", gs.ClassNumber, gs.Description)
  }
  ```
</CodeGroup>

You can also look up by registration number:

<CodeGroup>
  ```bash title="cURL" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  curl -X POST https://api.case.dev/legal/v1/trademark-search \
    -H "Authorization: Bearer $CASEDEV_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"registrationNumber": "6789012"}'
  ```

  ```bash title="CLI" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  casedev legal:v1 trademark-search \
    --registration-number 6789012
  ```

  ```typescript title="Typescript" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  const result = await client.legal.trademarkSearch({
    registrationNumber: '6789012',
  });
  ```

  ```python title="Python" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  result = client.legal.v1.trademark_search(
      registration_number='6789012'
  )
  ```

  ```go title="Go" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
  result, _ := client.Legal.V1.TrademarkSearch(ctx, casedev.LegalV1TrademarkSearchParams{
      RegistrationNumber: casedev.F("6789012"),
  })
  ```
</CodeGroup>

### Key parameters

| Parameter            | Type   | Description                                |
| -------------------- | ------ | ------------------------------------------ |
| `serialNumber`       | string | USPTO serial number (e.g. "97123456")      |
| `registrationNumber` | string | USPTO registration number (e.g. "6789012") |

<Note>
  Provide either `serialNumber` or `registrationNumber`. If both are provided, `serialNumber` takes precedence.
</Note>

### Response fields

| Field                | Type           | Description                                           |
| -------------------- | -------------- | ----------------------------------------------------- |
| `serialNumber`       | string         | USPTO serial number                                   |
| `registrationNumber` | string \| null | Registration number (if registered)                   |
| `markText`           | string \| null | Text of the trademark                                 |
| `markType`           | string \| null | Type (Standard Character Mark, Design Mark, etc.)     |
| `status`             | string \| null | Current status (Registered, Pending, Abandoned, etc.) |
| `statusDate`         | string \| null | Date of most recent status update                     |
| `filingDate`         | string \| null | Filing date                                           |
| `registrationDate`   | string \| null | Registration date                                     |
| `owner`              | object \| null | Owner name, address, and entity type                  |
| `attorney`           | string \| null | Attorney of record                                    |
| `goodsAndServices`   | array          | Goods/services with class numbers                     |
| `niceClasses`        | number\[]      | Nice classification class numbers                     |
| `imageUrl`           | string \| null | URL to the mark image                                 |
| `usptoUrl`           | string         | Canonical TSDR link                                   |

See the [API reference](/api-reference/legal/look-up-uspto-trademark-status) for the full response schema.
