Domain Dispute Decisions Scraper
parseforge/domain-dispute-decisions-scraper
Lead generationDeveloper tools
Scrape UDRP and domain dispute decisions from FORUM and the Czech Arbitration Court: parties, disputed domains, panelists, outcomes, registrars and the full decision text, filtered by brand, domain, panelist or legal issue.
- Total runs
- 14
- Bookmarked
- 0
- Last modified
- 7 days ago
This scraper was last updated on .
What does the Domain Dispute Decisions Scraper return?
UDRP Decisions Scraper - National Arbitration Forum & ADR.eu
Every domain name dispute decided by FORUM and the Czech Arbitration Court, in one schema. 44,269 cases at FORUM going back to February 2000 across 82,204 disputed domains, about 6,200 UDRP cases and 1,600 .eu ADR cases at the Czech court. Parties, domains, panelists, registrars, outcomes and the full text of the decision. No login, no browser, no proxy. Export to CSV, JSON, Excel, or XML.
WIPO decides roughly 60% of UDRP cases. This Actor covers the rest: FORUM (formerly the National Arbitration Forum) handles most US filings, and the Czech Arbitration Court runs both a UDRP docket and the sole .eu ADR docket. Both publish to anonymous visitors through the same interfaces their own sites call.
| Who uses it | What they use dispute decisions for |
|---|---|
| Trademark and domain lawyers | Precedent search by issue, panelist, registrar and outcome before filing |
| Brand protection teams | Every case naming their brand, their competitors, or a repeat cybersquatter |
| Domain investors | Which panelists deny complaints, and the cases where the panel found reverse domain name hijacking |
| Legal analytics and academics | A structured corpus with the reasoning sections separated out |
| Registrars and registries | Which of their names show up in disputes and how those cases end |
What it does
Three row shapes across the two providers:
- โ๏ธ Decisions (default): one row per case. Provider, case number, policy, case name, every disputed domain with its TLD, complainant and respondent with their domiciles, the panelist, the outcome in the provider's own words and normalised to who won, the decision and filing dates, the proceeding language, the URS stage, and the link to the published decision.
- ๐ค Panelists: the Czech Arbitration Court's arbitrator directory with country, the languages they hear cases in and a link to each CV.
- ๐ Disputed domains: the court's register of every domain name that has ever been in a dispute, with the state of that dispute.
And four blocks you can switch on, all read out of the published decision itself:
- ๐ Parsed decision: the registrar, the panelists and the panel size, the relief sought and the relief ordered, the outcome per domain, the default and dissent flags, the reverse domain name hijacking finding, and the reasoning split into its sections (findings, discussion, bad faith, rights, legitimate interests, principal reasons).
- ๐ Case timeline: filing date, response deadline, response received date, the date the panel signed, and the days from filing to decision.
- ๐งโโ๏ธ Party representatives: counsel and law firm for each side.
- ๐ Full decision text: the whole decision as plain text with a word count, 2,000 to 6,000 words a case.
Search by what the panel actually decided
FORUM indexes every decision against its own taxonomy of legal issues. Forty of those tags are exposed as a filter, so you can pull only the cases where the panel dealt with phishing, typosquatting, pay per click parking, a gripe site, a parody, a former employee, a celebrity name, a privacy or proxy registration, a pattern of cybersquatting, a domain registered before the trademark, or a finding of reverse domain name hijacking. No other public interface lets you slice UDRP case law that way.
Every decision row contains: source, provider, caseNumber, caseId, policy, caseName, domains, primaryDomain, domainCount, tlds, complainant, complainantDomicile, respondent, respondentDomicile, panelist, outcome, outcomeNormalised, decisionDate, submissionDate, publishedAt, language, ursStage, decisionUrl, caseUrl and scrapedAt. With every block switched on a row carries up to 62 fields.
What you can do with dispute data
Watch a brand.
complainantContains pulls every case a company has brought across both providers, with the domains, the outcomes and the counsel who filed them.
Find the precedent.
legalIssues plus outcomes gives you, for example, every case in which a panel found reverse domain name hijacking, or every phishing case that ended in a transfer.
Profile a panelist.
panelistContains returns their whole docket, and the outcome column shows how often they deny.
Track a registrar.
Switch on the parsed decision and the registrar appears on every FORUM row, so you can count which registrars carry the disputed names.
Check a domain.
domainContains searches the disputed name itself, and the disputed-domain mode gives you the court's whole register to join against your own portfolio.
Why choose this scraper
| What you get | |
|---|---|
| The 40% WIPO does not decide | FORUM and the Czech Arbitration Court, the two providers missing from every WIPO dataset |
| One schema across providers | Both houses' vocabularies folded onto a single outcome axis, so the rows are comparable |
| Forty legal issue filters | FORUM's own case index, exposed as a filter rather than as a field |
| The reasoning, not just the result | Findings, discussion, bad faith and rights sections separated out per case |
| Twelve policies | UDRP, USDRP, URS, CDRP, STOP, ERDRP, RDRP, .usRS, TDRP and the .eu ADR rules |
| Back to February 2000 | The full FORUM archive, not a recent window |
| No key, no proxy, no browser | Both providers answer anonymous plain HTTP, which is why this costs $5 per 1,000 |
How it compares
Our WIPO UDRP Decisions Scraper covers the other side of the same market. Run both and you have the whole UDRP record.
| Feature | ParseForge FORUM & CAC | ParseForge WIPO | Other actors |
|---|---|---|---|
| FORUM decisions | Yes | No | No |
| Czech Arbitration Court UDRP | Yes | No | No |
.eu ADR decisions |
Yes | No | No |
| WIPO decisions | No | Yes | No |
| Legal issue filters | 40 | No | No |
| Full decision text | Yes | Yes | No |
| Registrar per case | Yes | Yes | No |
| Price per case | $0.005 | $0.021 | Not sold |
What a decision looks like
{
"source": "FORUM",
"provider": "FORUM (formerly the National Arbitration Forum)",
"caseNumber": "2235578",
"policy": "UDRP",
"caseName": "Carol Cole Company, Inc. v. Weijie Xu",
"domains": ["nuface.xyz"],
"primaryDomain": "nuface.xyz",
"domainCount": 1,
"tlds": ["xyz"],
"complainant": "Carol Cole Company, Inc.",
"complainantDomicile": "Vista CA US",
"respondent": "Weijie Xu",
"respondentDomicile": "Huaian, Jiangsu II CN",
"panelist": "Steven M. Levy",
"outcome": "Claim Denied",
"outcomeNormalised": "Respondent won",
"decisionDate": "2026-08-27",
"submissionDate": "2026-07-28",
"decisionUrl": "https://www.adrforum.com/DomainDecisions/2235578.htm",
"registrar": "Dominet (HK) Limited.",
"panelSize": "Single-member",
"relief": "Denied",
"orderMade": "Remains with Respondent",
"reverseDomainNameHijacking": "Not raised",
"findings": "- Complainant owns trademark rights to the NUFACE mark and the <nuface.xyz> domain name is identical to the mark; - Complainant has not established that Respondent lacks rights or legitimate interests in the disputed domain name where the only use shown by the record is a general offer to sell the domain name..."
}
Configure the run
Run it with no input for the last twelve months across all three dockets.
The last year, all providers:
{ "maxItems": 500 }
Every case a brand has brought, with the reasoning and the counsel:
{
"complainantContains": "Google",
"dateFrom": "2015-01-01",
"includeParsedDecision": true,
"includeRepresentatives": true,
"maxItems": 500
}
Reverse domain name hijacking findings at FORUM:
{
"sources": ["forum"],
"legalIssues": ["reverseDomainNameHijackingFound"],
"dateFrom": "2020-01-01",
"includeParsedDecision": true,
"maxItems": 300
}
Phishing cases that ended in a transfer, with the full text:
{
"fullTextSearch": "phishing",
"outcomes": ["Complainant won"],
"includeDecisionText": true,
"maxItems": 200
}
One panelist's whole docket:
{ "panelistContains": "Neil Anthony Brown", "dateFrom": "2010-01-01", "maxItems": 1000 }
Free users
Free-plan runs return up to 10 rows as a preview. Upgrade your Apify plan to pull a whole docket.
Run it
- Create a free Apify account with $5 in credit.
- Open the UDRP & Domain Dispute Decisions Scraper.
- Pick the providers, the date range and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab, or schedule it weekly to catch new decisions.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent the UDRP record through the Model Context Protocol:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/domain-dispute-decisions-scraper"
Then ask: "Which panelists have found reverse domain name hijacking in the last two years?", "Show me every UDRP case brought against a .shop domain in 2026" or "How often does a respondent who files a response actually win?"
Troubleshooting
Why did an empty run return nothing?
FORUM's search matches nothing without a date window, so a run with no dates is defined as the last twelve months. Set dateFrom to go further back; the archive starts on 4 February 2000.
Why is the panelist blank on FORUM rows?
FORUM's case index does not carry it. Switch on the parsed decision and the panelist, the panel size and the registrar are read out of the decision itself.
Why is the registrar N/A on Czech Arbitration Court rows?
The court does not name the registrar in its published decisions. FORUM does.
Why does a legal issue filter return a case whose text never mentions the issue?
The filter uses FORUM's own index of its decisions, which is occasionally broader than the text. The reverseDomainNameHijacking field reports what the decision actually says, so use the filter to narrow and the field to confirm.
Why do the Czech Arbitration Court rows have no submission date?
Its grid does not publish one. Switch on the case timeline and the filing timestamp is read from the decision page.
Why are there fewer .eu rows than UDRP rows?
The .eu docket is smaller: about 1,600 decisions in total against roughly 6,200 on the court's UDRP docket and 44,269 at FORUM. With several providers selected the run splits its row budget between them and hands back whatever a provider does not use.
FAQ
| Question | Answer |
|---|---|
| Where does the data come from? | The public search API behind adrforum.com and the public decision grids at udrp.adr.eu and eu.adr.eu. |
| Do I need an API key or a login? | No. Both providers answer anonymously. |
| How far back does it go? | FORUM to 4 February 2000. The Czech Arbitration Court's dockets start later. |
| Does it include WIPO? | No. WIPO is a separate provider; use our WIPO UDRP Decisions Scraper for that side. |
| Which policies are covered? | UDRP, USDRP, URS, CDRP, STOP, ERDRP, RDRP, .usRS, TDRP and the .eu ADR rules. |
| Can I get the full text of a decision? | Yes, switch on the full decision text, or take just the reasoning sections with the parsed decision. |
| Are pending cases included? | Yes, and they carry N/A for the decision date. Switch on "only decided cases" to drop them. |
| How fast is it? | 400 cases with the parsed decision, timeline and counsel took 21 seconds on the platform. |
| How many rows per run? | Free plan: 10. Paid: as many as the filters match, up to 50,000. |
| Is this an official FORUM or ADR.eu product? | No. It is unofficial and reads only publicly available decisions. |
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by FORUM, the Czech Arbitration Court, ICANN, EURid or WIPO. It reads only publicly available decisions. Nothing here is legal advice.
What input does the Domain Dispute Decisions Scraper accept?
| Field | Type | What it does | Default |
|---|---|---|---|
| outputMode | string (3 options) | Decisions is one row per case. Panelists is the Czech Arbitration Court's panelist directory. Domains is the court's list of every domain name that has been disputed. | decisions |
| sources | array | FORUM handles most US filings. The Czech Arbitration Court runs both a UDRP docket and the .eu ADR docket. Leave empty for all three. | ["forum","cac-udrp","cac-adreu"] |
| maxItems | integer | Stop after this many rows. Free plans are capped at 10. | 100 |
| dateFrom | string | Earliest decision date. Defaults to twelve months ago; FORUM's search needs a window and returns nothing without one. | not set |
| dateTo | string | Latest decision date. Defaults to today. | not set |
| filedFrom | string | Earliest date the complaint was submitted. | not set |
| filedTo | string | Latest date the complaint was submitted. | not set |
| fullTextSearch | string | Search the body of the decisions, not just the case metadata. Both providers support it. | not set |
| caseNumber | string | FORUM claim number (2225233) or CAC case number (CAC-UDRP-108881). | not set |
| caseNameContains | string | The case caption, usually "Complainant v. Respondent". | not set |
| domainContains | string | Matches any disputed domain in the case. | not set |
| tlds | array | Keep only cases with a domain under one of these, for example com, eu, us, shop. | not set |
| complainantContains | string | The brand owner bringing the case. | not set |
| respondentContains | string | The domain holder defending the case. | not set |
| complainantDomicileContains | string | FORUM only. Matches the city, state or country as filed. | not set |
| respondentDomicileContains | string | FORUM only. | not set |
| panelistContains | string | The arbitrator who decided the case. | not set |
| policies | array | UDRP is the global policy. USDRP covers .us, CDRP covers .ca, URS is the rapid suspension track, ADR.eu covers .eu. Leave empty for all. | not set |
| outcomes | array | Both providers use their own words for the result; this filters on the normalised outcome. | not set |
| legalIssues | array | FORUM tags every decision against its own issue taxonomy. Pick one or more to keep only the cases where the panel dealt with them. Ignored for the Czech Arbitration Court, which has no equivalent index. | not set |
| responseType | string (3 options) | FORUM only. | Any |
| language | string | The .eu ADR docket records the language of the proceeding; it also filters the panelist directory by language spoken. | not set |
| panelistCountry | string | Panelists mode only. | not set |
| onlyMultiDomainCases | boolean | Keep only complaints that covered two or more domain names. | false |
| onlyDecidedCases | boolean | Drop pending and suspended filings that have no decision date yet. | false |
| includeParsedDecision | boolean | Opens each decision document and adds the registrar, the panelists, the relief ordered, the reverse domain name hijacking finding and the reasoning sections. Slower and billed per document. | false |
| includeCaseTimeline | boolean | Filing date, response deadline, response received date and days from filing to decision. | false |
| includeRepresentatives | boolean | Counsel and law firm for each side, where the decision names them. | false |
| includeDecisionText | boolean | The whole decision as plain text. Large: a decision runs 2,000 to 6,000 words. | false |
How much does the Domain Dispute Decisions Scraper cost?
from $4.45 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0178 to $0.02 |
| Decision | One domain dispute case: provider, case number, policy, case name, every disputed domain with its TLD, complainant and respondent with their domiciles, the outcome in the provider's own words and normalised to who won, the decision and filing dates, the proceeding language and the link to the published decision. | $0.00445 to $0.005 |
| Panelist | One arbitrator from the Czech Arbitration Court directory: name, country, the languages they hear cases in and the link to their CV. | $0.00356 to $0.004 |
| Disputed domain | One domain name from the court's register of everything that has been disputed, with its TLD and the state of the dispute. | $0.00178 to $0.002 |
| Docket read | One request to a provider: a FORUM search or a page of a Czech Arbitration Court grid. Never charged for more requests than the run wrote rows. | $0.00356 to $0.004 |
| Decision document | Optional. The published decision opened and read, which is one extra request per case. Charged only when the document came back. | $0.00445 to $0.005 |
| Parsed decision | Optional. The registrar, the panelists and the panel size, the relief sought and ordered, the per-domain outcome, the default and dissent flags, the reverse domain name hijacking finding and the reasoning sections. Charged only when the document yielded them. | $0.00356 to $0.004 |
| Case timeline | Optional. Filing date, response deadline, response received date, the date the decision was signed and the days from filing to decision. Charged only when the document carries the dates. | $0.00267 to $0.003 |
| Party representatives | Optional. Counsel and law firm for the complainant and the respondent. Charged only when the decision names at least one of them. | $0.00267 to $0.003 |
| Full decision text | Optional. The whole decision as plain text with its word count, 2,000 to 6,000 words a case. Charged only when the text came back. | $0.00267 to $0.003 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
How do I call the Domain Dispute Decisions Scraper API?
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~domain-dispute-decisions-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"outputMode": "decisions",
"sources": [
"forum",
"cac-udrp",
"cac-adreu"
],
"maxItems": 100,
"responseType": "Any",
"onlyMultiDomainCases": false
}' What example inputs can I use?
Use these inputs to see how a run is configured.
{
"outputMode": "decisions",
"sources": [
"forum",
"cac-udrp",
"cac-adreu"
],
"maxItems": 100,
"responseType": "Any",
"onlyMultiDomainCases": false
} What do users say about the Domain Dispute Decisions Scraper?
No reviews yet. Be the first.
How do I report an issue with the Domain Dispute Decisions Scraper?
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
