Aller au contenu
Subsido

Les données

Le modèle de données

Une seule forme d’enregistrement pour chaque mesure, quelle que soit sa source. Des champs s’ajoutent, aucun n’est renommé, et chaque champ est toujours présent : ce qui ne s’applique pas vaut null ou une liste vide, sans jamais manquer.

Une mesure est servie sous la forme de son enregistrement canonique, plus quelques champs ajoutés à la lecture (le titre dans votre langue, la version, la fraîcheur et les liens). C’est ce même enregistrement que renvoient view=full, l’export, les versions et l’outil MCP get_subsidy. L’inconnu est toujours une valeur explicite (status: "unknown", de_minimis: null), jamais une supposition.

{
  "id": "federal:investeringsaftrek",
  "slug": "investeringsaftrek",
  "external_ids": [
    {
      "source": "curated_federal",
      "id": "investeringsaftrek"
    }
  ],
  "titles": {
    "nl": "Investeringsaftrek",
    "fr": "Déduction pour investissement",
    "en": "Investment deduction",
    "de": null
  },
  "summaries": {
    "nl": "Fiscale aftrek van FOD Financiën voor vennootschappen, zelfstandigen en landbouwers in België. Dekt 10% tot 40% van de kosten. Doorlopend aan te vragen.",
    "fr": "Déduction fiscale du SPF Finances pour les sociétés, indépendants et agriculteurs en Belgique. Couvre de 10 % à 40 % des coûts. Demande possible en continu.",
    "en": "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.",
    "de": null
  },
  "summary_basis": "generated",
  "status": "continuous",
  "status_basis": "rolling",
  "status_note": {
    "nl": null,
    "fr": null,
    "en": null,
    "de": null
  },
  "instrument_type": "tax_deduction",
  "issuer": {
    "id": "fod-financien",
    "name": "FOD Financiën",
    "government_level": "federal",
    "jurisdiction": "be",
    "url": "https://financien.belgium.be"
  },
  "programme": null,
  "application_window": {
    "opens_at": null,
    "closes_at": null,
    "deadlines": [],
    "rolling": true,
    "budget_exhaustion_possible": false
  },
  "funding": {
    "currency": "EUR",
    "rate_min": 10,
    "rate_max": 40,
    "rates": [
      {
        "company_size": null,
        "rate": 10,
        "note": "Basisaftrek: natuurlijke personen en kleine vennootschappen (art. 1:24 WVV)."
      },
      {
        "company_size": null,
        "rate": 40,
        "note": "Verhoogde thematische aftrek: natuurlijke personen en kleine vennootschappen."
      }
    ],
    "amount_min": null,
    "amount_max": null,
    "annual_cap": null,
    "programme_budget": null,
    "expected_grants": null,
    "min_project_cost": null,
    "calculation_basis": {
      "nl": null,
      "fr": null,
      "en": null,
      "de": null
    },
    "de_minimis": null
  },
  "geography": {
    "scope": "national",
    "countries": [
      "BE"
    ],
    "regions": [],
    "provinces": [],
    "municipalities": [],
    "nis_codes": [],
    "nuts_codes": []
  },
  "eligibility": {
    "applicant_types": [
      "company",
      "self_employed",
      "farmer"
    ],
    "company_sizes": [],
    "nace": [],
    "topics": [
      "investment",
      "digitalisation",
      "energy_efficiency",
      "renewable_energy"
    ],
    "eligible_costs": [
      "equipment",
      "buildings",
      "software",
      "vehicles",
      "intellectual_property"
    ],
    "rules": [
      {
        "id": "applicant_type",
        "field": "company.applicant_type",
        "op": "in",
        "value": [
          "company",
          "self_employed",
          "farmer"
        ],
        "label": {
          "nl": "Nijverheids-, handels- of landbouwonderneming, of vrij beroep",
          "fr": "Entreprise industrielle, commerciale ou agricole, ou profession libérale",
          "en": "Industrial, commercial or agricultural business, or liberal profession",
          "de": null
        },
        "provenance": {
          "method": "curated",
          "source_url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
          "source_section": "Wie kan de investeringsaftrek genieten?",
          "review_status": "verified",
          "reviewed_at": "2026-09-27",
          "note": null
        }
      }
    ],
    "rules_basis": "curated",
    "confidence": 0.9
  },
  "application": {
    "url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
    "channel": "automatic",
    "portal": null,
    "documents": []
  },
  "legal_basis": [
    "Art. 68 tot 77, 201 en 552 WIB 92",
    "Art. 47 tot 49/1 KB/WIB 92"
  ],
  "provenance": {
    "source_id": "curated_federal",
    "source_url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
    "source_license": "FOD Financiën gebruiksvoorwaarden (Creative Commons-0)",
    "rights_mode": "facts_only",
    "attribution": "Source: FOD Financiën / SPF Finances and RSZ / ONSS official pages; records written by Subsido.",
    "source_last_modified_at": "2026-04-01T09:55:52+02:00",
    "first_seen_at": "2026-09-27T05:40:02+02:00",
    "last_checked_at": "2026-09-27T06:00:12+02:00",
    "content_hash": "9f2c…",
    "sources": [
      {
        "source_id": "curated_federal",
        "external_id": "investeringsaftrek",
        "url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
        "role": "primary"
      }
    ],
    "fields": {
      "status": {
        "source_id": "curated_federal",
        "method": "derived",
        "section": null
      },
      "funding.rate_max": {
        "source_id": "curated_federal",
        "method": "curated",
        "section": null
      }
    }
  },
  "title": "Investment deduction",
  "rules_readable": {
    "conditions": [
      {
        "id": "applicant_type",
        "field": "company.applicant_type",
        "op": "in",
        "value": [
          "company",
          "self_employed",
          "farmer"
        ],
        "label": "Industrial, commercial or agricultural business, or liberal profession",
        "provenance": {
          "method": "curated",
          "source_url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
          "source_section": "Wie kan de investeringsaftrek genieten?",
          "review_status": "verified",
          "reviewed_at": "2026-09-27",
          "note": null
        }
      }
    ],
    "text": [
      "Industrial, commercial or agricultural business, or liberal profession"
    ]
  },
  "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",
  "language": "en",
  "version": 2,
  "first_seen_at": "2026-09-27T05:40:02+02:00",
  "last_changed_at": "2026-09-27T05:52:40+02:00",
  "withdrawn_at": null,
  "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"
  },
  "disclaimer": "Independent service. Not affiliated with, endorsed by, or operated by any government or public authority. Eligibility and awards are decided by the competent authority."
}

