USPTO Trademark Status Checker avatar

USPTO Trademark Status Checker

Pricing

Pay per event

Go to Apify Store
USPTO Trademark Status Checker

USPTO Trademark Status Checker

Check USPTO trademark serial and registration numbers in bulk. Export status, owners, filing dates, classes, goods/services, and TSDR links.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Check USPTO trademark serial and registration numbers in bulk and export clean status data from the official TSDR system.

The actor turns a list of trademark numbers into structured records with mark name, live/dead status, owner, dates, goods and services, classes, attorney, and source links.


What does USPTO Trademark Status Checker do?

USPTO Trademark Status Checker reads public USPTO Trademark Status and Document Retrieval (TSDR) status pages and converts them into spreadsheet-ready data.

Use it when you have serial numbers or registration numbers and need a repeatable export instead of opening each TSDR page by hand.

The actor is designed for official-data workflows, portfolio checks, due diligence, and brand monitoring.

Who is it for?

  • ๐Ÿง‘โ€โš–๏ธ IP attorneys checking client trademark portfolios
  • ๐Ÿ›ก๏ธ Brand protection teams monitoring live/dead status changes
  • ๐Ÿ›’ Amazon and private-label sellers validating marks before product launches
  • ๐Ÿงพ Due diligence teams reviewing trademark assets in acquisitions
  • ๐Ÿ”Ž Domain and naming researchers checking whether a brand name is already protected
  • ๐Ÿ“Š Operations teams that need CSV, JSON, Excel, or API output from USPTO pages

Why use this actor?

Manual TSDR checks are slow when you need to review dozens or hundreds of marks.

This actor helps you:

  • โœ… Check many serial or registration numbers in one run
  • โœ… Export normalized results to CSV, JSON, Excel, XML, or API
  • โœ… Keep official USPTO source links with every row
  • โœ… Preserve per-number errors for invalid or empty records
  • โœ… Avoid browser automation overhead by using server-rendered USPTO pages

What data can you extract?

FieldDescription
inputNumberNumber exactly as you entered it
normalizedNumberDigits-only USPTO number
numberTypeSerial, registration, or unknown
markNameTrademark mark text
statusUSPTO status text
statusDateDate associated with the current status
filingDateApplication filing date
registrationNumberRegistration number, when available
registrationDateRegistration date, when available
registerPrincipal or Supplemental register
markTypeUSPTO mark type
liveDeadFlagLIVE or DEAD summary when detected
ownerNameCurrent owner name
ownerAddressCurrent owner address
attorneyNameAttorney of record
goodsServicesGoods and services description
classesInternational classes
tm5StatusTM5 common status descriptor
tsdrUrlOfficial USPTO status page
documentsUrlOfficial USPTO documents tab link
errorPer-number error, if any
scrapedAtExtraction timestamp

How much does it cost to check USPTO trademark status?

The actor uses pay-per-event pricing.

Current pricing is a $0.005 run-start fee plus a tiered per-record fee. The BRONZE per-record price is $0.000024217, with lower rates on higher Apify usage tiers.

This pricing works well for both one-off due diligence and recurring portfolio checks because you only pay for processed numbers.

Input options

You can provide numbers in two ways:

  1. Add values to Serial or registration numbers.
  2. Paste a bulk list into Paste numbers.

Numbers can contain punctuation, spaces, or line breaks. The actor normalizes them to digits before requesting USPTO TSDR.

Example input

{
"trademarkNumbers": ["85071981", "90000000", "74656267"],
"includeDocuments": true,
"maxConcurrency": 2,
"requestDelayMs": 250
}

Example output

{
"inputNumber": "85071981",
"normalizedNumber": "85071981",
"numberType": "serial",
"markName": "AVB",
"status": "REGISTERED AND RENEWED",
"statusDate": "Jun. 25, 2020",
"filingDate": "Jun. 25, 2010",
"registrationNumber": "4012345",
"registrationDate": "Aug. 16, 2011",
"liveDeadFlag": "LIVE",
"ownerName": "Example owner",
"classes": ["010"],
"tsdrUrl": "https://tsdr.uspto.gov/statusview/sn85071981",
"documentsUrl": "https://tsdr.uspto.gov/#caseNumber=85071981&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=documentSearch",
"error": null,
"scrapedAt": "2026-06-22T00:00:00.000Z"
}

