USPTO PTAB Trial Tracker — IPR/PGR/CBM API avatar

USPTO PTAB Trial Tracker — IPR/PGR/CBM API

Pricing

from $4.40 / 1,000 results

Go to Apify Store
USPTO PTAB Trial Tracker — IPR/PGR/CBM API

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

a day ago

Last modified

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 scoreinstituted / decided per 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:

DefectEffect
Discretionary Denial — 708 live proceedings, 3.7% of the corpus — matched no branch of the classifier and scored unknown708 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 pendingDirector Review only happens after a final written decision, so those trials were instituted.
patentNumber was sent verbatim, and the documented example format was US9876543B2The 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 invisibleThe 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 storeThe 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 runA 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 awayTermination 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:

  1. Corpus band — the whole-corpus proceeding count must stay between 12,000 and 60,000 (measured 19,334).
  2. Closed status vocabulary — the trialStatusCategory facet must contain no value outside the known 12. A new status would otherwise be scored unknown and silently vanish from the institution-rate denominator, which is exactly how Discretionary Denial was lost.
  3. Closed type vocabularytrialTypeCode must stay within IPR / PGR / CBM / DER.
  4. Positive canary — patent 8082501 must still resolve IPR2015-01319 and IPR2021-00277 through the exact field name the Actor queries. If patentOwnerData.patentNumber is ever renamed, every patent lookup would otherwise return a silent "no trials found".
  5. Negative control — a nonsense token must match nothing. If it matches anything, the q predicate 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

FieldDescription
proceeding_numberPTAB trial number, e.g. IPR2026-00418
proceeding_typeIPR / PGR / CBM / DER, derived from the trial-number prefix
subproceeding_typeRaw USPTO trialTypeCode
filing_datePetition filing date (YYYY-MM-DD)
accorded_filing_dateDate the PTAB accorded the petition a filing date
statusUSPTO trial status category — closed 12-value vocabulary
proceeding_stagepre_institution / instituted / institution_denied / final_written_decision / director_review / terminated_pre_institution / terminated_post_institution / unknown
institution_decisioninstituted / denied / pending / terminated / unknown — basis of the rate
institution_decision_dateDate the institution decision issued
institution_decidedTrue/false once the status is known; null means not checked
is_terminatedTrue/false once the status is known; null means not checked
termination_dateDate the proceeding terminated
latest_decision_dateMost recent decision in the proceeding
days_petition_to_institutionWhole days, or null when a date is absent (never 0)
days_petition_to_terminationWhole days, or null when a date is absent
days_petition_to_latest_decisionWhole days, or null when a date is absent
petitionerPetitioner (challenger) real party in interest
petitioner_counselPetitioner lead counsel of record
petitioner_name_sourceWhich upstream field supplied petitioner
patent_ownerPatent owner / respondent real party in interest
patent_owner_counselPatent-owner lead counsel of record
patent_owner_name_sourceWhich upstream field supplied patent_owner
derivation_petitionerDerivation petitioner (DER proceedings only)
respondentRespondent block name (DER proceedings only)
patent_numberChallenged patent number as USPTO publishes it
patent_number_normalizedBare grant number (US8082501B28082501)
patent_grant_dateGrant date of the challenged patent
application_numberApplication that issued as the challenged patent
art_unitUSPTO group art unit
inventorNamed inventor
technology_centerUSPTO technology center
documents_zip_urlODP download URL for the proceeding's full document bundle
trial_last_modified_dateDate USPTO last modified the trial
record_last_modified_atTimestamp the ODP record was last modified
source_urlCanonical ODP API URL for the proceeding
retrieved_atFetch timestamp (ISO 8601)
ptab_source_statusok = the full requested range was retrieved; partial = paging stopped early
total_matching_countHow many proceedings the USPTO says match the query
results_truncatedTrue when fewer were fetched than match
query_echoThe exact Lucene query sent to the USPTO
delta_baseline_statusDelta mode: ok / unavailable
delta_baseline_keyDelta mode: the query-scoped baseline key
delta_baseline_sizeDelta mode: proceedings already in the baseline

Output fields — graph mode

FieldDescription
petitionerPetitioner (null in patentOwner rollups)
patent_ownerPatent owner (null in petitioner rollups)
graph_byedge / petitioner / patentOwner
proceeding_countProceedings in this group
instituted_countInstituted
denied_countInstitution denied (now includes discretionary denials)
pending_countGenuinely awaiting an institution decision
terminated_countClosed before any institution decision
unknown_countUnclassifiable
decided_countinstituted + denied — the rate denominator
institution_rateinstituted / decided, 0–1, null when nothing is decided
institution_rate_basiscomplete_result_set / truncated_subset / no_decided_proceedings
results_truncated, total_matching_count, ptab_source_status, query_echo, retrieved_atSame 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 are derivation_petitioner and respondent, 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_owner is 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.

  • 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.