USPTO Trademark Scraper avatar

USPTO Trademark Scraper

Pricing

from $4.40 / 1,000 result emitteds

Go to Apify Store
USPTO Trademark Scraper

USPTO Trademark Scraper

USPTO Trademark Scraper: search and export U.S. federal trademark records from the USPTO by mark text, owner name, serial number, or registration number. Structured rows: mark text, owner, status, filing/registration dates, Nice classes, goods & services. No API key.

Pricing

from $4.40 / 1,000 result emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Features

Limited permissions

Share


🎯 What this scrapes

USPTO's modern trademark search (tmsearch.uspto.gov) is a JS-rendered single-page app, and the official TSDR JSON API now gates bulk access behind a registered API key. This Actor wraps USPTO's trademark search index and TSDR case-status pages directly, so you get a structured row per mark without wrestling either surface yourself.

Give it a free-text query (mark text or owner name), a list of serial numbers, or a list of registration numbers — or mix all three in one run. Every request runs through our hardened HTTP stack and a paced, retrying client so your runs stay clean even when USPTO throttles.

🔥 Features

  • 🌐 Optional residential proxy rotation via Apify Proxy — fresh session and exit IP whenever a lookup gets rate-limited.
  • 🔁 Retries with exponential backoff on 429 / 503 and network errors — up to 5 attempts, honouring Retry-After headers.
  • 🧱 Paced TSDR requests — direct lookups are throttled to roughly one request per second so we never trip USPTO's rate limits.
  • 🧊 Clean, typed dataset rows — validated fields, ISO-8601 dates, stable serial numbers as IDs.
  • 💰 Pay per output — no Actor start fee. You pay for the output events listed in Pricing.

💡 Use cases

  • Brand-protection monitoring — schedule recurring runs against your own mark portfolio to catch status changes (Section 8/15 declarations, oppositions, cancellations) as USPTO posts them.
  • Trademark-watch services — track a competitor's or client's marks by owner name across renewal cycles without manual TSDR lookups.
  • Clearance research — pull existing registrations in a Nice class before filing a new application.
  • M&A / brand-portfolio diligence — quantify a target company's live trademark holdings by owner name in minutes.
  • IP attorney workflows — bulk-resolve a docket of serial or registration numbers into structured case-status rows for internal tracking systems.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — supply at least one of query, serialNumbers, or registrationNumbers. All three can run together in a single call.
  3. Click Start. Results stream into the run's dataset as each lookup resolves.
  4. When the run finishes, open Storage → Dataset to export as JSON, CSV, or Excel — or pull rows via the Apify API.

Input mode tips:

  • serialNumbers and registrationNumbers — always processed in full, ignoring maxResults.
  • query — searched against mark text and owner name, capped at maxResults.
  • statusFilter — set to live or dead to post-filter by parsed status text.

📥 Input

FieldTypeRequiredDefaultNotes
querystringno*—Free-text mark text or owner name to search, 1-200 chars.
serialNumbersarrayno*—Direct lookup by USPTO serial number(s), 8 digits each.
registrationNumbersarrayno*—Direct lookup by USPTO registration number(s), 1-8 digits each.
statusFilterstringnoanyany, live, or dead — post-filter on parsed status text.
maxResultsintegerno20Cap on rows returned for query mode only. Max 500.
proxyConfigurationobjectno{"useApifyProxy": false}Apify Proxy configuration. USPTO tolerates direct calls at a light pace.

* At least one of query, serialNumbers, registrationNumbers is required.

Example input

