DataJud Scraper - Brazil Court Cases & Processos (CNJ API) avatar

DataJud Scraper - Brazil Court Cases & Processos (CNJ API)

Pricing

from $15.47 / 1,000 process records

Go to Apify Store
DataJud Scraper - Brazil Court Cases & Processos (CNJ API)

DataJud Scraper - Brazil Court Cases & Processos (CNJ API)

Scrape Brazil's official DataJud (CNJ) API for judicial processes across 91 federal, state, labor, electoral and military courts. Look up by CNJ process number, class or judging unit, or pull recent activity with movement history. Export CSV, Excel, JSON. No login or API key.

Pricing

from $15.47 / 1,000 process records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

9 days ago

Last modified

Share

RecordsData

DataJud Scraper - Brazil Court Cases & Processos (CNJ API)

DataJud Scraper pulls judicial process data from Brazil's official DataJud API (CNJ) across 91 courts: TJSP, TRF1-6, TST, STJ, every TRT and TRE. Look up CNJ process numbers, or filter by class, subject, judging unit, movement, instance, filing or update date and free text. Get subjects and last-movement fields on every row, optional movement rows, and a monitor mode that returns only new or changed processes. Export CSV, Excel, JSON or XML. No login, no API key. Verified 2026-10-09.

DataJud Scraper queries DataJud, the public API of the CNJ (Brazil's National Council of Justice), and returns one clean row per judicial process. A single filter such as "Execução Fiscal at TJSP" matches more than 10,000 processes, and paid users can pull up to 1,000,000 per court per run. It suits legal-tech, credit-risk, law firms and researchers.

🔎 What does DataJud Scraper do?

  • Look up cases by exact CNJ process number, or filter by class, subject, judging unit, movement, instance, filing and update dates, or free text.
  • Monitor new or changed processes with onlyChanged. Skipped processes are not charged.
  • Read subjects, filing year and last-movement fields on every row, across one or many of the 91 tribunals, with optional movement rows.
  • Run it on a schedule, via API, Zapier, Make or n8n.

📋 What data can you extract from DataJud?

Two row types, told apart by recordType, share the same 35 dataset columns. Keys that do not apply are left out, never filled with empty values.

Process rows (process-record)

FieldDescription
recordType, id, scrapedAtprocess-record or movement-record, CNJ index id, collection time
tribunalCourt acronym (TJSP, TRF1, TST...)
numeroProcesso20-digit unique CNJ process number
grauInstance: G1 first instance, G2 appeals, JE special court
classeCodigo / classeNomeProcedural class code and name
assuntosList of {codigo, nome} subjects (nested lists flattened)
orgaoJulgadorCodigo / orgaoJulgadorNomeJudging unit or chamber
orgaoJulgadorMunicipioIBGEIBGE code of the judging unit's municipality
dataAjuizamentoFiling date and time (YYYYMMDDhhmmss)
dataHoraUltimaAtualizacaoLast refresh of the process in DataJud (ISO 8601)
nivelSigiloConfidentiality level (0 = public)
movimentoCountNumber of movements
ultimoMovimentoCodigo / ultimoMovimentoNome / ultimoMovimentoDataLast movement code, name and date
diasDesdeUltimoMovimentoDays since the last movement
assuntoPrincipal, dataAjuizamentoIso, anoAjuizamento, sistemaNome, formatoNome, primeiroMovimentoDataMain subject, filing ISO date and year, court system, format, first movement date

🧾 Sample output

A process row from a TJSP run. Core fields are from a real 2026-10-03 run. Subject, filing ISO and last-movement fields (added in build 0.1.16) are illustrative.

{
"recordType": "process-record",
"tribunal": "TJSP",
"numeroProcesso": "01013729219958260090",
"grau": "G1",
"classeCodigo": 1116,
"classeNome": "Execução Fiscal",
"assuntos": [{ "codigo": 9607, "nome": "Contratos Bancários" }],
"orgaoJulgadorNome": "VARA EXEC FISC MUN FAZENDA DE CENTRAL",
"dataAjuizamentoIso": "1999-12-17T09:32:44.000Z",
"dataHoraUltimaAtualizacao": "2026-09-29T14:50:14.458000Z",
"nivelSigilo": 0,
"movimentoCount": 71
}

Movement rows carry movimentoCodigo, movimentoNome, movimentoDataHora, movimentoOrgaoJulgadorCodigo, movimentoOrgaoJulgadorNome and movimentoComplementos.

💰 How much does it cost to scrape DataJud?

The actor uses Pay Per Event. You pay only for rows actually delivered. Prices on the live actor page (Free plan tier), read 2026-10-09:

EventWhen it is chargedPrice
process-recordOne judicial process row$0.020 each ($20 per 1,000)
movement-recordOne movement row, only if "Include movement history" is on$0.010 each ($10 per 1,000)

Paid plans get lower process prices (Bronze $0.01733, Silver $0.016, Gold $0.01547). Movement rows stay at $0.010.

Worked example at the Free tier price: 1,000 process rows without movements cost 1,000 x $0.020 = $20.00. Adding 1,000 movement rows adds 1,000 x $0.010 = $10.00. A process can carry dozens of movements (the sample has 71), so keep movement history off unless you need the full timeline.

Limits: the Free plan returns 10 processes per tribunal. Paid users can set maxItemsPerTribunal up to 1,000,000. Empty searches, failed requests, invalid input, filtered-out rows and processes skipped by monitor mode are never charged, and the run stops cleanly at your max charge limit. Measured 2026-10-03: 10 TJSP processes were charged as 10 process-record events ($0.20 at the Free tier).

🚀 How to scrape DataJud in 3 steps

  1. Open the Input tab and pick one or more courts in Tribunals (default tjsp; the Console form is prefilled with tjac and 10 processes).
  2. Paste process numbers, combine filters, or leave them empty for the most recently updated cases.
  3. Click Run and download the dataset as JSON, CSV, Excel or XML.

⚙️ DataJud Scraper input

FieldTypeDescription
tribunalsarrayCourt aliases, e.g. tjsp, trf1, tst, tre-sp. Default ["tjsp"]
numerosProcessoarrayExact CNJ process numbers, searched in every selected court. When set, all other filters are ignored
classeCodigointegerProcedural class, e.g. 1116 Execução Fiscal
assuntoCodigointegerSubject code, e.g. 9607 Contratos Bancários. Matches any subject of the process
orgaoJulgadorCodigointegerJudging unit filter
orgaoJulgadorMunicipioIBGEintegerIBGE municipality code of the judging unit
movimentoCodigointegerProcesses with a movement of this code in their history, e.g. 51 Conclusão
grauselectany, G1, G2, JE, TR or SUP. Default any
querystringFree text, every word must appear in class, subject or judging unit name
filedFrom / filedTostringFiling date range, YYYY-MM-DD, inclusive
updatedFrom / updatedTostringLast update date range, YYYY-MM-DD, inclusive
maxItemsPerTribunalintegerMax processes per court (default 100, up to 1,000,000 on paid plans; Free plan 10)
includeMovementsbooleanEmit one extra row per movement (default false)
onlyChangedbooleanReturn only processes that are new or changed since the last run of the same monitor (default false)
stateKeystringMonitor name, so several monitors keep separate memory
resetSeenbooleanForget the saved state of this monitor before the run

Example, monitor new or changed processes in TJSP by subject and filing date. Run it on a schedule: the first run returns the matches, later runs return only processes that are new or that the court updated.

{
"tribunals": ["tjsp"],
"assuntoCodigo": 9607,
"filedFrom": "2026-01-01",
"onlyChanged": true,
"stateKey": "tjsp-bank-contracts",
"maxItemsPerTribunal": 500
}

📦 DataJud Scraper output

Results go to the default dataset (Overview and full-data views). A search with no matches ends SUCCEEDED with "No processes found" and charges nothing. A monitor run with nothing new ends SUCCEEDED with "Nothing new since the last run" and charges nothing. If the DataJud API fails and zero rows were delivered, the run ends FAILED, also with no charge.

⚖️ DataJud scraper vs alternatives

Read on 2026-10-09 from the public Store pages. "Not stated" means the listing does not say.

CapabilityThis actorscrapers_latsadzinn
Courts91, many per run90+, parallelTJ, TRF, TRT, TST, STJ; others by alias
Find casesNumber, class, subject, unit, movement, textSame filters, plus urlNumber (court auto-detected), class, unit
Dates and grauFiling and update ranges, grauFiling and update ranges, grauFiling range in search mode
MonitorNew or changed processesNot statedNew movements per case
ExtrasOptional movement rowsAI summary, translate, extractMovements embedded in the row
Price per 1,000$20from $6.15from $0.01

parseforge/brazil-cnj-court-scraper filters only by court, number and class name, from $19 per 1,000 in its header ($21 in its README).

Rivals offer things we do not: scrapers_lat gives a per-process url, AI summary, translate and extract add-ons and an embedded movimentos list; sadzinn embeds movements in the process row and detects the court from the number. Our monitor works at process level, not per movement, and our movements are separate rows under their own price. Every rival is cheaper per 1,000. The extra cost buys the combined filter set, subject and last-movement columns and a monitor that skips unchanged processes for free.

💼 Use cases

  • Litigation monitoring: schedule a daily onlyChanged run per court and subject.
  • Law firm prospecting: track new Execução Fiscal or labor filings by court and date to size caseloads.
  • Credit risk and research: check processes tied to a case number and build datasets of classes, subjects and timelines.

🔌 Run DataJud Scraper via API and integrations

curl -X POST "https://api.apify.com/v2/acts/RecordsData~datajud-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"tribunals":["tjsp"],"classeCodigo":1116,"maxItemsPerTribunal":10}'

The actor also works with the Apify JavaScript and Python clients, schedules, webhooks, Zapier, Make, n8n and Google Sheets.

🤖 DataJud Scraper MCP server for AI agents

AI agents can call DataJud Scraper through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/datajud-scraper.

Add this to your MCP client configuration (Claude Desktop, Cursor, VS Code):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=RecordsData/datajud-scraper"
}
}
}

