USPTO Trademark API | Trademark Lookup & Watch, $1/1K avatar

USPTO Trademark API | Trademark Lookup & Watch, $1/1K

Pricing

from $0.80 / 1,000 trademark results

Go to Apify Store
USPTO Trademark API | Trademark Lookup & Watch, $1/1K

USPTO Trademark API | Trademark Lookup & Watch, $1/1K

Extract US trademark data from USPTO at $1.00 per 1,000 records: trademark lookup by mark, owner, serial or registration number, with class, status and filing-date filters, and a daily watch of new trademark filings and status changes. Owner, attorney, goods, dates.

Pricing

from $0.80 / 1,000 trademark results

Rating

0.0

(0)

Developer

Aurelix

Aurelix

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Security

Limited permissions

Share

What is USPTO Trademark API?

Search US trademarks by mark, owner or number and watch new USPTO filings, with owner, attorney and goods, for $1.00 per 1,000 records, no login.

For trademark attorneys, brand-protection teams and sellers. Straight from USPTO's public Trademark Search; a daily watch returns only new filings and status changes.

USPTO Trademark API: example output from a real run

SourceUSPTO's public Trademark Search (tmsearch.uspto.gov), the register behind the official search site: about 13 million US applications and registrations, new filings about one day after filing
Search byMark words, exact mark, similar spelling or sound, owner name, serial or registration number or TSDR link; up to 100 searches per run
FiltersNice classes 1 to 45, live or dead, filed in the last N days or a date range, words in the goods and services
Output48 fields per record incl. owner, address, attorney, goods and services, all key dates, image and TSDR links; JSON, CSV, Excel, API
AutomateOnly new or changed since last run (trademark watch), Slack/webhook digest, schedules, Zapier, Make, n8n, MCP for AI agents
Price$1.00 per 1,000 records ($0.80 per 1,000 records on paid Apify plans)
Login neededNo

Daily monitor: only what's new, every morning

Set it once, get only the new records every morning. With Only new or changed since last run on, the first run returns the current matches (up to your caps) and sets the baseline; each later run returns only filings and status changes since the previous run, so a quiet day costs the $0.003 start fee.

{
"marks": [
"apify"
],
"matchMode": "similar",
"classes": [
"9",
"42"
],
"filedWithinDays": 7,
"incremental": true,
"stateKey": "watch-apify"
}
  1. Paste this input into the Input tab (JSON view) and click Save as a new task; it appears under Saved tasks.
  2. Open the task from Saved tasks and click Schedule.
  3. Choose Daily, pick the hour, and save.

Cost example: one mark in two classes with similar matching, about 2 new or changed filings a day ≈ $0.15/month on the free plan ($0.14 on paid plans): one run a day for 30 days, start fee included. The first run returns everything that matches, so it costs more.

Add a Slack incoming-webhook URL in slackWebhookUrl (or any URL in webhookUrl) to get a short digest of each run's new records; nothing is sent when a run finds nothing.

Why USPTO Trademark API users pick this one

  • Cheaper than the leading tools. $1.00 per 1,000 records, $0.80 on paid plans.
  • Full records, not just status. Owner, address, attorney, goods and services and every key date.
  • Trademark watch built in. Only new filings and status changes since the last run.
  • Five ways to search. Words, exact, similar, owner, serial or registration number.
  • No USPTO key or login. Public Trademark Search, retries, clear status messages.

Get started in 3 steps

  1. Type marks, owner names or serial/registration numbers, one per line; optionally pick Nice classes, live or dead, a filing-date window and how marks match (all words, exact or similar).
  2. For a trademark watch, turn on 'Only new or changed since last run', set 'Filed in the last N days' (e.g. 7) and add a Slack or webhook URL; leave the searches empty to get every new filing in your classes.
  3. Click Start, then download JSON, CSV or Excel, or schedule it daily and send new filings to Slack, Google Sheets, your docketing tool, Zapier, Make or n8n.

