---
title: "USPTO Trademarks Search"
method: POST
path: "/us/uspto/trademarks-search/v1"
tags: ["United States", "United States Patent and Trademark Office"]
---

# USPTO Trademarks Search

`POST /us/uspto/trademarks-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/us/uspto/trademarks-search/v1`
- Auth: HTTP bearer

Search US federal trademark applications and registrations at the USPTO (every live mark and every mark filed since 2016) by any words of the mark, the owner's name or the goods and services, narrowed by `owner` (the full name), `status` (`live`, `dead`, `registered`, `pending`), `international_class` (Nice class 1-45), `owner_country`, `registration_number` and the filing date (`from_date`/`to_date`). Each result carries the mark, its status and dates, classes, goods and services, filing basis, owners, attorney and whether an assignment was recorded. Served by Croma from its copy of the register (`as_of` says how current the data is).

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional words to find in the mark, the owner's name or the goods and services, e.g. `coffee`, `nintendo`. Every word must appear.
  - `owner` string: Optional owner's full name as the register records it, e.g. `Nintendo of America Inc.`. Case and punctuation do not matter, but the whole name must match; use `query` for part of a name.
  - `status` '' | 'live' | 'dead' | 'registered' | 'pending': Optional status: `live` (a pending application or an active registration), `dead` (abandoned, cancelled or expired), `registered` (live and registered) or `pending` (live and not yet registered).
  - `international_class` string: Optional international (Nice) class of the goods or services, 1 to 45, e.g. `9` (software, electronics), `25` (clothing), `35` (business services). `A`, `B` and `200` are the USPTO's classes for certification and collective membership marks.
  - `owner_country` string: Optional country of the owner's address as the register writes it, e.g. `UNITED STATES`, `COLOMBIA`, `JAPAN`, `REPUBLIC OF KOREA`.
  - `registration_number` string: Optional registration number the USPTO issued when the mark registered, e.g. `7726306`.
  - `from_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `to_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-50).

## Response `200`

Successful response

- UsptoTrademarksSearchResponse
  - `data` UsptoTrademarksSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `owner` string, nullable, required
    - `status` string, nullable, required
    - `international_class` string, nullable, required
    - `owner_country` string, nullable, required
    - `registration_number` string, nullable, required
    - `from_date` string, nullable, required
    - `to_date` string, nullable, required
    - `total` number, required: Matches, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required
    - `results` object[], required
      - `serial_number` string, required: The eight-digit serial number the USPTO assigned when the application was filed, e.g. "79392077". It identifies the mark for its whole life.
      - `registration_number` string, nullable, required: The registration number, once the mark registered, e.g. "7726306". Null while the application is pending, or when it never registered.
      - `mark` string, nullable, required: The words of the mark, e.g. "GAME & WARIO". Null for a design-only mark with no words.
      - `mark_types` string[], required: What the mark identifies: "TRADEMARK" (goods), "SERVICE MARK" (services), "COLLECTIVE MEMBERSHIP MARK", "CERTIFICATION MARK" and so on; a mark can be several.
      - `drawing_type` string, nullable, required: How the mark is drawn, as the register describes it, e.g. "(4) STANDARD CHARACTER MARK", "(3) DESIGN PLUS WORDS, LETTERS, AND/OR NUMBERS".
      - `status_code` number, nullable, required: The USPTO's status code, e.g. 700 (registered), 602 (abandoned), 686 (published for opposition).
      - `status` string, nullable, required: The status as the USPTO words it, e.g. "REGISTERED", "ABANDONED - FAILURE TO RESPOND OR LATE RESPONSE".
      - `is_live` boolean, required: True while the application is pending or the registration is in force; false once abandoned, cancelled or expired.
      - `is_registered` boolean, required: True once the mark registered (and while the registration stands).
      - `filing_date` string, nullable, required: `yyyy-mm-dd` the application was filed; what `from_date` and `to_date` filter on.
      - `registration_date` string, nullable, required: `yyyy-mm-dd` the mark registered.
      - `publication_date` string, nullable, required: `yyyy-mm-dd` the mark was published for opposition.
      - `abandonment_date` string, nullable, required: `yyyy-mm-dd` the application was abandoned.
      - `cancellation_date` string, nullable, required: `yyyy-mm-dd` the registration was cancelled.
      - `renewal_date` string, nullable, required: `yyyy-mm-dd` of the last renewal of the registration.
      - `first_use_date` string, nullable, required: `yyyy-mm-dd` the owner states the mark was first used anywhere.
      - `first_use_in_commerce_date` string, nullable, required: `yyyy-mm-dd` the owner states the mark was first used in US commerce.
      - `international_classes` string[], required: The international (Nice) classes of the goods and services, as three digits, e.g. ["009", "028"]. "A", "B" and "200" are the USPTO's own classes for certification and collective membership marks.
      - `goods_and_services` string[], required: The goods and services the mark covers, one entry per class, e.g. "IC 009: Recorded video game programs; ...". Shortened when the whole list is very long; see `goods_and_services_truncated`.
      - `goods_and_services_truncated` boolean, required: True for the rare mark whose goods and services run past 100,000 characters: `goods_and_services` then carries the start of each class, and `goods_and_services_url` the whole list.
      - `goods_and_services_url` string, nullable, required: The whole goods and services list as a JSON array, when `goods_and_services` is shortened. Null otherwise.
      - `filing_basis` string[], required: The current legal basis of the application, as the USPTO codes it: "1a" (use in commerce), "1b" (intent to use), "44d", "44e" (a foreign application or registration), "66a" (an international registration under the Madrid Protocol).
      - `register` string, nullable, required: "PRINCIPAL" or "SUPPLEMENTAL", the register the mark is on or applied for.
      - `owner_names` string[], required: The owners as the register records them, e.g. ["Nintendo of America Inc."].
      - `owner_entity_type` string, nullable, required: The kind of owner, e.g. "CORPORATION", "LIMITED LIABILITY COMPANY", "INDIVIDUAL".
      - `owner_citizenship` string, nullable, required: Where the owner is organized or a citizen, as the register writes it, e.g. "WASHINGTON, USA", "TURKEY".
      - `owner_city` string, nullable, required: The city of the owner's address, when the register states it.
      - `owner_state` string, nullable, required: The US state of the owner's address, e.g. "North Carolina". Null outside the US.
      - `owner_country` string, nullable, required: The country of the owner's address, as the register writes it, e.g. "UNITED STATES", "JAPAN".
      - `attorney_name` string, nullable, required: The attorney of record, when there is one.
      - `has_assignment` boolean, required: True when an assignment (a transfer of ownership or a security interest) has been recorded against the mark.
      - `updated_at` string, nullable, required: When the USPTO last updated the record, ISO 8601.
      - `official_url` string, required: The mark's page at the USPTO's Trademark Status and Document Retrieval system.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