Example agent prompt:

Use the DataJud Scraper to fetch the 10 most recently updated Execução Fiscal processes (class code 1116) at TJSP, without movement history, and list each process number with its judging unit, main subject and last update date.

Tool description: choose DataJud Scraper when an agent needs structured Brazilian court case metadata (process number, class, subjects, judging unit, filing date, last movement, optional movements) from DataJud, including new or changed processes since the last run. It does not search by party name or return ruling text.

DataJud is the CNJ's own open-data initiative, and process metadata is public record in Brazil. This actor reads only the official API, published for public reuse, and bypasses nothing. Confidential processes (nivelSigilo above 0) expose fewer fields. You remain responsible for complying with LGPD (Brazil's data protection law) when you store or process personal data.

❓ Frequently asked questions

Why did my DataJud Scraper run return 0 results? The filters matched nothing in the selected courts. The run ends SUCCEEDED with the status message "No processes found" and charges nothing. Check that the process number has 20 digits and belongs to a selected tribunal, or remove the class and judging unit filters.

Can I search DataJud by party name or CPF/CNPJ? No. The public DataJud API from the CNJ does not expose the parties of a case. You can search by exact CNJ process number, class, subject, judging unit, movement code, dates or free text on class, subject and judging unit names, at one or many of the 91 supported courts.

