Public procurement of a Portuguese company
Every week IMPIC publishes, as open data (public domain), every Portuguese public contract registered on Portal BASE since 2012 — about 170,000 to 250,000 contracts a year, thirty-nine fields each, with contract modifications and the notices of the Diário da República. This route finds a company by its NIPC, as winner and as buyer.
See a real response (free) Get the quote for /v1/eu/entreprise/PT/{nipc}/marches-publics
What the route returns
Catalogue description, exactly as agents read it:
Public-procurement record of a Portuguese company from IMPIC's Portal BASE (weekly open-data files on dados.gov.pt, public domain; every public contract since 2012): contracts WON by NIPC — buyer, subject, procedure, CPV, lots, contract, base and final prices in EUR, dates, duration, framework agreement, closure, bidder count, contract modifications — contracts ISSUED as a buyer and notices in the Diário da República; newest first, capped at 100. Winners without a published NIF are never named.
Expected identifier
Nine-digit NIPC (check digit verified; PT prefix, dots and spaces tolerated), e.g. 504904493.
A wrongly formatted identifier in the path returns 400 and is not billed — but it costs you a round trip. It is the leading cause of failed calls on the foreign routes. A search parameter, by contrast, is cleaned up: unsupported characters are stripped and the usable query is served.
Extract from a genuinely paid response
Dated snapshot from 2026-09-18, truncated to one item per array. It is not live data. The full extract is served free of charge from the samples surface, and the schema from the OpenAPI document.
{
"pays": "PT",
"nipc": "504904493",
"attributions": [
{
"id": "12491739",
"ano": 2026,
"procedimento": "appel d'offres ouvert",
"procedimento_source": "Concurso público",
"tipo_contrato": [
"fournitures"
],
"objeto": "Aquisição de equipamento informático",
"adjudicante": {
"nif": "501413197",
"nom": "Universidade do Porto"
},
"adjudicatarios": [
{
"nif": "504904493",
"nom": "RIS 2048 - Sistemas Informáticos e Comunicações, S.A.",
"pme": true
}
],
"adjudicatarios_sans_nif": 0,
"publie_le": "2026-01-09",
"celebre_le": "2026-01-07",
"preco_contratual_eur": 215012,
"preco_base_eur": 220729,
"prazo_dias": 365,
"cpv": [
"30213100-6"
],
"lotes": [
"Portáteis, computadores e outro equipamento informático"
],
"concorrentes": 2,
"concorrentes_sans_nif": 0,
"modificacoes": [
{
"data": "2026-06-01",
"tipo_ato": "Acordo entre as partes",
"preco_alterado_eur": 215012
}
]
}
],
"nombre_attributions": 1,
"valeur_totale_eur": 215012,
"tronque_attributions": false,
"aucune_attribution": false,
"contrats_emis": [],
"nombre_contrats_emis": 0,
"tronque_contrats_emis": false,
"avis_emis": [],
"nombre_avis_emis": 0,
"tronque_avis_emis": false,
"stock": {
"depuis": "2012",
"annees_chargees": [
2026
],
"fichiers_du": "2026-09-13"
}
}
Price and billing
Price: $0.02. The authoritative amount is the one in the 402 quote returned by the route itself — not this text, which derives from the same grid but is still just a page.
An error response cancels the payment: a 400, 404 or 503 is never billed. An upstream outage closes the route with a 503 rather than serving a degraded response.
Calling the route
# 1. Le devis, sans rien payer : la route répond 402 avec son montant
curl -i https://api.sirenic.eu/v1/eu/entreprise/PT/{nipc}/marches-publics
# 2. L'appel réglé — le client x402 paie le devis et rejoue la requête
npx x402-fetch https://api.sirenic.eu/v1/eu/entreprise/PT/{nipc}/marches-publics
# 3. Ou en MCP, dans Claude Code / Cursor / un agent
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
What this route does not do
Partial coverage by construction: 11.6 % of winners and 8.8 % of bidders are published without a NIF (natural persons or foreign entities) — never named, only counted; bidders are served as counts only; the portal is declarative. Zero never means “never won a contract”. Amounts in EUR as published.
Neighbouring routes
/v1/eu/entreprise/ES/{nif}/marches-publics— $0.02/v1/eu/entreprise/PL/{nip}/marches-publics— $0.02/v1/eu/entreprise/LV/{regnr}/marches-publics— $0.02
How you pay
Every route is paid per call, in USDC or EURC on the Base network, over the x402 protocol: no account to create, no API key, no subscription. The first call returns a 402 quote your client settles, then replays the call. A failed call is never billed.
Would you rather have a euro invoice and prepaid credits? That is in preparation, and we will not announce a date until it is open. Write to contact@sirenic.eu and we will let you know when it opens.
Paid responses are Ed25519-signed: you can later prove what was served to you, and when. The whole catalogue is free to read in the OpenAPI document and in llms.txt.
One call, end to end
# Client x402 (npm) — le devis 402 est réglé et l'appel rejoué automatiquement
npx x402-fetch https://api.sirenic.eu/v1/entreprise/552032534
# Ou en MCP, dans Claude Code / Cursor
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
Routes used and pricing
| Route | Price | Sample | What it returns |
|---|---|---|---|
/v1/eu/entreprise/PT/{nipc}/marches-publics | $0.02 | free sample | Public-procurement record of a Portuguese company from IMPIC's Portal BASE (weekly open-data files on dados.gov.pt, public domain; every public contract since 2012): contracts WON by NIPC — buyer, subject, procedure, CPV, lots, contract, base and final prices in EUR, dates, duration, framework agreement, closure, bidder count, contract modifications — contracts ISSUED as a buyer and notices in the Diário da República; newest first, capped at 100. Winners without a published NIF are never named. |
Contract end dates are estimates, computed from the notification date and the declared duration. This is not an official re-tendering calendar.
Take it further
No account to create, no key to request: the first step is free and shows you exactly what you would be buying.
See a real response (free) Get the quote for /v1/eu/entreprise/PT/{nipc}/marches-publics Get notified about euro packs
Read next
Volume figures on this page were measured in our database on 2026-08-19. They are dated snapshots, not live counters. · OpenAPI · llms.txt · Full route catalogue and pricing