USPTO Trademark Search — Lookup & Monitoring API | $2.50/1k avatar

USPTO Trademark Search — Lookup & Monitoring API | $2.50/1k

Pricing

from $2.00 / 1,000 trademark records

Go to Apify Store
USPTO Trademark Search — Lookup & Monitoring API | $2.50/1k

USPTO Trademark Search — Lookup & Monitoring API | $2.50/1k

Search US trademarks on USPTO by word mark, owner or goods, or look up serial and registration numbers: status, Nice classes, filing and registration dates, company owner, goods and services. Filter live/dead, class, filing date. No login.

Pricing

from $2.00 / 1,000 trademark records

Rating

0.0

(0)

Developer

Raffy

Raffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does USPTO Trademark Search do?

Search the US trademark register and get every match as a clean row: word mark, serial and registration number, status (live or dead, plus the USPTO status text), Nice classes, goods and services, filing, publication, registration, abandonment and cancellation dates, and the owner when it is a company (name, entity type, state of incorporation, city). It is built for brand owners, trademark attorneys and paralegals, startups naming a product, and IP-monitoring tools that need USPTO trademark data in bulk instead of one search at a time.

Type a word, an owner name or a goods description, or paste serial and registration numbers, and get a USPTO trademark lookup as JSON, CSV or Excel, or from the Apify API. It works as a simple USPTO trademark API: filter by live/dead status, international class and filing date, sort by newest filing, and schedule it for trademark monitoring. The default 20-mark run finished in about 7 seconds.

It reads the public USPTO trademark search (tmsearch.uspto.gov) that any visitor can use, with no login and no API key. Owners who are individuals are redacted, and attorney and correspondent details are never output.

Use cases for this USPTO trademark scraper

  • 🔎 Clearance and name checks. Before you name a product, search the word in your classes (classes: ["9", "42"], status: "live") and see which live marks already exist, who owns them and since when.
  • 🛡️ Trademark monitoring. Schedule a daily run with your brand words, sortBy: "newest" and filedFrom set to last week, and get every new application that contains them.
  • 🏢 Competitor portfolios. Set Search in to owner and type a company name to list its marks, classes and filing activity.
  • ⏳ Status tracking. Look up your own serial or registration numbers and follow markStatus and registrationDate.
  • 📊 Market research. Count new filings in a class or for a word over time (totalMatches, filingDate) to spot trends.
  • 🔁 Automation. Send rows to Google Sheets, Airtable, Supabase or a CRM with n8n, Make or Zapier, or call the Actor from an AI agent: it runs with no input at all.

What data you get from every trademark

One row per trademark application. The Overview table shows serialNumber, registrationNumber, wordmark, markStatus, isLive, filingDate, registrationDate, internationalClasses, ownerName, ownerEntityType, searchTerm, url, status and error.

FieldWhat it is
serialNumberUSPTO serial (application) number, 8 digits.
registrationNumberRegistration number once the mark is registered.
wordmarkThe mark text (empty for pure design marks).
markStatusUSPTO status text, for example REGISTERED AND RENEWED or ABANDONED - NO STATEMENT OF USE FILED.
statusCodeUSPTO numeric status code.
isLive / isRegisteredLive = pending or registered; registered = has a registration.
filingDate, publicationDate, registrationDate, abandonmentDate, cancellationDateDates as YYYY-MM-DD.
firstUseDate, firstUseInCommerceDateClaimed dates of first use.
internationalClassesNice classes as 3-digit strings, e.g. 025.
goodsAndServicesThe goods and services statements, per class.
ownerNameCurrent owner when it is an organisation. Omitted for individuals.
ownerEntityTypeCORPORATION, LIMITED LIABILITY COMPANY, INDIVIDUAL, ...
ownerLegalJurisdictionWhere the owner is organised, e.g. OREGON, USA.
ownerCity, ownerRegionOwner city and state/postcode/country line (organisations only).
ownerRedactedtrue when the owner's name and address were removed.
ownersEvery owner on record (original applicant, later owners) with the same redaction rule.
markType, drawingType, registrationType, filingBasisTrademark or service mark, drawing code, principal or supplemental register, filing basis (1a, 1b, 44e, 66a).
markDescription, disclaimer, translation, designCodesDescription and colour claims, disclaimed words, translation, logo design search codes.
searchTerm, totalMatchesThe term that found the mark and how many marks the search matched in total.
urlThe mark's public TSDR status page.

Result status (tri-state output)

Every row has a status:

  • ok - a trademark record. This is the only billed row type.
  • not_found - the search matched no marks, or a serial/registration number does not exist. Free.
  • error - the source could not be read after retries, or an input entry was unusable; error says why. Free.

How to search USPTO trademarks with this Actor

  1. Open the Actor in Apify Console and click Try for free.
  2. Type one or more Search terms, one per line, and pick Search in (word mark, owner name, goods and services, or all). Or paste Serial or registration numbers.
  3. Optionally narrow it down with Status, International classes, Filed on or after/before and Sort by.
  4. Set Maximum results (start with the default 20) and click Start. Records appear in the dataset in real time.
  5. Open the Output tab or Export the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the API tab (Node.js, Python, curl examples) or add a Schedule.

Input

Every field is optional; the prefilled values already produce a complete run.