▶ Try it with the example input

The form opens with an example input already filled in.

How much does it cost to search USPTO trademarks?

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

RecordsFree planPaid plans (Bronze, Silver, Gold)
100$0.10$0.083
1,000$1.00$0.80
10,000$10.00$8.00

Totals include the $0.003 start fee per run, rounded to the cent (amounts under $0.10 to four decimals). Apify's free plan includes $5 of credit a month, enough for about 5,000 records.

Records outside your filters, records an earlier run already returned (with 'Only new or changed since last run'), and searches that failed because USPTO did not answer are not charged. The optional no-match row is charged like a record.

Billing events

EventFree planPaid plans (Bronze, Silver, Gold)
trademark-result$1.00 per 1,000 records$0.80 per 1,000 records
apify-actor-start$0.003 per run$0.003 per run

Benchmarks: how we compare

TestInputResultRun time
Prefilled form'star wars', 20 per search20 records of 286 matching3 s
Lookups2 serial/registration numbers + 'star wars' live in class 257 records2 s
New filings, 7 daysno searches, 10,000 records10,000 of 12,471 filed in the window90 s
Watch, day 152 marks, similar spelling and sound, class 9, filed in 3 days3 initial matches, baseline set6 s
Watch, day 2same input and memory0 new, nothing charged but the start fee5 s
Owner watch, day 2owner Lucasfilm, class 250 new, 181 known4 s
Worst empty run100 made-up marks, similar mode, no filters0 records, all 100 searched9 s

Measured on the Apify cloud at 128 MB, one run per row. A run that gets few records while USPTO answers slowly stops by its free-time cap (40 s plus 5 s per record) and names the searches it did not run.

What data you get

USPTO Trademark API searches the US trademark register at the USPTO by mark text, owner, serial number or registration number and returns one clean record per application or registration: the mark, serial and registration numbers, live or dead status with USPTO's status text, filing, publication, registration, abandonment and renewal dates, Nice classes, the full goods and services text, the current owner with legal form, place of organization and address, earlier owners, the attorney of record, filing basis, and links to the mark image and the TSDR status page. Filter by Nice class, live or dead, filing date and words in the goods and services. Turn on 'Only new or changed since last run' and schedule it daily for a trademark watch: new applications that match or sound like your marks, a competitor's new filings, every new filing in your classes, and status changes such as publication for opposition.

  • search, search_type (mark, owner, serial, registration, filings), match_found, change_type (watch: initial on the first run, then new or status_changed)
  • serial_number, registration_number, mark, mark_type, drawing_type, standard_characters, register
  • status (live or dead), status_code, status_description, registered
  • filing_date, registration_date, published_for_opposition_date, abandoned_date, cancelled_date, renewal_date, first_use_date, first_use_in_commerce_date, priority_date
  • international_classes, goods_and_services (per class, as USPTO shows it), filing_basis, disclaimer, translation, mark_description, design_codes
  • owner_name, owner_legal_form, owner_place_of_organization, owner_entity_type, owner_citizenship, owner_city, owner_address, owner_dba, owner_role, previous_owners, attorney, assignment_recorded
  • image_url (mark image), tsdr_url (USPTO status page), uspto_updated_at, source_url, scraped_at
markserial_numberstatus_descriptionfiling_dateinternational_classesowner_name
STAR WARS85170658CANCELLED - SECTION 82010-11-05["032"]Lucasfilm LTD. LLC
STAR WARS77242000REGISTERED AND RENEWED2007-07-30["016", "025", "041"]Lucasfilm Ltd. LLC
STAR WARS77066524REGISTERED AND RENEWED2006-12-18["028"]Lucasfilm Entertainment Company Ltd. LLC
STAR WARS73502014CANCELLED - SECTION 81984-10-01["016"]LUCASFILM LTD.
STAR WARS73465874CANCELLED - SECTION 81984-02-15["021"]Lucasfilm Ltd.