Valeurs d’exemple tirées d’un enregistrement fédéral rédigé à la main ; c’est la structure qui fait foi.

Identité et texte

ChampSignification
id<préfixe de la source>:<id propre à la source>, attribué une fois et jamais modifié. Les majuscules sont conservées quand la source les utilise (identifiants des topics européens).
slugPour les URL du site, dans la langue principale de la mesure. Accepté à la place de l’id dans les chemins /v1/subsidies/{id}, mais pas dans les filtres. Unique ; conservez tout de même l’id, le seul dont la stabilité est garantie.
external_ids[]{ source, id } : chaque identifiant qu’une source utilise pour cette mesure.
titles, summariesTexte par langue : { nl, fr, en, de }, chacun une chaîne ou null. Un titre n’existe que dans les langues où la source l’a publié ; les titres ne sont pas traduits.
summary_basisgenerated (rédigé à partir des faits de l’enregistrement, en néerlandais, en français et en anglais) ou source (le résumé de la source elle-même, pour une source en open_licence, les langues manquantes étant générées). Pour le résumé servi dans votre langue, summary_origin indique lequel des deux ; voir sources et provenance.
legal_basis[]Les textes juridiques sur lesquels repose la mesure, tels que la source les cite.

Statut

ChampSignification
statusforthcomingopencontinuouspausedbudget_exhaustedclosedunknown Si une demande peut être introduite. continuous est un régime permanent sans échéance ; paused n’accepte temporairement plus de demandes ; budget_exhausted a fermé plus tôt faute de budget.
status_basissourcedatesrollingunknown Comment le statut a été établi. Une indication explicite de la source prime sur un statut déduit des dates : un appel peut fermer plus tôt ou être suspendu alors que l’échéance publiée est encore à plusieurs mois.
status_notePar langue. Pourquoi le statut est ce qu’il est, dans les termes de la source, pour une source en open_licence qui le précise.

Quel type d’aide, et de qui

ChampSignification
instrument_typegrantrebatevouchertax_credittax_deductiontax_exemptionsocial_security_reductionwage_subsidyloanguaranteerepayable_advanceequityin_kindprizeother
issuer{ id, name, government_level, jurisdiction, url }. id est un slug stable (vlaio, fod-financien, european-commission) ; jurisdiction vaut be, flanders, brussels, wallonia, eu, etc.
issuer.government_leveleufederalcommunityregionprovincemunicipalityagencyother
programmeUn appel européen, ou un programme numéroté auquel appartient une mesure nationale : { name, code, call_id, call_title, topic_id, types_of_action[] }, ou null.

