Brazil Court Scraper - Lawyer Caseloads & Case Tracking avatar

Brazil Court Scraper - Lawyer Caseloads & Case Tracking

Pricing

Pay per event

Go to Apify Store
Brazil Court Scraper - Lawyer Caseloads & Case Tracking

Brazil Court Scraper - Lawyer Caseloads & Case Tracking

Track Brazilian court cases three ways: by a lawyer's OAB registration, by process number, or by case-law keyword. Returns parties, counsel with OAB, procedural class, judging body, filing date and dated movements. Built for tracking active and ongoing cases, including matters with no ruling yet.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

7

Monthly active users

12 hours ago

Last modified

Categories

Share

Brazil Court Scraper — Lawyer Caseloads, Process Tracking & Case Law

Track Brazilian litigation three ways from one actor:

  • By lawyer — give a bar registration (OAB) and get every case tied to it, with parties, opposing counsel, procedural class and full dated movement history.
  • By process number — give one or many CNJ numbers and get each case's capa, parties and complete movement log.
  • By keyword — search published case law and get the ementa and acórdão text.

The first two are built for tracking active and ongoing cases, including first-instance matters that have no published ruling yet.

Features

  • Lawyer caseload lookup — one OAB registration in, that lawyer's whole current caseload out. Submit a list of registrations and cap the run with maxItems.
  • Real movement history — every procedural movement with its code, name and timestamp, in order. Long-running cases routinely return hundreds of movements.
  • Parties and counsel — party names with their side (plaintiff / defendant), and each lawyer with their OAB registration and state.
  • Ongoing cases included — a case does not need a published decision to show up.
  • Multi-value inputs — several registrations or several process numbers in a single run.
  • Deduplicated by case — a case appearing many times across the record collapses to one row, so maxItems counts distinct cases, not repeats.
  • Case-law search — keyword search over published decisions, with full ementa and acórdão text and a court filter.

Who Uses This?

  • Legal SaaS & litigation platforms — onboard a lawyer or firm and monitor their docket for new movements
  • Law firms & paralegals — watch your own caseload, or an opposing counsel's, without manual court-by-court checks
  • Legal researchers & analysts — build datasets of cases, parties, counsel and procedural timelines
  • Legal-tech / NLP developers — train on Brazilian court language over real decisions and movement text

Input

Fill one of the three. Precedence: oabprocessNumbersearchQuery.

All three are lists — add as many entries as you need.

Lawyer caseload

{
"oab": ["183919/SP", "226005/SP", "5555/MG"],
"maxItems": 200
}

Formats accepted per entry: 183919/SP, OAB 183919/SP, OAB/SP 183919, SP183919.

Process lookup

{
"processNumber": ["0016711-76.2009.8.26.0451", "1011305-91.2019.8.26.0100"],
"maxItems": 50
}

Masked (0016711-76.2009.8.26.0451) and unmasked (00167117620098260451) both work.

{
"searchQuery": ["responsabilidade civil", "habeas corpus"],
"courts": ["STJ", "TJSP"],
"maxItems": 10
}

Each query × court pair runs as its own search, so the example above runs four. maxItems caps the combined total. Leaving courts empty runs one search per query across all courts.

FieldTypeDefaultDescription
oabarrayBar registrations. Selects the lawyer-caseload lookup.
processNumberarrayCNJ process numbers. Selects the process lookup.
searchQueryarray["responsabilidade civil"]Keywords for published case law, one search per entry.
courtsarray[] (all courts)Applies to the keyword search only. Pick any of 90 courts — the superior courts, all 27 state courts (TJ), the 6 federal regional courts (TRF), all 24 labour courts (TRT), the electoral courts (TRE) and the state military courts.
maxItemsinteger10Maximum number of distinct cases to return.

Only one lookup runs per run. If more than one is filled, precedence is oabprocessNumbersearchQuery, and the run log states which mode was selected and which inputs it did not read.

Brazilian exits are required to reach the court sources and are handled for you — there is nothing to configure.

Output

One record per case. Example from a lawyer lookup (real result, trimmed):

