Guide de l'API

Des cas d'usage concrets avec des exemples curl prêts à copier. Pour la liste exhaustive des endpoints et de leurs paramètres, voir la Documentation.

Exemples par cas d'usage

Tous les appels demandent l'en-tête X-API-Key. Obtenez une clé gratuite en une requête :

curl -X POST https://tenderapi.fr/keys \
  -H "Content-Type: application/json" \
  -d '{"name": "Ma société", "email": "vous@exemple.fr"}'

1. Veille quotidienne des nouveaux appels d'offres (cron)

Récupérer les AO BTP (CPV 45) français publiés depuis le dernier passage. Le curseur published_after accepte l'ISO 8601 ou un alias relatif (24h, 7d, today) :

curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/tenders?source=boamp&status=open&cpv_family=45&published_after=24h&page_size=20"

Paginer avec page=2,3… tant que page × page_size < total. Chaque page compte pour 1 requête de quota.

2. Recherche par mots-clés (full-text FTS5)

AND implicite entre les mots, OR explicite en majuscules, phrases entre guillemets, insensible aux accents :

# Tous les mots doivent apparaître (AND)
curl -H "X-API-Key: $KEY" "https://tenderapi.fr/tenders?keyword=maintenance+photovoltaïque"

# OR explicite + phrase exacte
curl -H "X-API-Key: $KEY" \
  --data-urlencode 'keyword=BIM OR "maquette numérique" OR IFC' --get \
  "https://tenderapi.fr/tenders"

# Tri par pertinence (BM25) plutôt que par date
curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/tenders?keyword=hydrogène&sort=relevance"

⚠️ La virgule et le pipe ne sont pas des OR : ils sont traités comme des caractères littéraux.

3. Filtres géographiques

region accepte les slugs (ile-de-france, paca…), les anciennes régions pré-2016 (rhone-alpes…) et les codes INSEE (11, 76, 84…). department prend le code numérique (2A/2B pour la Corse) :

curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/tenders?region=11&cpv_family=72&deadline_after=today"

curl -H "X-API-Key: $KEY" "https://tenderapi.fr/tenders?department=75,92,93"

4. Qui a gagné quoi : recherche d'attributions starter+

Par nom, par établissement (SIRET 14 chiffres) ou par entreprise entière (SIREN 9 chiffres, qui agrège tous les établissements) :

# Par nom (partiel, insensible à la casse)
curl -H "X-API-Key: $KEY" "https://tenderapi.fr/awards?winner_name=eiffage"

# Par entreprise : tous les établissements du groupe
curl -H "X-API-Key: $KEY" "https://tenderapi.fr/awards?winner_siren=479766842"

# Par établissement précis
curl -H "X-API-Key: $KEY" "https://tenderapi.fr/awards?winner_siret=47976684200724"

# Marchés IT attribués en Occitanie depuis le 1er janvier
curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/awards?cpv_family=72&region=occitanie&awarded_after=2026-01-01"

5. Winner intelligence : top attributaires pro

Classement des entreprises qui gagnent le plus, par secteur / région / année :

# Qui gagne les marchés IT en Île-de-France en 2026 ?
curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/awards/winner-intel?cpv_family=72&region=ile-de-france&year=2026&limit=10"

# Focus sur une entreprise (SIREN) : volume et montants
curl -H "X-API-Key: $KEY" \
  "https://tenderapi.fr/awards/winner-intel?winner_siren=479766842"

6. Alertes automatiques (email, Teams, webhook) starter+

curl -X POST -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  https://tenderapi.fr/profiles \
  -d '{"name": "Veille BTP 45 IDF", "cpv_family": ["45"], "region": ["ile-de-france"],
       "channel": "webhook", "webhook_url": "https://exemple.fr/hook"}'

7. Suivre son quota

curl -H "X-API-Key: $KEY" https://tenderapi.fr/me

8. Erreurs courantes et comment les corriger

CodeCauseCorrection
401En-tête X-API-Key absent ou clé invalideVérifier la clé ; créer une clé via POST /keys
400page_size au-dessus du plafond du tier (free : 20, starter/pro : 50)Réduire page_size ou upgrader
400Paramètre inconnu (faute de frappe)Le message liste les paramètres autorisés
422Valeur invalide : cpv_family à 3 chiffres, région inconnue, SIRET à 9 chiffres…Le message indique le format attendu (et « did-you-mean »)
429Quota journalier atteintAttendre le reset (00:00 UTC) ou upgrader
200 + locked: true/awards en tier free : le total est visible, les lignes sont réservées à starter+Le compteur total est exact ; upgrader pour voir les lignes
Pour les agents et LLM : la même information est disponible en formats machine via llms.txt, openapi.json et le serveur MCP.