Quand : application_window

ChampSignification
opens_atL’ouverture des demandes, ou null.
closes_atLa prochaine échéance à venir, ou la dernière si toutes sont passées. Null pour un régime permanent.
deadlines[]{ at, date_only, label }, la plus proche d’abord. Les appels en plusieurs étapes ou à dates butoirs successives en ont plusieurs. date_only signifie que la source a donné une date sans heure ; at vaut alors 23:59:59, heure de Bruxelles, ce jour-là. label vaut par exemple « First stage » ou « Cut-off 2 ».
rollingLes demandes sont acceptées à tout moment.
budget_exhaustion_possiblePremier arrivé, premier servi : le régime peut fermer avant toute échéance quand le budget est épuisé, si bien qu’une échéance ne dit pas à elle seule combien de temps il reste.

Combien : funding

ChampSignification
currencyToujours EUR aujourd’hui.
rate_min, rate_maxPourcentage des coûts éligibles, de 0 à 100.
rates[]{ company_size, rate, note } : un taux qui dépend du demandeur. company_size vaut null quand le palier dépend d’autre chose, et la note précise quoi.
amount_min, amount_maxPar octroi, en euros.
annual_capUn plafond par bénéficiaire et par an.
programme_budget, expected_grantsLe budget de l’appel ou du régime dans son ensemble, et le nombre d’octrois prévus.
min_project_costUne taille minimale de projet pour être recevable.
calculation_basisTexte par langue qui explique le calcul du montant, quand il est connu.
de_minimisOctroyé au titre du règlement de minimis (UE 2023/2831, 300 000 € sur trois ans). null : la source ne le précise pas.

Où : geography

ChampSignification
scopeeunationalregionalprovinciallocal
countries[]ISO 3166-1 alpha-2. ["BE"] pour toute mesure belge ; vide pour un appel européen, où les États membres sont sous-entendus.
regions[]flandersbrusselswallonia
provinces[]antwerplimburgeast_flanderswest_flandersflemish_brabantwalloon_brabanthainautliegeluxembourgnamur
municipalities[], nis_codes[], nuts_codes[]Pour les mesures locales, quand la source le précise.

Qui : eligibility

ChampSignification
applicant_types[]companyself_employednon_profitpublic_bodyresearch_organisationindividualfarmersocial_enterprise Vide signifie que la source ne restreint pas (ou ne le dit pas).
company_sizes[]microsmallmediumlarge Les catégories européennes de PME. Vide signifie aucune restriction de taille.
nace[]{ version, code, mode } : version vaut 2025 (NACE-BEL 2025) ou 2008 ; code est un code ou un préfixe sans points (62, 6201), ou une lettre de section ; mode vaut included ou excluded.
topics[]L’objet de la mesure, selon la liste de thèmes ci-dessous. Pour la recherche et la pertinence uniquement : un thème est une raison d’afficher une mesure, jamais une raison pour laquelle une entreprise y a droit.
eligible_costs[]trainingconsultancyequipmentbuildingssoftwarepersonnelresearchprototypingmarketingtrade_fairstravelintellectual_propertycertificationrecruitmentvehiclesenergysubcontractingother
rules[]Des conditions évaluables par une machine, qui doivent toutes être remplies. Voir les règles d’éligibilité.
rules_basisnonederivedextractedcurated L’origine des règles, par ordre croissant de fiabilité : aucune règle, uniquement des champs structurés, aussi des motifs repérés dans le texte, ou rédigées et vérifiées par une personne d’après la page officielle.
confidenceDe 0 à 1 : dans quelle mesure les règles couvrent ce qui détermine l’éligibilité. Les règles rédigées à la main obtiennent un score élevé (0,9 par défaut), celles issues de champs structurés 0,45, celles repérées dans le texte 0,6. Un résultat n’est likely_eligible qu’à partir de 0,7.

Thèmes

Déterministe : des radicaux de mots-clés dans le titre et le texte, plus les catégories propres à la source, converties source par source. Aucun modèle ne devine un thème : les mêmes données donnent toujours les mêmes thèmes.

