US trademark search
US trademark applications and registrations from the USPTO: search the word mark, owner, goods and services or mark description, and filter by Nice class, live or dead status and filing or registration date ranges, sorted by relevance, filing date or registration date. Each mark has serial and registration numbers, word mark, live and registered flags, status, mark type, register, drawing type, filing, registration, publication, abandonment and renewal dates, first use dates, Nice and US classes, goods and services, owner (name, type, citizenship; city and address for business owners), attorney, filing basis, design codes, disclaimer, translation, proceedings, an image link and the status page. Give at least one of q, owner, goods or description. Pass next_page back as page; null on the last page (up to 10,000 matches).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
q | string | Words in the word mark. Example: apple |
owner | string | Words in the owner's name. |
goods | string | Words in the goods and services. |
description | string | Words in the mark description (design marks). |
class | string | Comma-separated Nice classes, 1-45. Example: 9 |
status | live | dead | live or dead marks only. Example: live |
filed_from | string | Filed on or after (YYYY-MM-DD). |
filed_to | string | Filed on or before (YYYY-MM-DD). |
registered_from | string | Registered on or after (YYYY-MM-DD). |
registered_to | string | Registered on or before (YYYY-MM-DD). |
sort | relevance | filed | -filed | registered | -registered | relevance (default), filed (newest first), -filed, registered (newest first), -registered. |
limit | integer | Marks per page, 1-100. Example: 25 |
page | integer | Page number, starting at 1. Pass next_page back as page; it is null on the last page. Example: 1 |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/trademarks/v1/search?q=apple" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/trademarks/v1/search",
params={"q": "apple"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/trademarks/v1/search");
url.searchParams.set("q", "apple");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).