Démarrer
Démarrage rapide
En cinq minutes, de rien à une liste de mesures auxquelles une vraie entreprise peut prétendre, avec les raisons.
1. Obtenir une clé
Connectez-vous avec Google, choisissez une formule dans le tableau de bord (à partir de 20 € par mois HTVA ; voir les tarifs) et créez une clé sous Clés API. Une clé n’est affichée qu’une seule fois et seul son hachage est conservé : copiez-la tout de suite en lieu sûr. Les clés ont la forme sb_live_....
Vous pouvez créer une clé avant de choisir une formule, pour préparer l’intégration. Tant qu’aucune formule n’est active, cette clé répond 402 subscription_required.
Vérifiez qu’elle fonctionne. GET /v1/key renvoie votre formule et votre consommation du mois :
curl "https://api.subsido.be/v1/key" -H "Authorization: Bearer sb_live_..."2. Trouver des mesures pour une entreprise
À quoi une petite entreprise en Flandre peut-elle prétendre aujourd’hui ? Filtrez par région (ce qui inclut les mesures nationales et européennes, valables partout), par taille d’entreprise et par statut :
curl "https://api.subsido.be/v1/subsidies?region=flanders&company_size=small&status=open,continuous,forthcoming&limit=5" \ -H "Authorization: Bearer sb_live_..."const url = new URL("https://api.subsido.be/v1/subsidies");
url.search = new URLSearchParams({
region: "flanders",
company_size: "small",
status: "open,continuous,forthcoming",
topic: "digitalisation",
lang: "fr",
limit: "5",
}).toString();
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.SUBSIDY_API_KEY}` },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
for (const m of body.data) {
console.log(m.status, m.closes_at ?? "no deadline", m.title, m.links.official);
}import os, requests
r = requests.get(
"https://api.subsido.be/v1/subsidies",
params={
"region": "flanders",
"company_size": "small",
"status": "open,continuous,forthcoming",
"topic": "digitalisation",
"lang": "fr",
"limit": 5,
},
headers={"Authorization": f"Bearer {os.environ['SUBSIDY_API_KEY']}"},
timeout=15,
)
body = r.json()
if not r.ok:
raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
for m in body["data"]:
print(m["status"], m["closes_at"], m["title"], m["links"]["official"])Chaque ligne est une mesure en vue compacte. En voici une, avec des valeurs d’exemple :
{
"id": "federal:investeringsaftrek",
"slug": "investeringsaftrek",
"title": "Investment deduction",
"summary": "Tax deduction from FOD Financiën for companies, self-employed people and farmers in Belgium. Covers 10% to 40% of eligible costs. Applications accepted at any time.",
"summary_origin": "generated",
"titles": {
"nl": "Investeringsaftrek",
"fr": "Déduction pour investissement",
"en": "Investment deduction",
"de": null
},
"status": "continuous",
"instrument_type": "tax_deduction",
"issuer": {
"id": "fod-financien",
"name": "FOD Financiën",
"government_level": "federal",
"jurisdiction": "be",
"url": "https://financien.belgium.be"
},
"scope": "national",
"regions": [],
"topics": [
"investment",
"digitalisation",
"energy_efficiency",
"renewable_energy"
],
"company_sizes": [],
"opens_at": null,
"closes_at": null,
"rolling": true,
"rate_max": 40,
"amount_max": null,
"annual_cap": null,
"rules_basis": "curated",
"source_id": "curated_federal",
"rights_mode": "facts_only",
"version": 2,
"last_changed_at": "2026-09-27T05:52:40+02:00",
"last_checked_at": "2026-09-27T06:00:12+02:00",
"freshness": {
"state": "fresh",
"last_successful_fetch": "2026-09-27T06:00:12+02:00",
"expected_refresh_seconds": 86400,
"stale_after_seconds": 259200
},
"links": {
"self": "https://api.subsido.be/v1/subsidies/federal:investeringsaftrek",
"versions": "https://api.subsido.be/v1/subsidies/federal:investeringsaftrek/versions",
"official": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
"web": "https://subsido.be/en/grants/investeringsaftrek"
}
}titleetsummarysont dans la langue demandée aveclang, à défaut dans celle de la source.titlescontient toutes les langues disponibles.links.officialest la page de l’autorité elle-même. Affichez-la à côté de tout ce que vous montrez : c’est auprès de l’autorité, et non de cette API, que la demande est introduite et tranchée.freshnessindique quand la source a été lue avec succès pour la dernière fois et si c’est dans le délai prévu.
GET /v1/subsidies/{id} avec cet id (ou avec son slug) renvoie l’enregistrement complet, avec les taux par catégorie, toutes les échéances et les règles d’éligibilité.
3. Le matching d’une entreprise et d’un projet
La recherche dit ce qui existe. Le matching dit ce qui convient à cette entreprise : envoyez ce que vous savez de l’entreprise et du projet, et chaque mesure est évaluée au regard de ces informations.
curl -X POST "https://api.subsido.be/v1/match" \ -H "Authorization: Bearer sb_live_..." \ -H "Content-Type: application/json" \ -d '{"company":{"postcode":"9000","employees":12,"turnover_eur":1500000,"legal_form":"bv","nace":["62.010"]},"project":{"topics":["digitalisation","investment"],"budget_eur":25000,"planned_start":"2026-11-01"},"language":"en","limit":10}'const res = await fetch("https://api.subsido.be/v1/match", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SUBSIDY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"company": {
"postcode": "9000",
"employees": 12,
"turnover_eur": 1500000,
"legal_form": "bv",
"nace": [
"62.010"
]
},
"project": {
"topics": [
"digitalisation",
"investment"
],
"budget_eur": 25000,
"planned_start": "2026-11-01"
},
"language": "en",
"limit": 10
}),
});
const result = await res.json();
if (!res.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
for (const m of result.matches) {
console.log(m.match_status, m.subsidy.title, m.estimate?.basis ?? "");
for (const u of m.unknowns) console.log(" still needed:", u.request_path, u.question);
}La réponse classe les résultats du plus pertinent au moins pertinent, chacun avec le résultat de chaque règle (reasons), les informations qui manquent encore (unknowns) et un montant indicatif (estimate). Elle renvoie aussi ce qui a été déduit de vos données : le code postal 9000 est devenu la Flandre et la Flandre-Orientale, 12 travailleurs et 1 500 000 € de chiffre d’affaires sont devenus une petite entreprise, et la forme juridique bv a donné un type de demandeur et la personnalité juridique. La page consacrée au matching détaille une réponse complète.
Quatre statuts, jamais « éligible »
likely_eligible, possibly_eligible, needs_review et not_eligible (ce dernier uniquement si vous le demandez). L’autorité compétente décide de l’éligibilité et de l’octroi ; un résultat indique dans quelle mesure les conditions publiées et vos informations concordent.Étapes suivantes
- Rechercher des mesures : tous les filtres, une mesure par slug, les versions et
as_of. - Matching d'une entreprise : les champs de la requête et la signification de chaque statut.
- Modifications et versions et webhooks : soyez averti d’un nouvel appel ou d’une échéance déplacée sans interroger l’API en boucle.
- La référence API : chaque endpoint, exécutable depuis la page.
