EU Business Formation & Survival Rates — Eurostat Demography avatar

EU Business Formation & Survival Rates — Eurostat Demography

Pricing

from $33.50 / 1,000 business demography records

Go to Apify Store
EU Business Formation & Survival Rates — Eurostat Demography

EU Business Formation & Survival Rates — Eurostat Demography

Eurostat business demography by country, size class and industry: enterprise births, deaths, survival and active counts or rates, newest year first. The original table (2004-2020) is the default; the newer bd_size table (2009-2024) adds survival age. Aggregates, not company lists. Pay per record.

Pricing

from $33.50 / 1,000 business demography records

Rating

0.0

(0)

Developer

NexGen Signal

NexGen Signal

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

20 days ago

Last modified

Share

Official source. No API key. Pay per record.

Two source tables — choose with sourceTable

Eurostat publishes business demography in two tables, and this actor reads either one:

sourceTableYearsIndicator codesExtra dimension
bd_9bd_sz_cl_r2 (the default — runs exactly as before)2004–2020V… codes (e.g. V97020 birth rate)—
bd_size (added 30 Sep 2026)2009–2024 (Eurostat last updated it 11 Sep 2026)ENT_…, EMP_…, SAL_…, GRW_… codes (e.g. ENT_BRTHR_PC birth rate)age — survival age TOTAL, Y1…Y5

They are not one continuous series. The newer table follows Eurostat's business-registers methodology, its indicator codes and definitions differ, and it has 132 industry codes instead of 194. Do not splice the two tables into one time series. Every record carries dataset_code, so you always know which table a row came from. Codes are checked against the table you pick: an old V… code with bd_size (or age with the original table) stops the run before anything is fetched, with nothing charged.

Question: how have Germany's enterprise birth and death rates moved since 2021?

{"sourceTable": "bd_size", "geo": "DE", "indicator": ["ENT_BRTHR_PC", "ENT_DTHR_PC"], "sizeClass": ["TOTAL"], "industry": ["B-S_X_O_S94"], "age": ["TOTAL"], "sinceTimePeriod": "2020", "newestFirst": true, "maxRecords": 10}

