USPTO Trademark Watch — New Filings & Status, No Login, $20/1k avatar

USPTO Trademark Watch — New Filings & Status, No Login, $20/1k

Pricing

from $20.00 / 1,000 alerts

Go to Apify Store
USPTO Trademark Watch — New Filings & Status, No Login, $20/1k

USPTO Trademark Watch — New Filings & Status, No Login, $20/1k

Watch USPTO trademarks by word mark, owner, Nice class or serial number and get only NEW applications and status changes since the last run, with owner, attorney, classes, goods and TSDR link. Weekly schedule. No login or API key. MCP-ready. $20 per 1,000 alerts.

Pricing

from $20.00 / 1,000 alerts

Rating

0.0

(0)

Developer

Peter Skotte

Peter Skotte

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

USPTO Trademark Watch — new filings & status alerts, no API key

A trademark watch service you schedule yourself. Each run reports only the new USPTO applications that match your word marks, owner names and Nice classes, plus status and office-action changes on the serial numbers you are tracking. The monitor remembers everything it has already reported, so a weekly run emits just the delta, posts a summary to your webhook, and costs you only for what actually changed. No USPTO login, no API key, no TESS/TSDR clicking.

Built for IP paralegals, brand owners and law firms who pay $50+/month for watch subscriptions and want the same feed inside their own docketing, Slack or spreadsheet.

How it works

  1. Queries the public USPTO trademark search backend (the same index that powers tmsearch.uspto.gov, updated the morning after each filing day) for applications filed in the last filedSinceDays whose word mark contains a word starting with one of your watchTerms, or whose applicant matches one of your ownerNames, optionally limited to niceClasses.
  2. For every unseen filing it pulls the TSDR case record (status, status date, owner address, attorney, latest prosecution-history event) and emits it with changeType: "new".
  3. For every serial in watchSerials it compares the current status, status date and latest prosecution event against the saved state and emits a record when anything changed (changeType: "updated"), or once with the current status the first time the serial is added (changeType: "new").
  4. Saves the state, then POSTs a run summary to webhookUrl if set.

State lives in a named key-value store tm-watch-<hash of monitorId> in your Apify account, capped at 50,000 serial numbers (oldest dropped first). Delete the store to reset a monitor.

Input

FieldDefaultNotes
watchTerms["apple", "nimbus"]Word-mark watches. apple matches APPLE, APPLEGATE FARM, GOLDEN APPLE (word-prefix match on the mark and its pseudo mark). One watch per term
ownerNames[]Applicant watches, phrase match on the owner name: ["Nike"], ["Procter & Gamble"]
niceClasses[]Restrict word-mark and owner watches to classes, e.g. ["9", "42"]. Empty = all
watchSerials[]8-digit application serial numbers to track for status changes
filedSinceDays7Only applications filed within N days. 7 for a weekly schedule, 30 for a first baseline
maxNewPerTerm5Cap on new filings per watch term per run; the rest come out next run
maxItems10Overall cap on records per run
firstRunModeemitAllemitAll reports every current match on the first run; baseline records them silently
webhookUrl""Optional POST target for the run summary
monitorIddefaultOne state store per ID: run one monitor per client or brand
usptoApiKey""Optional key from account.uspto.gov/api-manager for the official TSDR API. Not required
  1. Create a task per client or brand family and set monitorId accordingly (acme-brands).
  2. Put the client's marks in watchTerms (short distinctive elements work best: zephyr, nimbus, bluefin) and their competitors in ownerNames. Add niceClasses if the client only cares about, say, classes 9, 35 and 42.
  3. First run: set firstRunMode to baseline and filedSinceDays to 30. This records everything currently matching without emitting a backlog.
  4. Switch firstRunMode back to emitAll (it only matters while the state is empty), set filedSinceDays to 10 for a weekly schedule (a safe overlap; the state prevents duplicates) and raise maxNewPerTerm / maxItems to whatever you are willing to review.
  5. Add the serials of the client's own pending applications and any opposed marks to watchSerials to be told when they are assigned to an examiner, get an office action, are published for opposition, register, or go abandoned.
  6. Schedule weekly, e.g. Monday 07:00 America/New_York. New filings appear in the USPTO index the morning after they are filed.
  7. Point webhookUrl at Slack, Zapier, Make or your docketing system.

