JusBrasil Jurisprudence Scraper - Brazil Case Law
Pricing
Pay per event
JusBrasil Jurisprudence Scraper - Brazil Case Law
Search Brazilian jurisprudence on JusBrasil.com.br and extract full court decisions — ementa (summary), acórdão (ruling) text, court, procedural class, instance and judging body across STJ, STF, TJ, TRF and TST. Case-law research: filter by keyword and court.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
19
Total users
8
Monthly active users
4 days ago
Last modified
Share
JusBrasil Jurisprudence Scraper — Brazil Case Law & Court Decisions
Search and extract Brazilian jurisprudence (court decisions / case law) from JusBrasil.com.br. For each decision you get the full ementa (decision summary), the acórdão (ruling text), the court, procedural class, and judging body — across STJ, STF, state courts (TJ), federal regional courts (TRF), and TST.
What this scraper is for: jurisprudence and case-law research — reading and collecting court decisions by keyword and court. It extracts the public decision content JusBrasil serves to anonymous visitors. It is not a litigation/process-tracking tool: full process numbers (CNJ), parties, lawyers, and movement history are locked behind JusBrasil's paid login and are not available to anonymous extraction (see What you can and can't get).
Features
- Full decision text per result — the complete ementa (decision summary / legal holding) and acórdão (ruling), not just a snippet
- Keyword search across jurisprudence — hits JusBrasil's
jurisprudenciaindex (e.g."responsabilidade civil","habeas corpus") - Filter by court — STJ, STF, any TJ state court, TRF federal regional courts, or TST, without post-processing
- Court classification — full court name, court code, instance (1st / 2nd / superior), state, procedural class, and judging body (órgão julgador, e.g.
T2 - SEGUNDA TURMA) - Related decisions — links and any unmasked CNJ identifiers found on the page
- Cloudflare handled for you — JusBrasil sits behind a Cloudflare interactive managed challenge; the actor clears it in a real browser over Brazilian residential proxies, automatically
Who Uses This?
- Legal researchers — build datasets of precedents and decision text for academic or policy analysis
- Law firms & paralegals — collect rulings on a topic, court, or procedural class for precedent research
- Legal-tech / NLP developers — train models on Brazilian court language and legal reasoning over real decision text
- Journalists & analysts — track how courts decide on a given subject over time
How It Works
- Configure your search — provide a keyword (e.g.
"responsabilidade civil"), optionally with a court filter, and setmaxItems - The scraper clears Cloudflare — JusBrasil uses a managed interactive CF challenge; the actor solves it in a hardened headless browser over a Brazilian residential exit, rotating exits until one clears
- Phase 1 — collect decisions — searches the
jurisprudenciaindex and gathers decision URLs from the result cards - Phase 2 — extract decision content — opens each decision in the cleared browser and parses the ementa, acórdão, court, procedural class, and judging body into structured JSON
Input
{"searchQuery":"responsabilidade civil","court":"STJ","maxItems":10}
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "responsabilidade civil" | Keywords to search in JusBrasil jurisprudence. Used when processNumber is not provided. |
processNumber | string | — | CNJ process number lookup (consulta-processual). Note: process tracking is largely login-gated on JusBrasil, so anonymous results for this path are limited — keyword jurisprudence search is the primary, reliable mode. |
court | string | "" (all) | Filter to a specific court: STJ, STF, TJSP, TJRJ, TJMG, TJRS, TJPR, TJSC, TJBA, TRF1–TRF5, TST. |
maxItems | integer | 10 | Maximum number of decisions to return. |
Proxy is fixed to Brazilian residential (required to reach JusBrasil) and is not a user setting.
Output
Each decision is one record. Example (a real STJ result — note the login-gated fields come back null):
{"process_number":null,"title":"Superior Tribunal de Justiça STJ - RECURSO ESPECIAL: REsp XXXXX RS XXXX/XXXXX-9","court":"Superior Tribunal de Justica","court_code":"STJ","instance":"superior","state":null,"judging_body":"T2 - SEGUNDA TURMA","procedural_class":"Recurso Especial","subject":"ADMINISTRATIVO. RECURSO ESPECIAL. RESPONSABILIDADE CIVIL DO ESTADO POR OMISSÃO. MORTE EM DECORRÊNCIA DE DISPARO DE ARMA DE FOGO NO INTERIOR DE HOSPITAL PÚBLICO...","decisions":["Vistos e relatados estes autos em que são partes as acima indicadas, acordam os Ministros da Turma, por unanimidade, dar provimento ao recurso, nos termos do voto do Sr. Ministro-Relator..."],"judge":null,"lawyers":[],"claim_value":null,"publication_date":null,"judgment_date":null,"related_processes":[],"process_url":"https://www.jusbrasil.com.br/jurisprudencia/stj/1554600400","source_type":"jurisprudencia","scraped_at":"2026-06-14T13:28:44.044Z"}
| Field | Type | Description |
|---|---|---|
title | string | Case headline as shown (court + procedural class + number) |
court | string | Full court name (e.g. Superior Tribunal de Justica) |
court_code | string | Court code (e.g. STJ, STF, TJSP) |
instance | string | Instance level: 1st, 2nd, or superior |
state | string | State abbreviation inferred from the court code (e.g. SP, RJ) |
judging_body | string | Judging body / panel (órgão julgador, e.g. T2 - SEGUNDA TURMA) |
procedural_class | string | Procedural class (Recurso Especial, Habeas Corpus, Apelação, etc.) |
subject | string | Ementa — the decision summary / legal holding |
decisions | array | Acórdão (ruling) text and decision excerpts |
judge | string | Rapporteur / presiding judge (Relator) when shown |
lawyers | array | Lawyer OAB references when shown (usually login-gated) |
claim_value | number | Claim value in BRL when shown |
publication_date | string | Publication date (YYYY-MM-DD) when shown |
judgment_date | string | Judgment date (YYYY-MM-DD); usually login-gated |
process_number | string | CNJ process number; usually login-gated (masked XXXXX) for anonymous access |
related_processes | array | Related CNJ process numbers found on the page |
process_url | string | JusBrasil URL for this decision |
source_type | string | "jurisprudencia" or "consulta-processual" |
scraped_at | string | ISO 8601 timestamp when the record was scraped |
What you can and can't get
JusBrasil serves decision content to anonymous visitors but gates process-tracking data behind its paid subscription (and even paid plans are consultation-capped). This scraper extracts what's publicly available:
✅ Reliably extracted (the case-law content):
- Ementa (decision summary) and acórdão (ruling) text
- Court, court code, instance, state, procedural class, judging body
- Decision title and URL, related-decision references
⚠️ Often null — login-gated by JusBrasil:
- Full CNJ process number (shown masked as
XXXXXto anonymous users) - Parties, lawyers/OAB, claim value
- Publication / judgment dates and movement history (andamentos)
These fields are present in the schema and populated when JusBrasil exposes them, but for most anonymous results they come back null. If you need full process tracking, that data lives behind a JusBrasil paid account and is not something a public scraper can provide.
🔍 FAQ
What does this scraper return?
The substance of each court decision: the ementa (summary) and acórdão (ruling) text, plus the court, procedural class, instance, state, and judging body. It's built for jurisprudence / case-law research across STJ, STF, the TJ state courts, the TRF federal regional courts, and TST.
Can I get the parties, lawyers, and case movements?
Generally no. JusBrasil locks process numbers, parties, lawyers, and movement history (andamentos) behind a paid login, and even paid plans cap how many cases you can consult. Those fields exist in the output and are filled when JusBrasil exposes them, but they're null for most anonymous results. This actor is a case-law / decision scraper, not a litigation-tracking tool.
Does it need proxies?
Yes, and they're built in. JusBrasil sits behind a Cloudflare interactive managed challenge; the actor clears it in a real browser over Brazilian residential proxies. You don't configure anything.
Can I filter by court?
Yes. Set court to a code: STJ, STF, TJSP, TJRJ, TJMG, TJRS, TJPR, TJSC, TJBA, TRF1–TRF5, or TST. Leave it blank to search across all courts.
How is it priced?
Pay-per-event: a small per-run start fee plus a per-record fee for each decision returned. You pay for decisions delivered.
Need More?
Need additional courts, more decision fields, or a specific jurisprudence workflow? File an issue or get in touch.
Why Use It?
- Real decision text, not snippets — full ementa and acórdão, parsed into clean JSON
- Cloudflare handled — JusBrasil's interactive challenge stops most scrapers cold; this one clears it in-browser automatically
- Honest scope — built and priced around the case-law data JusBrasil actually serves publicly, so you know exactly what you're getting
