Public contracts won by a company
Two readings for one call. In prospecting, it is a competitor's commercial track record. In supplier due diligence, it reveals concentration: a provider whose whole revenue comes from a single buyer carries a risk its accounts do not show.
See a real response (free) Get the quote for /v1/entreprise/{siren}/marches-publics
What the route returns
Catalogue description, exactly as agents read it:
Government contracts won by a French company, from the official DECP open data: buyers, dates, procedures, estimated end date, lot number, joint holders, CCAG, price type, advance, amendments, declared subcontracting. Each amount is per contract or LOT, excl. VAT, over its full duration, flagged firm price or ENVELOPE (call-offs, framework ceiling — 43% of rows). Totals as two bounds: raw, and deduplicated when one award is published twice. Awarded contracts, not open calls.
Expected identifier
9-digit company number.
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-02, truncated to one item per array and then cut for length. It is not live data. The full extract is served free of charge from the samples surface, and the schema from the OpenAPI document.
{
"siren": "130031487",
"nombre_marches": 26,
"montant_total": 4943495.5,
"nombre_accords_cadres": 18,
"montant_plafonds_accords_cadres": 4162376,
"montant_hors_accords_cadres": 781119.5,
"nombre_montants_enveloppe": 20,
"nombre_modalites_connues": 26,
"montant_enveloppes": 4234476,
"montant_prix_fermes": 709019.5,
"nombre_sous_traitance_connue": 26,
"nombre_sous_traitance_declaree": 16,
"nombre_sous_traitants": 2,
"montant_sous_traite": 20910.24,
"premier_marche": "2023-06-07",
"dernier_marche": "2026-06-01",
"marches_en_cours": 18,
"prochaine_echeance": "2026-12-17",
"marches": [
{
"id": "20262026100",
"objet": "ACTIONS DE FORMATION POUR LA SOUS SPECIALITE E1D ESPACES VERTS LOT 7 POUR LE COMPTE DE LA DELEGATION PAYS DE LA LOIRE DU CNFPT",
"montant": 100000,
"montant_modifie": null,
"lot_numero": 7,
"co_traitance": false,
"nombre_titulaires": 1,
"groupement": null,
"date_notification": "2026-06-01",
"duree_mois": 24,
"duree_mois_modifiee": null,
"date_fin_estimee": "2028-06-01",
"regime": "2022",
"accord_cadre": true,
"montant_est_enveloppe": true,
"modalites_execution": "Bons de commande",
"ccag": "Fournitures courantes et services",
"types_prix": "Définitif révisable",
"marche_innovant": false,
"avance": {
"attribuee": false,
"taux": 0
},
"origine": {
"ue": 0,
"france": 0
},
"plateforme_source": "DGFIP – PES MARCHÉ",
"avenant": null,
"sous_traitance": {
"declaree": false,
"acte_id": null,
"montant": null,
"part_du_montant": null,
"duree_m
…
Price and billing
Price: $0.01. 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/entreprise/552032534/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/entreprise/552032534/marches-publics
# 3. Ou en MCP, dans Claude Code / Cursor / un agent
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
Neighbouring routes
/v1/entreprise/{siren}/marches-publics-ue— $0.02/v1/entreprise/{siren}/concurrents-marches— $0.02/v1/marches/expirations— $0.05
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/entreprise/{siren}/marches-publics | $0.01 | free sample | Government contracts won by a French company, from the official DECP open data: buyers, dates, procedures, estimated end date, lot number, joint holders, CCAG, price type, advance, amendments, declared subcontracting. Each amount is per contract or LOT, excl. VAT, over its full duration, flagged firm price or ENVELOPE (call-offs, framework ceiling — 43% of rows). Totals as two bounds: raw, and deduplicated when one award is published twice. Awarded contracts, not open calls. |
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/entreprise/{siren}/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