{
"process_number": "0016711-76.2009.8.26.0451",
"court": "TJSP",
"state": "SP",
"instance": "1st",
"procedural_class": "Cumprimento de sentença",
"judging_body": "04 CIVEL DE PIRACICABA",
"filed_at": "2009-06-17",
"subjects": ["Cheque"],
"parties": [
{ "name": "INSTITUTO EDUCACIONAL PIRACICABANO DA IGREJA METODISTA", "role": "plaintiff" },
{ "name": "PAULO JORGE ALVES DE CARVALHO", "role": "defendant" }
],
"lawyers": [
{ "name": "MAX FERNANDO PAVANELLO", "oab": "183919", "oab_uf": "SP" }
],
"movements": [
{ "code": 26, "name": "Distribuição", "at": "2009-06-18T15:52:06.000Z" },
{ "code": 11385, "name": "Execução/Cumprimento de Sentença Iniciada", "at": "2025-07-17T15:36:58.000Z" }
],
"last_movement": "Expedição de documento",
"last_movement_at": "2026-03-28T10:47:44.000Z",
"last_publication_at": "2026-07-24",
"matched_oab": ["183919/SP"],
"source_type": "advogado"
}
FieldTypeDescription
process_numberstringCNJ process number
courtstringCourt sigla handling the case (e.g. TJSP, TRT2)
court_namestringFull court name
statestringState abbreviation, for state courts
instancestring1st, 2nd, or superior
procedural_classstringProcedural class (e.g. Cumprimento de sentença)
judging_bodystringCourt division or panel hearing the case
filed_atstringFiling date (YYYY-MM-DD)
subjectsarrayLegal subjects assigned to the case
partiesarray{ name, role } — role is plaintiff or defendant
lawyersarray{ name, oab, oab_uf }
movementsarray{ code, name, at } in chronological order
last_movement / last_movement_atstringMost recent movement and its timestamp
publicationsarray{ at, type, body } court publications for the case
last_publication_atstringDate of the most recent publication
matched_oabarrayWhich queried registrations this case matched
subject, status, decisions, appeals, related_processes, process_urlFilled by the keyword case-law search
source_typestringadvogado, processo, or jurisprudencia
scraped_atstringISO 8601 collection timestamp

Fields a given lookup cannot legitimately source come back empty rather than guessed.

Coverage

Lawyer caseload. "A lawyer's cases" means cases where that registration appears on the official court record. Coverage is complete going forward from mid-2025 and patchy before it, so this is excellent for onboarding a lawyer and monitoring their docket from that point on — it will not reconstruct a decade of dormant history. A brand-new case appears once it first reaches the record.

Sealed cases. Cases under seal are excluded, and party names the court has masked stay masked exactly as the court published them.

Case-law search. Returns the decision text (ementa / acórdão), court, procedural class, instance and judging body. Parties and movements are not part of this lookup — use the lawyer or process lookup for those.

🔍 FAQ

Can I really get parties, lawyers and movements now?

Yes — through the lawyer and process lookups. You get party names with their side, counsel with OAB registration, and the full dated movement log. This is the litigation-tracking capability, not a preview of it.

Can I submit a list of lawyers or processes?

Yes — oab, processNumber and searchQuery are all lists. maxItems caps the records returned across the whole run, not the number of entries you submit.

What if I fill in more than one lookup?

Only one runs. Precedence is oabprocessNumbersearchQuery, so an OAB lookup wins over everything. The run log names the selected mode and lists the inputs it did not read, so nothing is dropped silently. To get two lookups, run them separately.

Does the court filter apply to the lawyer and process lookups?

No — courts narrows the keyword case-law search only. A lawyer lookup returns that registration's cases across every court, which is normally what you want; filter the output afterwards if you need one court. The run log states which inputs the selected lookup does not read, so this is never silent.

How many courts can I filter by?

90 — the superior courts, all 27 state courts, the 6 federal regional courts, all 24 labour courts, the electoral courts and the state military courts. Every one was individually checked to confirm it actually narrows results; the handful that did not are deliberately not offered, because a filter that silently does nothing is worse than no filter.

Does maxItems count duplicates?

No. Cases are deduplicated before the cap, so maxItems: 50 means 50 distinct cases.

Why do some cases come back with no movements?

Because the court has not published a movement log for them — most often a case under seal. You still get whatever the record legitimately shows, and empty rather than invented values for the rest.

Can I search by a party's name instead of a lawyer's?

No. Lookups are keyed to bar registration and process number by design.

How is it priced?

Pay-per-event: a small per-run start fee plus a per-record fee for each case returned. You pay for cases delivered.


Need More?

Need additional courts, more case fields, or a specific litigation-monitoring workflow? File an issue or get in touch.

Why Use It?

  • Actual case tracking — parties, counsel and dated movements, including cases with no ruling yet
  • Whole-caseload lookup — one bar registration returns the lawyer's docket, not a single case at a time
  • Honest output — every field is sourced from a record that can actually supply it; nothing is inferred to fill a column

Further reading: How to Get Court Records and Trademark Data in Bulk