Version bêta : des champs peuvent être ajoutés sans préavis. Aucun champ n'est renommé ni retiré dans /api/v1. Statut et versions

Données essentielles

Sur cette page

GET /attributions

Avis d'attribution

Identifiant d'opération : searchAttributions

Les avis d'attribution tels que les sources les publient (BOAMP et e-marchespublics aujourd'hui), du plus récent au plus ancien de leur date de publication. Chaque avis : id, source (code publié), titre, budget, date_publication, cpv, acheteur (nom, siret, departement), lien_source (lien vers l'avis d'origine), licence et mention (à afficher). LIMITE : ces avis ne portent AUCUN titulaire, AUCUN montant attribué et AUCUNE date d'attribution (la source ne les publie pas, et l'API ne les invente pas) ; budget est celui de l'avis, pas un montant attribué. Les gagnants et les montants sont dans les contrats DECP : GET /contrats. Aucun filtre n'est obligatoire. Pagination par curseur : meta.curseur_suivant dans curseur, meta.total seulement sur la première page. Mise en cache 60 s. Quota : famille decp. Périmètre requis : decp:read (403 si la clé ne le porte pas). Quota : réserve limite enregistrements (1 pour un détail) de la famille decp ; 429 quota_exceeded une fois la limite journalière atteinte.

Clé requise, périmètre decp:read.

Paramètres

NomEmplacementObligatoireTypeDescription
acheteur_siretquerynonstringSIRET de l'acheteur, exactement 14 chiffres.
departementquerynonstringUn seul code de département (01 à 95, 2A, 2B, 971 à 978, 986 à 988) : département de l'acheteur.
cpvquerynonstringPréfixe de code CPV, de 2 à 8 chiffres (45 : travaux de bâtiment et de génie civil).
date_minquerynonstringDate de publication minimale (AAAA-MM-JJ), incluse. Doit précéder date_max.
date_maxquerynonstringDate de publication maximale (AAAA-MM-JJ), incluse.
limitequerynonstringRésultats par page : 50 par défaut, 100 au plus. Réserve autant d'enregistrements du quota.
curseurquerynonstringValeur de meta.curseur_suivant de la page précédente, à repasser telle quelle avec les mêmes filtres (limite peut changer). Un curseur illisible ou employé avec d'autres filtres donne 400 invalid_cursor. meta.curseur_suivant vaut null à la dernière page.

Réponses

CodeDescription
200Succès.
400invalid_parameter : Paramètre invalide. ; invalid_cursor : Curseur invalide : repartez de la première page, sans curseur, avec les mêmes filtres.
401unauthorized : Clé d'API manquante ou invalide.
403forbidden : Accès refusé : compte non Pro ou périmètre de la clé insuffisant.
429quota_exceeded : Quota journalier atteint. Il se renouvelle à minuit UTC. ; rate_limited : Trop de requêtes. Réessayez plus tard.
503unavailable : Service momentanément indisponible.

Exemple

bash
curl -H "X-API-Key: pk_live_VOTRE_CLE" "https://publikconnect.fr/api/v1/attributions"

GET /contrats

Contrats DECP

Identifiant d'opération : searchContrats