Exact field values depend on the live USPTO TSDR record.

How to run it

  1. Open the actor on Apify.
  2. Paste serial or registration numbers.
  3. Keep concurrency at the default value for large lists.
  4. Start the run.
  5. Download the dataset as CSV, JSON, Excel, XML, or HTML.

Tips for best results

  • Use official USPTO serial or registration numbers.
  • Keep very large checks conservative to avoid USPTO throttling.
  • Use requestDelayMs if you are checking long portfolios.
  • Keep includeDocuments enabled when reviewers need source links.
  • Review the error field instead of assuming every number exists.

Handling invalid numbers

The actor does not fail the whole run when one number is invalid.

Instead, it saves a row with the original input and an error message.

This makes it easier to clean spreadsheets because successful and failed checks stay aligned with your input list.

Integrations

You can connect USPTO Trademark Status Checker to:

  • ๐Ÿ“„ Google Sheets for portfolio monitoring
  • ๐Ÿงฐ Zapier or Make for recurring brand checks
  • ๐Ÿ—„๏ธ Airtable for trademark asset databases
  • ๐Ÿ“ฌ Slack or email alerts when a downstream workflow detects status changes
  • ๐Ÿงช Internal due-diligence tools using the Apify API

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/uspto-trademark-status-checker').call({
trademarkNumbers: ['85071981', '90000000'],
includeDocuments: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/uspto-trademark-status-checker').call(run_input={
'trademarkNumbers': ['85071981', '90000000'],
'includeDocuments': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~uspto-trademark-status-checker/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"trademarkNumbers":["85071981","90000000"],"includeDocuments":true}'

MCP integration

Use this actor from Claude Desktop, Claude Code, or other MCP clients through Apify MCP Server.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/uspto-trademark-status-checker

Claude Code setup:

$claude mcp add apify-uspto-trademark-checker https://mcp.apify.com/?tools=automation-lab/uspto-trademark-status-checker

Claude Desktop JSON config:

{
"mcpServers": {
"apify-uspto-trademark-checker": {
"url": "https://mcp.apify.com/?tools=automation-lab/uspto-trademark-status-checker"
}
}
}

Example prompts:

  • "Check these USPTO serial numbers and summarize which marks are live."
  • "Turn this trademark portfolio into a CSV with owner, status, filing date, and TSDR links."
  • "Find rows with missing or invalid trademark numbers from this list."

Official source

The actor reads public USPTO TSDR status pages.

Each dataset item includes the official source URL so you can click through and verify the current record.

Reliability notes

USPTO is a government website and may throttle bursts of traffic.

The actor uses conservative defaults, retries temporary 403/429/5xx responses, and exposes advanced delay and concurrency settings.

If you run very large lists, use lower concurrency and a delay between requests.

Legality

USPTO trademark status pages are public government records.

You should still use the data responsibly, respect USPTO availability, and follow applicable laws and professional duties for your use case.

This actor does not bypass logins, paywalls, or private systems.

FAQ

Why do I see an error for one number?

The number may be invalid, missing from TSDR, or temporarily unavailable. Check the error field and open the tsdrUrl manually if you need to verify.

Why is a run slower for large lists?

The actor intentionally uses conservative concurrency because USPTO can throttle bursts. Increase concurrency carefully or decrease it for maximum reliability.

Can I monitor status changes?

Yes. Schedule the actor on Apify, export each run, and compare status, statusDate, and liveDeadFlag in your downstream workflow.

Other automation-lab actors can support adjacent due-diligence workflows:

Support

If a USPTO layout change breaks extraction, open an Apify issue with a run link and example serial numbers.

Changelog

0.1

Initial version with bulk trademark number input, TSDR status extraction, per-number errors, and official source links.