{
"query": "BLINKING NAILS",
"serialNumbers": ["88148890"],
"registrationNumbers": ["5912174"],
"statusFilter": "any",
"maxResults": 2,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
serial_numberstringUS Serial Number.
registration_numberstring | nullUS Registration Number.
mark_textstringMark / Mark Literal Elements.
mark_typestring | nullMark Type.
standard_character_claimboolean | nullStandard Character Claim (Yes/No).
description_of_markstring | nullDescription of Mark, including Disclaimer text when present.
statusstring | nullStatus (free text).
status_datestring | nullStatus Date, ISO-8601.
filing_datestring | nullApplication Filing Date, ISO-8601.
registration_datestring | nullRegistration Date, ISO-8601.
publication_datestring | nullPublication Date, ISO-8601.
registerstring | nullPrincipal / Supplemental.
international_classesarrayInternational Class(es), zero-padded.
goods_servicesstring | nullFor: field — goods & services description.
first_use_datestring | nullFirst Use, ISO-8601.
use_in_commerce_datestring | nullUse in Commerce, ISO-8601.
filing_basisarrayDerived from Filed Use/ITU/44D/44E/66A flags.
owner_namestring | nullOwner Name.
owner_addressstring | nullOwner Address.
attorney_namestring | nullAttorney Name.
tsdr_urlstringTSDR case-status URL for this serial number.
scraped_atstringISO-8601 UTC timestamp when this row was recorded.

Example output

{
"serial_number": "88148890",
"registration_number": "5912174",
"mark_text": "BLINKING NAILS",
"mark_type": "Trademark",
"standard_character_claim": false,
"description_of_mark": "The mark consists of the stylized wording \"BLINKINGNAILS\" with a butterfly design appearing above the second letter \"I\". Disclaimer: \"NAILS\"",
"status": "A Section 8 declaration has been accepted.",
"status_date": "2025-09-26",
"filing_date": "2018-10-09",
"registration_date": "2019-11-19",
"publication_date": "2019-09-03",
"register": "Principal",
"international_classes": ["008"],
"goods_services": "Fingernail polishers, electric or non-electric; Hair-removing tweezers; Nail files, electric; Cuticle nippers; Cuticle tweezers; Electric nail clippers; Electric pedicure sets; Emery boards; Manicure sets; Pedicure sets.",
"first_use_date": "2017-01-22",
"use_in_commerce_date": "2017-01-22",
"filing_basis": ["USE_IN_COMMERCE"],
"owner_name": "Zhongshan R & F Heavy Makeup Cosmetics Limited Company",
"owner_address": "Garden, No.36 Rihua Rd, Southern Dist, No.9-189, Tianhuixingyuan, Xinghuiyunjin, Zhongshan, Guangdong, 528455, CHINA",
"attorney_name": null,
"tsdr_url": "https://tsdr.uspto.gov/#caseNumber=88148890&caseType=SERIAL_NO&searchType=statusSearch",
"scraped_at": "2026-07-18T10:12:26+00:00"
}

💰 Pricing

No Actor start fee. You pay for the output events below.

EventUSD per eventBilling unit
result$0.005Charged for each trademark row written to the dataset.

1,000 output events cost $5.00 at the standard rate, with no start charge.

Existing subscriber discounts remain available in the Apify Pricing tab.

🚧 Limitations

  • Search ranking is controlled by USPTO's trademark search index internally — the order for query mode is theirs.
  • status_date is null for query-mode rows. USPTO's search index doesn't expose a discrete "status changed on" date for free-text hits; direct serialNumbers/registrationNumbers lookups always carry a real value when the source page has one.
  • TTAB opposition/cancellation proceeding documents are out of scope — that's a distinct data surface.
  • Full prosecution-history documents (office actions, specimens, drawings/images) and assignment / chain-of-title history are not included in v1.
  • International/Madrid Protocol or EUIPO marks are out of scope — US federal (USPTO) marks only.
  • Legal disclaimer — this tool retrieves public trademark metadata for research and monitoring purposes. It is not a substitute for professional trademark counsel. Always consult a registered trademark attorney for clearance opinions, opposition strategy, or litigation.

🔗 Use with n8n

Wire this Actor into your n8n automations with the official Apify node:

  1. Add the Apify node and pick the Run Actor operation.
  2. Set the Actor to devilscrapes/uspto-trademark-scraper and pass your input as JSON.
  3. Chain a Get Dataset Items step to read the structured rows into the rest of your workflow (Sheets, Slack, your CRM, an AI agent, …).

Because n8n runs on a schedule or trigger, you get fresh trademark records on autopilot — for example, a daily trademark-watch that alerts you the moment a mark's status changes or a competitor files a confusingly similar mark.

❓ FAQ

Do I need a USPTO API key?

No. This Actor uses USPTO's public TSDR case-status pages and trademark search index directly — no registered API key required for the surfaces this Actor covers.

Is the data real-time?

TSDR case-status pages reflect USPTO's live prosecution record — status changes typically appear within a business day of USPTO posting them.

Can I monitor my own trademark portfolio automatically?

Yes — schedule recurring runs via Apify's built-in Schedule feature with your serial or registration numbers. We don't build a separate diff/alerting engine; Apify Schedule plus your own diffing of the dataset covers recurring monitoring.

Does this cover international or EU trademarks?

No — this Actor covers US federal (USPTO) marks only. We can build dedicated Actors for EUIPO or Madrid Protocol marks on request.

Can I get opposition or cancellation (TTAB) history?

Not in v1 — TTAB proceeding documents are a distinct data surface, already covered by a separate competing Actor. Only case-status summary fields ship here.

Why is status_date sometimes null?

Rows produced by the free-text query mode don't carry a discrete status-change date in USPTO's search index; direct serialNumbers/registrationNumbers lookups do when the source page has one.

Why is attorney_name sometimes empty?

Not every filing lists a registered attorney — pro se filings and some foreign-owned marks often omit it.

💬 Your feedback

Spotted a bug, hit an edge case, or need a new field (image/logo download, TTAB history, assignment records)? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and read every report.