USPTO Trademark Search Scraper
Pricing
from $6.80 / 1,000 results
USPTO Trademark Search Scraper
Scrape US trademark records with mark text, serial and registration number, owner name and address, status, filing and registration dates, goods and services and international classes. Search by wordmark, owner, goods, serial or registration number. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
USPTO Trademark Search Scraper
Here is one real result, with every field the actor returns:
{"serialNumber": "75840730","registrationNumber": "2498971","wordmark": "COFFEE","markType": "TRADEMARK","markDescription": ["The design consists of a stylized rendering of the upper torso of a man who is carrying a sack of coffee beans on his back."],"disclaimer": "\"COFFEE\"","alive": false,"registered": false,"statusCode": 710,"statusDescription": "CANCELLED - SECTION 8","filedDate": "1999-11-04T00:00:00","registrationDate": "2001-10-16","abandonDate": null,"cancelDate": "2008-07-18","renewalDate": null,"publishForOppositionDate": "2000-06-06","firstUseAnyDate": "1999-12-17","firstUseCommerceDate": "1999-12-17","ownerName": ["PREMIER INTERNATIONAL, INC. (CORPORATION; OREGON, USA)"],"ownerCity": ["Portland"],"ownerStateCountry": ["OREGON 972195275, UNITED STATES"],"ownerEntity": ["CORPORATION"],"ownerType": ["ORIGINAL REGISTRANT"],"ownerCitizenship": ["OREGON, USA"],"ownerDBA": null,"attorney": "Kassim M. Ferris","goodsAndServices": ["(CANCELLED) IC 030: [ Coffee, ground coffee and coffee beans ]."],"internationalClass": ["IC 030"],"usClass": ["046."],"currentBasis": ["1a"],"drawingCodeDescription": "(3) DESIGN PLUS WORDS, LETTERS, AND/OR NUMBERS","designCodeDescription": ["05.07.03 - Coffee beans","19.07.11 - Bags, burlap; Bags, paper; Bags, shopping; Grocery bags; Sacks; Sacks filled with grain; Shopping bags","26.01.01 - Circles as carriers or as single line borders"],"standardCharacterClaim": false,"tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=75840730&caseType=SERIAL_NO&searchType=statusSearch","source": "USPTO Trademarks","observedAt": "2026-08-10T14:31:58.737Z"}
The most complete USPTO trademark scraper available. It returns every field the USPTO trademark record exposes for each mark, including full prosecution dates, owner details, goods and services, international and US classes, and design codes, and gives you five searchable fields plus a live-marks filter to target exactly the trademarks you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the USPTO trademark database by mark text, owner name, goods and services keyword, or serial or registration number, and writes one normalized record per matching trademark to the run's dataset. Each record carries the full prosecution history (filed, published, registered, abandoned, cancelled and renewal dates), the owner block (name, city, state or country, entity type, citizenship), the goods and services with international and US classes, the design and drawing codes, and derived flags (alive, registered). Missing source values are returned as null.
Data covers US federal trademarks (registrations and applications).
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 trademarks whose mark text matches "coffee".
{"maxTrademarks": 10,"searchQuery": "coffee","searchField": "wordmark","aliveOnly": false}
Change searchField to owner to search by owner name, or to serialNumber / registrationNumber to look up one mark. Set aliveOnly to true to hide dead, abandoned or cancelled marks.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | no | coffee | What to search for: a mark text, owner name, goods and services keyword, or a serial or registration number, for example coffee, Nike Inc, 88888888. |
searchField | enum | no | wordmark | Which field to match against: wordmark, owner, goodsServices, serialNumber, registrationNumber, or all. |
aliveOnly | boolean | no | false | Return only live (active) trademarks and hide dead, abandoned or cancelled ones. |
maxTrademarks | integer | no | 10 | Maximum trademark records to collect. Free Apify plans are capped at 10 per run. |
Output reference
One dataset item per trademark. Types: string, integer, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
serialNumber | string | USPTO serial number (application number). |
registrationNumber | string | USPTO registration number, or null if not registered. |
wordmark | string | The mark text. |
markType | string | Mark type, for example TRADEMARK, SERVICE MARK. |
markDescription | string[] | Description of the mark design. |
disclaimer | string | Disclaimed wording, or null. |
alive | boolean | true if the mark is live (active). |
registered | boolean | true if the mark is currently registered. |
statusCode | integer | USPTO status code. |
statusDescription | string | Human-readable status, for example CANCELLED - SECTION 8, REGISTERED. |
filedDate | string | Application filed date. |
registrationDate | string | Registration date (YYYY-MM-DD), or null. |
abandonDate | string | Abandonment date, or null. |
cancelDate | string | Cancellation date, or null. |
renewalDate | string | Renewal date, or null. |
publishForOppositionDate | string | Publication for opposition date, or null. |
firstUseAnyDate | string | First use anywhere date, or null. |
firstUseCommerceDate | string | First use in commerce date, or null. |
ownerName | string[] | Owner names with entity and citizenship. |
ownerCity | string[] | Owner cities. |
ownerStateCountry | string[] | Owner state or country. |
ownerEntity | string[] | Owner entity types, for example CORPORATION. |
ownerType | string[] | Owner role, for example ORIGINAL REGISTRANT. |
ownerCitizenship | string[] | Owner citizenship. |
ownerDBA | string | Owner doing-business-as name, or null. |
attorney | string | Attorney of record, or null. |
goodsAndServices | string[] | Goods and services descriptions by class. |
internationalClass | string[] | International class codes, for example IC 030. |
usClass | string[] | US class codes. |
currentBasis | string[] | Filing basis codes, for example 1a. |
drawingCodeDescription | string | Drawing code description. |
designCodeDescription | string[] | Design search code descriptions. |
standardCharacterClaim | boolean | Whether a standard character claim was made. |
tsdrUrl | string | Direct URL to the mark's USPTO TSDR status page. |
source | string | Always USPTO Trademarks. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Written only on a failed run: a single item with a populated error field is emitted instead of results. |
Example output record
Real record from a live run (input {"searchQuery": "coffee", "searchField": "wordmark", "maxTrademarks": 10}):
{"serialNumber": "75840730","registrationNumber": "2498971","wordmark": "COFFEE","markType": "TRADEMARK","alive": false,"registered": false,"statusCode": 710,"statusDescription": "CANCELLED - SECTION 8","filedDate": "1999-11-04T00:00:00","registrationDate": "2001-10-16","cancelDate": "2008-07-18","ownerName": ["PREMIER INTERNATIONAL, INC. (CORPORATION; OREGON, USA)"],"ownerCity": ["Portland"],"ownerStateCountry": ["OREGON 972195275, UNITED STATES"],"attorney": "Kassim M. Ferris","goodsAndServices": ["(CANCELLED) IC 030: [ Coffee, ground coffee and coffee beans ]."],"internationalClass": ["IC 030"],"usClass": ["046."],"standardCharacterClaim": false,"tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=75840730&caseType=SERIAL_NO&searchType=statusSearch","source": "USPTO Trademarks","observedAt": "2026-08-10T14:31:58.737Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uspto-trademarks-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"Nike Inc","searchField":"owner","aliveOnly":true,"maxTrademarks":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uspto-trademarks-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"88888888","searchField":"serialNumber"}'
Apify CLI:
apify call scrapers_lat/uspto-trademarks-scraper \--input '{"searchQuery":"coffee","searchField":"goodsServices","maxTrademarks":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per trademark record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxTrademarks.
FAQ and troubleshooting
A run returned 0 records. Why?
No trademark matched your searchQuery in the chosen searchField. Try a broader term, switch searchField to all, or turn off aliveOnly. Zero-result runs are not charged.
How do I look up one specific mark?
Set searchField to serialNumber or registrationNumber and put the number in searchQuery.
How do I find only active brands?
Set aliveOnly to true to hide dead, abandoned and cancelled marks.
Why is registrationNumber or a date null?
The mark is not registered yet, or the USPTO record does not carry that date. Missing source values are returned as null, never invented.
Is this an official USPTO tool? No. This actor is independent and has no affiliation with the USPTO. It reads only data that is publicly available through the USPTO trademark system. Use it in accordance with the USPTO terms.
Related scrapers
- SEC EDGAR 10-K, 10-Q & 8-K Filings Scraper: SEC filings by ticker or CIK.
- Crunchbase Company Scraper: company profiles, funding and people.
- Google Maps Business Scraper: local business listings with contacts.
- OFAC Sanctions List Scraper: US Treasury OFAC SDN and Consolidated lists.
- USAspending Federal Award Scraper: US federal prime awards.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the USPTO. Accesses only publicly available USPTO trademark data. Use in accordance with the USPTO terms.