One full record record, exactly as a real run returned it (long text and lists shortened here):

{
"search": "star wars",
"search_type": "mark",
"match_found": true,
"serial_number": "85170658",
"registration_number": "4286500",
"mark": "STAR WARS",
"mark_type": "TRADEMARK",
"drawing_type": "STANDARD CHARACTER MARK",
"standard_characters": true,
"status": "dead",
"status_code": 710,
"status_description": "CANCELLED - SECTION 8",
"registered": false,
"filing_date": "2010-11-05",
"registration_date": "2013-02-05",
"published_for_opposition_date": "2011-03-29",
"abandoned_date": null,
"cancelled_date": "2023-08-18",
"renewal_date": null,
"first_use_date": "2012-02-28",
"first_use_in_commerce_date": "2012-02-28",
"priority_date": null,
"international_classes": [
"032"
],
"goods_and_services": [
"(CANCELLED) IC 032: [ Soft drinks, colas, sports drinks, sports drinks, namely, energy drinks ]."
],
"owner_name": "Lucasfilm LTD. LLC",
"owner_legal_form": "LIMITED LIABILITY COMPANY",
"owner_place_of_organization": "CALIFORNIA, USA",
"owner_entity_type": "LIMITED LIABILITY COMPANY",
"owner_citizenship": "CALIFORNIA, USA",
"owner_city": "San Francisco",
"owner_address": "IP Department - Trademark Group, One Letterman Drive, Bldg. B, San Francisco, CALIFORNIA 94129, UNITED STATES",
"owner_dba": null,
"owner_role": "SUBSEQUENT OWNER AFTER REGISTRATION",
"previous_owners": [
"Lucasfilm Ltd."
],
"attorney": "Charles Steinberg",
"filing_basis": [
"1a"
],
"register": "PRINCIPAL",
"disclaimer": null,
"translation": null,
"mark_description": null,
"design_codes": [],
"assignment_recorded": false,
"image_url": "https://tsdr.uspto.gov/img/85170658/large",
"tsdr_url": "https://tsdr.uspto.gov/#caseNumber=85170658&caseType=SERIAL_NO&searchType=statusSearch",
"uspto_updated_at": "2025-11-07T22:18:43Z",
"change_type": null,
"source_url": "https://tsdr.uspto.gov/#caseNumber=85170658&caseType=SERIAL_NO&searchType=statusSearch",
"scraped_at": "2026-11-07T17:02:39Z"
}

Use cases

  • Trademark attorneys and paralegals running clearance searches and watching clients' marks for confusingly similar new filings
  • Brand-protection teams tracking a competitor's new applications and abandoned marks by owner name
  • Print-on-demand and Amazon sellers checking whether a phrase is a live trademark in their class before listing
  • Law-firm business development reviewing new filings in a class, with the owner and whether an attorney is listed
  • AI agents and apps that need structured US trademark records by name, owner or number

Use-case recipes

Clearance check before you file

For founders, sellers and paralegals. Put the candidate names in 'Marks', choose 'Live only' and your classes, and turn on 'Add a row for searches with no match'. Run it once with 'All words' and once with 'Similar spelling and sound'; any live record in your class with the same words deserves a closer look by an attorney.

{
"marks": [
"glow ritual",
"glowritual"
],
"classes": [
"3"
],
"status": "live",
"matchMode": "similar",
"includeNoMatchRows": true,
"maxResultsPerSearch": 50
}

Watch a competitor's new filings

For brand and product teams. Put the competitor in 'Owners', turn on 'Only new or changed since last run' and schedule it weekly: you get each new application with its goods and services, a hint of products to come, plus status changes such as abandonment.

{
"owners": [
"Patagonia"
],
"incremental": true,
"stateKey": "patagonia-portfolio",
"maxResultsPerSearch": 2000,
"maxResults": 2000
}

Every new filing in your classes

