Portugal Court Decisions Scraper (DGSI Acórdãos) avatar

Portugal Court Decisions Scraper (DGSI Acórdãos)

Pricing

from $0.70 / 1,000 result items

Go to Apify Store
Portugal Court Decisions Scraper (DGSI Acórdãos)

Portugal Court Decisions Scraper (DGSI Acórdãos)

Exports Portuguese court decisions (acórdãos) from the public DGSI databases: case number, court, rapporteur judge, descriptors, date, vote, decision and the official summary. Metadata and summaries only, never full texts. Unofficial tool.

Pricing

from $0.70 / 1,000 result items

Rating

0.0

(0)

Developer

Gonzalo Fajardo

Gonzalo Fajardo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Exports Portuguese court decisions (acórdãos) from the public legal databases at www.dgsi.pt as structured data: one record per decision with the case number, court, rapporteur judge, descriptors, decision date, vote, outcome and the court's official summary (sumário). You choose the courts, how many decisions per court, and optionally a keyword and a date range. Output formats: JSON, CSV, Excel, XML or HTML from the Apify dataset.

Full texts are never returned. The actor reads only a fixed list of labelled fields from each decision page (listed below) and ignores everything else on the page, including the full text of the decision and the party fields some databases show. There is no full-text option. This keeps the dataset to metadata and summaries.

This is an unofficial tool. It is not affiliated with, endorsed by or operated by the Portuguese courts, the Ministry of Justice or IGFEJ. Every record carries a source field naming the original source: DGSI, Bases Jurídico-Documentais (IGFEJ), www.dgsi.pt.

What data does it return?

FieldMeaning
urlLink to the decision page on dgsi.pt
databaseCode, courtDatabase code (for example jstj) and the court name
caseNumberCase number (Processo)
conventionalNumberConventional number (Nº Convencional), when the database shows one
judgeRapporteurRapporteur judge (Relator)
descriptorsArray of descriptors (keywords) assigned by the court
documentNumberDocument number (Nº do Documento), when shown
decisionDateDate of the decision, ISO yyyy-mm-dd
voteVote (Votação), for example UNANIMIDADE
proceduralTypeProcedural means (Meio Processual), for example REVISTA or APELAÇÃO
decisionOutcome (Decisão)
summaryOfficial summary (Sumário) exactly as published; null when the decision has none
sourceAttribution to the source of the data
scrapedAtUTC time of scraping

Fields a database does not publish are null (an empty array for descriptors). Available courts: Supremo Tribunal de Justiça (jstj), Supremo Tribunal Administrativo (jsta), Tribunal dos Conflitos (jcon), the five Relações (jtrp Porto, jtrl Lisboa, jtrc Coimbra, jtrg Guimarães, jtre Évora) and the two Tribunais Centrais Administrativos (jtca Sul, jtcn Norte).

How to run it

  1. Open the Actor and keep the prefilled input: databases jstj and jtrp, 10 decisions per database.
  2. Click Start. The prefilled run reads about 20 decisions and, in a local test, finished in about 25 seconds.
  3. Open the Output tab, or download the dataset as JSON, CSV or Excel.
  4. To change the scope, pick other databases, raise the maximum, add search terms or set a date range (see the input example).

Without search terms each database is read newest first. With dateFrom the reading stops as soon as the listing is older than that date; with dateTo the actor jumps straight to that date, which costs roughly 15 to 20 extra requests per database. With search terms, the court's own full-text search is used; it returns at most about 500 hits per term, in relevance order, so the date filter is applied to those hits one by one.

How much does it cost to scrape DGSI decisions?

The price is 0.001 USD per decision (one result event per dataset item), so 1,000 decisions cost 1 USD and the prefilled 20-decision run costs 0.02 USD. There is no start fee. Set a maximum total charge on the run and the actor stops when it is reached. Apify platform usage is separate, but the actor only makes plain HTTP requests and runs with 256 MB of memory.

Input example

{
"databases": ["jstj", "jtrp"],
"maxResultsPerDatabase": 10,
"queries": [],
"dateFrom": "",
"dateTo": ""
}

With a keyword and dates: {"databases": ["jstj"], "maxResultsPerDatabase": 50, "queries": ["usucapião"], "dateFrom": "2015-01-01"}.

Output example

Three real items from a local run:

{
"url": "https://www.dgsi.pt/jstj.nsf/954f0ce6ad9dd8b980256b5f003fa814/d2523b00ca3b3d3e80258e88003cc00d?OpenDocument",
"databaseCode": "jstj",
"court": "Supremo Tribunal de Justiça",
"caseNumber": "5306/20.0T8BRG.G3.S1",
"conventionalNumber": "2.ª SECÇÃO",
"judgeRapporteur": "CATARINA SERRA",
"descriptors": [
"DIVORCIO SEM CONSENTIMENTO",
"ATO PROCESSUAL",
"VÍCIOS DA VONTADE",
"CAPACIDADE JUDICIÁRIA",
"FALTA DE CONSCIÊNCIA",
"PETIÇÃO INICIAL",
"ABSOLVIÇÃO DA INSTÂNCIA",
"MAIOR ACOMPANHADO",
"VONTADE",
"DECLARAÇÃO NEGOCIAL",
"CAPACIDADE JURÍDICA",
"AUTONOMIA PRIVADA",
"DIREITOS DE PERSONALIDADE",
"PERÍCIA PSIQUIÁTRICA",
"INCAPACIDADE ACIDENTAL"
],
"documentNumber": null,
"decisionDate": "2026-10-01",
"vote": "UNANIMIDADE",
"proceduralType": "REVISTA",
"decision": "NEGADA",
"summary": "A falta e os vícios da vontade são suscetíveis de relevar no domínio dos actos processuais; relevam, em particular, quando atingem um acto postulativo.",
"source": "DGSI - Bases Juridico-Documentais, IGFEJ (www.dgsi.pt)",
"scrapedAt": "2026-10-10T12:16:58Z"
}
{
"url": "https://www.dgsi.pt/jstj.nsf/954f0ce6ad9dd8b980256b5f003fa814/645ffd40f74af36580258e8b004901a7?OpenDocument",
"databaseCode": "jstj",
"court": "Supremo Tribunal de Justiça",
"caseNumber": "2473/24.7T8PDL.L1.S1",
"conventionalNumber": "7.ª SECÇÃO",
"judgeRapporteur": "NUNO PINTO OLIVEIRA",
"descriptors": [
"SUBSEGURO",
"CONTRATO DE SEGURO",
"INUNDAÇÃO",
"CLÁUSULA CONTRATUAL GERAL",
"REGIME APLICÁVEL",
"DEVER DE INFORMAÇÃO",
"DEVER DE COMUNICAÇÃO",
"VIOLAÇÃO",
"TOMADOR",
"ÓNUS DE ALEGAÇÃO",
"ÓNUS DA PROVA",
"FACTO MODIFICATIVO",
"FACTO IMPEDITIVO",
"REGRA PROPORCIONAL"
],
"documentNumber": null,
"decisionDate": "2026-10-01",
"vote": "UNANIMIDADE",
"proceduralType": "REVISTA",
"decision": "NEGADA",
"summary": "I - O subseguro é um facto modificativo, parcialmente impeditivo, do direito à indemnização.\nII - O não cumprimento do dever de comunicação previsto no n.º 2 do art. 135.º do RJCS, é um facto impeditivo daquele facto modificativo.\nIII - Como o não cumprimento do dever de comunicação seja um facto impeditivo daquele facto modificativo, terá de ser alegado pelo segurado.",
"source": "DGSI - Bases Juridico-Documentais, IGFEJ (www.dgsi.pt)",
"scrapedAt": "2026-10-10T12:17:02Z"
}
{
"url": "https://www.dgsi.pt/jtrp.nsf/56a6e7121657f91e80257cda00381fdf/456901471fa16fb280258e88003a76dc?OpenDocument",
"databaseCode": "jtrp",
"court": "Tribunal da Relação do Porto",
"caseNumber": "2971/10.0TXPRT-AL.E1.P1",
"conventionalNumber": "JTRP000",
"judgeRapporteur": "MARIA JOANA GRÁCIO",
"descriptors": [
"REVOGAÇÃO DE LICENÇA DE SAÍDA JURISDICIONAL",
"REQUISITOS DO DESPACHO"
],
"documentNumber": "RP202609302971/10.0TXPRT-AL.E1.P1",
"decisionDate": "2026-09-30",
"vote": "UNANIMIDADE",
"proceduralType": "CONFERÊNCIA",
"decision": "PROVIDO RECURSO DO ARGUIDO",
"summary": "A decisão de revogação de licença de saída jurisdicional proferida no âmbito de incidente de incumprimento, ao abrigo do disposto no art. 195.º do CEPMPL, não prescinde da descrição factual da conduta do condenado que fundamenta o incumprimento, e, bem assim, da prévia produção de prova sobre os factos em causa.\n(Sumário da responsabilidade da Relatora)",
"source": "DGSI - Bases Juridico-Documentais, IGFEJ (www.dgsi.pt)",
"scrapedAt": "2026-10-10T12:17:10Z"
}

Limitations and the free plan

  • Metadata and summaries only; full texts are never returned and cannot be switched on.
  • Many decisions from before 2000 are summary-only or have an empty summary; some databases (for example the administrative courts) have no summary on recent decisions either. Those records are returned with the fields that exist and null or an empty list for the rest.
  • Fields differ between courts. For example documentNumber is empty for recent jstj decisions and proceduralType is empty for the central administrative courts.
  • The actor is deliberately slow: one request at a time, at least one second apart, and one extra request per decision. About 50 decisions take one to two minutes.
  • It reads dgsi.pt's robots.txt at the start of every run and obeys it. If the site answers 403 or 429, reading of that database stops; temporary 503 errors are retried twice.
  • The connection to dgsi.pt is always verified (certificate chain and host name). The actor ships the public Let's Encrypt intermediate certificates next to its normal trusted roots, so it can still verify the site if the site sends an incomplete or wrong certificate chain; verification is never switched off.
  • Keyword search is handed to the court database's own search, so what matches is decided by that search. Results depend on what the site returns at the time of the run.
  • Free plan: the actor has no special restrictions for free accounts. The prefilled run is small (20 decisions, 0.02 USD of results); larger exports are limited by the one-request-per-second pace and by the maximum charge you set.

FAQ

Is the data official? It is copied from the public pages of dgsi.pt. Check the linked decision page for the authoritative version. The summary is the court's own text, copied as published.

Why no full text? Full decisions can contain personal details of private individuals. The actor never reads them.

Do I need an account on dgsi.pt? No. The pages are public and the actor does not log in.

Something is wrong or a court changed its pages. Please report it in the Issues tab of this Actor on Apify, with the input you used.