USPTO Trademark Search, Owner & Gazette Monitor
Pricing
from $14.25 / 1,000 trademark search records
USPTO Trademark Search, Owner & Gazette Monitor
Search official USPTO trademark records, inspect current status and ownership, retrieve recorded assignments and Gazette publications, and monitor typed changes.
Pricing
from $14.25 / 1,000 trademark search records
Rating
0.0
(0)
Developer
Luka
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search official USPTO trademark records by name, owner, serial number, registration number, assignment party, or Trademark Official Gazette issue. Get current status and owner evidence, recorded assignment history, Gazette publications, or only verified changes on repeat runs.
Choose one workflow, paste the smallest useful target, and start with the safe defaults. The Actor uses first-party USPTO HTTPS sources directly—no USPTO account, API key, browser, proxy, child Actor, or competing scraper.
Trademark search output is evidence retrieval, not a legal clearance opinion. A recorded assignment is not automatically the current owner, and a missing value is never presented as a completed check.
🚀 Start in 60 seconds
- Choose Search trademarks and leave Baseline selected.
- Enter a word mark, owner, or other supported term.
- Keep Maximum search records at 10 for the first run.
- Start the Actor, then open the Dataset to inspect status, owner, classes, goods/services, and coverage.
{"operation": "trademark_search","mode": "baseline","searchTerms": ["APPLE"],"maxSearchResults": 10,"maxBuyerChargeUsd": 5}
🎯 Choose the right workflow
| Workflow | Best for | What it returns |
|---|---|---|
| Search trademarks | Name, owner, goods/services, number, design, or advanced field search | Official search rows, optionally enriched with current case details |
| Look up cases | Exact serial or registration numbers | Current status, owner, attorney/correspondent, classes, history, and documents |
| Build an owner portfolio | One or more owner names plus optional deeper evidence | Current portfolio records with optional assignments and Gazette publications |
| Search assignment history | Serial, registration, assignee, or assignor | Recorded reel/frame/property transactions with separate parties and dates |
| Search Gazette publications | Latest or chosen issue dates | Filtered official results or streamed complete ST.96 XML issue evidence |
Use baseline to return the selected current evidence. Use changes to compare the exact normalized target scope with the last successfully delivered state. The first Changes run safely initializes a baseline; later runs emit only typed changes, plus optional free unchanged audit rows.
📦 What you get
Every row has a stable identity, an explicit row type, official-source provenance, and a coverage result. Depending on the workflow, rows can include:
- serial and registration numbers, mark wording, status code/text/date, and normalized LIVE/DEAD/UNKNOWN state;
- current owner, reported owners, attorney/correspondent, classes, goods/services, history, and document metadata;
- assignment reel/frame identity, conveyance, assignors, assignees, execution/recordation dates, and official document URL;
- Gazette issue date, reason code/text, section, classes, mark, and owner evidence;
- typed
NEW,UPDATED,STATUS_CHANGED,OWNER_CHANGED,ASSIGNMENT_RECORDED, orGAZETTE_PUBLISHEDevents withbefore,after, andchangedFields; - per-target source receipts with raw, filtered, duplicate, invalid, and delivered counts.
recordType | Meaning |
|---|---|
trademark_search_record | Official search result, optionally enriched with current detail |
trademark_snapshot | Exact current serial-based case snapshot |
assignment_record | One recorded reel/frame/property transaction |
gazette_record | One issue/date/reason publication fact |
change | One deterministic typed transition |
unchanged | Optional free audit row in Changes mode |
source_receipt | Attempt, completion, count, cap, and coverage evidence for one target |

