OrbTop

JusBrasil Court Scraper - Brazil Case Law & Jurisprudence

OTHERBUSINESS

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 jurisprudencia index (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

  1. Configure your search — provide a keyword (e.g. "responsabilidade civil"), optionally with a court filter, and set maxItems
  2. 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
  3. Phase 1 — collect decisions — searches the jurisprudencia index and gathers decision URLs from the result cards
  4. 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 XXXXX to 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

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