| GET |
/odata/v1/CBS/{tableId}/BedrijfstakkenBranchesSBI2008Codes |
Resolve an SBI code to the branch identifier a CBS table is actually keyed on — the call that makes every other query in this listing possible. Zet een SBI-code uit het Handelsregister om naar de CBS-bedrijfstakcode. CBS carries NO SBI field: the full row schema is Identifier, Index, Title, Description, DimensionGroupId, and the SBI code appears only as the leading token of Title ("642 Financiele holdings"). Resolve with $filter=startswith(Title,'642 '), and note the TRAILING SPACE is mandatory — startswith(Title,'64') also returns 641, 642 and 649. A KVK SbiBusinessCode is usually 5 digits and CBS usually publishes coarser, so truncate one digit at a time (64210, 6421, 642, 64) and take the first hit; report which level matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and the unparseable ones ("SBI-code onbekend"). |
$0.02 default |
View details |
| GET |
/odata/v1/CBS/{tableId}/Dimensions |
List the dimensions of one CBS table and the URLs of their code sets. Call this FIRST for any table you have not used before: the branch dimension is NOT always called the same thing. It is BedrijfstakkenBranchesSBI2008 in the six curated tables in this listing, but BedrijfskenmerkenSBI2008 in others, and an observation filter naming the wrong dimension returns HTTP 400. Each row gives Identifier (the property name used in $filter on Observations), Title, Kind and the CodesUrl / GroupsUrl to resolve its codes. |
$0.02 default |
View details |
| GET |
/odata/v1/CBS/{tableId}/MeasureCodes |
Resolve the measure codes of one CBS table to their titles and units. An observation row carries only a code such as M001327 or D002079; this is the only way to learn that they mean "Uitgesproken faillissementen" and "Bedrijfsresultaat". $expand does not exist anywhere in this API, so code resolution is ALWAYS a separate request and a client-side join. Note that measure Titles are not unique on their own — many read simply "Totaal" — so join MeasureGroups, or rely on the _1/_2 suffix pairing where a group code ends _1 and its total ends _2. |
$0.02 default |
View details |
| GET |
/odata/v1/CBS/81156ned |
Code books for CBS table 81156ned — "Bedrijfsleven; arbeids- en financiele gegevens, per branche". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/81156ned/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: BedrijfstakkenBranchesSBI2008 and Perioden. Measure titles here are not unique on their own — many read simply Totaal — so pair a group code ending _1 with its total ending _2, e.g. M002065_1 Personele kosten with M002065_2 Totaal. NOTE the table id is LOWER CASE in the URL. RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 320 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 320 branch codes, down to 4-digit SBI. Non-financial business economy only: sections K, O, P, Q, R, S94, T and U are absent. Annual, PeriodenCodes are YYYYJJ00, latest 2024JJ00. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/81156ned/Observations |
Sector PROFIT AND LOSS per SBI branch — CBS table 81156ned, "Bedrijfsleven; arbeids- en financiele gegevens, per branche". The full cost and revenue structure of a branch: M001588_2 bedrijfsopbrengsten, M002061 netto-omzet, M002063_2 bedrijfskosten, M002065_2 personele kosten, D002078 afschrijvingen, D002079 bedrijfsresultaat, D002080 saldo financiele baten en lasten, D002081 resultaat voor belastingen — all in millions of euro — plus employment in jobs and labour volume. Lets a filer's own income statement lines be set beside the branch aggregate and a sector operating margin derived. Annual, Perioden format YYYYJJ00, latest 2024JJ00. 320 branch codes, down to 4-digit SBI, so matches are usually closer than in 81837NED. NOTE the table id is LOWER CASE in the URL. COVERAGE GAP: the non-financial business economy only — sections K (finance), O, P, Q, R, S94, T and U are absent, so a company in 64210 or 88911 has no benchmark here. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/81589NED |
Code books for CBS table 81589NED — "Bedrijven; bedrijfstak". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/81589NED/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: BedrijfstakkenBranchesSBI2008 and Perioden. With 1487 codes this is the one table where fetching the whole code list is worth a moment's thought; it is still a single call and still one charge. RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 1487 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 1487 branch codes, down to full 5-digit SBI — the deepest in this listing, so a KVK SbiBusinessCode often matches exactly. Covers the financial sector. Quarterly, PeriodenCodes are YYYYKW0n, latest 2026KW03. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/81589NED/Observations |
Company stock per SBI branch and size class — CBS table 81589NED, "Bedrijven; bedrijfstak". The denominator for every rate in this listing, and the most SBI-granular table here: 1487 branch codes, down to full 5-digit SBI, so a KVK SbiBusinessCode often matches exactly. Gives the number of businesses in a branch broken out by size class (1, 2, 3-5, 5-10, 10-20, 20-50, 50-100, 100+ werkzame personen) and by legal-person status, quarterly, latest 2026KW03. Use it to size a peer group, or to turn a bankruptcy or closure count into a rate. Values are ROUNDED TO MULTIPLES OF 5, so the size bands need not sum exactly to the total and a small branch is imprecise — never present a derived percentage from a small cell to more than whole-number precision, and NEVER use a zero cell as a denominator — a returned 0 means "fewer than 3", not "none", so any rate computed against it is undefined rather than merely large. The size bands, the roll-ups and the legal-form split all measure the SAME cell, so summing every measure double-counts. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/81837NED |
Code books for CBS table 81837NED — "Financien alle ondernemingen; niet-financiele sector". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/81837NED/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: BedrijfstakkenBranchesSBI2008 and Perioden. Key measures: M000268 Eigen vermogen, M000360 Balanstotaal, M002394 Ondernemingengroep (the entity count behind each aggregate). RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 104 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 104 branch codes, mostly 2-digit SBI. Non-financial sector only: SBI section K (64-66) is absent, so a company in 64210 cannot be resolved here at all. Annual, PeriodenCodes are YYYYJJ00, latest 2024JJ00. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/81837NED/Observations |
Sector BALANCE SHEET per SBI branch — CBS table 81837NED, "Financien alle ondernemingen; niet-financiele sector". The closest thing to a peer group for a filed jaarrekening: its population is limited companies (N.V., B.V., cooperatie), the same population that files annual accounts with KVK, compiled from corporate tax returns and direct survey. Carries M000268 Eigen vermogen and M000360 Balanstotaal per branch, so a filer's own equity and total assets can be placed against a sector solvency ratio, plus M002394 Ondernemingengroep, the number of entities behind each aggregate, which turns any euro total into a per-company average. Annual, Perioden format YYYYJJ00, latest 2024JJ00. 104 branch codes, so mostly 2-digit SBI: expect to truncate a 5-digit KVK code. COVERAGE GAP: the non-financial sector only — SBI section K (64-66, banking, insurance, holdings) is absent, so a company in 64210 has no benchmark here; use 82244NED or 81589NED instead. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/82244NED |
Code books for CBS table 82244NED — "Faillissementen; bedrijven en instellingen, SBI 2008". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/82244NED/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: BedrijfstakkenBranchesSBI2008, TypeGefailleerde and Perioden. TypeGefailleerdeCodes matters as much as the branch codes: A047596 is the total across types, and leaving TypeGefailleerde unpinned in an Observations filter returns the same event under several breakdowns. The single measure is M001327 Uitgesproken faillissementen, unit Aantal. RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 372 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 372 branch codes, down to 3-digit SBI. This is the ONLY table in the listing that covers SBI section K, so it is the fallback for finance: 396400 is 64 Bankwezen, 397200 is 642 Financiele holdings. Mixed frequencies in one table: YYYYJJ00 annual, YYYYKW0n quarterly, YYYYMM0n monthly. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/82244NED/Observations |
Bankruptcies per SBI branch — CBS table 82244NED, "Faillissementen; bedrijven en instellingen, SBI 2008". Court-declared bankruptcies (uitgesproken faillissementen, measure M001327) per branch, monthly, quarterly and annually. This is what turns a weak balance sheet into a risk statement. Unlike the two financial tables it DOES cover SBI section K, so it is the fallback for companies in finance: 396400 is "64 Bankwezen", 397200 is "642 Financiele holdings". 372 branch codes down to 3-digit SBI. Perioden mixes frequencies: YYYYJJ00 annual, YYYYKW0n quarterly, YYYYMM0n monthly — pin one or you will mix them in a single sum. PIN TypeGefailleerde TOO: leaving it open returns the same event under several breakdowns; A047596 is the total. The two most recent months are provisional (voorlopig). There is no denominator here, so an unnormalised count means little for a large branch — divide by the company stock from 81589NED for a rate — and check that stock is non-zero first, because 81589NED rounds to multiples of 5 and a rare branch comes back as 0. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/83149NED |
Code books for CBS table 83149NED — "Bedrijven; opheffingen, bedrijfsgrootte, rechtsvorm, bedrijfstak". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/83149NED/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: BedrijfstakkenBranchesSBI2008, a size-class dimension, a legal-form dimension and Perioden. RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 401 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 401 branch codes, mostly 2- and 3-digit SBI. Covers the financial sector. Quarterly, PeriodenCodes are YYYYKW0n, latest 2026KW02 — one quarter behind 81589NED. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/83149NED/Observations |
Business closures per SBI branch and size class — CBS table 83149NED, "Bedrijven; opheffingen, bedrijfsgrootte, rechtsvorm, bedrijfstak". The other half of the risk picture, and the more common fate of a small B.V. with negative equity than bankruptcy: opheffingen include voluntary wind-downs, not just court-declared insolvency. Quarterly, latest 2026KW02, 401 branch codes, and the financial sector is present. Values are rounded to multiples of 5 like 81589NED, so bands need not sum to the total and a 0 can mean "fewer than 3". This table lags 81589NED by one quarter — do not divide a KW02 closure count by a KW03 company stock; align the periods explicitly. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/86414NED |
Code books for CBS table 86414NED — "Bedrijfsgegevens; omzetontwikkeling (stijgers-dalers), SBI 2008". This one path serves every metadata collection of the table, because the gateway resolves a stored path as a literal prefix: /odata/v1/CBS/86414NED/BedrijfstakkenBranchesSBI2008Codes, /MeasureCodes, /PeriodenCodes, /Dimensions and /MeasureGroups all bill and cache against this row, while /Observations has its own. Dimensions of this table: Bedrijfsgrootte, BedrijfstakkenBranchesSBI2008 and Perioden — three dimensions, so BedrijfsgrootteCodes is needed as well. RESOLVING AN SBI CODE, THE CHEAP WAY: fetch BedrijfstakkenBranchesSBI2008Codes ONCE with $select=Identifier,Title and no $filter — 160 rows, one call, one charge — then match client-side. CBS carries no SBI field: the code is the leading token of Title ("642 Financiele holdings"), so take everything before the first space and compare. Truncate the KVK code (64210, 6421, 642, 64) and keep the LONGEST match; report which level you matched, because a division-level figure presented as a subclass figure is a wrong answer that looks right. Do NOT issue one startswith($filter) per truncation — that is up to four charged calls for one lookup; if you must filter server-side, chain them with or, and keep the TRAILING SPACE (startswith(Title,'642 ')), because '64' also matches 641, 642 and 649. Never fall back to T001081 "A-U Alle economische activiteiten" — that is the national total, not a sector. Skip composite titles ("4711, 472 ...", "24-30, 33 ...", "B-E ...") and unparseable ones ("SBI-code onbekend"). Titles carry Dutch diacritics; match on the numeric prefix, never on the label text. SBI depth: 160 branch codes, the coarsest here, so expect to truncate a 5-digit KVK code to 2 digits. No SBI section K. Quarterly, PeriodenCodes are YYYYKW0n, latest 2026KW02. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/86414NED/Observations |
Turnover momentum per SBI branch, as a distribution — CBS table 86414NED, "Bedrijfsgegevens; omzetontwikkeling (stijgers-dalers), SBI 2008". Unusually useful for benchmarking one company because it reports a DISTRIBUTION rather than an aggregate: what percentage of businesses in a branch and size class saw turnover rise, hold steady or fall, split into fast and normal movers. That answers "is this company's revenue drop its own problem or the whole sector's" in a way a branch total cannot. The freshest table in this listing. 160 branch codes, the coarsest here, so expect to truncate a 5-digit KVK code to 2 digits. Values are percentages over overlapping sets — the risers total equals fast risers plus normal risers, and likewise for fallers — so never add every measure together. COVERAGE GAP: no SBI section K, so no benchmark for finance. |
$0.05 default |
View details |
| GET |
/odata/v1/CBS/Datasets |
Search the CBS StatLine catalogue — 4,871 datasets. Zoek een CBS-tabel op titel, onderwerp of status. Returns each dataset's Identifier (the table id used by every other call here, e.g. 82244NED), Title, Description, Status, ObservationCount, Modified and ReleaseDate. Filter with $filter=contains(Title,'Faillissementen'), and ALWAYS add "and Status eq 'Regulier'" unless you want discontinued tables: 71 of the 105 SBI-keyed tables are Gediscontinueerd and still returned, leaving 34 Regulier. Use this to find a table, then /Dimensions to learn how it is keyed. |
$0.05 default |
View details |