Synthetic fixture preview generated through the Actor's real output path. It uses reserved test identities and makes no live USPTO request.
Representative fixture row (guaranteed core fields plus common search fields):
{"recordType": "trademark_search_record","entityType": "search","stableId": "uspto:tm:serial:99000001","serialNumber": "99000001","registrationNumber": "9901001","mark": "NORTHSTAR FIXTURE","statusCode": "700","statusText": "REGISTERED","liveDead": "LIVE","currentOwner": {"name": "NORTHSTAR FIXTURE LABS LLC","entityType": "LIMITED LIABILITY COMPANY","country": "US"},"sourceRoute": "USPTO_TRADEMARK_SEARCH_TSDR_DETAIL","sourceRetrievedAt": "2026-08-28T20:00:00.000Z","coverageStatus": "COMPLETE","sourceContractVersion": "USPTO_TM_PUBLIC_V2_20260829"}
Because this is a synthetic fixture, it deliberately omits sourceUrl. Live rows include the exact first-party USPTO URL used for that retrieval.
Stable identities are target-safe: cases use the eight-digit serial; assignments use reel, frame, and serial; Gazette events use issue date, serial, and reason code. Registration numbers remain aliases. Search rank loss, Gazette absence, and an assignment recording never become invented removal or ownership events.
🎛️ Input guide
Start and monitoring
| Input | Default | Effect on result or cost |
|---|---|---|
operation | trademark_search | Selects one of the five official-source workflows. |
mode | baseline | changes enables exact target-scoped state and typed repeat-run events. |
maxBuyerChargeUsd | 5 USD | Stops before source work when the conservative maximum event charge could exceed this ceiling. |
watchId | empty | Adds a human state namespace; normalized targets, filters, routes, and caps are still hashed. |
includeUnchanged | false | Changes only: adds free unchanged audit rows without billing them as changes. |
Trademark search, cases, and portfolios
| Input | Default | Hard bound and behavior |
|---|---|---|
searchTerms | APPLE | Up to 20 terms, each 120 characters; used by Search and Portfolio. |
searchField | all | One of nine bounded official field groups. |
searchMatchType | contains | Contains, exact phrase, prefix, or escaped wildcard matching. |
advancedQueries | empty | Up to 10 bounded AND/OR/NOT field clauses; raw query JSON is rejected. |
maxSearchResults | 10 | Maximum 500 unique results; reports CAPPED when valid scope remains. |
serialNumbers | empty | Exact eight-digit case identities; combined serial/registration inputs cannot exceed 500. |
registrationNumbers | empty | Registration aliases resolved to serial identity before monitoring. |
ownerNames | empty | Up to 20 current-owner portfolio terms, each 160 characters. |
includeDetails | true | Adds one current-detail request per resolved serial and replaces basic fields with richer current evidence where available. |
includeAssignments | false | Adds recorded Assignment Center rows; turn it on only when transaction history is useful. |
includeGazette | false | Portfolio only: adds the selected Gazette issue route and its issue/result units. |
Assignment history
| Input | Default | Hard bound and behavior |
|---|---|---|
assigneeNames | empty | Up to 20 recorded-assignee party searches. |
assignorNames | empty | Up to 20 recorded-assignor party searches. |
assignmentNameMatch | partial | Chooses the official partial or exact party-name search behavior. |
maxAssignmentRecords | 100 | Maximum 2,500 unique assignment rows; remaining valid scope is CAPPED. |
Trademark Official Gazette
| Input | Default | Hard bound and behavior |
|---|---|---|
gazetteIssueDates | latest published | Up to four Tuesday issue dates in YYYY-MM-DD format. |
gazetteRoute | xml_bulk | Complete streaming XML is issue-backed but much larger; api_filter is cheaper and covers only the declared filter. |
gazetteSearchTerms | empty | Up to 25 mark, owner, goods/services, or serial terms. |
gazetteSearchIn | all supported | Up to four supported Gazette fields. |
publicationReasons | all | Up to 20 official reason codes or names. |
internationalClasses | all | Optional Nice classes 1–45. |
maxGazetteRecords | 50 | Maximum 5,000 matching publications; an unfinished issue is CAPPED. |
Limits and safeguards
| Input | Default | Hard bound and behavior |
|---|---|---|
maxItems | 1,000 | Global maximum 5,000 business rows after target-scoped deduplication. |
maxTrackedItems | 2,500 | Maximum 5,000 state records; must cover the selected Changes workload. |
maxRequests | 1,000 | Hidden request/retry guard; maximum 5,000. |
maxSourceBytes | 300,000,000 | Hidden transfer guard; maximum 1,000,000,000 bytes. Increase only for multiple full XML issues. |
maxRuntimeSecs | 600 | Hidden source-work deadline; maximum 1,800 seconds. |
requestIntervalMs | 350 | Hidden ordinary-request pacing guard; allowed range 250–5,000 ms. |
💰 Pricing
Apify shows the authoritative event prices before you start a priced run. The total follows the work actually delivered:
run charge = delivered Baseline search rows or watch results/changes + delivered case or assignment rows + a minimum completed check only when those units are below the safe run minimum + completed watch or Gazette checks + delivered Gazette publications
There is no generic paid start event. On a non-Gazette, non-watch run, the Actor first totals the useful business units it can actually deliver. It adds one completion-check receipt only when those units alone would fall below the run's conservative minimum; valuable Search or Assignment rows that already cover that minimum do not receive an unnecessary extra check. Search/Portfolio Changes use a separate watch-result/change unit plus one completed watch check. A completed requested Gazette issue uses its issue/source-check units even when buyer filters leave zero matching publications. Blocked, partial, capped, duplicate, suppressed, and undelivered work is never used to justify a completion charge.
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Trademark search record | $0.01425 | $0.01425 | $0.01425 | $0.01425 | $0.01425 | $0.01425 |
| Watch result or change | $0.04750 | $0.04750 | $0.04750 | $0.04750 | $0.04750 | $0.04750 |
| Complete trademark watch check | $0.04750 | $0.04750 | $0.04750 | $0.04750 | $0.04750 | $0.04750 |
| Completed official USPTO check | $0.007295 | $0.007295 | $0.007295 | $0.007295 | $0.007295 | $0.007295 |
| Verified Gazette source run | $0.03800 | $0.03800 | $0.03800 | $0.03800 | $0.03800 | $0.03800 |
| Current trademark check | $0.000475 | $0.000475 | $0.000475 | $0.000475 | $0.000475 | $0.000475 |
| Status or owner change | $0.002850 | $0.002850 | $0.002850 | $0.002850 | $0.002850 | $0.002850 |
| Recorded assignment | $0.006175 | $0.0060135 | $0.0058615 | $0.005700 | $0.005700 | $0.005700 |
| Complete Gazette issue check | $0.09500 | $0.08550 | $0.07600 | $0.06365 | $0.06365 | $0.06365 |
| Gazette publication | $0.07600 | $0.06840 | $0.06080 | $0.05092 | $0.05092 | $0.05092 |
The event name describes the billing trigger. A row, change, check, or publication is charged only after its corresponding useful result or completion receipt is ready for confirmed delivery.
maxBuyerChargeUsd is checked conservatively before the first official request. Blocked, invalid, duplicate, suppressed, and undelivered rows are not paid events. Start with small result limits; raise only the cap that expands a useful buyer outcome.
✅ Coverage you can trust
| Coverage | Exact meaning |
|---|---|
COMPLETE | Every requested target or bounded partition finished and all required rows were retained for delivery. |
PARTIAL | Useful evidence was retained, but at least one required target or partition failed. |
FILTERED | The official partition completed and declared buyer filters removed source rows. |
CAPPED | A declared row, page, byte, request, runtime, state, or spending guard stopped valid remaining scope. |
BLOCKED | A required route or source contract failed; no empty conclusion is allowed. |
EMPTY_CONFIRMED | The complete bounded requested scope finished successfully with zero matching rows. |
Every declared search query, assignment query, and Gazette issue gets its own receipt. A target skipped after a run-wide unique-row cap is explicitly CAPPED, attempted: false, and exhausted: false. If filters examine source rows but remove all of them, the result is FILTERED zero—not source-wide EMPTY_CONFIRMED.
Changes state uses schema v2 with deterministic v1 migration, integrity validation, a 5,000-record / 9 MB boundary, and exact scope hashing. A PREPARED delivery outbox is persisted before event-aware Dataset delivery. State commits only after confirmed delivery; incomplete, blocked, capped, or ambiguous attempts cannot advance it or silently retry a possible charge.
Locked official routes
| Surface | First-party route | Method |
|---|---|---|
| Trademark search | tmsearch.uspto.gov/.../tmsearch | POST |
| Current case detail | tmsearch.uspto.gov/.../tsdr-api?serialNumber=... | GET |
| Assignment history | assignmentcenter.uspto.gov/.../public/search/trademark | POST |
| Gazette discovery/filter | tm-eog-service.uspto.gov/.../external/search/... | GET/POST |
| Gazette bulk XML | cdn.uspto.gov/doc/TMOGIssue_..._entire?extension=xml | GET stream |
The Actor rejects every other host/path/method combination, redirects, HTML on JSON/XML routes, unexpected media types, and source-contract drift. Ordinary requests are paced and transient retries are bounded.
🔌 API and automation
Download Dataset rows as JSON, CSV, Excel, XML, or RSS, or read them through the Apify API. The Output tab links to the mixed Dataset, buyer overview, and OUTPUT run summary.
For repeat monitoring, save a successful Changes input as an Apify Task and schedule that Task at the interval you need. Keep the same targets and watchId; changing a target, filter, route, or cap intentionally creates a separate state scope. Downstream automation should branch on recordType, then inspect changeType, changeTypes, before, after, and coverageStatus before acting.
❓ FAQ and support
Does a result prove that a mark is available?
No. The Actor retrieves official evidence; it does not make clearance, infringement, validity, availability, or legal conclusions.
Is the latest recorded assignee always the current owner?
No. Assignment history and current TSDR owner evidence remain separate so one never silently overwrites the other.
Why did my run return CAPPED?
One declared guard stopped remaining valid scope. Read the target's stopReason, raise only the relevant limit, and rerun the same scope.
Can no Gazette match be treated as unchanged current status?
No. Gazette absence applies only to the completed issue/filter scope. Current status comes from current case-detail evidence.
What should I include in a support request?
Include the Apify run ID, input with secrets removed, affected stableId values, and the relevant source receipt. Never send account tokens or private credentials.