For law-firm business development and market watchers. Leave the searches empty, pick the classes, set 'Filed in the last N days' = 2 and turn on only-new; each morning you get yesterday's applications with owner, address and attorney (empty attorney = filed without one).

{
"classes": [
"9",
"42"
],
"filedWithinDays": 2,
"incremental": true,
"stateKey": "new-9-42",
"maxResultsPerSearch": 3000,
"maxResults": 3000
}

Input

FieldTypeWhat it doesDefault
marks (Marks (words in the trademark))arrayOne trademark text per line, e.g. 'star wars' or 'nike air'.
maxResultsPerSearch (Max records per search)integerStop each mark, owner or new-filings search after this many records.100
owners (Owners (applicant or registrant))arrayOwner names, one per line, e.g. 'Nike' or 'Apple Inc.'.
numbers (Serial or registration numbers)arraySerial numbers (8 digits, e.g. 97087321), registration numbers (up to 7 digits, e.g. 6977371 or Reg.
classes (Nice classes)arrayKeep marks in at least one of these international (Nice) classes, 1 to 45, e.g. '25' (clothing) or '9' (software...
status (Status)stringLive = pending applications and registrations in force; dead = abandoned, cancelled or expired."all"

All 18 fields, with examples: see the Input tab.

Use with AI agents (MCP)

MCP (Model Context Protocol) is the open standard that lets AI assistants such as Claude, ChatGPT and Cursor call outside tools. Apify's hosted MCP server at https://mcp.apify.com/?tools=aurelix/uspto-trademark-search gives your assistant this Actor only: it fills in the input from your request, runs it and reads the records back, at the same per-result price as a run started by hand.

Example prompts

  • "Is 'Glow Ritual' a live US trademark in class 3? Show any live marks with those words, their owners and serial numbers"
  • "List every live USPTO trademark owned by Patagonia with its classes and registration date"
  • "Which new US trademark applications in classes 9 and 42 were filed in the last 3 days that sound like 'Apify'? Give the owner and the attorney"

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector, name it Apify, paste https://mcp.apify.com/?tools=aurelix/uspto-trademark-search, keep the detected OAuth settings, select Add and sign in to Apify.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/uspto-trademark-search"

Cursor and VS Code

Add this to ~/.cursor/mcp.json (Cursor); in VS Code's .vscode/mcp.json put the same entry under "servers" with "type": "http". Sign in to Apify when asked.

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=aurelix/uspto-trademark-search"
}
}
}

ChatGPT

Turn on Developer mode, open Settings > Apps & Connectors > Create, paste the URL above as the MCP server URL, choose OAuth and authorize Apify.

Clients without sign-in send Authorization: Bearer <YOUR_APIFY_TOKEN> instead. No Apify account? This Actor supports Apify's agentic payments: an agent can pay per run with a prepaid, spend-capped token, bought with x402 stablecoin payments.

n8n AI agent

Give an AI Agent node an MCP Client Tool with the endpoint https://mcp.apify.com/?tools=aurelix/uspto-trademark-search and a Bearer credential holding your Apify token.

Use it from AI agents (MCP), the API or no-code

Copy this to your AI assistant

Use the Apify Actor aurelix/uspto-trademark-search (USPTO Trademark API) through Apify's MCP server or API. Main input: marks (Marks (words in the trademark)); maxResultsPerSearch (Max records per search). Example input: {"marks": ["star wars"], "classes": ["25"], "status": "live", "maxResultsPerSearch": 100}. Each result is one record with fields such as search, search_type, match_found, serial_number, registration_number, mark, mark_type, drawing_type. It costs $1.00 per 1,000 records on Apify's free plan plus a $0.003 start fee per run, and needs no login.

MCP server URL for this Actor: https://mcp.apify.com/?tools=aurelix/uspto-trademark-search (setup for each client in the section above).

