USPTO Trademark Scraper - Marks, Owners, Status & New Filings
Pricing
from $5.00 / 1,000 trademark records
USPTO Trademark Scraper - Marks, Owners, Status & New Filings
Search the US trademark register (USPTO) by word mark, owner, Nice class or serial number. Get status, filing and registration dates, owner, classes and goods/services, plus an "only new" watch mode for new filings. No login.
Pricing
from $5.00 / 1,000 trademark records
Rating
0.0
(0)
Developer
rj
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Features
Share
USPTO Trademark Scraper: Search US Trademarks, Owners, Status & New Filings
Search the US trademark register (USPTO) by word mark, owner, Nice class or serial number and get clean, structured trademark records: status, filing / registration / opposition dates, owner and jurisdiction, Nice classes, goods and services, filing basis and the mark image. Turn on "Only new trademarks" and schedule it, and you have a cheap trademark watch that sends you only new filings that match your brand, competitor or class. It uses the same public JSON API as the official USPTO Trademark Search, so it needs no login, no browser and no proxy. Unlike most trademark Actors, one run handles keyword, owner, class and serial-number searches together, and the price stays at $0.005 per trademark.
What data can you get?
| Field | Example | Notes |
|---|---|---|
markText | COCA-COLA | Word mark |
serialNumber, registrationNumber | 78264035, 2844970 | Registration number is null while pending |
status, statusCategory | live, Registered | Registered / Pending / Abandoned / Cancelled / Dead |
statusDescription, statusDate | The registration has been renewed., 2024-08-23 | Exact TSDR status text and date with Fetch exact TSDR status |
filingDate, registrationDate | 2003-06-18, 2004-05-25 | ISO dates |
publishedForOppositionDate | 2004-03-02 | When the 30-day opposition window opened |
abandonmentDate, cancellationDate | 2009-06-01 | For dead marks |
ownerName, ownerType | The Coca-Cola Company, CORPORATION | Current owner as recorded on the register |
ownerState, ownerCountry | DELAWARE, USA | Jurisdiction only, never a street address |
niceClasses | [28] | International (Nice) classes 1-45 |
goodsAndServices | IC 028: Board games; ... | One line per class, max 2,000 characters |
markType, markCategory | Standard characters, TRADEMARK | Drawing type and mark category |
filingBasis, register | 1(a), PRINCIPAL | 1(a) use, 1(b) intent to use, 44(e), 66(a) |
drawingUrl | https://tmcms-docs.uspto.gov/cases/78264035/mark/large.png | Image of the mark |
url | TSDR status page | Link to the official record |
searchType, searchTerm, scrapedAt | keyword, coca-cola | Which search found the mark |
Use cases
- Trademark watch for law firms and brand owners: schedule a daily or weekly run that outputs only new applications containing your client's mark or filed in their classes, then oppose before the deadline.
- Name clearance: check whether a product, app or startup name is already taken in the classes you care about, live and dead.
- Competitor intelligence: list every mark a competitor owns or has just filed (new filings often reveal product launches months early).
- Ecommerce sellers: check brand names before listing on Amazon or Shopify to avoid IP complaints.
- Portfolio audits: pull status, dates and classes for a list of serial numbers in one run.
- Market research: count and analyse new filings per class (e.g. all clothing marks filed this week).
How to use
- Enter one or more Search terms (word marks), Owner names or Serial numbers. Each is its own search.
- Optionally narrow by Nice classes, Status (live / dead / all) and Filed within (days).
- Click Start. Results appear in the dataset; download them as JSON, CSV or Excel, or read them through the API.
Check if a name is taken in a class (live and dead marks):
{"searchTerms": ["bloom"],"classes": ["3"],"status": "all","maxItems": 20}
All live trademarks of a company:
{"ownerNames": ["Patagonia, Inc."],"status": "live","maxItems": 25}
New clothing trademark filings of the last 7 days (no search term needed):
{"classes": ["25"],"filedWithinDays": 7,"sortBy": "newest","maxItems": 20}
Weekly watch: new "cola" filings in soft drinks, only marks not seen before:
{"searchTerms": ["cola"],"classes": ["32"],"filedWithinDays": 14,"sortBy": "newest","onlyNew": true,"watchName": "cola-watch"}
Look up serial numbers with the exact TSDR status:
{"serialNumbers": ["78264035", "99485163"],"fetchDetails": true}
Output example
Real item from a run (search bloom, class 3, all statuses):
{"id": "86183032","serialNumber": "86183032","registrationNumber": "5291299","url": "https://tsdr.uspto.gov/#caseNumber=86183032&caseType=SERIAL_NO&searchType=statusSearch","markText": "EVER BLOOM","markType": "Standard characters","markCategory": "TRADEMARK","drawingUrl": "https://tmcms-docs.uspto.gov/cases/86183032/mark/large.png","status": "dead","statusCategory": "Cancelled","statusDescription": "Cancelled","statusDate": null,"filingDate": "2014-02-03","registrationDate": "2017-09-19","publishedForOppositionDate": "2014-06-17","abandonmentDate": null,"cancellationDate": "2024-03-29","ownerName": "SHISEIDO COMPANY, LIMITED","ownerType": "CORPORATION","ownerState": null,"ownerCountry": "JAPAN","ownerRole": "ORIGINAL REGISTRANT","niceClasses": [3],"goodsAndServices": "(CANCELLED) IC 003: [ Cosmetic creams for skin care; cosmetic preparations for skin care; lotions for skin; ... ].","filingBasis": "1(a)","register": "PRINCIPAL","detailsFetched": false,"searchType": "keyword","searchTerm": "bloom","scrapedAt": "2026-11-08T12:28:52.914Z"}
With Fetch exact TSDR status on, statusDescription holds the official status text (e.g. The registration has been renewed.), statusDate is filled and detailsFetched is true.
A RUN_SUMMARY record in the key-value store lists, per search, the total number of matches, how many marks were output, any serial numbers that were not found, and request statistics.
Pricing
Pay per event: you pay only for results, not for run time.
| Event | Price | When |
|---|---|---|
trademark | $0.005 | Each trademark record in the output |
trademark-details | $0.002 | Each mark for which the exact TSDR status was fetched (only with Fetch exact TSDR status) |
Examples:
- 1,000 trademarks ≈ $5.00
- 1,000 trademarks with exact TSDR status ≈ $5.00 + $2.00 = $7.00
- A daily watch that finds 5 new filings a day ≈ $0.025 per day, about $0.75 per month
Set Maximum cost per run in the run options; the Actor stops cleanly when the budget is reached and never charges beyond it.
Tips and limits
- Watch mode: "Only new trademarks" remembers the serial numbers each watch has output (in a named key-value store, per Watch name). The first run outputs and charges everything it finds, so combine it with Filed within (days) and Sort by: Newest filings first. Use a separate watch name per client or brand.
- Search terms match marks that contain the words (phrase match plus the USPTO's pseudo-mark spellings). For a fuzzy "sounds like" clearance search, run several spellings.
- Owner search matches the owner name as a phrase (small word-order differences allowed), so "Patagonia" also finds "Eko Patagonia". Use the full legal name for precision.
- Serial-number lookups ignore the status, class and date filters. Serial numbers that don't exist are listed in
RUN_SUMMARY. - 10,000 results per search: the USPTO search returns at most 10,000 results for one query. Narrow big searches by class, status or filing date.
- statusDate is only filled with Fetch exact TSDR status, which makes one extra request per mark (about one mark per second, following the USPTO's rate guidance).
- Data freshness: the USPTO index is usually updated daily; brand-new filings appear a day or so after filing.
- Only US (USPTO) trademarks. EUIPO / WIPO / TMview are not covered.
FAQ
Is it legal to scrape USPTO trademark data? Trademark records are public government records, published by the USPTO for anyone to search. This Actor reads only that public data, at a polite rate, without logging in. It does not collect personal contact data: no emails, phone numbers, street addresses or attorney/correspondent contacts. Owner names are kept because they are the public register owner, but only the owner's state and country are returned. You are responsible for using the data in line with the law and the USPTO terms of use.
Do I need a proxy? No. The USPTO search API answers Apify's servers directly. If you ever see "HTTP 403/429" or "AWS WAF challenge" in the log, enable Apify Proxy (datacenter). Residential proxies are not supported: if you pick a residential group, the Actor logs a warning and uses datacenter proxy instead.
Why is statusDate empty?
The search index doesn't include the date of the latest status. Turn on Fetch exact TSDR status to get it with the exact status text.
How fresh is the data? Live: every run queries the USPTO trademark search at run time.
Can I search by mark image / design code? Not in this version. Ask in the Issues tab if you need it.
Integrations
- API: run the Actor and read results with the Apify API or the JavaScript / Python clients.
- Make, Zapier, n8n: use the Apify integration to send new filings from a scheduled watch to Slack, email, Google Sheets or your CRM.
- MCP: AI agents can call this Actor through the Apify MCP server to check trademark availability on demand.
- Webhooks: trigger your own endpoint when a watch run finishes.
Changelog
- 0.1 (November 2026): first release. Keyword, owner, serial-number and class/date searches, live/dead status filter, exact TSDR status, only-new watch mode.
More scrapers by the same developer
- AI Visibility Tracker: ChatGPT, Perplexity, Gemini, Claude
- AliExpress Scraper - Product Search, Prices, Ratings & Details
- Apple App Store Scraper: Apps, Search & Reviews
- AutoScout24 Scraper - Used Car Listings & Prices (Europe)
- Bilibili Scraper - Videos, Search, Popular & Uploader Stats
- Bing Search Scraper: Organic Results, Ads & Related Searches
Browse all my Actors on my Apify Store profile.
Support
Found a bug or need a field that's missing? Open an issue in the Issues tab and include your input and the run ID.