Aller au contenu principal

API pour les développeurs

Une API versionnée, en lecture seule, sur tout ce que publie All Business Africa : opportunités, attributions de marchés, acheteurs, entreprises, investisseurs, et pays avec leurs indicateurs.

Démarrage rapide

URL de base https://allbusiness.africa/api/public/v1. JSON sur HTTPS, GET uniquement.

# L'index et le document OpenAPI ne demandent aucune clé
curl https://allbusiness.africa/api/public/v1
curl https://allbusiness.africa/api/public/v1/openapi.json

# Chaque route de données demande une clé
curl -H "Authorization: Bearer aba_YOUR_KEY" \
  "https://allbusiness.africa/api/public/v1/opportunities?type=tender&country=kenya&status=open&perPage=10"

Lecture seule

Treize routes GET sur six ressources, plus l'index et le document. Aucune écriture.

Fiches publiées uniquement

Les mêmes fiches et les mêmes champs que le site, servis par le même code. Les brouillons et les fiches supprimées ne sont jamais servis.

Mesurée par clé

1000 requêtes par jour par défaut, remises à zéro à minuit UTC, plus une limite de pointe de 300 par minute.

Points d'accès

Les chemins sont relatifs à /api/public/v1. Chaque paramètre et chaque code de réponse figurent dans /api/public/v1/openapi.json.

MéthodeCheminCe qu'il renvoieFiltres
GET/L'index : ressources, authentification, conditions. Aucune clé nécessaire.Aucun
GET/openapi.jsonLe document OpenAPI 3.1. Aucune clé nécessaire.Aucun
GET/opportunitiesAppels à propositions, appels d'offres et programmes. Attributions de marchés avec type=contract_award ou type=all.type, status, country, sector, category, size, currency, organization, search, sort
GET/opportunities/{type}/{slug}Une opportunité. type vaut funding, tender, program ou contract_award.Aucun
GET/contract-awardsLes archives des attributions de marchés publics : qui a acheté quoi, à qui, pour quel montant.status, country, sector, category, currency, organization, search, sort
GET/contract-awards/{slug}Une attribution, avec sa source.Aucun
GET/buyersLes organismes publics qui attribuent des marchés, avec leurs totaux et catégories.q, country, sort
GET/buyers/{slug}Un acheteur, avec ses attributions récentes, ses principaux attributaires et ses années.Aucun
GET/companiesL'annuaire des entreprises.country, sector, type, stage, verified, search, sort
GET/companies/{slug}Le profil d'une entreprise, avec ses attributions de marchés et ses financements.Aucun
GET/investorsLes apporteurs de capitaux.type, country, stage, assetClass, industry, focus, africa, search, sort
GET/investors/{slug}Un investisseur, avec son portefeuille et sa couverture géographique.Aucun
GET/countriesLes 54 profils pays.region, search, sort
GET/countries/{slug}Un pays, avec ses séries d'indicateurs de la Banque mondiale.Aucun
GET/countries/{slug}/indicatorsUniquement les séries d'indicateurs d'un pays.Aucun

Pagination. Chaque liste accepte page (à partir de 1) et perPage (de 1 à 100, 24 par défaut ; les pays renvoient les 54 par défaut). Un perPage plus grand est servi à 100, et l'enveloppe indique la taille réellement utilisée. Les listes renvoient { items, total, page, perPage, pageCount, meta }.

Filtres. Tous facultatifs. search accepte aussi q. Le status d'une opportunité accepte open, closed, closing_soon, closing_month, cancelled, awarded_completed ou all. Une valeur non reconnue ne renvoie rien plutôt que tout.

Les fiches détaillées portent les mêmes champs que la page du site pour cette fiche, plus meta. Une fiche d'opportunité pèse généralement de 10 à 20 Ko.

Exemples de réponses

Des fiches réelles de la production, réduites à quelques champs.

Une liste : GET /api/public/v1/opportunities?type=tender&country=kenya&status=open&perPage=1

{
  "items": [
    {
      "id": 157707,
      "type": "tender",
      "title": "Supply, Design, Delivery, Installation, Configuration, Testing, Commissioning And Maintenance Of an Integrated Government Resource Platform (IGRP) in Three (3) Lots",
      "organization": "ICT Authority",
      "deadline": "2026-12-23T00:00:00.000Z",
      "statusLifecycle": "open",
      "referenceNumber": "KE-ICTA-571739-NC-RFP",
      "country": { "id": 13, "title": "Kenya", "slug": "kenya", "isoCode": "KE" }
    }
  ],
  "total": 26,
  "page": 1,
  "perPage": 1,
  "pageCount": 26,
  "search": null,
  "meta": {
    "version": "1.0.0",
    "attribution": "Anything published from this API must name All Business Africa as the source and link to https://allbusiness.africa. ...",
    "rateLimit": { "limit": 1000, "usedToday": 1, "remainingToday": 999, "resetsAt": "2026-11-12T00:00:00.000Z" }
  }
}

