Portugal Public Contracts (Portal BASE) avatar

Portugal Public Contracts (Portal BASE)

Pricing

from $3.00 / 1,000 contract results

Go to Apify Store
Portugal Public Contracts (Portal BASE)

Portugal Public Contracts (Portal BASE)

Search and export Portuguese public contracts from the official Portal BASE open data (IMPIC, dados.gov.pt). Filter by contracting authority or supplier (name or NIF), CPV, procedure type, dates, value and year. Clean JSON/CSV/Excel with ISO dates, euro amounts and separate NIFs.

Pricing

from $3.00 / 1,000 contract results

Rating

0.0

(0)

Developer

João Ferreira

João Ferreira

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Search and export Portuguese public contracts from the official Portal BASE open data, published weekly by IMPIC on dados.gov.pt. Filter by contracting authority, winning company (name or NIF), CPV code, procedure type, dates, contract value and year, and get clean, ready-to-use records in JSON, CSV or Excel.

  • Coverage: contracts from 2012 to the current year (one official file per year, about 180,000 contracts in 2026 up to September).
  • Clean output: English field names, ISO dates (2026-07-08), amounts as numbers in euros, NIF and name in separate fields, CPV and NUTS split into code and description.
  • Official open data only: the Actor downloads the files IMPIC publishes on dados.gov.pt. It does not scrape base.gov.pt and does not use the restricted Portal BASE API.
  • Source attribution in every record.

Who is it for

  • Journalists and researchers: which companies win contracts from a given municipality or ministry, how much was awarded by direct award, contracts above a value in a period.
  • Companies that bid for public contracts: see who wins in your CPV sector, at what prices, which authorities buy what, and who the competing bidders were.
  • Compliance and due diligence: list every public contract awarded to a supplier NIF.
  • Data teams and AI agents: a structured, documented feed of Portuguese procurement data without parsing 300 MB files yourself.

How to use

  1. Choose the years to scan (or a date range). Without either, the most recent year is used.
  2. Add any filters. All filters are combined with AND; several values inside one filter are combined with OR.
  3. Set Maximum results and run. Download the results from the Output tab in JSON, CSV, Excel or via the API.

Input fields

FieldWhat it does
yearsYear files to scan, e.g. ["2025", "2026"]. Files are grouped by the Portal BASE contract year (normally the signing year).
contractingAuthoritiesPublic body: 9-digit NIF (most reliable) or part of the name. Case and accents are ignored.
suppliersWinning company: 9-digit NIF or part of the name.
cpvCodesCPV prefix: "72" = all IT services, "45" = all construction work, "72210000-0" = that code and its sub-codes.
procedureTypesPart of the procedure name in Portuguese, e.g. "Ajuste Direto", "Consulta Prévia", "Concurso público".
contractTypesPart of the contract type, e.g. "Aquisição de serviços", "Empreitadas de obras públicas".
keywordsWords in the contract title or description (Portuguese).
dateFrom, dateTo, dateFieldDate range (YYYY-MM-DD) on the publication date (default) or the signing date.
minPrice, maxPriceContract price range in euros.
maxResultsThe run stops after this many saved contracts (default 1,000).

Tip: the same authority is often written in several ways. In our test sample, NIF 506361438 matched 30 contracts, while the name fragment "oncologia de coimbra" matched only 25 of them. Use NIFs when you can.

Examples from real test runs

Both runs below were made on 2026-10-03 against the real 2026 file (published 2026-09-27), on a local PC with the Node.js heap limited to 200 MB. Times on the Apify platform may differ.

1. All IT services contracts of 2026

{ "years": ["2026"], "cpvCodes": ["72"], "maxResults": 1000000 }

Result: 180,386 contracts read, 6,329 saved. 60 seconds in total, including the 42 MB download. Peak memory 122 MB.

2. Large construction tenders published in July 2026

{
"years": ["2026"],
"cpvCodes": ["45"],
"procedureTypes": ["Concurso público"],
"minPrice": 1000000,
"dateFrom": "2026-07-01",
"dateTo": "2026-07-31",
"maxResults": 20
}

Result: 20 contracts saved, after reading 127,320 records (the run stops as soon as maxResults is reached). First rows:

