---
title: "US Trademark Registry & Analytics API"
slug: search-trademark-records
url: https://apyhub.com/dosvak/service/search-trademark-records
provider: Dosvak LLC
categories: [Marketing, SEO]
tags: [trademark search, uspto trademark, brand clearance, trademark lookup, trademark status, trademark assignment search, trademark monitoring, mark clearance tool, ip due diligence]
auth: api_key
version: 0.1.0
service_type: sync
endpoints: 8
atoms: 100
mcp: true
---

# US Trademark Registry & Analytics API

Search and verify US trademarks by name. Returns status, jurisdiction, ownership transfer history, and portfolio analytics for brand clearance.

## Endpoints

| Method | URL | Description | Atoms |
| --- | --- | --- | --- |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search` | What it does Searches US trademark records using a text query and returns a JSON object containing… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text` | What it does Looks up US trademark records by the trademark text in the path and returns matching r… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id` | What it does Retrieves the full US trademark record for the specified recordid and returns the trad… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown` | What it does Returns a US trademark status breakdown for the requested result limit. The response i… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions` | What it does Returns a breakdown of U.S. trademark jurisdictions, with a count of matching jurisdic… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources` | What it does Returns the US trademark source inventory as a JSON object, including a total count, a… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline` | What it does Returns a US trademark update timeline for the requested number of days. The response… | 100 |
| GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search` | What it does Searches US trademark assignment records using a required query string and optional da… | 100 |

## Endpoint reference

### Search US Trademarks

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Limit Default: `20`. Example: `50`. |
| `query` | query | string | yes | Query Example: `TESLA`. |
| `jurisdiction` | query | string | no | Jurisdiction Example: `US`. |

#### Quickstart

Search US trademarks by query term, with the jurisdiction and limit passed as query parameters.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search?query=TESLA&limit=20&jurisdiction=US" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` as an integer, `query` as a string, `results` as an array of trademark summary objects, and `jurisdiction` as a string or `null`. Each result includes `source`, `status`, `mark_text`, `updated_at`, and `jurisdiction`; `attribution` is an array of attribution objects with `url`, `notice`, `source`, `dataset`, and `license`.

```json
{
  "count": 1,
  "query": "TESLA",
  "results": [
    {
      "source": "uspto",
      "status": "registered",
      "mark_text": "TESLA",
      "updated_at": "2024-01-15T12:00:00Z",
      "jurisdiction": "US"
    }
  ],
  "attribution": [],
  "jurisdiction": "US"
}
```

### Lookup US Trademark

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Limit Default: `25`. Example: `10`. |
| `mark_text` | path | string | yes | Mark Text Example: `TESLA`. |
| `jurisdiction` | query | string | no | Jurisdiction Example: `US`. |

#### Quickstart

Search for a trademark by its mark text. Replace `TESLA` in the path if you want to try a different mark.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text?limit=25&jurisdiction=US" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` as an integer, `results` as an array of trademark records, `mark_text` as a string, `attribution` as an array of attribution objects, and `jurisdiction` as a string or null.

```json
{
  "count": 1,
  "results": [
    {
      "id": 123,
      "source": "uspto",
      "status": "LIVE",
      "mark_text": "TESLA",
      "updated_at": "2026-08-04T12:00:00Z",
      "jurisdiction": "US",
      "normalized_mark": "TESLA"
    }
  ],
  "mark_text": "TESLA",
  "attribution": [],
  "jurisdiction": "US"
}
```

### Get US Trademark Details

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `record_id` | path | integer | yes | Record Id Example: `3`. |

#### Quickstart

Fetch a trademark record by its record ID.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with trademark details from the `TrademarkRecord` shape, plus an optional `attribution` array. Top-level fields can include `id`, `source`, `status`, `mark_text`, `updated_at`, `jurisdiction`, and `normalized_mark`, and `attribution` contains objects with `url`, `notice`, `source`, `dataset`, and `license`.

```json
{
  "id": 3,
  "source": "uspto",
  "status": "registered",
  "mark_text": "ACME",
  "updated_at": "2024-01-15T10:30:00Z",
  "jurisdiction": "US",
  "normalized_mark": "ACME",
  "attribution": [
    {
      "url": "https://www.uspto.gov/",
      "notice": "Data sourced from USPTO records.",
      "source": "USPTO",
      "dataset": "Trademark records",
      "license": "Public domain"
    }
  ]
}
```

### Get US Trademark Status Breakdown

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Limit Default: `25`. |

#### Quickstart

Fetch the trademark status breakdown with the default limit.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown?limit=25" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` as an integer, `results` as an array of status breakdown objects, and `attribution` as an array of attribution objects.

```json
{
  "count": 0,
  "results": [
    {
      "status": "active",
      "records": 0
    }
  ],
  "attribution": [
    {
      "url": "https://example.com",
      "notice": "Example notice",
      "source": "Example source",
      "dataset": "Example dataset",
      "license": "Example license"
    }
  ]
}
```

### Get US Trademark Jurisdiction Breakdown

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Limit Default: `25`. |

#### Quickstart