Une fiche détaillée : GET /api/public/v1/contract-awards/{slug}

{
  "id": 165441,
  "type": "contract_award",
  "awardedToName": "INSTITUT NATIONAL POLYTECHNIQUE FELIX HOUPHOUET-BOIGNY",
  "awardAmount": 46326.28,
  "currency": "EUR",
  "awardingOrganization": "Education, Audiovisual and Culture Executive Agency (EACEA)",
  "referenceNumber": "EU-FTS-2023-JAG.1378230.1-9bb3130ac9",
  "computedStatus": "awarded_completed",
  "country": { "id": 20, "title": "Cote d'Ivoire", "slug": "cote-divoire", "isoCode": "CI" },
  "sourceName": "EU Financial Transparency System (European Commission)",
  "meta": { ... }
}

Indicateurs d'un pays : GET /api/public/v1/countries/kenya/indicators

{
  "country": { "id": 13, "title": "Kenya", "slug": "kenya", "isoCode": "KE" },
  "source": "World Bank",
  "indicatorsWithData": 9,
  "indicators": [
    {
      "code": "NY.GDP.MKTP.CD",
      "label": "GDP (current USD)",
      "latest": { "year": 2025, "value": 135941278878.815, "source": "World Bank" },
      "series": [ { "year": 2016, "value": 74815144163.8931, "source": "World Bank" }, ... ]
    }
  ],
  "meta": { ... }
}

Obtenir une clé

Il n'existe pas de formulaire d'inscription. Les clés sont créées par notre équipe.

Les clés sont délivrées manuellement par l'équipe d'All Business Africa. Écrivez à data@allbusiness.africa en précisant le projet, les données que vous comptez lire et à quelle fréquence approximative. Le périmètre et le quota quotidien de la clé vous sont indiqués avant sa délivrance.

L'accès à l'API de la plateforme est inclus dans la formule Enterprise. Si vous disposez de cette formule, écrivez depuis l'adresse de votre compte et la clé est créée pour vous de la même manière.

Une clé n'est affichée qu'une fois, au moment de sa création, et seule son empreinte SHA-256 est conservée. Personne ici ne peut vous la communiquer ensuite. Si vous la perdez, signalez-le : elle sera révoquée et remplacée.

Authentification

L'un ou l'autre en-tête. Rien ne passe dans la chaîne de requête.

curl -H "Authorization: Bearer aba_YOUR_KEY" \
  "https://allbusiness.africa/api/public/v1/companies?country=kenya&perPage=20"

curl -H "X-API-Key: aba_YOUR_KEY" \
  https://allbusiness.africa/api/public/v1/countries/kenya

Une clé commence par aba_ et compte 47 caractères. Conservez-la sur un serveur : l'API répond aux navigateurs de toute origine, donc une clé placée dans du code navigateur peut être copiée par n'importe qui. Une URL finit dans les journaux, l'historique et les en-têtes referer, c'est pourquoi une clé n'y figure jamais.

Limites

Quota quotidien. Chaque clé dispose d'un nombre de requêtes par jour UTC, 1000 sauf accord différent pour la clé. Il est remis à zéro à minuit UTC. Chaque réponse réussie indique où vous en êtes, dans les en-têtes et à nouveau dans meta.rateLimit :

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 863
X-RateLimit-Reset: 1794441600
X-RateLimit-Reset-At: 2026-11-12T00:00:00.000Z

Lorsque le quota est épuisé, la réponse est 429 avec Retry-After, et le corps indique le moment où il est rétabli :

{
  "statusCode": 429,
  "error": "Too Many Requests",
  "message": "Key aba_1a2b3c4d has used all 1000 requests in its daily allowance. The allowance resets at 2026-11-12T00:00:00.000Z, which is 6 hours and 12 minutes from now. Nothing was read, and this refused request was not counted against the allowance. A larger daily allowance is set per key by All Business Africa staff: write to data@allbusiness.africa.",
  "limit": 1000,
  "resetsAt": "2026-11-12T00:00:00.000Z",
  "retryAfterSeconds": 22320
}

