Upcoming public-contract expiries

The opposite of an alert on a published notice: buyers typically re-tender 4 to 9 months before expiry, and that is the window this route opens. The framework-agreement flag is the field to read first: an expiring framework agreement is not re-tendered like an ordinary contract.

See a real response (free) Get the quote for /v1/marches/expirations

What the route returns

Catalogue description, exactly as agents read it:

Upcoming French public-contract EXPIRATIONS — the predictive layer over DECP open data: contracts whose estimated end date falls inside your window (fenetre_mois, 1-24 months), filterable by CPV prefix (cpv=45) and department, with buyer, incumbent holders, amounts and framework-agreement flag. Buyers typically re-tender 4 to 9 months before expiry: tender anticipation BEFORE publication, not reactive alerts on published notices. Sorted by end date, 50 per page.

Expected identifier

No identifier: fenetre_mois from 1 to 24, plus optionally a cpv prefix and a department.

A wrongly formatted identifier 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.

Extract from a genuinely paid response

Dated snapshot from 2026-08-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.

{
 "filtres": {
  "cpv": "45",
  "departement": null,
  "fenetre_mois": 6
 },
 "total_marches": 28635,
 "page": 1,
 "pages": 573,
 "marches": [
  {
   "id": "2595014",
   "objet": "Travaux de reprise de la voirie et des réseaux divers de la caserne de gendarmerie d'Aubagne (13)",
   "acheteur": {
    "siret": "13002035700013",
    "nom": "SECRETARIAT GENERAL POUR L'ADMINISTRATION DU MINISTERE DE L'INTERIEUR SUD"
   },
   "montant": 557619.48,
   "accord_cadre": false,
   "date_notification": "2024-12-18",
   "duree_mois": 20,
   "date_fin_estimee": "2026-08-18",
   "code_cpv": "45000000-7",
   "departement": "13",
   "titulaires_sortants": [
    {
     "siren": "329338883",
     "nom": "COLAS FRANCE"
    }
   ]
  }
 ]
}

Price and billing

Price: $0.05. 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/marches/expirations

# 2. L'appel réglé — le client x402 paie le devis et rejoue la requête
npx x402-fetch https://api.sirenic.eu/v1/marches/expirations

# 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

End dates are estimated from the notification date and the declared duration. This is not an official re-tendering calendar, and some upstream rows are incomplete.

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

RoutePriceWhat it returns
/v1/marches/expirations (free sample)$0.05Upcoming French public-contract EXPIRATIONS — the predictive layer over DECP open data: contracts whose estimated end date falls inside your window (fenetre_mois, 1-24 months), filterable by CPV prefix (cpv=45) and department, with buyer, incumbent holders, amounts and framework-agreement flag. Buyers typically re-tender 4 to 9 months before expiry: tender anticipation BEFORE publication, not reactive alerts on published notices. Sorted by end date, 50 per page.

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/marches/expirations Get notified about euro packs

Read next