How do I find a class code for DataJud Scraper? Use the CNJ "Glossário de Dados" on the DataJud wiki to look up the procedural class code, then enter it in classeCodigo. Examples: 1116 Execução Fiscal, 198 Apelação Cível. Judging unit codes work the same way through orgaoJulgadorCodigo, subject codes through assuntoCodigo.

What is the maximum number of processes per DataJud Scraper run? Paid users can pull up to 1,000,000 processes per tribunal per run, set through maxItemsPerTribunal (default 100). Free plan runs are limited to 10 processes per tribunal. Each of the 91 courts you select in one run gets its own limit.

Why is my DataJud Scraper run slow or failing with a timeout? The CNJ server is the bottleneck: requests can take 5 to 60 seconds on large courts such as TJSP, with occasional HTTP 429 or 504. The actor retries several times. If every attempt fails and nothing was delivered, the run ends FAILED with no charge, so run it again later.

Do I need an API key to use DataJud Scraper? No. It uses the shared public key that the CNJ publishes for the DataJud API, so you only need an Apify account. There is no login and no personal credential to configure, and the actor does not bypass any protection.

Why does a process show nivelSigilo above 0 in DataJud Scraper? The nivelSigilo field is the confidentiality level under Brazilian procedural law, where 0 means public. For higher levels DataJud limits what it exposes, so the actor returns only the fields the CNJ API provides, leaves the others out, and charges nothing extra.

What happens if a court's DataJud API is down? The actor retries each request several times. If every court fails and zero processes were delivered, the run ends FAILED with a clear message and no charge. If some courts worked, the run succeeds and the status message lists the courts that failed, so you can rerun only those.

Does DataJud Scraper include the full text of rulings? No. It returns process metadata and, optionally, the procedural movements (movimentos). It does not return documents or the full text of decisions, because the CNJ DataJud public API does not provide them. Use it for monitoring, analytics and case tracking.

How do I monitor new or changed processes with DataJud Scraper? Turn on onlyChanged, name the monitor in stateKey and schedule the run. A process is returned when it is new to that monitor or the court updated it since the last run. Unchanged processes are skipped and not charged. Use resetSeen to restart from zero. The monitor works at process level, not per movement.

How do I filter DataJud processes by subject, class or date? Set assuntoCodigo, classeCodigo, and filedFrom/filedTo or updatedFrom/updatedTo as YYYY-MM-DD. Filters combine, so you can ask for subject 9607 filed since 2026-01-01 at TJSP. grau, movimentoCodigo and query narrow the result further, and numerosProcesso overrides all of them.

Why are DataJud Scraper runs slow on large courts? Large courts such as TJSP answer each CNJ request in 5 to 60 seconds, small courts in seconds. Run time depends on the CNJ servers, so no time is promised, and a run that fails with zero rows is not charged. For faster tests use a small court such as tjac with a low maxItemsPerTribunal.

🧭 Want more public records data? Other RecordsData scrapers

🛟 Support

Found a bug or need another court field? Open an issue in the Issues tab or write to contact.punkrecordsdata@gmail.com. Custom scrapers are available.

Last updated: 2026-10-11