Datajud Scraper
Pricing
from $15.00 / 1,000 results
Datajud Scraper
Query Brazil's official CNJ DataJud court records across 90+ tribunais. Look up cases by process number with the court found automatically, never a stale duplicate snapshot, plus full docket, class, subject and judging body. Watch a portfolio and get told only what genuinely changed.
Pricing
from $15.00 / 1,000 results
Rating
0.0
(0)
Developer
Norm Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share

⚖️ DataJud Scraper
Query the official CNJ DataJud database of Brazilian court processes across all 90+ tribunais, with no login and no API key of your own to manage. Look up exact cases by process number, or search a court by class, subject, judging body, instance and date, and get back the full procedural docket. Built for legal due diligence, litigation monitoring, jurimetria and compliance screening in Brazil.
🎯 Who uses it?
⚖️ Law firms and legal ops
Track a portfolio of process numbers across scheduled runs and get told exactly which ones moved, without re-checking every case by hand.
🏢 KYB and litigation-risk teams
Pull every process tied to a class, subject or judging body across multiple courts before a deal, and flag active versus dormant cases by days since the last movement.
📊 Jurimetria and legal analysts
Build datasets of Brazilian court processes by class, subject, court and filing year for statistical analysis of case flow and duration.
💳 Credit and debt-recovery teams
Find execução and recuperação judicial cases by class and subject code to assess counterparty exposure.
🕵️ Journalists and researchers
Query public court records across state, federal, labor and superior courts for investigations.
✨ What it does
- Lookup by process number: give one or more 20-digit CNJ process numbers and get the full case back, with the right court found automatically from the number itself.
- Search a court (or several in parallel) by free text, procedural class, subject, judging body, instance, movement code, and filing or last-update date ranges.
- Full procedural docket: every movement in the case, with its date, the judging body that handled it, and any complement codes explaining why it happened.
- Watch a portfolio: opt in to only get told about cases with a genuinely new movement since the last run, instead of re-reading everything every time.
- Sealed-case filter: skip confidential processes when you only want public ones.
Missing source values are returned as null, never invented.
Why this scraper
- Finds the right court on its own. Paste a process number and it works out which of the 90+ courts holds it, instead of making you guess or list several courts just in case.
- Never hands back a stale snapshot. A single process number can have more than one matching record in a court's own index; this always keeps the most recently updated one.
- A real watch mode, not just a date filter. Remembers what it saw last time and reports only genuine changes, so a scheduled run tells you what actually moved.
- Dates you can trust. Court filing dates arrive in more than one raw format depending on the source system; both are parsed into one clean, consistent timestamp.
- The complete docket, not a summary. Every movement, with the judging body and complement codes CNJ itself publishes, not a trimmed subset.
How it compares
| Capability | This actor | Other DataJud actors on Apify |
|---|---|---|
| Courts covered | 90+ | varies, some single-court only |
| Automatic court detection from a process number | yes | no, you list courts yourself |
| Protection against stale duplicate records | yes | not documented |
| Portfolio watch mode (only report real changes) | yes | manual date filtering only |
| Multi-court parallel search | yes | some |
| Class, subject, judging body, instance and movement filters | yes | rare |
| Full movement docket with complement codes | yes | rare |
| Sealed/confidential case filter | yes | no |
📦 What data you get
| Entity | Useful fields |
|---|---|
| Process | Number, court, instance, procedural class, primary and all subjects, filing date and year, confidentiality level. |
| Judging body | Name, code, and the IBGE municipality code of the court, when published. |
| Status | Last movement, its date, total movement count, and days since the last movement. |
| Docket | The complete movement history, each with its date, judging body and complement codes. |
| Monitor | Which movements are new since the last run, and whether the case changed at all. |
Every record includes observedAt (UTC). Download your dataset from Apify as CSV, JSON, Excel, or
XML.
💡 Use cases
⚖️ Track a portfolio of cases for what changed
{ "processNumbers": ["00182260520208260050"], "onlyChangedSinceLastRun": true }
🏢 Every execution case in a court since a given date
{ "tribunal": "tjsp", "classeCode": 386, "filedFrom": "2023-01-01", "maxCases": 200 }
📊 Search several courts at once
{ "tribunais": ["tjsp", "tjrj", "trt2"], "query": "recuperação judicial", "maxCases": 100 }
⚙️ How the input is organised
Maximum cases sits at the very top, since it applies no matter what you're doing. Below it, the form is split into three numbered sections:
| Section | What it's for |
|---|---|
| 1 · What to search | A court (or several) plus optional free text, or process numbers to look up directly. |
| 2 · Filters (optional) | Class, subject, judging body, instance, movement and date-range filters, plus the sealed-case exclusion. Only apply when searching a court. |
| 3 · Monitor (optional) | Turn on change-only reporting for a list of process numbers. |
Apify Free plan: every run is limited to a fixed 10-row sample. Upgrade your Apify plan to run your own settings.
🛡️ Limits & responsible use
This Actor reads only publicly available CNJ DataJud data. It never signs in and never accesses anything gated behind an account.
By CNJ policy, the public DataJud API does not publish party names, lawyers or the claim value of a case, so those fields do not exist in this source and are never invented here. For decision text or party information, a different source is needed.
If a process number can't be found in any of the courts checked, or a search matches nothing, the
run writes a single row with an error field instead of failing silently.
📧 Contact
Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com
Local development
bun installbun test # offline: normalization and input parsing, against real fixturesbun run src/main.ts # reads storage/key_value_stores/default/INPUT.json