Jus APIjurisprudencia.tst.jus.br ↗
Search and retrieve Brazilian TST judicial decisions via API. Access acórdãos, full texts, parties, ementa, and dispositivo with flexible filters.
What is the Jus API?
This API provides structured access to Brazil's Superior Labor Court (TST) jurisprudence database across 3 endpoints. Use search_decisions to query acórdãos and other document types by keyword, date range, or ementa text, and receive paginated results including process number, reporting judge, ementa, dispositivo, and an auto-generated resumo. Individual decisions can be retrieved in full detail, including the complete inteiro teor and party information.
curl -X GET 'https://api.parse.bot/scraper/8b01ba15-3f98-4848-9997-a722ecd553d3/search_decisions?page=1&query=justa+causa&tipos=ACORDAO&date_end=2026-07-11&page_size=5&date_start=2025-07-11&orgao_sigla=T1&include_full_text=true' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace jurisprudencia-tst-jus-br-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.tst_jurisprudência_api import TST, Decision, OrgaoJudicante, OrgaoSigla, DecisionNotFound
tst = TST(api_key="YOUR_API_KEY")
# List all judicial bodies
for orgao in tst.orgaojudicantes.list():
print(orgao.sigla, orgao.descricao, orgao.codigo)
# Search decisions from SDI1 about "justa causa"
for decision in tst.decisions.search(query="justa causa", orgao_sigla=OrgaoSigla.SDI1, limit=5):
print(decision.numero_processo, decision.relator, decision.data_julgamento, decision.tipo)
# Get detailed decision by process number
detail = tst.decisions.get(process_number="0010535-70.2022.5.03.0078")
print(detail.numero_processo, detail.orgao_judicante, detail.ementa, detail.inteiro_teor)
Full-text search over TST jurisprudence decisions with flexible filters. Supports general query terms (OR logic), exact phrase, ementa-scoped and dispositivo-scoped terms, exclusion terms, judicial body filtering, date ranges, and document type filtering. Paginates via integer page counter. Each decision includes ementa, dispositivo, auto-generated summary, and optionally the full inteiro teor text.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-indexed) |
| query | string | General search terms (OR logic) |
| tipos | string | Document types, comma-separated (default: ACORDAO) |
| date_end | string | End date in YYYY-MM-DD format |
| page_size | integer | Results per page (max 50) |
| date_start | string | Start date in YYYY-MM-DD format |
| exact_term | string | Exact phrase search |
| ementa_term | string | Search within ementa |
| orgao_sigla | string | Judicial body sigla. Accepted values: CSJT, OE, PLENO, SDC, SDI1, SDI2, SDIPLENA, SESEAD, T1, T2, T3, T4, T5, T6, T7, T8 |
| exclude_term | string | Terms to exclude from results |
| dispositivo_term | string | Search within dispositivo |
| include_full_text | string | Include full inteiro teor text (true/false) |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"decisions": "array of decision objects",
"page_size": "integer, results per page",
"total_pages": "integer, total number of pages",
"total_results": "integer, total number of matching decisions"
},
"sample": {
"data": {
"page": 1,
"decisions": [
{
"id": "36ff85d6770e8eee79b7991f96d6555d",
"tipo": "Acórdão",
"ementa": "AGRAVO DECISÃO DENEGATÓRIA...",
"partes": null,
"resumo": "Resumo: AGRAVO DECISÃO DENEGATÓRIA...",
"relator": "Guilherme Augusto Caputo Bastos",
"dispositivo": ", por unanimidade, negar provimento ao agravo.",
"numero_unico": "01018291920175010020",
"tipo_decisoes": [],
"data_julgamento": "2026-06-02",
"data_publicacao": "2026-06-10T07:00:00-03",
"numero_processo": "Ag-RR - 101829-19.2017.5.01.0020",
"orgao_judicante": "Órgão Especial"
}
],
"page_size": 5,
"total_pages": 346384,
"total_results": 1731916
},
"status": "success"
}
}About the Jus API
Search and Filter Decisions
The search_decisions endpoint accepts a combination of filters: free-text query (OR logic), exact_term for phrase matching, ementa_term to scope search within the ementa field, and date_start/date_end for date ranges in YYYY-MM-DD format. The tipos parameter defaults to ACORDAO but accepts comma-separated document types to include despachos and other legal instruments. Results are paginated with a maximum page_size of 50 and include total_results and total_pages for cursor management. Each item in the decisions array carries id, numero_processo, orgao_judicante, data_julgamento, relator, ementa, dispositivo, and resumo.
Decision Detail
The get_decision_detail endpoint takes a process_number in unified CNJ format (e.g., 0010535-70.2022.5.03.0078) and returns the full record. This includes inteiro_teor (the complete decision text), structured partes keyed by role (e.g., reclamante, reclamado), and the same metadata fields returned by search. Optional date_start, date_end, and orgao_sigla parameters help disambiguate cases where multiple decisions share a process number.
Judicial Bodies Reference
The list_orgaos_judicantes endpoint returns all TST judicial bodies with their codigo, descricao, and sigla. Accepted sigla values include SDI1, SDI2, SDC, PLENO, CSJT, and individual turmas (T1 through the numbered chambers). These siglas feed directly into the orgao_sigla filter on get_decision_detail, so calling this endpoint first is useful when building filtering UI or normalizing orgão references in a dataset.
The Jus API is a managed, monitored endpoint for jurisprudencia.tst.jus.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jurisprudencia.tst.jus.br changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jurisprudencia.tst.jus.br API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Building a labor law research tool that surfaces TST precedents by legal thesis using
ementa_termsearch - Aggregating acórdão metadata (relator, orgao_judicante, data_julgamento) to analyze decision volume trends by chamber over time
- Retrieving full
inteiro_teortexts for NLP pipelines that classify labor rights outcomes - Monitoring new decisions on a specific process number using
get_decision_detailwith date filters - Constructing a case-law citation graph from
numero_processoandpartesfields across multiple paginated results - Populating a legal database with structured TST data including
dispositivoandresumofor attorney workflow tools
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the TST provide an official public developer API?+
What does `get_decision_detail` return beyond what `search_decisions` provides?+
get_decision_detail adds two fields not present in search results: inteiro_teor (the full decision text, which can be lengthy) and partes (a structured object keyed by legal role such as reclamante and reclamado). Search results include a resumo and ementa but omit these full-text and party fields.How should I handle cases where a process number has decisions from multiple judicial bodies?+
orgao_sigla, date_start, and date_end parameters on get_decision_detail to narrow the result. Call list_orgaos_judicantes first to get valid sigla values such as SDI1, T3, or PLENO.Does the API cover decisions from TRTs (Regional Labor Courts) or other labor court levels?+
Is there a limit on how far back the decision history goes?+
inteiro_teor content. Use date_start and date_end to target specific periods and check total_results to gauge coverage for a given range.