FieldTypeDefaultWhen to change it
keywordsarray of strings["nike"]The words to search. Each term is its own search. "exact phrase", nik* and -word work.
searchInwordmark | owner | goods | allwordmarkSearch owner names or goods and services instead of the mark text.
serialNumbersarray of stringsemptyLook up specific serial (8 digits) or registration numbers.
maxItemsinteger20Rows in total; each search term returns at most this many (max 10,000 per term).
statusall | live | deadallOnly live or only dead marks.
classesarray of stringsemptyNice classes 1-45, e.g. ["25", "9"].
filedFrom, filedTodate YYYY-MM-DDemptyFiling date window.
sortByrelevance | newest | oldestrelevancenewest for monitoring new filings.
startUrlsarray of URLsan exampleTSDR status page URLs or tmsearch URLs with a query parameter. Leave the example as is when you use Search terms.

Example input (a monitoring run for new live coffee filings in classes 30 and 43):

{
"keywords": ["coffee"],
"status": "live",
"classes": ["30", "43"],
"filedFrom": "2026-10-01",
"sortBy": "newest",
"maxItems": 100
}

Output

A real row from the default run (trimmed):

{
"url": "https://tsdr.uspto.gov/#caseNumber=75187260&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch",
"status": "ok",
"serialNumber": "75187260",
"wordmark": "NIKE",
"markStatus": "ABANDONED - NO STATEMENT OF USE FILED",
"statusCode": 606,
"isLive": false,
"isRegistered": false,
"filingDate": "1996-10-24",
"publicationDate": "1997-11-04",
"abandonmentDate": "1999-01-28",
"internationalClasses": ["014"],
"goodsAndServices": ["(ABANDONED) IC 014: [ timepieces of all types, namely, stopwatches, radial link watches; jewelry ]."],
"ownerName": "Nike, Inc.",
"ownerEntityType": "CORPORATION",
"ownerLegalJurisdiction": "OREGON, USA",
"ownerCity": "Beaverton",
"ownerRegion": "OREGON 97005, UNITED STATES",
"ownerRedacted": false,
"owners": [{ "name": "Nike, Inc.", "entityType": "CORPORATION", "role": "OWNER AT PUBLICATION", "redacted": false }],
"markType": "TRADEMARK",
"drawingType": "(1) TYPED DRAWING",
"registrationType": "PRINCIPAL",
"filingBasis": "1b",
"searchTerm": "nike",
"totalMatches": 204,
"scrapedAt": "2026-10-19T07:15:43.528Z"
}

When the owner is an individual the row keeps ownerEntityType: "INDIVIDUAL" and ownerRedacted: true, and has no ownerName, ownerCity or ownerRegion. A missing field means the USPTO record has no such value; it is never a guess.

How much does it cost to search USPTO trademarks?

Pay per result: $2.50 per 1,000 trademark records, plus a $0.005 start fee per run. Rows with status not_found or error are free.

EventPriceCharged when
apify-actor-start$0.005Once per run, when it starts.
result$0.0025Each trademark record saved with status ok.
RecordsCost
100$0.26
1,000$2.51
10,000$25.01

The Actor stops gracefully when your run's maximum charge is reached. No proxy is needed and compute is included.

How it compares

Other USPTO trademark Actors in the Store charge $3 to $7 per 1,000 records. This one costs $2.50 per 1,000, combines keyword search, owner search, goods-and-services search and number lookups in one run, and filters by status, class and filing date on the USPTO side, so you only pay for the marks you asked for.

It is not for you if you need the full prosecution history, office action documents, the mark images, or attorney and correspondent contact details (never output).

Integrations, exports and API access

Run it from the Apify API, the JavaScript or Python client, the Apify CLI, or on a Schedule. Connect the dataset to Google Sheets, Airtable, Make, n8n, Zapier, Slack or a webhook. AI agents can call it through the Apify MCP server.

Limitations

  • The USPTO search index returns at most 10,000 marks per search. For more, split the search by class, filing date window or status.
  • Individual owners are redacted (name, city, address). Owners that are trusts, estates, sole proprietorships or of unknown type are treated the same way.
  • The data is what the USPTO search index holds. On 2026-10-19 its newest filings were dated 2026-10-17, so the newest filings and status changes can lag TSDR by a few days.
  • Design-only marks have no wordmark; search them by owner or goods, or by number.
  • The USPTO limits unusually heavy use. The Actor keeps to a few parallel requests; very large monitoring jobs are best split into several scheduled runs.

FAQ

Do I need a USPTO account or API key? No. The Actor uses the public trademark search that any visitor can use. No account, no key.

Is this the USPTO's own API? No. It is an independent tool that reads the public USPTO trademark search and returns plain rows.

How do I monitor new filings for my brand? Put your brand words in Search terms, set Sort by to newest and Filed on or after to the start of your window, and add a daily Schedule.

Why did I get fewer rows than maxItems? The search matched fewer marks, or the run hit your Max total charge. totalMatches shows how many marks the search matched.

Why is ownerName empty on some rows? The owner is an individual (or not clearly an organisation), so the name and address are redacted; ownerRedacted is true and ownerEntityType still tells you the owner type.

What happens if the USPTO changes something? Rows come back with status: error and a reason instead of silently wrong data, and you are not billed for them. Report it in the Issues tab with the run ID.

Can I use this Actor from an AI agent or MCP client? Yes. It runs with no input at all, every row is self-describing (status plus error), and inputs are plain strings.

This Actor extracts only data that the USPTO publishes in its public trademark search. US government trademark records are public; the USPTO asks that heavy users not overload its servers, and the Actor keeps its request rate low. Owner names, cities and addresses are output only for organisations; for individuals (and owners that are not clearly organisations) they are removed, and attorney and correspondent names, emails, phones and addresses are never output. A word mark can itself be a person's name, because that is what was filed. Your results could therefore still contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with applicable law when using the extracted data.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by the United States Patent and Trademark Office. All trademarks belong to their respective owners.