digitalisationcybersecurityartificial_intelligenceinnovationresearch_developmentenergy_efficiencyrenewable_energyenergyclimate_environmentcircular_economysustainable_mobilityinvestmenttrainingadvice_consultancyinternationalisationhiring_employmentstarting_businessgrowth_scaleupfinancingtransformationagriculturefisheriestourism_hospitalityculture_creativeconstruction_renovationhealth_life_sciencessocial_economyretail_commercewatermanufacturingintellectual_propertyinclusion_diversitycooperationspace_defencecrisis_support

Comment demander : application

ChampSignification
urlOù introduire la demande, ou la page officielle qui explique comment.
channelonlineemailportalpaperautomaticunknown
portalLe nom du portail s’il y en a un (VLAIO e-loket, MyMinfin, le portail EU Funding & Tenders). Le canal automatic signifie qu’il n’y a pas de demande : la mesure s’applique via la déclaration fiscale ou d’office.
documents[]Les documents requis pour la demande, quand la source les énumère.

D’où cela vient : provenance

ChampSignification
source_id, source_urlLa source principale et la page d’où l’enregistrement a été lu.
source_license, rights_mode, attributionLa licence applicable, ce que l’enregistrement contient en conséquence (open_licence, facts_only, link_only), et la mention de source que la licence demande, le cas échéant. Voir sources et provenance.
source_last_modified_atLa date de dernière modification déclarée par la source elle-même, qui n’est pas celle de sa collecte.
first_seen_atLa première fois que la mesure a été vue.
last_checked_atLa dernière fois qu’une source a été collectée et disait toujours ceci. Une vérification sans modification met à jour ce champ et rien d’autre.
content_hashSHA-256 de l’enregistrement sans ses champs volatils. Change exactement quand le contenu change.
sources[]{ source_id, external_id, url, role } : chaque source qui décrit la mesure, la primary d’abord, puis les secondary.
fieldsChemin du champ vers { source_id, method, section }, pour les champs sur lesquels repose une décision. method est l’une des valeurs structuredhtml_sectiontext_patternsource_categorykeywordscuratedderived

Champs ajoutés à la lecture

ChampSignification
title, summaryDans la langue demandée (lang), sinon en néerlandais, français, anglais ou allemand, selon ce qui existe. À défaut, title reprend l’id.
summary_originsource ou generated : le résumé servi dans cette langue est-il le texte de la source ou un texte généré à partir des faits de l’enregistrement ? Un enregistrement avec summary_basis: "source" peut servir un résumé généré dans une langue que la source n’a pas rédigée.
rules_readable{ conditions, text } : chaque condition de eligibility.rules mise à plat, avec son libellé dans votre langue et sa provenance, et chaque règle de premier niveau sous forme de phrase. Pour afficher les règles sans parcourir l’arbre.
languageLa langue demandée.
versionLe numéro de la version actuelle, à partir de 1.
first_seen_at, last_changed_atL’apparition de la mesure, et la dernière modification de son contenu.
withdrawn_atQuand la source a cessé de la publier, ou null.
freshness{ state, last_successful_fetch, expected_refresh_seconds, stale_after_seconds } de la source. state vaut freshdelayedstalesource_unavailableparse_errorneeds_reviewdisablednever_run
linksself et versions dans l’API, official (la page de l’autorité) et web (la mesure sur le site, dans votre langue).
disclaimerLa déclaration d’indépendance.
merged_fromUniquement si vous avez demandé un id fusionné dans cet enregistrement.
as_of, valid_from, valid_toUniquement avec as_of, ou sur une version.
cause, changesUniquement sur GET /v1/subsidies/{id}/versions/{version}.

La vue compacte

Les listes utilisent par défaut view=compact : id, slug, title, summary, summary_origin, titles, status, instrument_type, issuer, scope, regions, topics, company_sizes, opens_at, closes_at, rolling, rate_max, amount_max, annual_cap, rules_basis, source_id, rights_mode, version, last_changed_at, last_checked_at, freshness et links. Les champs imbriqués sont remontés au premier niveau (closes_at correspond à application_window.closes_at).

Lisez les réponses avec tolérance

De nouveaux champs et de nouvelles valeurs de liste peuvent apparaître dans /v1 à tout moment. Ignorez les champs que vous ne connaissez pas, et traitez une valeur inconnue comme other ou unknown plutôt que d’échouer. Un renommage ou une suppression ferait l’objet d’une nouvelle version de l’API.
  • Chaque vocabulaire, avec ses libellés en trois langues, est disponible sur GET /v1/taxonomy.
  • Les mêmes structures figurent dans le document OpenAPI sous Subsidy, SubsidyFull et SubsidyCompact ; voir la référence.