PTAB Trials Scraper: IPR & PGR Tracker + Webhook Alerts
Pricing
from $0.10 / 1,000 ptab record results
PTAB Trials Scraper: IPR & PGR Tracker + Webhook Alerts
$0.2/1K records | Track USPTO PTAB IPR, PGR, CBM and DER trials via the official Open Data Portal API: parties, patent, status and dates, or decisions. Needs a free USPTO key; the default run is a free sample. Not affiliated with the USPTO.
Pricing
from $0.10 / 1,000 ptab record results
Rating
0.0
(0)
Developer
Nomad.Devs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
PTAB Trials Scraper (Free USPTO Key) + Webhook Alerts
$0.2/1K records | Track USPTO PTAB IPR, PGR, CBM and DER trials via the official Open Data Portal API: parties, patent, status and dates, or decisions. Needs a free USPTO key; the default run is a free sample. Not affiliated with the USPTO.
PTAB Trials Bulk Scraper
Our scraper collects Patent Trial and Appeal Board AIA trials (IPR, PGR, CBM and DER) from USPTO's official Open Data Portal API and lets you filter by proceeding type, patent number, patent owner, petitioner, status, technology center, art unit and filing date. In decisions mode you get one row per decision document, such as an institution decision or a final written decision, joined with its trial context. It is ideal for portfolio monitoring, litigation-finance research and patent-litigation analytics.
- Looking at other official-registry data? UK Case Law Scraper (No API Key) + Citation Lookup covers UK judgments, SPAC Redemptions Scraper (No Login) + Redeemed Shares covers SEC EDGAR SPAC filings and NHS ODS Providers Scraper (No API Key) + Addresses covers the NHS registry.
- Browse all our scrapers: https://apify.com/nomad-agent
Key Benefits
- Official API only: data comes from USPTO's Open Data Portal (api.uspto.gov), not from scraping the PTAB web interface. The USPTO API key is free; you bring your own.
- Try it first for free: the default run is a dry run that returns one clearly labelled sample record, makes no USPTO call and bills nothing.
- Low pricing: $0.20 per 1,000 records, with lower rates on Scale and Business plans ($0.15 and $0.1 per 1,000). Dry-run previews are not charged.
- No repeats across runs: schedule the same search and get only records you have not received yet (single
trialNumberlookups always return the trial). - Webhook alerts: add a webhook URL and each run also POSTs its records to your endpoint in batches of 50, with an optional secret header for verification.
- Decisions mode: institution decisions and final written decisions, joined with parties, patent and status.
How It Works
- Choose what to fetch (
mode):proceedings(one row per trial) ordecisions(one row per decision document). - Provide your key and search:
- (required for live data) USPTO API key. Free from your USPTO.gov account via MyODP; Apify stores it encrypted. Turn Dry run off to use it.
- (optional) Trial number (e.g.,
IPR2024-00123). When set, every other filter is ignored. - (optional) Proceeding types, Patent number (e.g.,
10701173), Patent owner, Petitioner, Trial status, Technology center, Art unit, Filed from / Filed to. - (optional) Webhook URL and Webhook secret.
- Click Start. A bare Start with the pre-filled form returns one free sample record, clearly labelled as a demo, with no key and no charge. For live PTAB data, turn Dry run off and paste your own free USPTO API key; live runs bill per record.
- Export the dataset.
More settings:
dryRun- Preview the output shape with no key and no USPTO call. Default istrue; turn it off for live data.maxItems- Maximum number of records to return (1 to 10000). Default is100; the form opens with 10.dedupe- On by default for live runs: records already delivered to your Apify account for the same search are skipped (not applied totrialNumberlookups). Setdedupe.enabledtofalseto get everything again, or setdedupe.keyto keep separate alert histories.
Run the same live search twice and the second run returns only new records, possibly none. That is the repeat suppression working; turn dedupe off to see every record again.
Name filters match the name exactly as USPTO recorded it, so use the free-text Search query when you are unsure of the form. Decisions mode makes one extra API call per matched trial, so broad searches are slower. USPTO does not publish every decision-detail field for every document; missing values are null with a warning, never guessed. This Actor covers AIA trials only, not ex parte appeals or interferences.
Data You'll Receive
- Trial: trial number, proceeding type, status category, challenged patent, patent owner, petitioner and counsel where recorded.
- Dates: petition filing, accorded filing, institution decision, final decision, patent grant and USPTO last-modified.
- Classification: technology center and group art unit.
- Decisions mode: decision type, outcome, claims challenged and found unpatentable where USPTO supplies them, decision date, document name and PDF link.
- Quality fields: a
parseConfidencescore andwarnings.
Sample output data
Here is the labelled sample record that a default (dry run) Start returns:
{"id": "IPR2025-00123","recordType": "proceeding","source": "uspto-odp-ptab","trialNumber": "IPR2025-00123","proceedingType": "IPR","statusCategory": "Institution Granted","patentNumber": "10701173","patentOwner": "Example Patent Holdings LLC","petitioner": "Example Technology Inc.","petitionerCounsel": "J. Smith","patentOwnerCounsel": "A. Jones","inventorName": "R. Doe","applicationNumber": "15123456","grantDate": "2020-06-30","technologyCenter": "2600","artUnit": "2645","petitionFilingDate": "2025-01-14","accordedFilingDate": "2025-01-15","institutionDecisionDate": "2025-07-20","institutionDate": "2025-07-20","finalDecisionDate": null,"lastModified": "2026-06-30T05:12:44","apiUrl": "https://api.uspto.gov/api/v1/patent/trials/proceedings/IPR2025-00123","parseConfidence": 1,"warnings": ["DEMO/dryRun sample record — not fetched from USPTO. Set dryRun=false and provide your free usptoApiKey for live data."]}
PTAB Trials API
Results are stored in a dataset that you can export as CSV, JSON or Excel, or read on demand through the Apify API. You can also wire the Actor into Make, Zapier and n8n, or call it from AI agents through the Apify MCP server.
Support and Feedback
We improve these scrapers from your feedback. If something breaks or you need a filter:
- Open an issue on the Actor's Issues tab
- If this Actor saved you time, a short review on the Store helps other users find it.
Run evidence
Start with one input and output
An Apify account is required. Use your Apify API token when calling the API; Console runs do not need that token pasted into the input. This schema exposes usptoApiKey. Follow the key requirements for your chosen mode below; never publish your key. BYO USPTO if supplied.
Free-tier event rates checked 2026-10-04: result $0.0002; actor-start $0.00005.
Cost: Total = Actor event charges + platform usage if separately billed + any BYO-provider charges. See “Current costs” for your event rates, plan tiers and a calculation. A sample does not promise future billable volume.
Input and output below were read from the same successful run Mkf4iKrdXh3SxMFki (2026-10-04, immutable build 7un9vrBszsilYxvVJ). This is an observed example, not a guarantee that repeating it returns this row. It used the selected build at capture time.
Input JSON
{"dryRun": true,"mode": "proceedings","maxItems": 100}
Matching output excerpt
Long strings and arrays are shortened for display; this is not a complete dataset fixture.
{"id": "IPR2025-00123","recordType": "proceeding","source": "uspto-odp-ptab","trialNumber": "IPR2025-00123","proceedingType": "IPR","statusCategory": "Institution Granted","patentNumber": "10701173","patentOwner": "Example Patent Holdings LLC","petitioner": "Example Technology Inc.","petitionerCounsel": "J. Smith","patentOwnerCounsel": "A. Jones","inventorName": "R. Doe","applicationNumber": "15123456","grantDate": "2020-06-30","technologyCenter": "2600","artUnit": "2645","petitionFilingDate": "2025-01-14","accordedFilingDate": "2025-01-15","institutionDecisionDate": "2025-07-20","institutionDate": "2025-07-20","finalDecisionDate": null,"lastModified": "2026-06-30T05:12:44","apiUrl": "https://api.uspto.gov/api/v1/patent/trials/proceedings/IPR2025-00123","parseConfidence": 1,"warnings": ["DEMO/dryRun sample record — not fetched from USPTO. Set dryRun=false and provide your free usptoApiKey for live data."]}
Claude / Codex skill to describe and setup this actor: SKILL.md
Track Patent Trial and Appeal Board (PTAB) AIA trials through USPTO's official Open Data Portal (ODP) API — inter partes review (IPR), post-grant review (PGR), covered business method (CBM) and derivation (DER) proceedings, with normalized parties, patent, status and key dates. Or fetch each trial's decision documents (institution decisions, final written decisions) joined with their proceeding context.
This is the patent-litigation data layer behind commercial PTAB analytics products — institution monitoring, petitioner/patent-owner tracking, final-written-decision alerting — as clean flat IP data (JSON) you can query, export or pipe into your own analysis. Built for patent litigators, litigation-finance underwriters, NPE/licensing teams and competitive-intel analysts. Bring your own free USPTO API key.
| This Actor | Seat-priced PTAB analytics (Docket Navigator, Unified Patents…) | |
|---|---|---|
| Pricing | pay per record, no contract | subscription, sales-gated |
| New-filing / new-ruling alerts | webhook push with downstream filtering | included, per seat |
| Data source | official USPTO ODP API | proprietary pipelines |
| Output | flat JSON / CSV / Excel you own | locked in a web UI |
- Official API only — api.uspto.gov, the ODP successor of USPTO's retired
developer.uspto.govPTAB API. This Actor deliberately does not scrape P-TACTS (ptacts.uspto.gov), whose FAQ prohibits bulk automated access. - Rate limits respected — USPTO's published limits (burst 1, no parallel calls per key) are enforced; all requests are serialized.
Input
| Field | Type | Default | Description |
|---|---|---|---|
usptoApiKey (required, unless dryRun) | string (secret) | — | Your free USPTO ODP API key, sent as X-API-KEY only to api.uspto.gov. How to get one takes a few minutes. |
dryRun | boolean | true | Preview the output shape with no key, no USPTO call and no billing — returns a fixed sample record for the selected mode. Turn it off and add your key for live data. See Dry run. |
mode | string | "proceedings" | "proceedings" = one record per trial. "decisions" = one record per decision document, enriched with proceeding context (one extra API call per matched trial — slower on broad searches). |
trialNumber | string | (empty) | Look up one trial, e.g. "IPR2024-00123". When set, every other filter is ignored. |
query | string | (empty) | Free-text query passed to the USPTO search API. Ignored when trialNumber is set. |
proceedingTypes | array (multi-select) | (empty = all) | Any of IPR, PGR, CBM, DER. |
statusCategory | string | (empty) | Exact USPTO status category, e.g. "Institution Granted", "Institution Denied", "Final Written Decision". Free text — USPTO publishes no closed list; run once unfiltered and read statusCategory values back. |
patentNumber | string | (empty) | Only trials challenging this US patent (digits only, e.g. "10701173"). |
patentOwnerName | string | (empty) | Patent owner as recorded by USPTO (exact-name matching — prefer query when unsure). |
petitionerName | string | (empty) | Petitioner real party in interest as recorded by USPTO (same exact-name caveat). |
technologyCenter | string | (empty) | Only trials whose challenged patent sits in this USPTO technology center, e.g. "2600". |
artUnit | string | (empty) | Only trials whose challenged patent sits in this USPTO group art unit, e.g. "2645". |
filedFrom / filedTo | date | (empty) | Accorded-filing-date range (both modes filter on the trial's filing date). |
webhookUrl | string | (empty) | Optional HTTP(S) endpoint the run also POSTs records to — see Webhook alerts. A webhook failure is not retried and never fails the run. |
webhookSecret | string (secret) | — | Optional shared secret sent as the X-Webhook-Secret header so your endpoint can verify the caller. |
maxItems | integer | 100 | Hard cap on records pushed per run (1–10000). |
What PTAB data does this scraper extract?
One flat JSON record per proceeding ("recordType": "proceeding"):
| Field | Meaning |
|---|---|
id | Stable id — the trial number |
recordType | "proceeding" |
source | "uspto-odp-ptab" |
trialNumber | e.g. IPR2024-00123 |
proceedingType | IPR / PGR / CBM / DER |
statusCategory | USPTO trial status category |
patentNumber | Challenged US patent |
patentOwner | Patent owner name |
petitioner | Petitioner real party in interest |
petitionerCounsel / patentOwnerCounsel | Counsel names where recorded |
inventorName | Inventor(s) where recorded |
applicationNumber | Underlying application number |
grantDate | Patent grant date (YYYY-MM-DD) |
technologyCenter / artUnit | USPTO tech center / group art unit |
petitionFilingDate / accordedFilingDate | Petition / accorded filing dates |
institutionDecisionDate / institutionDate | Institution decision / institution dates |
finalDecisionDate | Final decision (termination) date |
lastModified | USPTO last-modified stamp |
apiUrl | Direct ODP API URL for this trial |
parseConfidence | 0.0–1.0 — drops when core fields are missing upstream |
warnings | List of normalization warnings (empty when clean) |
One flat JSON record per decision document ("recordType": "decision"): id (trialNumber:documentIdentifier), recordType, source, trialNumber, proceedingType, decisionType, decisionOutcome, claimsChallenged, claimsFoundUnpatentable, decisionDate, documentIdentifier, documentName, documentUrl (PDF download URI), plus proceeding context copied in (statusCategory, patentNumber, patentOwner, petitioner, accordedFilingDate), apiUrl, parseConfidence, warnings. Decision-detail fields (decisionType, decisionOutcome, claims fields) are extracted defensively from the newer ODP decisions payload and are null with a warning when USPTO omits them — never fabricated.
How to track PTAB trials with this Actor
- Turn Dry run off and paste your USPTO API key (free — see FAQ) for live data. Leave Dry run on for a labelled preview without a source request.
- Pick what to fetch: trial-level
proceedingsor document-leveldecisions. - Filter by proceeding type, patent number, patent owner, petitioner, status or filing-date range — or set trialNumber for a single docket.
- Schedule it to watch for petitions against a patent portfolio or fresh final written decisions.
- Run and export JSON, CSV or Excel — or call it over the API:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/ptab-trials-scraper").call(run_input={"dryRun": False,"usptoApiKey": "<YOUR_USPTO_API_KEY>","mode": "proceedings","proceedingTypes": ["IPR"],"petitionerName": "Apple Inc.","filedFrom": "2025-01-01","maxItems": 100,}, build="latest")for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["trialNumber"], "|", item["statusCategory"], "|",item["patentOwner"])
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~ptab-trials-scraper/run-sync-get-dataset-items?build=latest" \-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"dryRun": false, "usptoApiKey": "<YOUR_USPTO_API_KEY>", "mode": "proceedings", "patentNumber": "10701173", "maxItems": 50}'
Run the same search again and you get only records you have not received yet; set dedupe.enabled to false to see everything again.
Output example
Illustrative proceeding record (field structure is exact; values shown are examples):
{"id": "IPR2025-00123","recordType": "proceeding","source": "uspto-odp-ptab","trialNumber": "IPR2025-00123","proceedingType": "IPR","statusCategory": "Institution Granted","patentNumber": "10701173","patentOwner": "Example Patent Holdings LLC","petitioner": "Example Technology Inc.","petitionerCounsel": "J. Smith","patentOwnerCounsel": "A. Jones","inventorName": "R. Doe","applicationNumber": "15123456","grantDate": "2020-06-30","technologyCenter": "2600","artUnit": "2645","petitionFilingDate": "2025-01-14","accordedFilingDate": "2025-01-15","institutionDecisionDate": "2025-07-20","institutionDate": "2025-07-20","finalDecisionDate": null,"lastModified": "2026-06-30T05:12:44","apiUrl": "https://api.uspto.gov/api/v1/patent/trials/proceedings/IPR2025-00123","parseConfidence": 1.0,"warnings": []}
Webhook alerts
Set webhookUrl (any HTTP/HTTPS endpoint — Slack workflow, n8n, Make, Zapier catch-hook, your own API) and, after each run writes records to the dataset, the Actor also POSTs those records to your endpoint as JSON, in batches of 50:
{ "source": "uspto-odp-ptab", "items": [ /* PTAB records */ ], "offset": 0, "count": 50, "total": 128 }
- Pair it with a schedule and downstream filtering to alert on new IPR/PGR petitions, institution decisions and final written decisions.
- Set
webhookSecretand it is sent as theX-Webhook-Secretheader so your endpoint can verify the caller (the secret is never logged). - Delivery is fail-open and makes one attempt, without retries: a webhook error is logged and the run still finishes
SUCCEEDEDwith all records in the dataset.
Dry run (preview without a key)
The untouched first run has dryRun on so you can see the exact output shape before spending anything: the Actor returns a fixed, clearly labelled sample record for the selected mode, makes no USPTO API call, needs no API key, and bills nothing (no start fee, no per-record charge). Turn it off and add your usptoApiKey for live data.
Related Actors
Part of a small family of structured government / legal-data Actors — same clean-JSON, official-source approach:
- UK Case Law Scraper (No API Key) + Citation Lookup — UK court judgments from the official Find Case Law API.
- SPAC Redemptions Scraper (No Login) + Redeemed Shares — SPAC redemption & lifecycle events from SEC EDGAR.
Integrations
Export results as JSON, CSV or Excel, or wire this Actor into Make, Zapier or n8n; call it programmatically with run-sync-get-dataset-items; or use it from AI agents via the Apify MCP server.
Pricing
The Actor's Pricing tab in Apify lists the current per-record and run-start charges. Dry run previews do not charge those events. Your USPTO API key itself is free (USPTO does not charge for ODP access).
Use cases
- Monitor new IPR/PGR petitions against your (or a competitor's) patent portfolio
- Alert on institution decisions and final written decisions as they enter
- Build institution-rate and outcome datasets by petitioner, owner, tech center or art unit
- Feed litigation-finance, licensing and prior-art workflows with structured PTAB dockets
- Self-serve alternative to seat-priced PTAB analytics subscriptions
FAQ
Is it legal to scrape this data? Yes. This Actor calls USPTO's official, documented Open Data Portal API with your own key. PTAB records are US-government works in the public domain. It never touches the P-TACTS web UI, whose FAQ discourages bulk automated access — the ODP API is USPTO's designated machine-access route, including bulk use.
How do I get a USPTO API key?
Free, a few minutes: create a USPTO.gov account at https://account.uspto.gov/profile/create-account, then open MyODP at https://data.uspto.gov/myodp (first login walks you through identity verification via ID.me) and copy your API key. Paste it into usptoApiKey — Apify stores it encrypted.
Why do I get "Unauthorized"/"Forbidden"?
401 = key missing, 403 = key invalid/not yet active. Check the key in your MyODP page; new keys can take a few minutes to activate.
How fresh is the data?
Every run hits the live ODP API. USPTO ingests PTAB filings continuously; lastModified on each record carries USPTO's own stamp.
Does it cover ex parte appeals or interferences? Not yet — this Actor covers AIA trials (IPR/PGR/CBM/DER). The ODP appeals and interferences endpoints are separate; open an issue if you need them.
Why are some decision fields null?
USPTO's decisions payload does not carry every analytic field for every document. Missing values are null and listed in warnings — never guessed. parseConfidence summarizes record completeness.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and fixes ship fast.
Fast setup and source code
Public repository · Agent setup skill.
Use the Actor’s current input form for filters, or start with its documented API example. Select the latest build. Read the dataset together with the run summary: a successful status alone does not show that every source was reached.
Restrictive filters can produce zero results. Live data requires dryRun: false and a valid USPTO API key.
Product guides and related tools
Current costs
Current Actor event rates, checked 2026-10-16. USD; use the Pricing tab for your plan and later changes.
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
PTAB record result (result) | $0.0002 | $0.0002 | $0.00015 | $0.0001 | $0.0001 | $0.0001 |
Actor start (actor-start) | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
For example, 100 × result, 1 × actor-start totals $0.02005 in Actor event charges on Free. This is an arithmetic example, before any waiver; actual charged events depend on the run and selected options. It is not a promise of output or a charge for simply setting an item cap.
Your total is the charged Actor events, plus platform usage only if this Actor’s Pricing tab bills it separately, plus any external provider you use with your own key. Do not add platform usage twice when it is included. Apify credits and plan discounts affect your invoice. Set a run cost limit in Console before starting.
Independent tool. We built and run this Actor ourselves. The USPTO does not operate, sponsor or endorse it, and its name is used only to say which source the data comes from.