The default settings ({}) run in emitAll mode for the terms apple and nimbus so you see real output on the first try.

Example: brand watch for a client in software and apparel

{
"watchTerms": ["zephyr", "zephyrly"],
"ownerNames": ["Zephyr Labs"],
"niceClasses": ["9", "25", "42"],
"watchSerials": ["98123456", "98234567"],
"filedSinceDays": 10,
"maxNewPerTerm": 50,
"maxItems": 500,
"firstRunMode": "baseline",
"webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ",
"monitorId": "zephyr-labs"
}

Other quick profiles:

  • Competitor filings: watchTerms: [], ownerNames: ["Nike", "Adidas", "Puma"], niceClasses: ["25", "28"]
  • Docket status only: watchTerms: [], watchSerials: [...] and a daily schedule
  • Class sweep: watchTerms: ["ai", "gpt"], niceClasses: ["9", "42"]

Output

One record per new filing or status change:

{
"serialNumber": "50122612",
"registrationNumber": null,
"markText": "NIMBUS VERSE",
"markType": "TRADEMARK",
"drawingType": "(4) STANDARD CHARACTER MARK",
"owner": "Bozhou (Hong Kong) Co., Limited",
"ownerAddress": "FLAT A 10/F, BLOCK A, TUNG CHUN INDUSTRIAL BUILDING, 9-11 CHEUNG WING ROAD, KWAI CHUNG, NEW TERRITORIES, Hong Kong, 999077, China",
"filingDate": "2026-09-22",
"registrationDate": null,
"status": "NEW APPLICATION - RECORD INITIALIZED NOT ASSIGNED TO EXAMINER",
"statusDetail": "LIVE/APPLICATION/Awaiting Examination",
"statusDate": "2026-09-22",
"liveDead": "Live",
"publicationDate": null,
"niceClasses": ["028"],
"goodsServices": "IC 028: Party balloons; Golf balls; Golf tees; Golf accessories, namely, ...",
"attorney": "William Bak",
"lastEventDate": "2026-09-22",
"lastEvent": "APPLICATION FILING RECEIPT MAILED",
"tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=50122612&caseType=SERIAL_NO&searchType=statusSearch",
"matchedTerm": "nimbus",
"changeType": "new",
"firstSeenAt": "2026-09-28T19:14:30.872Z",
"monitorId": "default"
}

matchedTerm is the watch term or owner name that matched, or serial:<number> for serial watches. goodsServices is truncated to 500 characters; the full identification is one click away on tsdrUrl. niceClasses uses the USPTO three-digit form ("009").

Webhook payload

POSTed once per run as application/json, also saved as the SUMMARY record in the run's key-value store:

{
"monitorId": "zephyr-labs",
"runAt": "2026-09-29T11:00:03.118Z",
"newCount": 3,
"updatedCount": 1,
"scanned": 41,
"seenTotal": 212,
"baseline": false,
"records": [ { "...first 50 records, same shape as the dataset..." } ]
}

Pricing

Pay per event: a small start fee plus a per-alert fee only for records emitted. A weekly watch that finds nothing new costs just the start fee.

Notes

  • Word-mark matching is word-prefix based: apple matches APPLEGATE but not PINEAPPLE. Use several short terms to cover variants.
  • Word-mark and owner watches only report new filings; to follow a filing after you have seen it, add its serial to watchSerials.
  • A watch scans at most 1,000 filings per run (newest first). Narrow with niceClasses or a shorter filedSinceDays if a term is that common.
  • The status snapshot comes from TSDR and takes a few seconds per record; large watchlists take correspondingly longer but cost the same.