API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/uspto-trademark-search").call(run_input={'marks': ['star wars'], 'classes': ['25'], 'status': 'live', 'maxResultsPerSearch': 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

  1. Fill in the input, then click Save as a new task.
  2. In the task, click Schedule and pick daily or weekly (Apify Schedules).
  3. Turn on Only new or changed since last run (watch) so each run returns only what is new, and paste a Slack or webhook URL into Slack webhook URL / Webhook URL to get a digest of the new items (count plus the top 10) after every run.

Prefer n8n or Make? Ask in the Issues tab and we will share a ready-made workflow for it.

FAQ

Can I search USPTO trademarks without login?

Yes. It never logs in, so you need no USPTO.gov account, password or cookies; only a free Apify account to run it.

Is there a USPTO trademarks API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

How much does it cost to search USPTO trademarks?

About $1.00 for 1,000 records on Apify's free plan and $0.80 on paid plans, start fee included. The free $5 monthly credit covers about 5,000 records.

Can I export USPTO trademark data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's Storage tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

It reads only public data any logged-out visitor can see: the US trademark register that the USPTO publishes on its public Trademark Search, with no login, no API key and no CAPTCHA. Owner names and addresses are returned as USPTO publishes them; some owners are individuals. To have a record removed from future runs, open an issue on this Actor's Issues tab. You are responsible for using the data lawfully; this is not legal advice.

What does this USPTO trademark search return?

Marks with owner, attorney, goods and services, plus owner and number lookups, for $1.00 per 1,000 records ($0.80 on paid plans) plus $0.003 per run.

Can I get new trademark filings every day?

Yes. Leave the searches empty (or add marks or owners), pick classes, set 'Filed in the last N days' and turn on 'Only new or changed since last run'; schedule it daily and each run returns only filings not seen before.

Can I send USPTO trademark results to Google Sheets, n8n or an AI agent?

Yes: use Apify's Google Sheets integration, the n8n Apify node or HTTP request, Zapier or Make, or call it from an AI agent through Apify's MCP server.

What is charged?

One trademark-result ($1.00 per 1,000 on the free plan, $0.80 on paid plans) per record returned, plus a $0.003 start fee per run. A record is one application or registration. The optional no-match row for a search that found nothing is charged like a record. The prefilled search (20 records) costs about 2 cents.

Do I need a USPTO API key?

No. It reads USPTO's public Trademark Search, which needs no login or key. USPTO's separate TSDR and bulk-data APIs need a registered key; this Actor does not use them.

How do I check if a name is available as a trademark?

Search the name in 'Marks' with 'Status' = Live only and your Nice classes, and turn on 'Add a row for searches with no match'. A live mark with the same or similar words in your class is a red flag; no match is a good first sign. Try 'Similar spelling and sound' too. This is a search, not legal advice: a full clearance also looks at state marks, common-law use and design marks, ideally with an attorney.

How do I set up a trademark watch?

Put your marks in 'Marks' with 'Mark match' = Similar spelling and sound, pick your classes, turn on 'Only new or changed since last run' and schedule a daily run. The first run returns today's matches and sets the baseline; each later run returns only applications USPTO added since then and status changes of marks it returned before, so a quiet day costs just the $0.003 start fee. Matches older than the first run's results are never returned as new, even if a cap cut it short. Add a Slack webhook for a morning digest.

How fresh is the data?

USPTO adds new applications to its search about one day after filing; in our tests yesterday's filings were in by mid-morning US Eastern. Status changes appear when USPTO reloads a record (uspto_updated_at). Schedule watches for the afternoon UTC so the previous day is in.

What is the difference between a serial number and a registration number?

Every application gets an 8-digit serial number when it is filed; only registered marks also get a registration number (up to 7 digits). Paste either into 'Serial or registration numbers', with or without commas, or paste a TSDR link.

Why does a mark have no name in the 'mark' field?

Design marks (logos with no words) have no word mark; mark_description and design_codes describe them, and image_url shows the drawing.

What happens when USPTO is down or slow?

