USPTO Trademark Scraper avatar

USPTO Trademark Scraper

Pricing

from $0.03 / 1,000 trademark records

Go to Apify Store
USPTO Trademark Scraper

USPTO Trademark Scraper

Export public USPTO trademark applications by mark, owner, identifiers, class, dates, and status for monitoring and due diligence.

Pricing

from $0.03 / 1,000 trademark records

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

This USPTO trademark scraper searches tmsearch.uspto.gov and exports public United States Patent and Trademark Office application records by wordmark, owner, serial number, registration number, international class, filing date, and live/dead status.

Who is it for?

US intellectual-property attorneys, brand-protection teams, ecommerce sellers, and compliance analysts can use this Actor for trademark clearance research, brand-watch lists, owner portfolio reviews, ecommerce due diligence, and compliance analysis. It accepts bulk inputs, paginates results, deduplicates applications by serial number, and preserves which query found each record.

Search USPTO trademark application data with a small input

{
"searchTerms": ["APPLE"],
"status": "live",
"maxItems": 25
}

Example output

{
"serialNumber": "78787878",
"registrationNumber": "3457989",
"wordmark": "APPLE",
"status": "LIVE",
"alive": true,
"filingDate": "2006-09-20",
"registrationDate": "2008-07-01",
"cancellationDate": null,
"abandonmentDate": null,
"publicationDate": "2008-04-15",
"priorityDate": null,
"ownerNames": ["Apple Inc."],
"ownerFullText": "Apple Inc.",
"ownerType": "CORPORATION",
"attorney": "Attorney of record",
"internationalClasses": ["009"],
"usClasses": ["021", "023", "026", "036", "038"],
"coordinatedClasses": ["009"],
"goodsAndServices": ["Computers; computer hardware..."],
"markType": "TRADEMARK",
"drawingCode": "4",
"markDescription": null,
"designCodeDescriptions": [],
"disclaimer": null,
"translation": null,
"currentBasis": ["1A"],
"originalBasis": ["1B"],
"registrationType": ["PRINCIPAL"],
"trademarkUrl": "https://tsdr.uspto.gov/#caseNumber=78787878&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch",
"sourceQuery": "term:APPLE",
"scrapedAt": "2026-08-06T15:00:00.000Z"
}

USPTO trademark scraper output

Export structured trademark application data for analysis, monitoring, and due diligence.

FieldDescription
serialNumberStable USPTO application serial number
registrationNumberRegistration number when registered
wordmarkText of the mark
status, aliveNormalized LIVE/DEAD status and source flag
filingDate, registrationDateApplication and registration dates
cancellationDate, abandonmentDateEnd-status dates when present
publicationDate, priorityDateOpposition publication and priority dates
ownerNames, ownerFullText, ownerTypePublic owner/applicant data
attorneyAttorney of record when supplied
internationalClasses, usClasses, coordinatedClassesTrademark classifications
goodsAndServicesPublic goods/services descriptions
markType, drawingCode, markDescriptionMark metadata
designCodeDescriptions, disclaimer, translationDesign and text details
currentBasis, originalBasis, registrationTypeFiling and registration basis data
trademarkUrlDirect USPTO case-status link
sourceQueryInput mode and value that found the record
scrapedAtUTC extraction timestamp

Input settings

KeyTypeWhat it does
searchTermsstring[]Wordmarks or keywords
ownersstring[]Owner/applicant names
serialNumbersstring[]Exact eight-digit application IDs
registrationNumbersstring[]Exact registration IDs
internationalClassesstring[]Nice Classification numbers
statusall, live, deadStatus filter; default all
filedAfterdateEarliest filing date
filedBeforedateLatest filing date
maxItemsintegerMaximum unique records across all queries (1–5,000)

Provide at least one of searchTerms, owners, serialNumbers, or registrationNumbers.

Input recipes

Exact serial lookup

{"serialNumbers":["78787878"],"maxItems":1}

Owner and class portfolio search

{"owners":["Apple Inc."],"internationalClasses":["9"],"status":"live","maxItems":25}

Mixed brand watchlist

{"searchTerms":["ACME","EXAMPLE"],"filedAfter":"2025-01-01","maxItems":100}

Pricing

The Actor uses pay-per-event pricing: one small Start charge per run plus one Trademark record event per dataset item. See the live Pricing tab for current rates and volume discounts. Failed requests and duplicate records are not charged as results.

Tips and limits

  • Start with 25–100 records, then increase maxItems after confirming the query.
  • Use exact serial numbers for deterministic case lookup.
  • Owner names follow USPTO public text and may include historical naming variations.
  • Optional legal/mark fields can be empty because older and pending applications differ.
  • USPTO can throttle or change its public service. The Actor retries temporary server failures but reports challenge or malformed responses instead of returning misleading empty success.
  • This Actor exports public search records only. It does not file applications, access private correspondence, or provide legal advice.

API usage

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~uspto-trademarks-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["APPLE"],"status":"live","maxItems":25}'

JavaScript (ApifyClient)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/uspto-trademarks-scraper').call({
searchTerms: ['APPLE'], status: 'live', maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python (ApifyClient)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/uspto-trademarks-scraper').call(run_input={
'searchTerms': ['APPLE'], 'status': 'live', 'maxItems': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items

Use the Apify API to download the default dataset as JSON, CSV, Excel, XML, or RSS.

Use with AI agents and MCP

Connect through Apify MCP and ask an agent to search public USPTO records, compare owners/classes, or prepare a brand-watch dataset. Keep result limits bounded for interactive workflows.

FAQ

What data can I export with trademark scraper?

You can export the 31 documented fields above, including IDs, wordmarks, status, owners, attorneys, classifications, goods/services, dates, mark metadata, USPTO links, and provenance.

Can I run USPTO Trademarks Scraper through an API, schedule, or MCP client?

Yes. Use the Apify API example above, create a Schedule in Apify Console, or connect the Actor through Apify MCP.

How much does it cost to use USPTO Trademarks Scraper?

It charges one small Start event and one Trademark record event per saved result. See the live Pricing tab for current tier rates and discounts.

Does this include every USPTO document?

No. It returns structured public trademark search records. Binary prosecution documents and account-only actions are outside this Actor.

Why is an optional field empty?

USPTO records vary by application age and prosecution state. The Actor preserves nulls and empty arrays instead of guessing.

Can I search several brands at once?

Yes. Add multiple values to searchTerms; duplicate serial numbers are saved once.

No. The Actor provides public registry data for research. Consult a qualified trademark professional for legal conclusions.

Support

Open an issue from the Actor's Apify page with the input, run URL, expected result, and affected serial number or query. Do not include confidential credentials or legal correspondence.