contractIdPublishedContracting authoritySupplierPrice (EUR)
152270152026-07-01Município das Caldas da RainhaSunever Engenharia, Lda.1,748,980.07
152314692026-07-02Município de Oliveira de AzeméisMANUEL FRANCISCO DE ALMEIDA,SA2,929,068.00
152534762026-07-07Infraestruturas de PortugalTeixeira Duarte - Engenharia e Construções…75,996,030.36

Output record (real, from example 2, shortened)

{
"contractId": "15253951",
"procedureId": "9274750",
"year": 2026,
"title": "Centro de Educação Especial de Bragança do Centro Distrital de Bragança",
"contractTypes": ["Empreitadas de obras públicas"],
"procedureType": "Concurso público",
"contractingAuthorities": [{ "nif": "505305500", "name": "Instituto da Segurança Social, IP" }],
"suppliers": [{ "nif": "500006334", "name": "Abel Luís Nogueiro & Irmãos Lda", "isSme": true }],
"competitors": [
{ "nif": "500006334", "name": "Abel Luís Nogueiro & Irmãos Lda" },
{ "nif": "507689127", "name": "Samuel Augusto, lda." }
],
"cpv": [{ "code": "45113000-2", "description": "Obras no local" }],
"publicationDate": "2026-07-08",
"signingDate": "2026-07-07",
"awardDecisionDate": "2026-06-11",
"contractPrice": 1439616.86,
"basePrice": 1500000,
"currency": "EUR",
"executionDeadlineDays": 240,
"executionPlaces": ["Portugal, Braganca, Bragança"],
"nuts": [{ "code": "PT11E", "name": "Terras de Trás-os-Montes" }],
"legalBasis": "Artigo 19.º, alínea b) do Código dos Contratos Públicos",
"announcementNumber": "5015/2026",
"tenderDocumentsUrl": "https://www.acingov.pt/acingovprod/2/zonaPublica/zona_publica_c/donwloadProcedurePiece/MTA1MDUwOA",
"source": "IMPIC – Portal BASE (Contratos Públicos), via dados.gov.pt",
"sourceFile": "https://dados.gov.pt/s/resources/contratos-publicos-portal-base-impic-contratos-de-2012-a-2026/20260927-090427-eb50032c/contratos2026.zip",
"license": "Outra (Domínio Público) — as declared on dados.gov.pt"
}

Output fields

GroupFields
IdentificationcontractId, procedureId, year, announcementNumber, announcementType, incmId
Whattitle, description, contractTypes, procedureType, cpv (code + description), cpvCodes, lots
WhocontractingAuthorities (nif, name), contractingAuthorityNifs, contractingAuthorityNames, suppliers (nif, name, isSme), supplierNifs, supplierNames, competitors (nif, name)
WhenpublicationDate, signingDate, awardDecisionDate, closeDate (ISO 8601 or null), executionDeadlineDays
How muchcontractPrice, basePrice, effectiveTotalPrice (numbers, EUR), currency
WhereexecutionPlaces, nuts (code, name)
LegallegalBasis, directAwardGrounds, legalRegime, awardCriterion, centralizedProcedure, frameworkAgreementNumber, frameworkAgreementDescription, greenContract, materialCriteria, contractEndReason, writtenContractExemptionReasons
Links and notestenderDocumentsUrl (e-procurement platform, when published), notes
Sourcesource, sourceDatasetUrl, sourceFile, license, attribution

Each run also saves a summary in the key-value store (OUTPUT): years scanned, records read, matches, saved results, duration, peak memory and the exact source files used.

Ready-made searches

Copy one of these into the JSON input and change the values.

QuestionInput
Every contract a company won (by NIF){ "years": ["2025", "2026"], "suppliers": ["500006334"], "maxResults": 5000 }
Direct awards by one municipality{ "years": ["2026"], "contractingAuthorities": ["Município de Coimbra"], "procedureTypes": ["Ajuste Direto"] }
Who wins IT services contracts above 100,000 €{ "years": ["2026"], "cpvCodes": ["72"], "minPrice": 100000 }
Cleaning or security services contracts signed last quarter{ "years": ["2026"], "cpvCodes": ["90910000", "79710000"], "dateField": "signingDate", "dateFrom": "2026-07-01", "dateTo": "2026-09-30" }
Contracts that mention a word in the title{ "years": ["2026"], "keywords": ["software"], "maxResults": 500 }

