USPTO API: Get trademark status
Gets the current status and prosecution history of one U.S. trademark by name, serial number or registration number. For a name, it picks the newest live matching mark (or the one matching the owner) and lists the other matches.
Unofficial. Not affiliated with or endorsed by USPTO.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Owner optional
owner Optional owner name to disambiguate a name search; for example, Sunbeam Products, Inc.
Sunbeam Products, Inc.
Default
.- Trademark, required
trademark Brand name, 8-digit serial number, or 7-digit registration number; for example, Sunbeam or 90768648.
Sunbeam
Input as JSON
{ "owner": "Sunbeam Products, Inc.", "trademark": "Sunbeam"}Output
{ "status": "Registered. The registration date is used to determine when post-registration maintenance documents are due.", "mark_text": "SUNBEAM", "tsdr_link": "https://tsdr.uspto.gov/#caseNumber=97438443&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch" , "owner_name": "Sunbeam Products, Inc.", "filing_date": "2022-06-01", "status_date": "2022-12-06", "other_matches": [ { "is_live": true, "mark_text": "SUNBEAM", "tsdr_link": "https://tsdr.uspto.gov/#caseNumber=97164409&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch" , "owner_name": "Sunbeam Products, Inc.", "filing_date": "2021-12-09", "serial_number": "97164409", "registration_number": "7116610" }, { "is_live": true, "mark_text": "SUNBEAM", "tsdr_link": "https://tsdr.uspto.gov/#caseNumber=86649780&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch" , "owner_name": "Sunbeam Products, Inc.", "filing_date": "2015-06-03", "serial_number": "86649780", "registration_number": "4877718" }, { "is_live": true, "mark_text": "SUNBEAM", "tsdr_link": "https://tsdr.uspto.gov/#caseNumber=86649823&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch" , "owner_name": "Sunbeam Products, Inc.", "filing_date": "2015-06-03", "serial_number": "86649823", "registration_number": "4877719" } ], "owner_address": "6655 Peachtree Dunwoody Rd., Atlanta, GEORGIA, 30328, UNITED STATES", "serial_number": "97438443", "mark_image_link": "https://tsdrsec.uspto.gov/ts/cd/standardimages/97438443/webcontent" , "publication_date": "2022-09-20", "registration_date": "2022-12-06", "attorney_of_record": "Juhi K. Patel", "goods_and_services": [ { "class": "011", "description": "Portable fire pits and fire tables." } ], "prosecution_history": [ { "date": "2026-10-05", "event": "ASSIGNMENT OF OWNERSHIP NOT UPDATED AUTOMATICALLY" }, { "date": "2026-10-02", "event": "ASSIGNMENT OF OWNERSHIP NOT UPDATED AUTOMATICALLY" }, { "date": "2025-05-23", "event": "TEAS CHANGE OF CORRESPONDENCE RECEIVED" } ], "registration_number": "6918439", "abandonment_or_cancellation_date": null}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"uspto.gov/get_trademark_status","input":{"owner":"Sunbeam Products, Inc.","trademark":"Sunbeam"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "uspto.gov/get_trademark_status" , "input": { "owner": "Sunbeam Products, Inc.", "trademark": "Sunbeam" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "uspto.gov/get_trademark_status" , "input": { "owner": "Sunbeam Products, Inc.", "trademark": "Sunbeam" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run uspto.gov/get_trademark_status# with {"owner":"Sunbeam Products, Inc.","trademark":"Sunbeam"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "trademark" ], "properties": { "owner": { "type": "string", "default": "", "description": "Optional owner name to disambiguate a name search; for example, Sunbeam Products, Inc." }, "trademark": { "type": "string", "description": "Brand name, 8-digit serial number, or 7-digit registration number; for example, Sunbeam or 90768648." } }}Output schema
{ "type": "object", "required": [ "mark_text", "status", "serial_number", "tsdr_link", "goods_and_services", "prosecution_history", "other_matches" ], "properties": { "status": { "type": "string", "description": "Current status in plain words." }, "mark_text": { "type": "string", "description": "Trademark wording." }, "tsdr_link": { "type": "string", "description": "Link to the case in TSDR." }, "owner_name": { "type": "string", "description": "Current owner name; null when unknown." }, "filing_date": { "type": "string", "description": "Application filing date, YYYY-MM-DD; null when unknown." }, "status_date": { "type": "string", "description": "Date of current status, YYYY-MM-DD; null when unknown." }, "other_matches": { "type": "array", "items": { "type": "object", "properties": { "is_live": { "type": "boolean", "description": "Whether the filing is live." }, "mark_text": { "type": "string", "description": "Trademark wording." }, "tsdr_link": { "type": "string", "description": "Link to this case in TSDR." }, "owner_name": { "type": "string", "description": "Owner name; null when unknown." }, "filing_date": { "type": "string", "description": "Filing date, YYYY-MM-DD; null when unknown." }, "serial_number": { "type": "string", "description": "USPTO serial number." }, "registration_number": { "type": "string", "description": "Registration number; null when not registered." } } }, "description": "Other marks matching the searched name and optional owner, ordered by live status then most recent filing." }, "owner_address": { "type": "string", "description": "Current owner mailing address; null when unknown." }, "serial_number": { "type": "string", "description": "USPTO serial number." }, "mark_image_link": { "type": "string", "description": "Link to mark image; null when unavailable." }, "publication_date": { "type": "string", "description": "Publication date, YYYY-MM-DD; null when unknown." }, "registration_date": { "type": "string", "description": "Registration date, YYYY-MM-DD; null when not registered." }, "attorney_of_record": { "type": "string", "description": "Attorney of record; null when none." }, "goods_and_services": { "type": "array", "items": { "type": "object", "properties": { "class": { "type": "string", "description": "International class number; null when not stated." }, "description": { "type": "string", "description": "Goods or services for the class." } } } }, "prosecution_history": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string", "description": "Event date, YYYY-MM-DD." }, "event": { "type": "string", "description": "Prosecution event description." } } } }, "registration_number": { "type": "string", "description": "USPTO registration number; null when not registered." }, "abandonment_or_cancellation_date": { "type": "string", "description": "Abandonment or cancellation date, YYYY-MM-DD; null when none." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
uspto.gov/get_trademark_status- Returns
- mark text, status, owner, dates, goods and services, attorney, prosecution history, image link, TSDR link, other matches
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method uspto.gov/get_trademark_status with the inputs above.
Ask your agent
- What is the current status of the trademark Sunbeam owned by Sunbeam Products, Inc.?
- Check the prosecution history for serial number 90768648
- Look up registration number 4567890 and tell me its owner and goods and services
- Is the brand name Patagonia registered in the USTPO, and who is the attorney of record?
- Find the newest live trademark filing for Zephyrline on uspto.gov and list any other matches with the same name
See more
All USPTO methodsFinds US trademark filings matching a brand name, optionally limited to likely goods or service classes. Exact marks come first, similar marks follow; not a legal clearance opinion.
uspto.gov/search_trademarksSearch WIPO Global Brand Database trademarks by brand name, registering office, status and Nice class in relevance order. Status follows the registering office's reported status; missing record details are null.
branddb.wipo.int/search_trademarksGets one public patent or published application by number, title, or Google Patents link, with claims, citations, family and classifications.
patents.google.com/get_patentFinds Google Patents about an invention. Optional filters: inventor, assignee, country, filing date and publication stage. Legal status is the site's estimate.
patents.google.com/search_patentsFinds U.S. consumer product recalls matching a product type or brand, newest first, with hazards, remedies, incidents, sale details and photos when published.
cpsc.gov/search_recallsFinds Australian businesses on ABN Lookup by name or ABN. Returns ABN status, GST registration, business and trading names, and location.
abr.business.gov.au/search_businessesGets current MTA line statuses and active alerts for subway, bus, Long Island Rail Road, or Metro-North lines, optionally for one line. Bus and rail status reflects published alerts; no alert means Good service.
mta.info/get_service_statusSearches Trader Joe's public product catalogue by name or keywords, optionally within a main category. Prices are website reference prices and may vary by store.
traderjoes.com/search_products