API CanadaBuys : accédez aux appels d'offres et contrats fédéraux
CanadaBuys est le portail fédéral d'approvisionnement du Canada, géré par Services publics et Approvisionnement Canada (SPAC). Il publie chaque contrat fédéral, chaque appel d'offres ouvert et chaque attribution de contrat. Le problème : il n'existe pas d'API REST publique. Les données se trouvent derrière une interface web et des téléchargements CSV en vrac, difficiles à exploiter à grande échelle.
ProcureData encapsule toutes les données CanadaBuys dans une API REST propre : 834 073 enregistrements couvrant contrats, appels d'offres et attributions, normalisés selon un schéma cohérent, interrogeables par ministère, fournisseur, mot-clé, date et valeur. Mise à jour chaque semaine.
Pourquoi le portail natif est difficile à utiliser à grande échelle
Le portail web CanadaBuys fonctionne pour des recherches ponctuelles. Il devient inutilisable dès qu'il faut extraire des données de façon systématique : pour un outil d'intelligence fournisseurs, un tableau de bord d'approvisionnement, un agent IA, ou simplement une liste de contrats du MDN des 12 derniers mois.
Portail CanadaBuys
- Pas d'API REST, pas d'endpoint de pagination
- Téléchargements CSV de plusieurs Go avec des noms de colonnes incohérents selon les années
- Environ 90 variantes pour les mêmes noms de ministères
- Pas de recherche plein texte sur les descriptions
- Impossible de relier un appel d'offres au contrat résultant
API ProcureData
- API REST, réponses JSON, moins de 200 ms
- Pagination par curseur pour itérer sur l'ensemble des données
- Noms de ministères normalisés (20 formes canoniques)
- Recherche plein texte via
?q= /procurement/{solicitation_number}relie l'appel d'offres aux attributions et contrats
834 073 enregistrements CanadaBuys. Un seul endpoint. Niveau gratuit : 25 requêtes par jour.
À quoi ressemblent les données CanadaBuys dans l'API
Chaque enregistrement comprend des champs de premier niveau pour le filtrage rapide (department, vendor, contract_value, category, event_date) ainsi qu'un objet data contenant les champs bruts de la source. Un enregistrement de contrat :
{
"record_id": "canada_contracts|W8486-226285|A",
"entity_type": "contract",
"source_id": "canada_contracts",
"event_date": "2025-11-03",
"department": "National Defence",
"vendor": "L3Harris Technologies Inc",
"contract_value": 8400000.00,
"category": "GD",
"government_level": "federal",
"data": {
"solicitation_number": "W8486-226285",
"procurement_method": "Competitive",
"contract_period_start": "2025-11-03",
"contract_period_end": "2028-03-31",
"description": "Communications equipment and support",
"vendor_province": "Ontario"
}
}
Exemples de requêtes
Appels d'offres ouverts CanadaBuys filtrés par mot-clé
curl -G "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/tender" \
--data-urlencode "q=développement logiciel" \
--data-urlencode "government_level=federal" \
--data-urlencode "issued_after=2025-01-01" \
--data-urlencode "limit=20" \
-H "X-RapidAPI-Key: VOTRE_CLE_API" \
-H "X-RapidAPI-Host: procuredata-canadian-government-procurement-api.p.rapidapi.com"
Tous les contrats attribués à un fournisseur donné
curl -G "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract" \
--data-urlencode "vendor=Deloitte" \
--data-urlencode "government_level=federal" \
--data-urlencode "sort_by=value" \
--data-urlencode "limit=50" \
-H "X-RapidAPI-Key: VOTRE_CLE_API" \
-H "X-RapidAPI-Host: procuredata-canadian-government-procurement-api.p.rapidapi.com"
Contrats d'un ministère, 12 derniers mois, triés par valeur
curl -G "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract" \
--data-urlencode "department=National Defence" \
--data-urlencode "issued_after=2025-05-01" \
--data-urlencode "sort_by=value" \
--data-urlencode "limit=100" \
-H "X-RapidAPI-Key: VOTRE_CLE_API" \
-H "X-RapidAPI-Host: procuredata-canadian-government-procurement-api.p.rapidapi.com"
Cycle de vie complet : de l'appel d'offres au contrat
L'endpoint /procurement/{solicitation_number} retourne la vue complète du cycle de vie : l'avis d'appel d'offres original, tous les avis d'attribution et tous les contrats résultants liés par numéro de sollicitation. Un seul appel au lieu de trois.
curl "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/procurement/W8486-226285" \
-H "X-RapidAPI-Key: VOTRE_CLE_API" \
-H "X-RapidAPI-Host: procuredata-canadian-government-procurement-api.p.rapidapi.com"
Normalisation des noms de ministères
CanadaBuys contient environ 90 variantes de noms de ministères dans les données brutes : "National Defence", "Dept. of National Defence", "DND", "Department Of National Defence Canada" font tous référence au même acheteur. L'API normalise ces variantes vers une vingtaine de noms canoniques. Utilisez ?department=National Defence et vous obtiendrez tous les enregistrements correspondants, quelle que soit la variante utilisée dans la source.
Pour obtenir la liste complète des noms de ministères canoniques et leur nombre d'enregistrements :
curl "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/departments" \
-H "X-RapidAPI-Key: VOTRE_CLE_API" \
-H "X-RapidAPI-Host: procuredata-canadian-government-procurement-api.p.rapidapi.com"
Foire aux questions
/tender avec ?q=votre+mot+cle&government_level=federal. Le paramètre q effectue une recherche sur le titre et la description de l'appel d'offres. Ajoutez les filtres issued_after et department pour affiner les résultats.
/sources pour obtenir l'horodatage exact de la dernière mise à jour par source.
?category=SRV pour les services, GD pour les biens, CNST pour la construction, ou SRVTGD pour services et biens combinés. Ces codes correspondent aux codes de produits utilisés par CanadaBuys.
government_level=federal retourne les données CanadaBuys, les divulgations proactives du SCT et les offres à commandes de SPAC. Noms de ministères normalisés à partir d'environ 90 variantes brutes vers une vingtaine de formes canoniques. Codes de catégorie : SRV (Services), GD (Biens), CNST (Construction), SRVTGD (Services et biens). Les enregistrements albertains antérieurs à 2000 sont peu nombreux; les requêtes pratiques devraient utiliser issued_after=2010-01-01.
Commencez à interroger les contrats, appels d'offres et attributions CanadaBuys avec une clé API gratuite.
Obtenir une clé API sur RapidAPI Voir la spec OpenAPI