USPTO Trademark Search — Lookup, Availability & Data
Pricing
from $1.50 / 1,000 trademark records
USPTO Trademark Search — Lookup, Availability & Data
Search and extract USPTO trademark data — keyword search, brand-name availability checks, owner and full-text search, serial-number lookups, class suggestions, and expiring-mark discovery. Seven operations, one clean dataset per run. No API key, no setup.
Pricing
from $1.50 / 1,000 trademark records
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
USPTO Trademark Search — Lookup, Availability & Portfolio Data 🔎
🎉 Seven trademark tools in one — search the entire U.S. register, check brand-name availability, and map any owner's portfolio
Built for founders clearing brand names, IP paralegals running due diligence, and agencies monitoring trademarks at scale
📋 Overview
Looking up a trademark shouldn't mean clicking through a clunky government portal one mark at a time. This actor turns the U.S. Patent & Trademark Office register into clean, structured data — search thousands of marks, check if a name is free, and export everything to JSON, CSV, or Excel.
Why professionals choose this actor:
- ✅ Seven operations in one: keyword search, availability check, serial-number details, owner portfolio, full-text search, class suggestions, and expiring marks — no other Apify trademark tool covers them all
- ⚡ Up to 250 records per keyword in a single call, with deep pagination for owner and full-text searches
- 🎯 100% data-source success rate and sub-second lookups — reliable enough for production monitoring
- 💰 Pay-per-record pricing — only pay for the marks you actually receive, with a free tier to test
- 💎 Unique tools nobody else offers: instant Nice-class suggestions and date-windowed expiring-mark discovery for renewal lead-gen
- ✨ Zero setup: no USPTO account, no API key, no proxy configuration — just pick an operation and run
✨ Features
- 🔎 Trademark Search: find live or all marks by keyword — status, owners, classes, filing & expiration dates, and the official logo
- ✅ Availability Check: instant "available / taken" verdict for a brand name, broken down across all 45 Nice classes
- 📑 Trademark Detail: full record for any serial number — owners, classification, and complete status history
- 🏢 Owner Search: pull every mark filed under a company or applicant name — one row per trademark, ready for portfolio analysis
- 🔠 Full-Text Search: search inside goods-and-services descriptions, not just mark names
- 🏷️ Class Suggestion: get recommended Nice classes for any product or service description before you file
- ⏳ Expiring Marks: list marks expiring in any date window — a renewal lead-gen engine for IP attorneys
- 📊 Clean structured output: flat camelCase rows, an HTML run report, and one-click CSV/Excel/JSON export
🚀 Getting Started (3 Simple Steps)
Step 1: Pick an operation
Choose one of the seven operations from the dropdown (Trademark Search is the default).
Step 2: Enter your queries
Add keywords, owner names, serial numbers, or descriptions to the Queries list — or a date window for Expiring Marks.
Step 3: Run
Start the actor. Results stream into the dataset in seconds, ready to export.
That's it! In under a minute, you'll have:
- Clean, structured trademark records
- An availability verdict or a full owner portfolio
- A downloadable dataset (JSON, CSV, Excel) plus an HTML run summary
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | Yes | One of: search, availability, details, suggestClass, ownerSearch, fullText, expiring |
queries | array | Conditional | Keywords, owner names, serial numbers, or descriptions (one per operation). Not used by expiring |
searchType | string | No | active (live marks) or all (incl. dead/abandoned) — Trademark Search only |
maxResultsPerQuery | integer | No | Cap records per keyword (1–250) — Trademark Search only |
startDate | string | Conditional | YYYY-MM-DD window start — Expiring Marks only |
endDate | string | Conditional | YYYY-MM-DD window end (≤ 7 days from start) — Expiring Marks only |
maxPages | integer | No | Pages to drain for paginated operations (1–50, ~250 records/page) |
Example — search for a brand:
{"operation": "search","queries": ["apple", "tesla"],"searchType": "active","maxResultsPerQuery": 100}
Example — check if a name is available:
{"operation": "availability","queries": ["zillowmatic", "brandcraft"]}
Example — map an owner's entire portfolio:
{"operation": "ownerSearch","queries": ["Apple Inc."],"maxPages": 5}
📤 Output
Results are saved to the Apify dataset as flat rows. Filter by _operation to split modes. Key fields:
| Field | Type | Description |
|---|---|---|
keyword | string | The trademark wordmark / searched term |
serialNumber | string | USPTO serial number |
registrationNumber | string | USPTO registration number (null for pending) |
statusLabel | string | e.g. "Live/Registered" |
filingDate | string | Application filing date |
registrationDate | string | Registration date |
expirationDate | string | Registration expiration date |
description | string | Goods & services description |
classification | array | International/US class details |
owners | array | Owner/applicant records |
ownerName | string | Owner name (Owner Search) |
available | string | yes / no (Availability Check) |
availableClasses | array | Free Nice classes (Availability Check) |
classCode | string | Recommended class (Class Suggestion) |
markPageUrl | string | Direct link to the USPTO TSDR status page |
Example row:
{"_operation": "search","keyword": "APPLE","serialNumber": "77428980","registrationNumber": "4088195","statusLabel": "Live/Registered","filingDate": "2008-03-24","expirationDate": "2031-12-27","description": "Computers; computer software ...","owners": [{ "name": "Apple Inc.", "city": "Cupertino", "state": "CA" }],"markPageUrl": "https://tsdr.uspto.gov/#caseNumber=77428980&caseType=SERIAL_NO&searchType=statusSearch"}
💼 Use Cases & Examples
1. Brand Clearance Before Filing
Founders and brand teams checking whether a name is free before investing in it.
Input: availability with your candidate names · Output: available/taken verdict + class breakdown · Use: avoid filing fees and rebrands on names that are already taken.
2. Trademark Watch & Monitoring
Agencies and legal teams tracking new filings over time.
Input: scheduled search or ownerSearch runs · Output: fresh marks each run · Use: catch competitor filings and potential infringements early.
3. IP Due Diligence
M&A and licensing teams validating a target's trademark assets.
Input: details with serial numbers · Output: full records with owners and status history · Use: verify ownership and status before a deal closes.
4. Competitor Portfolio Mapping
Analysts mapping a company's entire brand footprint.
Input: ownerSearch with a company name · Output: one row per mark, with owner identity · Use: size up a competitor's IP estate in one run.
5. Class Research for New Filings
Applicants choosing the right Nice classes before filing.
Input: suggestClass with a product/service description · Output: ranked class recommendations · Use: file in the correct classes the first time.
6. Renewal Lead Generation
Trademark attorneys and brand-protection services sourcing leads.
Input: expiring with a date window · Output: marks expiring soon · Use: reach owners before their marks lapse.
7. Goods & Services Research
Researchers searching descriptions, not just mark names.
Input: fullText with a keyword · Output: marks whose descriptions mention your term · Use: find marks in a product category regardless of the wordmark.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/uspto-trademark-scraper').call({operation: 'search',queries: ['apple'],searchType: 'active'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/uspto-trademark-scraper').call(run_input={'operation': 'availability', 'queries': ['brandcraft']})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~uspto-trademark-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "ownerSearch", "queries": ["Apple Inc."], "maxPages": 3}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule (e.g. weekly trademark watch) or webhook
- HTTP Request: Call the actor API with your operation + queries
- Process: Handle the JSON dataset
- Action: Alert on new filings, append to a CRM, or build a report
📊 Performance & Pricing
FREE Tier (Try It Now)
- Full feature access — every operation, same data quality
- No credit card required
- Perfect for testing a few lookups before scaling
PAID Tier (Production Ready)
- Unlimited records and pages per run
- Pay-per-record: only charged for the marks you actually receive
- A fixed, low run-start fee plus a transparent per-record rate
💰 Cheaper than premium single-purpose trademark actors — and you get all seven tools in one.
❓ Frequently Asked Questions
Q: Which operation should I use to check if my brand name is free? A: Use Availability Check — it returns an instant yes/no plus the list of classes where the name is free or taken.
Q: How many records can I get per run? A: FREE tier is capped to a small sample; PAID is unlimited. Keyword search returns up to 250 records per term; owner and full-text searches paginate further.
Q: Do I need a USPTO account or API key? A: No. The actor is fully zero-config — just pick an operation and run.
Q: What output formats are available? A: JSON, CSV, and Excel — export directly from the Apify dataset.
Q: How fresh is the data? A: It reflects the USPTO register and is updated daily at the source.
Q: Can I monitor trademarks automatically? A: Yes — schedule the actor (e.g. a weekly owner or keyword search) and connect it to N8N, Zapier, or Make for alerts.
🐛 Troubleshooting
Owner Search returns no rows
- Use the exact registered owner name, including suffixes (e.g.
Apple Inc.notApple). Try variations.
Expiring Marks returns an error
- The date window must be 7 days or fewer, and both dates must be
YYYY-MM-DD.
Search returns fewer rows than expected
- Increase
maxResultsPerQuery, or setsearchTypetoallto include dead/abandoned marks.
⚖️ Is it legal to scrape data?
This actor returns U.S. trademark records from the public USPTO register — information the government publishes for exactly this kind of lookup. It does not extract private personal data.
However, you should be aware that results may contain personal data (e.g. an individual applicant's name or address as filed publicly with the USPTO). Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not use personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools