USPTO PTAB Trial Tracker — IPR/PGR/CBM API
Pricing
from $4.40 / 1,000 results
USPTO PTAB Trial Tracker — IPR/PGR/CBM API
Track USPTO PTAB AIA trials (IPR, PGR, CBM) from the Open Data Portal: search by party, patent, type or date; a new-petition delta feed; a petitioner<->patent-owner graph; and an institution-rate score (instituted/decided). Needs a free USPTO ODP API key.
Pricing
from $4.40 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
USPTO PTAB Trial Tracker — IPR / PGR / CBM API
Turn the USPTO Patent Trial and Appeal Board (PTAB) AIA-trial docket into a clean, structured feed. Search inter partes review (IPR), post-grant review (PGR), covered business method (CBM) and derivation (DER) proceedings by party, patent, type or date — then go beyond a flat dump with three transforms:
- Delta mode — only the new petitions since a date or since your last run (a ready-made new-IPR alert, with a real cross-run baseline).
- Graph mode — a petitioner ↔ patent-owner edge list (or per-party rollup) so you can see who is challenging whom.
- Institution-rate score —
instituted / decidedper petitioner or patent owner, the number litigators actually care about.
Data comes straight from the USPTO Open Data Portal (ODP) PTAB Trials API
(api.uspto.gov). Official, first-party, no scraping. Live corpus as of
2026-08-01: 19,334 proceedings — IPR 18,136 / CBM 602 / PGR 568 / DER 28.
Who it's for
- Patent litigators & PTAB practitioners — monitor new petitions against a client's patents; benchmark a petitioner's institution rate before filing.
- IP-risk & competitive-intelligence analysts — track which competitors are attacking which portfolios.
- NPE / licensing & patent-monetization teams — spot patents under AIA challenge and gauge validity risk.
- Litigation-finance & insurance underwriters — score institution likelihood across a book of patents.
This is a screening tool built on the USPTO's published record, not a legal opinion.
What changed in v1.1 (2026-08-01)
Every one of these was found by re-probing the live API rather than by re-reading the fixtures, and each was producing a confident wrong answer on a green run:
| Defect | Effect |
|---|---|
Discretionary Denial — 708 live proceedings, 3.7% of the corpus — matched no branch of the classifier and scored unknown | 708 real institution denials were dropped from the rate denominator. Corpus-wide institution rate read 52.88% against a true 50.12%. |
A proceeding the USPTO marks Terminated with a termination date and no institution decision was scored pending | ~15% of the whole corpus was reported as "still awaiting an institution decision" while actually settled and closed. Now terminated, with proceeding_stage = terminated_pre_institution. |
Pending Director Review scored pending | Director Review only happens after a final written decision, so those trials were instituted. |
patentNumber was sent verbatim, and the documented example format was US9876543B2 | The ODP indexes the bare grant number. US8082501B2 returns HTTP 404; 8082501 returns its two IPRs. A freedom-to-operate buyer following this Actor's own documentation got a failed run. Patent numbers are now normalized, with the raw form kept as a fallback. |
| Truncation was invisible | The shipped prefill fetched 100 of 990 matching proceedings and said nothing. In graph mode that meant the headline institution rate was computed over an arbitrary newest-first 10% subset. Every row now carries total_matching_count, results_truncated and (in graph mode) institution_rate_basis. |
| Delta mode used the default key-value store | The default store is created fresh for every run, so the advertised "rolling seen-set" was always empty and every scheduled run re-emitted — and re-billed — the same proceedings. Now a named store, keyed to the exact query scope. |
| A zero-match query returned HTTP 404, which failed the run | A legitimate "no PTAB trials against this patent" is now a clean 0-row SUCCESS — but only because a pre-flight canary proves every field name the Actor sends is still live, so a renamed field (which returns the identical 404) still fails loudly. |
| 22 fields were fetched from the USPTO on every request and thrown away | Termination and decision dates, art unit, application number, grant date, counsel of record, and the document-bundle URL are now emitted. |
Live self-checks (every run, before anything is billed)
Offline fixtures cannot see a silently re-shaped upstream, because the fixtures
were shaped from the upstream. Before a single row is emitted, the Actor runs
three probes against api.uspto.gov and fails the run — emitting nothing and
billing nothing — if any of them drifts:
- Corpus band — the whole-corpus proceeding count must stay between 12,000 and 60,000 (measured 19,334).
- Closed status vocabulary — the
trialStatusCategoryfacet must contain no value outside the known 12. A new status would otherwise be scoredunknownand silently vanish from the institution-rate denominator, which is exactly howDiscretionary Denialwas lost. - Closed type vocabulary —
trialTypeCodemust stay within IPR / PGR / CBM / DER. - Positive canary — patent
8082501must still resolveIPR2015-01319andIPR2021-00277through the exact field name the Actor queries. IfpatentOwnerData.patentNumberis ever renamed, every patent lookup would otherwise return a silent "no trials found". - Negative control — a nonsense token must match nothing. If it matches anything, the
qpredicate is being dropped and every "filtered" query is really returning the whole corpus.
Every measured value is written to the run log, so tightening a band later is evidence-based.
You need a free USPTO ODP API key
The USPTO decommissioned the old keyless PTAB API on 2026-01-06. The current
ODP API is free but key-gated. Register in a few minutes (video ID verification)
at https://data.uspto.gov/apis/getting-started, then paste the key into
apiKey. It is sent only to api.uspto.gov as the X-API-KEY header.
Leaving apiKey blank falls back to this Actor's own key, which is shared
across all users and throttles sooner. Your own key gives you your own rate
limit. With no key available at all the run fails loudly with the signup URL
rather than returning a green empty dataset.
Example input
{"apiKey": "YOUR_FREE_USPTO_ODP_KEY","mode": "search","party": "Apple","proceedingType": "IPR","maxResults": 100}
Every PTAB trial filed against one patent (freedom-to-operate check):
{ "apiKey": "YOUR_FREE_USPTO_ODP_KEY", "mode": "search", "patentNumber": "8082501" }
US8082501B2, 8,082,501 and 8082501 all work — they are normalized to the
bare grant number the USPTO actually indexes.
New-petition alert (schedule it daily; the baseline persists between runs):
{ "apiKey": "YOUR_FREE_USPTO_ODP_KEY", "mode": "delta", "proceedingType": "IPR", "sinceDate": "2026-06-01", "maxResults": 500 }
Institution-rate leaderboard by petitioner — set maxResults at or above
total_matching_count or the rate is a subset rate:
{ "apiKey": "YOUR_FREE_USPTO_ODP_KEY", "mode": "graph", "graphBy": "petitioner", "proceedingType": "IPR", "sinceDate": "2024-01-01", "maxResults": 2000 }
Output fields — search / delta modes
| Field | Description |
|---|---|
proceeding_number | PTAB trial number, e.g. IPR2026-00418 |
proceeding_type | IPR / PGR / CBM / DER, derived from the trial-number prefix |
subproceeding_type | Raw USPTO trialTypeCode |
filing_date | Petition filing date (YYYY-MM-DD) |
accorded_filing_date | Date the PTAB accorded the petition a filing date |
status | USPTO trial status category — closed 12-value vocabulary |
proceeding_stage | pre_institution / instituted / institution_denied / final_written_decision / director_review / terminated_pre_institution / terminated_post_institution / unknown |
institution_decision | instituted / denied / pending / terminated / unknown — basis of the rate |
institution_decision_date | Date the institution decision issued |
institution_decided | True/false once the status is known; null means not checked |
is_terminated | True/false once the status is known; null means not checked |
termination_date | Date the proceeding terminated |
latest_decision_date | Most recent decision in the proceeding |
days_petition_to_institution | Whole days, or null when a date is absent (never 0) |
days_petition_to_termination | Whole days, or null when a date is absent |
days_petition_to_latest_decision | Whole days, or null when a date is absent |
petitioner | Petitioner (challenger) real party in interest |
petitioner_counsel | Petitioner lead counsel of record |
petitioner_name_source | Which upstream field supplied petitioner |
patent_owner | Patent owner / respondent real party in interest |
patent_owner_counsel | Patent-owner lead counsel of record |
patent_owner_name_source | Which upstream field supplied patent_owner |
derivation_petitioner | Derivation petitioner (DER proceedings only) |
respondent | Respondent block name (DER proceedings only) |
patent_number | Challenged patent number as USPTO publishes it |
patent_number_normalized | Bare grant number (US8082501B2 → 8082501) |
patent_grant_date | Grant date of the challenged patent |
application_number | Application that issued as the challenged patent |
art_unit | USPTO group art unit |
inventor | Named inventor |
technology_center | USPTO technology center |
documents_zip_url | ODP download URL for the proceeding's full document bundle |
trial_last_modified_date | Date USPTO last modified the trial |
record_last_modified_at | Timestamp the ODP record was last modified |
source_url | Canonical ODP API URL for the proceeding |
retrieved_at | Fetch timestamp (ISO 8601) |
ptab_source_status | ok = the full requested range was retrieved; partial = paging stopped early |
total_matching_count | How many proceedings the USPTO says match the query |
results_truncated | True when fewer were fetched than match |
query_echo | The exact Lucene query sent to the USPTO |
delta_baseline_status | Delta mode: ok / unavailable |
delta_baseline_key | Delta mode: the query-scoped baseline key |
delta_baseline_size | Delta mode: proceedings already in the baseline |
Output fields — graph mode
| Field | Description |
|---|---|
petitioner | Petitioner (null in patentOwner rollups) |
patent_owner | Patent owner (null in petitioner rollups) |
graph_by | edge / petitioner / patentOwner |
proceeding_count | Proceedings in this group |
instituted_count | Instituted |
denied_count | Institution denied (now includes discretionary denials) |
pending_count | Genuinely awaiting an institution decision |
terminated_count | Closed before any institution decision |
unknown_count | Unclassifiable |
decided_count | instituted + denied — the rate denominator |
institution_rate | instituted / decided, 0–1, null when nothing is decided |
institution_rate_basis | complete_result_set / truncated_subset / no_decided_proceedings |
results_truncated, total_matching_count, ptab_source_status, query_echo, retrieved_at | Same meaning as above |
Field coverage (verified live, full dataset, 2026-08-01)
Audited on the complete dataset of a healthy run using the Actor's own prefill, not a sample:
- Prefill run (party
Apple, IPR, 100 rows): 38 of 40 emitted columns populated. The two nulls arederivation_petitionerandrespondent, which exist only on derivation proceedings. {"proceedingType": "DER", "maxResults": 30}returns all 28 live DER proceedings with zero null columns - that is the recorded input that populates those two fields, and it is pinned by an offline fixture so it cannot rot.patent_owneris null on roughly 6% of records because the USPTO has not published a real party in interest for them, not because the Actor failed to look.
Pricing
Pay-per-result: $8.00 per 1,000 results on the free tier, with graduated paid-plan discounts (Bronze −20%, Silver −30%, Gold −45%, Platinum −60%, Diamond −70%). Only rows written to the dataset are billed. A run that fails a drift check, or that cannot reach the USPTO at all, emits nothing and bills nothing.
Use as an MCP tool
This Actor is callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com.
The input and every output field are described in the schema, so an agent can
chain it: resolve a patent or company, pull its PTAB trials, then read
institution_rate together with institution_rate_basis — which tells the agent
whether that rate is over the complete result set or an arbitrary subset.
FAQ
How do I get a USPTO PTAB API key? Free at https://data.uspto.gov/apis/getting-started (a few minutes, one-time video verification). Paste it into apiKey.
What is a PTAB IPR institution rate? The share of a party's trials that were instituted out of those decided (instituted + denied). Discretionary denials count as denials. Proceedings that settled before any institution decision are excluded from both sides of the ratio and reported separately as terminated_count.
How do I find every PTAB trial against a patent? Set patentNumber. Any of 8082501, 8,082,501 or US8082501B2 works.
Why did my patent lookup return zero rows? Because the USPTO answered and nothing matched — PTAB only covers AIA trials, so a patent that has never been challenged, or one whose challenges predate 2012, genuinely has no proceedings. The run succeeds with 0 rows and bills nothing.
Can I monitor new IPR petitions automatically? Yes — run mode: "delta" on a schedule. The baseline lives in a named key-value store keyed to your exact query, so different filters do not overwrite each other and a scheduled run only ever emits genuinely new petitions.
Does party search only party names? No. It is a full-record free-text search, so it also matches counsel firms and inventor surnames appearing in the proceeding. query_echo on every row shows exactly what was sent.
Why is patent_owner sometimes null? The USPTO does not publish a patentOwnerName field at all; the owner name comes from realPartyInInterestName, which is absent on roughly 6% of records (mostly very recent petitions). A null there means "USPTO has not published it", not "no owner".
Which proceedings are covered? AIA trials: IPR, PGR, CBM, and derivation (DER). Appeals and interferences are separate USPTO datasets.
Is this official data? Yes — first-party USPTO Open Data Portal PTAB Trials API, no scraping.
Related Actors
- USPTO Patent Lapse & FTO Monitor — maintenance-fee lapses and expirations, the other half of a freedom-to-operate screen.
- GLEIF Ownership Graph — resolve a petitioner's corporate parent before scoring its portfolio-wide institution rate.