sirenic

Public procurement of a Polish company

Every day the Public Procurement Office publishes, as open data (CC0), the contract and result notices of the Public Procurement Bulletin — about 500 results and 600 contract notices per working day. This route finds a company by its NIP, as a winner (part, outcome, awarded price, contract value and date, buyer) and as a buyer, serving only winners proven to be legal persons.

See a real response (free) Get the quote for /v1/eu/entreprise/PL/{nip}/marches-publics

What the route returns

Catalogue description, exactly as agents read it:

Public-procurement record of a Polish company from the Biuletyn Zamówień Publicznych (e-Zamówienia public API, UZP, CC0; national below-EU-threshold notices since 2021): contracts WON matched by legal-person NIP — buyer (name, NIP), subject, CPV, part, outcome, tenders received, awarded price and contract value in PLN, contract date, enterprise size — and notices ISSUED as a buyer; newest first, capped at 100. Winners served only when proven legal persons (legal form or KRS); sole traders never.

Expected identifier

Ten-digit NIP (separators tolerated), e.g. 7812034808.

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": "PL",
 "nip": "6040248554",
 "attributions": [
  {
   "avis_id": "2026/BZP 00441969/01",
   "type_avis": "TenderResultNotice",
   "publie_le": "2026-09-17T05:36:05Z",
   "type_marche": "travaux",
   "type_marche_source": "Works",
   "sous_seuil_ue": true,
   "objet": "Wykonanie remontu dla części: Część I: Malowanie - I/Tczew; Część II: Remont pokoi biurowych - I/Gdynia; Część III: Remont pokoi biurowych - I/Kartuzy; Część IV: Remont pokoi biurowych - I/Malbork",
   "cpv": [
    "45400000-1"
   ],
   "acheteur": {
    "nom": "ZAKŁAD UBEZPIECZEŃ SPOŁECZNYCH ODDZIAŁ W GDAŃSKU",
    "ville": "Gdańsk",
    "province": "PL22",
    "pays": "PL",
    "nip": "5832622111"
   },
   "nombre_parties": 4,
   "partie": 4,
   "issue": "contrat conclu",
   "issue_source": "zawarcieUmowy",
   "offres_recues": 2,
   "offres_pme": 2,
   "prix_retenu_pln": 581992.37,
   "groupement": false,
   "date_contrat": "2026-09-01",
   "valeur_contrat_pln": 581992.37,
   "duree": "126 dni",
   "gagnant": {
    "nip": "6040248554",
    "nom_publie": "M&M JOB CONNECT Sp. z o.o.",
    "ville": "Pszczółki",
    "province": "PL22",
    "pays": "PL",
    "taille": "micro-entreprise",
    "taille_source": "Mikro przedsiębiorca"
   }
  }
 ],
 "nombre_attributions": 1,
 "valeur_totale_pln": 581992.37,
 "tronque_attributions": false,
 "aucune_attribution": false,
 "avis_emis": [],
 "nombre_avis_emis": 0,
 "tronque_avis_emis": false,
 "nature_nip": "personne_morale",
 "stock": {
  "depuis": "2021-01-01",
  "dernier_jour_complet": "2026-09-17",
  "gagnants_a_classer": 1832
 }
}

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/PL/{nip}/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/PL/{nip}/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: the BZP only carries national below-EU-threshold procurement (above: TED), 37 % of winners are sole traders never served, 15 % are identified by REGON only; a NIP not yet classified answers 404 without charge. Zero never means “never won a contract”. Amounts in PLN as published; never a street nor a contact.

Neighbouring routes

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

RoutePriceSampleWhat it returns
/v1/eu/entreprise/PL/{nip}/marches-publics$0.02free samplePublic-procurement record of a Polish company from the Biuletyn Zamówień Publicznych (e-Zamówienia public API, UZP, CC0; national below-EU-threshold notices since 2021): contracts WON matched by legal-person NIP — buyer (name, NIP), subject, CPV, part, outcome, tenders received, awarded price and contract value in PLN, contract date, enterprise size — and notices ISSUED as a buyer; newest first, capped at 100. Winners served only when proven legal persons (legal form or KRS); sole traders never.

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/PL/{nip}/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