Use it from n8n, Make, Python or the API

  • API: run the Actor and get the results in one call with Apify's run-sync-get-dataset-items endpoint: POST https://api.apify.com/v2/acts/fluxopronto~portugal-public-contracts/run-sync-get-dataset-items with your Apify token and the input as the JSON body. See the API tab of this Actor for ready-made code.
  • Python or JavaScript: use the official apify-client package: call the Actor fluxopronto/portugal-public-contracts with your input and read the items of its default dataset.
  • n8n, Make, Zapier: use Apify's official integration for your tool, choose this Actor and map the output fields.
  • AI agents: the Actor can be used as a tool through Apify's MCP server.

A weekly scheduled run (Apify Schedules) with a supplier NIF or a CPV prefix gives you a simple alert for new contracts in your sector.

FAQ

Is this data public and legal to use? Yes. It is the open data IMPIC publishes on dados.gov.pt with the licence «Outra (Domínio Público)». Every record says where it came from. Check the GDPR if you process records about individuals (see Limitations).

Does it include contracts that are still open for bids? No. This Actor covers contracts that were already awarded and published. Tender announcements are a different dataset.

How current is the data? IMPIC updates the files weekly. The Actor always downloads the newest file, so a run gives you the latest published week.

Why does a search by name find fewer contracts than a search by NIF? The same body is often written in several ways in the source. The NIF is the same in every record.

How much does a run cost? You pay per saved contract and a tiny fee per run start (see the Pricing tab), nothing for the contracts that are read and filtered out. Set maxResults or a maximum cost per run to cap it.

Pricing

Pay per result: you pay for each contract saved to the dataset, not for the contracts that are read and filtered out. The current price is shown in the Pricing tab of this Actor. You can cap the cost of a run with the Apify "maximum cost per run" setting; the Actor stops when the cap is reached.

Limitations (please read)

  • Data is as published by IMPIC. Names are not standardised (one authority can appear under several spellings), some fields are empty, and basePrice / effectiveTotalPrice are often 0 when they were not filled in. The Actor does not correct or enrich the data.
  • Update frequency: the source files are updated weekly by IMPIC; the newest contracts can take days to appear.
  • Year files: files are grouped by the Portal BASE contract year (normally the signing year). A date filter on the publication date also scans the following year's file to catch late publications; contracts outside that window are not found.
  • Speed: each year file must be read in full unless maxResults is reached first. One year takes about one minute in our local test; scanning many years takes proportionally longer.
  • No sorting: results come in the order of the source file, newest year first.
  • Personal data: IMPIC publishes some suppliers that are individuals by name only, without NIF. The Actor never outputs a NIF in the ranges reserved for natural persons. If you process records about individuals, the GDPR applies to you.
  • Only contracts: tender announcements and contract modifications (also published by IMPIC) are not included yet.

Source and licence

Data: IMPIC – Instituto dos Mercados Públicos, do Imobiliário e da Construção, dataset «Contratos Públicos - Portal Base - IMPIC - Contratos de 2012 a 2026» on dados.gov.pt, licence declared as «Outra (Domínio Público)». Every record carries the source, the exact source file and the licence. This Actor is not affiliated with or endorsed by IMPIC, the Portal BASE or dados.gov.pt.

Em português

Este Actor pesquisa os contratos públicos portugueses registados no Portal BASE, a partir dos dados abertos que o IMPIC publica todas as semanas no dados.gov.pt (licença «Outra (Domínio Público)»). Pode filtrar por entidade adjudicante ou adjudicatária (nome ou NIF), código CPV, tipo de procedimento, tipo de contrato, palavras do objeto, datas, preço contratual e ano. Os resultados saem com datas ISO, valores em euros e NIF separado do nome, e podem ser descarregados em JSON, CSV ou Excel. Não usa a API do Portal BASE nem o site base.gov.pt. Os nomes das entidades aparecem escritos de várias formas: pesquise pelo NIF sempre que puder.