Each request is tried up to 3 times, a few seconds apart. If it still fails, or USPTO's firewall refuses it, the run stops at once; the searches it could not finish are named in the status and not charged; records already saved stay saved and are charged. If USPTO changes how its search answers, the run stops cleanly with a message saying so, keeps what it saved, and our daily check flags it for a fix.

How fast is it?

A few marks, owners or numbers take a few seconds. USPTO blocks IPs that send too many requests, so a run sends at most about 60 requests per 5 minutes; one request answers up to 20 mark or owner searches (with their first 100 records each), all number lookups, or a page of 500 records. 100 searches take seconds; 10,000 new filings about 90 seconds.

What happens when a run reaches its limits?

Each search stops at 'Max records per search' and the run at 'Max records in total' or the maximum charge you set; the status message says which, and nothing past it is read or charged.

Does it cover state trademarks or other countries?

No. Only US federal applications and registrations at the USPTO, including international registrations extended to the US (filing basis 66a).

Lawful use

  • Owner names and addresses are returned exactly as USPTO publishes them on its public register; some trademark owners are individuals, and a few applicants wrote an email address or phone number into their address or mark text (about 4 in 18,000 records in our tests), which then appears as filed. Removal requests are honoured: open an issue on the Issues tab.

Limits (stated honestly)

  • US federal trademarks only (USPTO); no state registrations, common-law marks or other countries' registers.
  • At most 10,000 records per search (USPTO's own search limit) and 100 searches per run; split bigger jobs into several runs or by class or filing date.
  • Speed is set by USPTO's per-IP limit: a run sends at most about 60 requests per 5 minutes (10 at once, then one every 5 seconds). One request answers up to 20 mark or owner searches with their first 100 records each, all number lookups, or a page of 500 records, so 100 searches take seconds and 10,000 new filings about 90 seconds. If USPTO still refuses or keeps failing, the run stops at once, keeps what it saved and says so.
  • Similar matching is spelling and USPTO sound-alike text, not a legal likelihood-of-confusion analysis, and it does not compare logos.
  • New filings appear about one day after filing; a status change appears when USPTO reloads the record.
  • Prosecution history, office actions, documents and assignment details are not included (they need USPTO's TSDR API key); tsdr_url links to them.
  • The source is USPTO's public search service, which has no published API contract; if USPTO changes it, runs stop with a clear message until the Actor is updated.

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

Canada and government data

  • Canada Building Permits: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, applicant, contractor and Toronto planner contact.

Jobs and hiring data

E-commerce and product data

Leads and company data

  • Contact Page Scraper: Published company emails, phones, addresses, social pages and team members from a list of company websites.
  • Decision Maker Finder: Founders, CEOs, VPs and department heads from company team pages, with title, seniority and function.
  • Newly Funded Companies Hiring: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
  • Google Maps Phone Scraper: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
  • Recently Funded Companies API: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
  • Tech Stack API: CMS, e-commerce platform, analytics, ad pixels, chat, CDN and email provider for each domain you enter.

Ad intelligence

  • Competitor Watch: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
  • Facebook Ad Library Search & API: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.
  • TikTok Ads Library API: TikTok Ads Library ads for Europe, UK, Switzerland and Turkey with targeting, reach, ad text and landing pages.

AI, content and SEO

More data tools

  • Tennis Betting Odds Scraper: Tennis results and upcoming matches with opening and closing odds per bookmaker and implied probabilities.

Recent changes

  • 0.1: First release: US trademark search by mark words, exact mark, similar spelling or sound, owner, serial or registration number; class, status, filing-date and goods filters; only-new-or-changed watch with Slack/webhook digest; common input names accepted.

The full history is on the Changelog tab.

Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 7 records come back with search, search_type, serial_number, mark, status, status_code filled in; a failed check alerts the maintainer straight away.

Your feedback

Missing a field, found a bug or need another filter? Open an issue on the Issues tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.