Unified Patent Court Scraper - UPC Cases & Parties
Pricing
from $4.53 / 1,000 results
Unified Patent Court Scraper - UPC Cases & Parties
Scrape the Unified Patent Court case registry: case number, action type, phase, division, parties, representatives, judges, patents. Export to CSV, Excel, JSON or XML.
Pricing
from $4.53 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

⚖️ Unified Patent Court Case Registry Scraper
🚀 Export Unified Patent Court cases in seconds. 612 infringement actions, 439 cases at the Munich Local Division and every other action type on the court's public register, with parties, representatives, judges and patents in suit on every row.
The Unified Patent Court opened on 1 June 2023 and now decides patent disputes across 18 participating EU states from a single bench. Its Registry publishes every case it accepts: who sued whom, at which division, in which language, under which European patents, and which judges sit on the panel. That register lives behind a search form that hands out 60 rows at a time and nothing at all through an ordinary HTTP request.
This Actor fills that form the way a lawyer would, walks the result pages, opens every case page behind them and returns one flat row per case, ready for CSV, Excel, JSON or XML.
📊 Coverage
| What | Measured on 2026-09-08 |
|---|---|
| Action types | 9, from Infringement to Revocation and Provisional measures |
| Court divisions | 18, Court of Appeal plus central, local and regional divisions |
| Languages of proceedings | 10 |
| Case phases | 5, Written through to Case Closed |
| Infringement actions on the register | 612 |
| Cases at the Munich Local Division | 439 |
| Rows per registry results page | 60 |
👥 Who this is for
| Audience | What they get |
|---|---|
| Patent litigators | A live list of new actions at the divisions they practise in, with the representatives on the record |
| In-house IP counsel | An early warning when a competitor, a supplier or one of your own patents appears on the register |
| Litigation finance and insurance | Volume, division and party data to size the UPC docket |
| Patent analytics vendors | A structured feed of EP numbers actually in suit, joined to the case around them |
| Legal journalists | The parties, the division and the panel behind every new filing |
| Academics | A reproducible sample of the court's first years of practice |
📋 What the Unified Patent Court Scraper does
- Opens the court's own case search at the Registry.
- Applies the filters you choose: action type, court division, party name, patent number, representative, phase, language, and the two date windows the form exposes.
- Walks the results table, 60 cases at a time.
- Opens each case page and reads the parties with their roles, the representatives, the panel of judges, the European patents in suit, the phase, the language and the list of filed documents.
- Pushes one flat row per case, deduplicated on the case page.
🎬 Full Demo
Coming soon.
📤 Output
| Field | Type | What it holds |
|---|---|---|
caseNumber | string | Registry case number, for example UPC-CFI-0003057/2026 |
caseUrl | string | The case page on the court's website |
actionType | string | Infringement, Revocation, Appeal, Provisional measures and the rest of the court's list |
casePhase | string | Written, Interim, Oral, Deliberation or Case Closed |
courtDivision | string | The division hearing the case |
dateOfReceipt | string | Date of formal receipt, ISO format |
languageOfProceedings | string | The language the case runs in |
partiesSummary | string | Claimants v defendants on one line |
patentCount | integer | How many European patents are in suit |
judgeCount | integer | How many judges sit on the panel |
documentCount | integer | How many documents the registry lists for the case |
claimants | array | Claimants, applicants or appellants |
defendants | array | Defendants or respondents |
otherParties | array | Proprietors and any other role on the record |
representatives | array | Representatives on the record |
judges | array | The panel |
patents | array | EP number and title for every patent in suit |
documents | array | The 20 most recent filed documents, with title, date and access flag |
scrapedAt | string | When the row was collected |
error | string or null | Only set on a row that reports a problem |
Three real records from a run:
[{"caseNumber": "UPC-CFI-0003057/2026","caseUrl": "https://www.unifiedpatentcourt.org/en/node/184204","actionType": "Infringement","casePhase": "Written Phase","courtDivision": "Copenhagen (DK) Local Division","dateOfReceipt": "2026-08-24","languageOfProceedings": "English","partiesSummary": "Teradyne Robotics A/S (also trading under the registered name Universal Robots A/S) v JAKA Robotics GmbH","patentCount": 3,"judgeCount": 3,"documentCount": 128,"claimants": ["Teradyne Robotics A/S (also trading under the registered name Universal Robots A/S)"],"defendants": ["JAKA Robotics GmbH"],"otherParties": ["Proprietor: Teradyne Robotics A/S (also trading under the registered name Universal Robots A/S)"],"representatives": ["Søren Christian Søborg ANDERSEN", "Bernd Fuhrmann"],"judges": ["Peter Agergaard", "Goda Ambrasaité-Balyniené", "Samuel Granata"],"patents": [{ "patentNumber": "EP1996376", "patentTitle": "PROGRAMMABLE ROBOT AND USER INTERFACE" },{ "patentNumber": "EP3045273", "patentTitle": "JOINT FOR A ROBOT" },{ "patentNumber": "EP3530420", "patentTitle": "JOINT FOR A ROBOT" }],"documents": [{ "title": "Other Documents", "date": "2026-09-08", "access": "Not Public" },{ "title": "Receipt", "date": "2026-08-31", "access": "Not Public" },{ "title": "Statement of claim", "date": "2026-08-24", "access": "Not Public" }],"scrapedAt": "2026-09-08T16:44:06.112Z","error": null},{"caseNumber": "UPC-CFI-0002990/2026","caseUrl": "https://www.unifiedpatentcourt.org/en/node/184156","actionType": "Infringement","casePhase": "Written Phase","courtDivision": "Hamburg (DE) Local Division","dateOfReceipt": "2026-08-19","languageOfProceedings": "German","partiesSummary": "VMware LLC v Deutsche Telekom AG, Telekom Deutschland GmbH","patentCount": 1,"judgeCount": 3,"documentCount": 22,"claimants": ["VMware LLC"],"defendants": ["Deutsche Telekom AG", "Telekom Deutschland GmbH"],"otherParties": ["Proprietor: VMware LLC"],"representatives": ["Björn-Alexander BOCKELMANN", "Klaus HAFT"],"judges": ["Sabine Klepsch", "Stefan Schilling", "Peter Agergaard"],"patents": [{ "patentNumber": "EP2748977", "patentTitle": "CHASSIS CONTROLLERS FOR CONVERTING UNIVERSAL FLOWS" }],"documents": [{ "title": "Service Receipt/Service Document", "date": "2026-09-02", "access": "Not Public" },{ "title": "Receipt", "date": "2026-08-19", "access": "Not Public" },{ "title": "Statement of claim", "date": "2026-08-19", "access": "Not Public" }],"scrapedAt": "2026-09-08T16:44:06.588Z","error": null},{"caseNumber": "UPC-CFI-0002931/2026","caseUrl": "https://www.unifiedpatentcourt.org/en/node/184157","actionType": "Infringement","casePhase": "Written Phase","courtDivision": "Hamburg (DE) Local Division","dateOfReceipt": "2026-08-13","languageOfProceedings": "German","partiesSummary": "Avago Technologies International Sales Pte. Limited v Hyundai Motor Deutschland GmbH, HYUNDAI MOTOR COMPANY, Hyundai Motor Europe GmbH, Tiemeyer automobile GmbH & Co. KG, KIA Deutschland GmbH, KIA Corporation, Kia Europe GmbH, Autohaus Dinnebier GmbH","patentCount": 1,"judgeCount": 3,"documentCount": 43,"claimants": ["Avago Technologies International Sales Pte. Limited"],"defendants": ["Hyundai Motor Deutschland GmbH", "HYUNDAI MOTOR COMPANY", "Hyundai Motor Europe GmbH", "Tiemeyer automobile GmbH & Co. KG", "KIA Deutschland GmbH", "KIA Corporation", "Kia Europe GmbH", "Autohaus Dinnebier GmbH"],"otherParties": [],"representatives": ["Hannes JACOBSEN"],"judges": ["Sabine Klepsch", "Stefan Schilling", "Thomas Adocker"],"patents": [{ "patentNumber": "EP2575408", "patentTitle": "Single NFC device identity selection on a multiple-identity supported device" }],"documents": [{ "title": "Service Receipt/Service Document", "date": "2026-09-02", "access": "Not Public" },{ "title": "Receipt", "date": "2026-08-17", "access": "Not Public" },{ "title": "Statement of claim", "date": "2026-08-13", "access": "Not Public" }],"scrapedAt": "2026-09-08T16:44:07.045Z","error": null}]
⭐ Why choose this Actor
- The case page, not just the results table. The registry's own table gives you six columns. Every row here also carries the panel, the representatives, the EP numbers in suit, the phase and the language, because the Actor opens the case page behind each result.
- It gets in. The court sits behind an edge check that answers a plain HTTP request with a 403 on every path, robots.txt included. This Actor drives a real browser, waits the check out, and trades a rejected exit address for a fresh one instead of giving up.
- The court's own filter set. Every knob on the registry search form is an input here, with the court's own option lists rather than invented ones.
- Honest columns. Filed documents are listed as "Not Public" by the registry itself, so this Actor reports that flag rather than pretending a download link exists.
- No literal nulls. Missing values come back as
Not DisclosedorN/A, so a spreadsheet never breaks on an empty cell.
🥊 How it compares
| Approach | What you get |
|---|---|
| The registry search by hand | Six columns, 60 rows a page, and a case page to open one at a time |
| A generic HTML scraper | A 403 on every request, including robots.txt |
| A commercial patent litigation database | Broad coverage behind a licence and an annual contract |
| This Actor | The full case record, filtered the court's way, exported to CSV, Excel, JSON or XML |
🚀 How to use
- Create a free Apify account and claim the $5 starting credit: console.apify.com/sign-up.
- Open the Actor and pick an action type, for example Infringement, or a court division.
- Add any further filter you want: a party name, a patent number, a representative, a phase, a language or a date window.
- Set how many cases you want back.
- Run it, then download the dataset as CSV, Excel, JSON or XML, or read it straight from the API.
Already have case pages? Paste them into the case URL field and the search form is skipped entirely.
💼 Business use cases
- Competitor watch. Filter by party name and see the moment a competitor files or is sued at the UPC.
- Portfolio watch. Filter by patent number and find out whether one of your EP rights is in suit.
- Division strategy. Compare volumes across Munich, Hamburg, Mannheim, Paris, The Hague and the rest before choosing where to file.
- Panel research. Collect the judges who sit on the actions in your technical field.
- Representative benchmarking. Rank firms by how often they appear on the record.
- Business development. Spot the companies newly exposed to a UPC action and reach the right general counsel first.
- Market sizing. Count actions per type and per year to size the court's docket.
🤖 Automating
Put the Actor on a schedule and let it run every morning. Point a webhook at the finished run and a new filing lands in Slack, a Google Sheet or your case management system before the first coffee. Combine two schedules, one by division and one by party name, and you have a watch list that maintains itself.
🌍 Beyond business use cases
- Track how quickly the court moves cases from the Written Phase to a decision.
- Measure how the language of proceedings splits between English and German.
- Study which technical fields reach the new court first.
- Build teaching material from a real, current European docket.
- Feed a research dataset on cross border patent enforcement in the EU.
💬 Ask an AI assistant
Point your assistant at the dataset and ask it plainly:
- "Which divisions took the most infringement actions this quarter?"
- "List every case where an EP number appears in more than one action."
- "Which representatives appear opposite each other most often?"
- "Summarise the parties in the cases filed at Hamburg in the last month."
❓ Frequently Asked Questions
Does UPC here mean barcodes? No. UPC is the Unified Patent Court, the European patent court that opened on 1 June 2023. This Actor has nothing to do with Universal Product Codes.
Which website does it read? The court's own public case register at unifiedpatentcourt.org, under Registry, Cases. The address unified-patent-court.org redirects to the same site.
Is the data public? Yes. Everything this Actor returns is on pages the court publishes to anyone with a browser.
Can it download the filed documents? No. The registry marks the documents on a case page as "Not Public", so the Actor reports the title, the date and that access flag and nothing more.
Why is a browser needed? The court's site is behind an edge check that answers a plain HTTP request with a 403 on every path. A real browser is the only way through.
How long does a run take? Getting the first browser through the edge check took 16 to 24 seconds on the addresses that were accepted, and some addresses are not accepted at all, so the Actor swaps them. After that, pages come back in under five seconds each.
How many cases can I get in one run? The registry serves 60 cases per results page and pages through the whole result set, so the ceiling is the size of your filtered result set. Infringement alone was 612 cases when this was measured.
Can I search the whole register at once? Not with an empty form. The registry answers a filterless search with "We found no results", so pick at least one action type or one division.
Can I filter by more than one action type? Yes. Each type you tick runs one more registry search, and the results are combined into one dataset.
Do I need a proxy? The Apify datacenter proxy is on by default because it was the configuration that cleared the edge check most reliably. You can turn it off or switch it in the input.
What happens on a free account? You get a 10 case preview per run. A paid account can ask for up to 1,000,000.
Are the rows deduplicated? Yes, on the case page address, so a case that turns up in two searches is delivered once.
Which export formats are supported? CSV, Excel, JSON, XML, plus the Apify API and integrations.
What if the court changes its form? The parser reads the court's own field names rather than the visible labels, so a reworded label does not empty a column. If the structure changes, tell us through the contact form below.
🔌 Integrate with any app
Every run is available through the Apify API, so the dataset drops straight into Zapier, Make, n8n, Google Sheets, Airtable, Slack, Power BI, or your own service. Webhooks fire when a run finishes, so nothing needs polling.
🧰 Recommended Actors
- CourtListener Civil Cases Scraper for United States federal civil dockets.
- CourtListener Judge Analytics Scraper for judicial profiles and output.
- CourtListener RECAP Documents Scraper for individual PACER filings.
💡 Pro Tip: browse the rest of the collection at apify.com/parseforge and chain two Actors into one workflow.
🆘 Need Help? Open our contact form
This Actor is not affiliated with, endorsed by or connected to the Unified Patent Court. It collects only publicly available data from the court's public case register and is provided for research and informational purposes.