Limite de pointe. Par ailleurs, chaque appelant est limité à 300 requêtes par minute, comptées par clé. Au-delà, vous recevez un 429 indiquant ThrottlerException: Too Many Requests, dont le X-RateLimit-Reset donne les secondes restantes dans la minute plutôt qu'un horodatage Unix. Les deux routes ouvertes portent aussi ces en-têtes par minute, car elles n'ont pas de clé.

Une requête refusée n'est pas décomptée du quota quotidien.

Erreurs

Du JSON avec statusCode, error et un message qui explique ce qui s'est passé et quoi faire.

StatutQuand
400Une valeur de paramètre que la base de données ne peut pas utiliser, par exemple page=1e20.
401Aucune clé, une valeur qui n'est pas une clé, une clé que nous n'avons jamais délivrée ou une clé révoquée. Le message précise le cas. Renvoyé avant toute vérification de route : une requête sans clé reçoit 401, jamais 404.
403Une clé active qui demande une ressource hors de son périmètre. Le message nomme les périmètres qu'elle couvre. Non décompté.
404Aucune fiche publiée à ce slug, un type d'opportunité inconnu, ou un acheteur avec trop peu d'attributions pour un profil.
429Le quota quotidien est épuisé (avec Retry-After), ou plus de 300 requêtes en une minute.
5xxUne panne de notre côté. Réessayez avec un délai croissant, et écrivez-nous si cela persiste.
{
  "message": "No API key was presented, so nothing was read. Send it as \"Authorization: Bearer <key>\" or in the \"x-api-key\" header. Keys are issued by hand: write to data@allbusiness.africa and name the project that needs one.",
  "error": "Unauthorized",
  "statusCode": 401
}

Périmètres

Une clé peut être délivrée pour tout, ou pour des ressources nommées uniquement. Demandez ce dont vous avez besoin.

opportunities

Financements, appels d'offres et programmes.

contract-awards

Les archives des attributions de marchés.

buyers

Les organismes publics qui attribuent des marchés.

companies

L'annuaire des entreprises.

investors

Les apporteurs de capitaux.

countries

Profils pays et indicateurs.

Ce qui est servi

Fiches publiées uniquement. Chaque route appelle le même code que le site, il n'existe donc pas de second jeu de règles de visibilité qui pourrait s'écarter du premier.

Les mêmes champs que le site. Si la plateforme se met à masquer des champs aux lecteurs non connectés, cette API masque les mêmes, les nomme dans un bloc paywall de la fiche et indique ce qui permettrait d'y accéder. Rien n'est masqué aujourd'hui.

Aucune écriture. Les corrections passent par le formulaire de contact et sont examinées par l'équipe éditoriale.

Non proposé :

  • Routes d'écriture, webhooks ou flux de modifications. Il n'existe pas de filtre updatedSince.
  • Un point d'accès de téléchargement en masse ou d'extraction complète. Demandez-nous si vous en avez besoin.
  • Pagination par curseur, sélection de champs ou paramètres d'expansion.
  • Un écran de gestion des clés en libre-service. Les clés sont créées par notre équipe.
  • Des SDK. Le document OpenAPI fonctionne avec les générateurs de clients ; les corps des fiches sont des objets ouverts.
  • Les fonctions d'IA de la plateforme.

Ce qu'est une clé, et ce qu'elle n'est pas

Ce n'est pas une clé qui rend ces données accessibles. Les points d'accès qui servent ce site répondent sans aucun identifiant, par exemple curl https://allbusiness.africa/api/indicators/kenya. Ils existent pour servir les pages et changent quand les pages changent. Une clé vous apporte trois choses :

Un compteur à vous

Un quota quotidien décompté sur votre clé plutôt que sur l'adresse depuis laquelle vous appelez.

Un chemin qui ne bouge pas

Au sein de v1, les chemins, les paramètres et l'enveloppe de réponse ne changent pas de forme.

Un interlocuteur

Un contact nommé qui peut expliquer un champ, relever votre quota ou confirmer une fiche.

Attribution de la source

Tout contenu publié à partir de cette API doit citer All Business Africa comme source et renvoyer vers allbusiness.africa. Lorsqu'une fiche indique sa propre source, celle-ci doit aussi être citée : cette plateforme agrège des avis publics et ne remplace pas l'organisme qui les a émis.

Cette exigence est rappelée dans le bloc meta de chaque réponse authentifiée. Les conditions d'utilisation figurent dans les conditions d'utilisation.

Besoin d'une clé ?

Indiquez-nous le projet, ce que vous voulez lire et à quelle fréquence approximative.

Écrire à data@allbusiness.africa