Les contrats de la commande publique (données essentielles, données actuelles seulement), du plus récent au plus ancien de leur date de notification : acheteur, titulaire, montant, CPV, nature, procédure, durée, offres reçues, forme de prix, sous-traitance, considérations sociales et environnementales, marché innovant. Chaque contrat : uid, objet, acheteur (siret, nom, departement), titulaire (siret, nom, departement, categorie), non_diffusible, montant, cpv, nature, procedure, date_notification, duree_mois, fin_estimee, lieu_execution, offres_recues, forme_prix, sous_traitance_declaree, considerations (sociales, environnementales) et marche_innovant. Toute valeur que le contrat ne renseigne pas vaut null. FILTRE OBLIGATOIRE : au moins un parmi acheteur_siret, titulaire_siret, titulaire_siren, departement et cpv, sinon 400 filter_required. departement est le département d'EXÉCUTION du contrat. q (recherche dans l'objet) n'est accepté qu'avec un acheteur ou un titulaire, sinon 400 invalid_parameter. fin_estimee n'est pas publiée par l'acheteur : elle est calculée (date_notification + duree_mois), d'où { date, estimation: true } (null sans durée). Un titulaire non diffusible (RGPD) a titulaire.siret et titulaire.nom à null et non_diffusible à true : ils ne sont jamais rendus. Pagination par curseur : meta.curseur_suivant dans curseur. meta.total n'est compté que sur la première page ET quand un acheteur ou un titulaire est demandé ; sinon null (compter 2,2 millions de lignes serait trop long), jamais un chiffre approximatif. Un filtre très large (par exemple un cpv à 2 chiffres ou un departement seul sur une longue période, sans autre filtre) peut dépasser le délai de la base (5 secondes) et répondre 503 unavailable, sans rien compter dans le quota : ajoutez un filtre (acheteur, titulaire, dates, montants). Mise en cache 60 s. Quota : famille decp. Périmètre requis : decp:read (403 si la clé ne le porte pas). Quota : réserve limite enregistrements (1 pour un détail) de la famille decp ; 429 quota_exceeded une fois la limite journalière atteinte.

Clé requise, périmètre decp:read.

Paramètres

NomEmplacementObligatoireTypeDescription
acheteur_siretquerynonstringSIRET de l'acheteur, exactement 14 chiffres. Filtre indexé.
departementquerynonstringUn seul code de département (01 à 95, 2A, 2B, 971 à 978, 986 à 988) : département d'EXÉCUTION du contrat, pas le siège de l'acheteur. Filtre indexé.
cpvquerynonstringPréfixe de code CPV, de 2 à 8 chiffres. Filtre indexé.
date_minquerynonstringDate de notification minimale (AAAA-MM-JJ), incluse.
date_maxquerynonstringDate de notification maximale (AAAA-MM-JJ), incluse.
limitequerynonstringRésultats par page : 50 par défaut, 100 au plus. Réserve autant d'enregistrements du quota.
curseurquerynonstringValeur de meta.curseur_suivant de la page précédente, à repasser telle quelle avec les mêmes filtres (limite peut changer). Un curseur illisible ou employé avec d'autres filtres donne 400 invalid_cursor. meta.curseur_suivant vaut null à la dernière page.
titulaire_siretquerynonstringSIRET du titulaire, exactement 14 chiffres. Filtre indexé.
titulaire_sirenquerynonstringSIREN du titulaire, exactement 9 chiffres (tous ses établissements). Filtre indexé.
montant_minquerynonstringMontant minimal en euros (entier), au plus égal à montant_max.
montant_maxquerynonstringMontant maximal en euros (entier).
qquerynonstringMots recherchés dans l'objet du contrat (2 à 100 caractères). Accepté seulement avec acheteur_siret, titulaire_siret ou titulaire_siren : sinon 400 invalid_parameter.

Réponses

CodeDescription
200Succès.
400invalid_parameter : Paramètre invalide. ; filter_required : Filtre obligatoire : indiquez au moins acheteur_siret, titulaire_siret, titulaire_siren, departement ou cpv. ; invalid_cursor : Curseur invalide : repartez de la première page, sans curseur, avec les mêmes filtres.
401unauthorized : Clé d'API manquante ou invalide.
403forbidden : Accès refusé : compte non Pro ou périmètre de la clé insuffisant.
429quota_exceeded : Quota journalier atteint. Il se renouvelle à minuit UTC. ; rate_limited : Trop de requêtes. Réessayez plus tard.
503unavailable : Service momentanément indisponible.

Exemple

bash
curl -H "X-API-Key: pk_live_VOTRE_CLE" "https://publikconnect.fr/api/v1/contrats"

Demander une clé

  1. Avoir un compte Pro

    La clé est réservée aux comptes au plan Pro.

    Créer un compteVoir les offres

  2. Écrire au support

    support@publikconnect.fr

    Nous vérifions votre compte Pro puis vous répondons par e-mail avec votre clé.