Run on 30 Sep 2026 this returned 8 records (8 × $0.05 = $0.40 on Apify's Free plan):

YearIndicatorValue (%)
2024ENT_BRTHR_PC (birth rate)7.78
2024ENT_DTHR_PC (death rate)10.23
2023ENT_BRTHR_PC (birth rate)8.43
2023ENT_DTHR_PC (death rate)7.91
2022ENT_BRTHR_PC (birth rate)7.98
2022ENT_DTHR_PC (death rate)7.33
2021ENT_BRTHR_PC (birth rate)7.81
2021ENT_DTHR_PC (death rate)6.98

B-S_X_O_S94 is industry, construction and market services (except public administration, defence and membership organisations) — the newer table's all-business total.

Who this is for and the decision it supports

Economic researchers, market-entry strategists and enterprise-policy teams tracking EU business formation, survival and size-class dynamics (Eurostat business demography).

One record answers: for this country, size class and activity, how many firms were born/survived/died in a period — an input to market-entry, competition and policy models.

Buyers usually search for this as "business survival rates europe" or "eurostat business demography".

Sample output

Sample output — EU Business Formation & Survival Rates — Eurostat Demography

Real rows from a live run of this actor (first 5 rows, selected columns).

One full record from the same run, exactly as delivered:

{
"record_id": "A:V11910:0:B:DE:2015",
"dataset_code": "bd_9bd_sz_cl_r2",
"indicator": "Business demography by size class (NACE Rev.2): births, deaths, survival, active enterprises",
"freq": "A",
"freq_label": "Annual",
"indic_sb": "V11910",
"indic_sb_label": "Population of active enterprises in t - number",
"sizeclas": "0",
"sizeclas_label": "Zero",
"nace_r2": "B",
"nace_r2_label": "Mining and quarrying",
"geo": "DE",
"geo_label": "Germany",
"time_period": "2015",
"value": 639,
"obs_status": null,
"source": "Eurostat",
"source_dataset": "bd_9bd_sz_cl_r2",
"licence": "Eurostat, CC BY 4.0. Reformatted from Eurostat JSON-stat; values unmodified. Third-party content and logos excluded. Commercial-barred geographies removed.",
"attribution": "Source: Eurostat (dataset bd_9bd_sz_cl_r2)",
"caveat": "Business demography indicators (enterprise births, deaths, survival, active counts and related rates) by size class and NACE Rev.2 activity. Read the indic_sb code to know which measure a row carries; counts are enterprise counts, not turnover. Values reproduced verbatim from Eurostat.",
"observed_at": "2026-09-25T17:20:06Z"
}

What one record is

Each record is one Eurostat business-demography observation: country, business indicator, size class, NACE activity, period, value and unit, with provenance.

Your first run

Paste this input and run it:

{
"geo": "DE",
"sinceTimePeriod": "2018",
"maxRecords": 10
}

Set geo to a country and get clean per-observation JSON immediately. This input reads the original table; the form's pre-filled example reads the newer bd_size table (see Two source tables above). Here is a real record from that exact input:

{
"record_id": "A:V11910:0:B:DE:2018",
"dataset_code": "bd_9bd_sz_cl_r2",
"indicator": "Business demography by size class (NACE Rev.2): births, deaths, survival, active enterprises",
"freq": "A",
"freq_label": "Annual",
"indic_sb": "V11910",
"indic_sb_label": "Population of active enterprises in t - number",
"sizeclas": "0",
"sizeclas_label": "Zero",
"nace_r2": "B",
"nace_r2_label": "Mining and quarrying",
"geo": "DE"
}

What the sample costs: $0.05 per record. The sample above delivers 10 records, so it costs at most $0.50.

Pulling in bulk

Raise Maximum records and widen the period to pull a country's full panel. A buyer pulls a country's full business-demography panel, then repeats per country to compare EU markets.

To expand from the sample: raise Maximum records, and widen any filters shown in the input. You are billed only for records actually delivered, so a sample stays cheap and a full pull is predictable.

When to run it again

Eurostat republishes this annual cube each year; re-run with a later sinceTimePeriod to append the newest year.

Update schedule: Annual — Eurostat releases new years for this cube on its publication schedule. Verified live: observations return addressable by year from the official Eurostat cube.

How this is different

EU firm formation/survival/size-class demography — distinct from company-level enrichment; this is aggregate business-demography statistics.

Limitations (source coverage vs product coverage)

  • COUNTRY x size-class x activity aggregates, not company-level records.
  • Annual grain. The original table (bd_9bd_sz_cl_r2, the default) stops at 2020; for 2009–2024 set sourceTable to bd_size (checked 30 Sep 2026). The two tables use different codes and are not one continuous series.
  • Coverage is Eurostat's reporting countries and NACE activities.

FAQ

Company-level?

No. Aggregate business demography by country, size class and activity.

How current?

Annual, with Eurostat's usual lag. Re-run when a new year is published.

What does an empty run mean?

No observation for that geo/period/size class — widen the period or country.

How much does it cost? You pay $0.05 per business demography record delivered to your dataset (less on higher Apify plans). Set the record limit in the input to cap what a run can cost. Records that are not delivered are never charged.

How do I get the data out? Every run saves its records to an Apify dataset. You can download it as JSON, CSV, Excel, XML or HTML from the run page, or read it through the Apify API.

Can I run it on a schedule? Yes. Use Apify Schedules to run it daily, weekly or monthly, with the same input each time.

Can I call it from my own code? Yes. Call nexgensignal/eu-business-demography-records through the Apify API or the Apify Python and JavaScript clients, pass the same JSON input as the form, and read the dataset when the run finishes.

What happens if the source is down? The run ends with a clear status message, and nothing is charged for records that were not delivered.

Choosing the series (search options)

Pick the series you want before the run, instead of paging through every combination. Codes are Eurostat's own; they are sent to Eurostat as filters (only matching series are read and billed) and checked against the dataset's live code list first, so a wrong code stops the run with the valid codes listed and nothing charged. With no option set the actor sends exactly the request it sent before.

InputEurostat dimensionCodes
indicatorindic_sbOptional but recommended. Eurostat indicator codes, e.g. V11910 Population of active enterprises in t - number; V11920 Births of enterprises in t - number; V11930 Deaths of enterprises in t - number; V97010 Net business population growth - percentage; V97020 Birth rate: number of enterprise births in the reference period (t) divided by the number of enterprises active in t - percentage; V97030 Death rate: number of enterprise deaths in the reference period (t) divided by the number of enterprises active in t - percentage; V97041 Survival rate 1: number of enterprises in the reference period (t) newly born in t-1 having survived to t divided by the number of enterprise births in t-1 - percentage; V97043 Survival rate 3: number of enterprises in the reference period (t) newly born in t-3 having survived to t divided by the number of enterprise births in t-3 - percentage; V97045 Survival rate 5: number of enterprises in the reference period (t) newly born in t-5 having survived to t divided by the number of enterprise births in t-5 - percentage. Counts (V11..) are numbers of enterprises; V97.. are rates in percent. Full list of 87 in the README.
sizeClasssizeclasOptional. TOTAL Total; 0 Zero; 1-4 From 1 to 4 employees; 5-9 From 5 to 9 employees; GE10 10 employees or more.
industrynace_r2Optional. NACE Rev.2 codes, e.g. B-S_X_K642 industry, construction and services except holding companies, C manufacturing, F construction, J62 computer programming, I56 food and beverage services. 194 codes; full list in the README.
ageagebd_size only: TOTAL, Y1…Y5 (years since birth, for survival indicators).
sourceTable—bd_9bd_sz_cl_r2 (default, 2004–2020) or bd_size (2009–2024). The indicator and industry codes above are the original table's; bd_size codes are listed under Two source tables.
newestFirsttimeMost recent periods first, before cutting to maxRecords (monthly, quarterly and annual periods are ordered by the date they end).

Example (the Store example):

{
"geo": "DE",
"indicator": [
"V97020",
"V97030",
"V97041"
],
"sizeClass": [
"TOTAL"
],
"industry": [
"B-S_X_K642"
],
"sinceTimePeriod": "2015",
"newestFirst": true,
"maxRecords": 10
}

First rows it returned when checked (Sep 2026):

[
{
"geo": "DE",
"time_period": "2020",
"value": 6.97,
"indic_sb_label": "Birth rate: number of enterprise births in the reference period (t) divided by the number of enterprises active in t - percentage",
"sizeclas_label": "Total",
"nace_r2_label": "Industry, construction and services except activities of holding companies"
},
{
"geo": "DE",
"time_period": "2020",
"value": 9.55,
"indic_sb_label": "Death rate: number of enterprise deaths in the reference period (t) divided by the number of enterprises active in t - percentage",
"sizeclas_label": "Total",
"nace_r2_label": "Industry, construction and services except activities of holding companies"
},
{
"geo": "DE",
"time_period": "2020",
"value": 72.16,
"indic_sb_label": "Survival rate 1: number of enterprises in the reference period (t) newly born in t-1 having survived to t divided by the number of enterprise births in t-1 - percentage",
"sizeclas_label": "Total",
"nace_r2_label": "Industry, construction and services except activities of holding companies"
}
]

Eurostat table bd_9bd_sz_cl_r2 covers 2004-2020 only (checked Sep 2026: its newest year is 2020), so newest first starts at 2020. V11... codes are counts of enterprises; V97... codes are rates in percent. Aggregate statistics, not named companies.

Input fields

Every input this actor accepts, read from its input schema:

FieldTypeDefaultDescription
sourceTableselect"bd_9bd_sz_cl_r2"Which Eurostat table to read: the original (2004–2020) or bd_size (2009–2024).
sinceTimePeriodstring"2015"Return observations from this year onward (annual). The original table ends at 2020; bd_size runs to 2024. Earlier start = more records.
maxRecordsinteger10Maximum records delivered and billed. You are billed only for records actually delivered. Raise it to pull the full set.
geo (required)string"DE"Eurostat geo code to pull (e.g. DE, FR, IT, ES). Required: this cube is too large to return in one request, so it is retrieved one territory at a time.

Default changed on 30 Sep 2026: if you leave maxRecords out, a run now returns up to 10 records (it was 500). Set maxRecords yourself to get more — the maximum is unchanged.

Output fields

Every field in each delivered record, read from its output schema:

FieldTypeMeaning
record_idstringComposite source-native key across all dimensions.
dataset_codestringEurostat dataset code.
indicatorstringIndicator name.
freqstringfreq dimension code, verbatim.
freq_labelstringfreq dimension label, verbatim.
indic_sbstringindic_sb dimension code, verbatim.
indic_sb_labelstringindic_sb dimension label, verbatim.
sizeclasstringsizeclas dimension code, verbatim.
sizeclas_labelstringsizeclas dimension label, verbatim.
nace_r2stringnace_r2 dimension code, verbatim.
nace_r2_labelstringnace_r2 dimension label, verbatim.
geostringgeo dimension code, verbatim.
geo_labelstringgeo dimension label, verbatim.
time_periodstringTime period, verbatim (e.g. 2024-Q1 or 2024-01).
valuenumberObservation value, reproduced verbatim (published zeros kept).
obs_statusstringEurostat observation status/flag when present, verbatim.
sourcestringData source (Eurostat).
source_datasetstringSource dataset code.
licencestringLicence and reformatting notice.
attributionstringRequired attribution string.
caveatstringInterpretation caveat.
observed_atstringUTC timestamp the record was retrieved.
  • eu-air-passenger-flow-records — EU air passenger volumes
  • eu-regulatory-change-records — EU legal acts
  • company-data-enrichment-api — resolve firms to legal entities

Source, licence and how it is built

Source and licence are carried on every record (source, licence, attribution, observed_at). The actor reads only the official public endpoint, honours the source's robots and licence terms, and emits values unmodified with full provenance. Records are keyed on a stable id so re-runs upsert cleanly into a table you keep. Row delivery and billing are exactly equal: you are charged once per record delivered (push-then-charge), so an empty run costs nothing.

Part of NexGen Signal — official-source data products.