Fetch the trademark jurisdiction breakdown, optionally limiting how many results are returned.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions?limit=25" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with these top-level fields: `count` as an integer, `results` as an array of objects, and `attribution` as an array of attribution objects.

Each item in `results` includes `records` (integer) and `jurisdiction` (string). Each item in `attribution` includes `url`, `notice`, `source`, `dataset`, and `license`.

```json
{
  "count": 2,
  "results": [
    {
      "records": 120,
      "jurisdiction": "US"
    }
  ],
  "attribution": [
    {
      "url": "https://example.com",
      "notice": "Data provided by example source",
      "source": "Example Source",
      "dataset": "Trademark Analytics",
      "license": "CC BY 4.0"
    }
  ]
}
```

### Get US Trademark Source Inventory

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources` · 100 atoms · accepts `application/json` · returns `application/json`

#### Quickstart

Fetch the trademark source breakdown.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` as an integer, `results` as an array of objects, and `attribution` as an array of attribution objects.

- `count`: total number of source records returned
- `results[]`: each item includes `source` (string) and `records` (integer)
- `attribution[]`: each item may include `url`, `notice`, `source`, `dataset`, and `license`

```json
{
  "count": 2,
  "results": [
    { "source": "USPTO", "records": 1200 },
    { "source": "WIPO", "records": 340 }
  ],
  "attribution": [
    {
      "url": "https://example.com/dataset",
      "notice": "Data provided for analytics purposes",
      "source": "USPTO",
      "dataset": "Trademark dataset",
      "license": "CC BY 4.0"
    }
  ]
}
```

### Get US Trademark Update Timeline

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `days` | query | integer | no | Days Default: `30`. Example: `30`. |

#### Quickstart

Get the trademark update timeline for the default 30 days.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline?days=30" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `days` and `count` integers, a `results` array of objects, and an `attribution` array of objects. Each `results` item includes `records` as an integer and `update_date` as a date string; each `attribution` item includes `url`, `notice`, `source`, `dataset`, and `license`.

```json
{
  "days": 30,
  "count": 2,
  "results": [
    {
      "records": 12,
      "update_date": "2024-05-01"
    }
  ],
  "attribution": [
    {
      "url": "https://example.com",
      "notice": "Data source notice",
      "source": "Example Source",
      "dataset": "Trademark Updates",
      "license": "Example License"
    }
  ]
}
```

### Search US Trademark Assignments

`GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search` · 100 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Limit Default: `100`. |
| `query` | query | string | yes | Query Example: `Nike`. |
| `end_date` | query | string | no | End Date |
| `start_date` | query | string | no | Start Date |

#### Quickstart

Search trademark assignment records for a query term like `Nike`.

```bash
curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search?query=Nike" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `count` integer, `query` string, `status` string, `results` array of trademark assignment records, and optional `start_date`, `end_date`, and `attribution` fields.

```json
{
  "count": 1,
  "query": "Nike",
  "status": "ok",
  "results": [
    {
      "reel_frame": "9043/0011",
      "source_file": "assignments.pdf",
      "trademark_id": "1234567",
      "assignee_name": "Nike, Inc.",
      "assignor_name": "ABC Holdings LLC",
      "recorded_date": "2024-01-15",
      "conveyance_text": "Assignment of trademark rights",
      "registration_number": "7654321"
    }
  ]
}
```

## About

## What it does
US Trademark Intelligence covers trademark search, record lookup, and portfolio-level analytics over normalized US trademark data, plus recorded ownership-transfer history for marks.

Search trademark records by text with `/trademarks/search` (optional `jurisdiction` filter), or resolve an exact mark with `/trademarks/by-mark/{mark_text}` when you already know the spelling you're checking. Once you have a specific record, `/trademarks/{record_id}` returns the full entry: `mark_text`, `status`, `jurisdiction`, `source`, `normalized_mark`, and `updated_at`. These three endpoints are the core of any brand clearance, name-check, or trademark-monitoring workflow.

For reporting and portfolio-state monitoring, four analytics endpoints return pre-aggregated counts: `/trademarks/analytics/status-breakdown` (records by status — registered, pending, abandoned), `/trademarks/analytics/jurisdictions` (records by country/registry), `/trademarks/analytics/sources` (records by ingestion source), and `/trademarks/analytics/update-timeline` (update volume over a configurable day window, useful for tracking refresh recency).

`/assignments/trademark/search` extends the API into ownership history: search recorded trademark assignment transfers by name, company, or registration number, with optional recorded-date filtering. Each result includes `assignee_name`, `assignor_name`, `recorded_date`, `conveyance_text`, and `reel_frame`, which supports due diligence, M&A research, and compliance workflows that need to trace who currently holds rights to a mark.

Every response includes `attribution` entries with source and licensing details so you can trace records back to their dataset or surface provenance in your own product.

## Usage

Base URL: `https://api.eu.apyhub.com` (default region — see
`GET https://apyhub.com/api/public/regions` for the rest).

Authenticate with an ApyHub API key in the `apy-token` header.
Full docs and a live playground: https://apyhub.com/dosvak/service/search-trademark-records
