USPTO Patent Ownership & Assignment Monitor
Pricing
from $2.00 / 1,000 verified uspto assignment target checks
USPTO Patent Ownership & Assignment Monitor
Monitor patents, applications and companies for newly recorded USPTO assignment and ownership events. Compare official Assignment Center records with last successful state and emit typed conveyance alerts.
Pricing
from $2.00 / 1,000 verified uspto assignment target checks
Rating
0.0
(0)
Developer
Vadim Bezrukov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Monitor patents, applications and companies for newly recorded USPTO ownership and assignment events. Get deterministic alerts for assignments, mergers, security interests, name changes and other recorded conveyances. Each run checks the public histories again and compares them with the last saved observations. Changes-only output reduces repeated exports, not source requests.
Use it for patent-portfolio reviews, IP operations and competitor monitoring. It saves the last verified state for each watchlist and reads public USPTO Assignment Center JSON. A USPTO recordation is evidence of a recorded document; it does not prove perfect legal title, and delayed or corrective filings exist.
Get your first results
- Keep or replace the sample patent number 10277785.
- Set a Monitor key, such as
portfolio. Reuse it on every later run. - Leave Mode as
watchlist, Changes only off for the demo, and Baseline mode asemitSnapshot. - Use 512 MB, a 300-second timeout and a $1 maximum charge. Open Observations and changes when it finishes.
{"mode": "watchlist","monitorKey": "portfolio","patentNumbers": ["10277785"],"applicationNumbers": [],"publicationNumbers": [],"companies": [],"conveyanceTypes": [],"changesOnly": false,"baselineMode": "emitSnapshot","lookbackDays": 90}
The first verified check returns a BASELINE for each target, even when
changesOnly is true. After a complete baseline, a later check returns a CHANGE when a new reel/frame
appears or a stored assignment record is updated. The demo also returns
SNAPSHOT rows on unchanged runs. Turn changesOnly on for alert workflows;
unchanged runs can then have an empty Dataset; Every input status (CHECKS) still has one receipt per input.
If the initial history is PARTIAL, newly discovered records remain BASELINE
until the first complete check is saved. Filling a gap in old history is not a
new assignment alert and has no CHANGE fee. Updates to previously observed
records are still detected. CHECKS.baseline_complete reports whether that
initial history has been verified; a permanently truncated company search may
never complete it. Prefer patent or application numbers for complete coverage.
Choose the right workflow
| Goal | Settings | What to expect |
|---|---|---|
| Portfolio patents | patent numbers, changesOnly | Baseline, then new recorded assignments |
| Competitor names | companies with aliases, 90-day lookback | Exact-normalized assignee/assignor hits |
| Application docket | application numbers | Application-side recorded transfers |
Prepared examples cover a patent portfolio, competitor conveyances and a single assignee. Company examples use Pacific Biosciences and a 365-day window; replace that public sample with your own exact names. Task links become available after the examples are published.
Add an Apify Schedule if you want automatic checks. The Actor does not create schedules, send email or configure webhooks for you.
Inputs
| Field | How to use it |
|---|---|
mode | watchlist only. Daily bulk XML is not offered: USPTO PASDL now requires a login, so that mode would fail every run. |
monitorKey | 1–80 letters, digits, _ or -. One comparison history per key. |
patentNumbers | Up to 1,000 granted patent numbers. A US prefix is stripped, including USD…, USRE… and USPP…. RE/PP numbers accept five digits, such as RE45824 and PP33095. |
applicationNumbers | Up to 1,000 application numbers. |
publicationNumbers | Up to 1,000 publication numbers such as US20180191929A1. |
companies | Up to 200 {name, role, aliases, match} objects. Default match is exact. |
conveyanceTypes | Optional category filter. Empty keeps every recorded type, including OTHER. |
changesOnly | Hide unchanged SNAPSHOT rows after the baseline. |
baselineMode | emitSnapshot returns the first observation. storeOnly saves it silently. |
lookbackDays | 1–366, default 90. Bounds company searches only. |
Malformed patent, application and publication strings get their own status.
Invalid global options or malformed company objects reject input before source access.
Duplicate normalized identifiers are compared once; CHECKS keeps every original
input. Company history is keyed by normalized name, role, match mode and aliases,
so an assignee watch and an assignor watch for the same company do not share
state. Company matching never equates IBM with International Business Machines
unless you add that alias. contains filters locally after an exact name search;
it does not discover similar company names. Add aliases for every spelling
you accept. Company lookback drops assignments without a recorded date.
Company coverage is bounded. USPTO may return an incomplete historical
window for large names before reaching recent records. The local recorded-date
filter cannot recover omitted pages. Such checks are PARTIAL; without any
matching observations they return INCOMPLETE, preserve history and incur no
custom check fee. Use known patent or application numbers when company coverage
is insufficient. Exact names and aliases do not imply subsidiary coverage.
Results and change events
Each Dataset row is an observation of one assignment at scraped_at. Stable
identity is reel/frame (assignment_id such as 47086/0788). Filter
record_type=CHANGE for alerts. First-run BASELINE rows are not a claim that
a transfer just happened.
{"record_type": "CHANGE","status": "SUCCESS","change_types": ["NEW_ASSIGNMENT", "PATENT_TRANSFER_RECORDED"],"assignment_id": "99999/0001","recorded_date": "2026-09-01","conveyance": {"category": "ASSIGNMENT","code": 23,"text": "ASSIGNMENT OF ASSIGNOR'S INTEREST"},"assignors": ["SYNTHETIC ASSIGNOR LLC"],"assignees": ["EXAMPLE TECHNOLOGY INC"],"patent_numbers": ["10277785"],"matched_targets": ["patent:10277785"]}
The excerpt is synthetic fixture data, not a live inventor or owner history. Default output keeps party names and omits street addresses, correspondent details, inventors and attorney docket numbers.
Events include NEW_ASSIGNMENT, NEW_ASSIGNEE, NEW_ASSIGNOR,
PATENT_TRANSFER_RECORDED, APPLICATION_TRANSFER_RECORDED, MERGER_RECORDED,
NAME_CHANGE_RECORDED, SECURITY_INTEREST_RECORDED, LIEN_RECORDED,
LICENSE_RECORDED, RELEASE_RECORDED, CORRECTIVE_ASSIGNMENT_RECORDED and
ASSIGNMENT_RECORD_UPDATED. Unknown conveyance text stays OTHER.
Understand verification statuses
| Status | Meaning | Effect on comparison history |
|---|---|---|
SUCCESS | Assignment Center returned a verified body | Save observed assignments |
NOT_FOUND | Message No assignments found | Record verified absence |
PARTIAL | Truncation, a missing page, the assignment cap, undated company records or a failed name search | Save matching observations only; preserve history if none were verified |
UNRESOLVED_TARGET | Integrity answer for an identifier the index will not resolve, after a known control identifier still answers | No history update; the run stays PARTIAL and succeeds |
SOURCE_FAILED | HTTP error, HTML body, invalid party structure, an integrity failure while the index itself is down, login wall, a PASDL page without dated zip files, or a vanishing history | Keep the last good state; the run fails only when every check is a source failure |
INVALID_INPUT | Identifier or company name could not be normalized | No history update |
SKIPPED | Budget, pricing configuration or the source time budget prevented verification | No history update or custom fee; a time-limited check may have started a request before stopping |
NO_RESULTS is never turned into SOURCE_FAILED, and a failed check never
overwrites good state. Absence of a previous assignee from a new document is not
an ownership reversal.
API, schedules and AI agents
POST the input above with your Apify authorization header to:
https://api.apify.com/v2/acts/automa-flow~uspto-patent-assignment-monitor/runs?timeout=300&memory=512&maxTotalChargeUsd=1
For automatic weekday checks, this schedule API body runs the sample patent at 07:00 America/New_York. Replace the watchlist before creating it in your own account:
{"name": "uspto-portfolio-daily","isEnabled": true,"isExclusive": true,"cronExpression": "0 7 * * 1-5","timezone": "America/New_York","actions": [{"type": "RUN_ACTOR","actorId": "automa-flow/uspto-patent-assignment-monitor","runInput": {"body": "{\"mode\":\"watchlist\",\"monitorKey\":\"portfolio\",\"patentNumbers\":[\"10277785\"],\"applicationNumbers\":[],\"publicationNumbers\":[],\"companies\":[],\"conveyanceTypes\":[],\"changesOnly\":true,\"baselineMode\":\"emitSnapshot\",\"lookbackDays\":90}","contentType": "application/json; charset=utf-8"},"runOptions": {"build": "latest", "timeoutSecs": 300, "memoryMbytes": 512, "restartOnError": false}}]}
Optional webhook API body; replace the example URL:
{"eventTypes": ["ACTOR.RUN.SUCCEEDED", "ACTOR.RUN.FAILED"],"condition": {"actorId": "automa-flow/uspto-patent-assignment-monitor"},"requestUrl": "https://your-service.example/uspto-assignment-run"}
Handle both successful and failed runs. Inspect per-input statuses before
changing your own records. Deduplicate by event_id.
For an authenticated Apify MCP client, select this Actor with:
https://mcp.apify.com?tools=automa-flow/uspto-patent-assignment-monitor
Example prompt: “Watch patent 10277785 under monitor key portfolio and report any newly recorded USPTO assignments since the last successful state.”
Runtime, limits and pricing
Watchlist checks are sequential HTTP JSON calls. No browser or proxy is used.
The Actor normally stops source work after about 240 seconds, leaving 40 seconds
for delivery and state, plus time for shutdown before the 300-second default
timeout. A shorter configured cloud timeout reduces this window. Completed
observations are saved; unverified inputs get SKIPPED / RUN_TIME_LIMIT, and the
run summary is PARTIAL. For repeated time limits, split into smaller stable
watchlists with a distinct monitorKey for each; each new key creates a baseline.
Reusing an existing key with fewer targets removes the excluded targets' history.
Increasing the Console timeout does not extend the internal 280-second limit.
Company-name responses can exceed a megabyte; lookback and a 500-assignment cap
bound stored state. On a complete SUCCESS check, older IDs that USPTO no longer
returns may be dropped so a target stays within 500 stored assignments (PARTIAL).
Split a watchlist if state exceeds 8 MiB. dailyFeed XML is streamed with a
64 MiB cap; JSON search bodies stay at 8 MiB.
Pay per event: $0.00005 per Actor start + $0.002 per unique verified target check + $0.02 per unique CHANGE assignment ID. Platform usage is included.
A baseline or quiet run for one patent costs $0.00205; 20 verified targets cost
$0.04005 without changes, or $0.08005 with two unique changed assignment IDs.
A daily 20-target watchlist without changes costs about $1.20 over 30 runs.
Confirmed NOT_FOUND and unchanged checks are billable. A PARTIAL check is
billable only when matching observations are retained.
Retries, source failures, unresolved identifiers, skipped inputs, invalid inputs, incomplete checks without matching observations, duplicates and recovery delivery have no custom fees. Baseline rows, including historical additions to an incomplete baseline, have no per-row charge; the verified target check still costs $0.002. Apify charges its start fee automatically, including failed and recovery runs. RUN_SUMMARY reports custom charges separately; the run Pricing receipt includes the platform start fee. The Pricing tab shows the current rates.
A $1 limit is enough for the Console example. Before calling USPTO, the Actor
reserves the per-target fees and any start fee not already recorded by Apify. After the check, CHANGE
assignment events that would exceed maxTotalChargeUsd are omitted from Dataset
and state so a later successful check can emit them with a higher limit.
Company lookback and source truncation still apply; retry before records leave
the available window.
Daily bulk XML is not available through this Actor. Use the documented Assignment Center watchlist inputs for public patent and company records.
Privacy and interrupted runs
Only watched public assignment records are retained. Comparison state lives in
uspto-patent-assignment-monitor-state under
USPTO_ASSIGNMENT_MONITOR_V1_<hash-of-monitorKey>. Recovery can repeat an
event_id. A graceful source deadline saves completed observations and skips
unverified inputs. Cancellation stops new requests and waits for the worker to
exit before closing its HTTP client and releasing the monitor lock. Results are
journaled after source work stops; a forced process kill before that point still
requires a fresh check. A killed process may leave a marker in
uspto-patent-assignment-monitor-locks; stop every run for that Monitor key
before deleting only that marker.