EU Car Stock by Fuel — Electric, Hybrid, Petrol & Diesel avatar

EU Car Stock by Fuel — Electric, Hybrid, Petrol & Diesel

Pricing

from $33.50 / 1,000 car energy records

Go to Apify Store
EU Car Stock by Fuel — Electric, Hybrid, Petrol & Diesel

EU Car Stock by Fuel — Electric, Hybrid, Petrol & Diesel

Eurostat passenger-car stock by country and motor energy, newest year first. Newer table road_eqs_carpda (2013-2025): electric, hybrid, plug-in, gas, LPG and hydrogen cars by owner. Original road_eqs_carmot (petrol/diesel by engine size) is the default. Vehicle stock, not sales. Pay per record.

Pricing

from $33.50 / 1,000 car energy records

Rating

0.0

(0)

Developer

NexGen Signal

NexGen Signal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Turn Eurostat's passenger-car-stock tables into clean, per-record benchmarks — one row per published observation of the car stock by country and motor energy. The original table (road_eqs_carmot, the default) splits petrol and diesel by engine size; the newer table (road_eqs_carpda, 2013–2025) adds electric, hybrid, plug-in, gas, LPG and hydrogen cars by owner type.

Each row of the source multidimensional cube becomes one clean, flat record: every dimension is expanded into an explicit code and its label, the observation value is reproduced exactly as Eurostat published it, and each record is stamped with source, dataset code, licence, attribution, a UTC retrieval timestamp and an interpretation caveat.

Two source tables — choose with sourceTable

sourceTableYearsMotor energyOther split
road_eqs_carmot (the default — runs exactly as before)from 2000 in many countriespetrol, diesel, total onlyengine size (engineSize)
road_eqs_carpda (added 30 Sep 2026)2013–2025 (Eurostat last updated it 1 Sep 2026)16 codes: electric, petrol and diesel hybrids and plug-ins, gas, LPG, hydrogen and moreowner type (ownerType: private or legal person)

They are not one continuous series and the newer table has no engine-size split. engineSize works only with the original table and ownerType only with the newer one; the wrong combination stops the run before anything is fetched, with nothing charged. Every record carries dataset_code, so you always know which table a row came from.

Watch the overlaps: in road_eqs_carpda, PET and DIE already include their hybrids and plug-ins (Germany 2024: PET 32,712,008 = PET_X_HYB 29,918,520 + ELC_PET_HYB 1,897,379 + ELC_PET_PI 896,109). ELC is battery-electric cars only and sits inside ALT. Don't add PET and ELC_PET_PI together.

Question: how many electric cars were on Germany's roads in 2025, against petrol and diesel?

{"sourceTable": "road_eqs_carpda", "geo": "DE", "fuel": ["TOTAL", "ELC", "ELC_PET_PI", "PET", "DIE"], "ownerType": ["TOTAL"], "sinceTimePeriod": "2024", "newestFirst": true, "maxRecords": 10}

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

CodeMeaning20242025
TOTALAll cars49,339,16649,486,487
ELCBattery-electric1,651,6432,034,260
ELC_PET_PIPlug-in hybrid (petrol)896,1091,044,644
PETPetrol (incl. its hybrids)32,712,00832,837,331
DIEDiesel (incl. its hybrids)14,592,56714,254,484

What one record represents

The source dataset is Eurostat road_eqs_carmot — passenger cars by type of motor energy and engine size (vehicle stock). Eurostat publishes it as a JSON-stat hypercube indexed by several dimensions (frequency, unit, motor energy (fuel type), engine size class, geography and time); this Actor unpacks it so every present observation cell becomes exactly one record. Cells Eurostat does not publish are absent from the source and are neither invented nor delivered; published zeros are kept as real values.

For each record you get a composite record_id, the dataset_code, the indicator name, then — for each dimension — the code and its label, plus time_period, the numeric value, and Eurostat's obs_status flag when present. The dimension columns include mot_nrg (motor energy: petrol, diesel or total — the only three in this table) with its label, engine (engine size class) and unit.

Coverage and volume

The licence-permitted cube holds a compact, complete set of stock observations by fuel type, engine class and country across the published years.

Live licence-clean count is 6,054 non-null observations across EU/EFTA/candidate territories; the Wave-3 index figure of 6,225 counts all territories including commercial-barred ones. This README states the difference; the capacity line is the licence-clean count.

The reporting country (geo) is optional: leave it empty for every licence-permitted territory, or set one code such as DE. The ingester auto-partitions by territory if a response is too large, and stops at your Maximum records cap.

Licence and attribution

This dataset is redistributed under the terms Eurostat publishes it with; the full notice travels on every record in the licence field:

Eurostat, CC BY 4.0. Reformatted from Eurostat JSON-stat; values unmodified. Third-party content and logos excluded. Commercial-barred geographies removed.

A structural geography allow-list is applied at ingest: only EU member states, EU/euro-area aggregates, EFTA members and official EU acceding/candidate countries are delivered; commercial-barred territories are excluded at ingest and counted in the run receipt. The required attribution — Source: Eurostat (dataset road_eqs_carmot) — is on every record.

Interpretation caveat

Figures are counts of the passenger-car stock by motor-energy (fuel) type and engine class, not new registrations, CO2 emissions, or shares. Read the mot_nrg and engine dimensions to know which fuel and engine class a row counts.

Eurostat values are reproduced verbatim: no rescaling, re-basing, interpolation or seasonal adjustment. Read each value together with its dimension labels — the indic_sb code tells you which measure a row carries.

Person-data policy

This is a statistics product about enterprises, industries and territories. There are no natural-person or contact fields anywhere in the record, and a per-record assertion enforces that allow-list at write time.

Provenance, licensing and compliance

Every run begins with a live source-preflight: the Actor reads the exact host's robots.txt at runtime and refuses to proceed if the crawl policy disallows the data path. The gate result — URL, HTTP status, byte length and a SHA-256 of the policy — is written to the run's RUN_RECEIPT, so each run carries its own audit trail. The Actor identifies itself with a transparent, non-impersonating User-Agent and never bypasses a block, solves a challenge, or fetches through a cache or mirror. When the door is genuinely unavailable the run fails loudly and bills nothing.

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
fuelmot_nrgOptional. TOTAL Total; PET Petrol; DIE Diesel. This Eurostat table has only these three; it has no electric or hybrid split.
engineSizeengineOptional. TOTAL Total; CC_LT1400 Less than 1 400 cm³; CC1400-1999 From 1 400 to 1 999 cm³; CC_GE2000 2 000 cm³ or over.
unitunitOptional. NR Number.
ownerTypeleg_formroad_eqs_carpda only: TOTAL, PER_PHY private persons, PER_LEG companies and other legal persons.
sourceTable—road_eqs_carmot (default) or road_eqs_carpda. The fuel codes above are the original table's; the newer table's 16 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",
"fuel": [
"PET",
"DIE"
],
"engineSize": [
"TOTAL"
],
"sinceTimePeriod": "2015",
"newestFirst": true,
"maxRecords": 10
}

First rows it returned when checked (Sep 2026):

[
{
"geo": "DE",
"time_period": "2025",
"value": 14254484,
"mot_nrg_label": "Diesel",
"engine_label": "Total",
"unit_label": "Number"
},
{
"geo": "DE",
"time_period": "2025",
"value": 32837331,
"mot_nrg_label": "Petrol",
"engine_label": "Total",
"unit_label": "Number"
},
{
"geo": "DE",
"time_period": "2024",
"value": 14592567,
"mot_nrg_label": "Diesel",
"engine_label": "Total",
"unit_label": "Number"
}
]

Eurostat table road_eqs_carmot splits the car stock into petrol and diesel only (plus total), by engine size. It has no electric, hybrid or LPG split; for those set sourceTable to road_eqs_carpda (see Two source tables). Vehicle-stock counts, not sales or listings.

Inputs

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.

  • Source table (sourceTable) — road_eqs_carmot (default: petrol/diesel by engine size) or road_eqs_carpda (2013–2025: electric, hybrids and more, by owner type).
  • Motor energy (fuel), Engine size (engineSize, original table only), Owner type (ownerType, newer table only), Unit (unit) — optional Eurostat codes; see Choosing the series.
  • Newest first (newestFirst) — most recent years first, before the record cap.
  • Country / territory (geo) — optional; one Eurostat geo code (e.g. DE). Empty = every licence-permitted territory.
  • Earliest period (sinceTimePeriod) — return observations from this year onward. An earlier start yields more records.
  • Maximum records (maxRecords) — hard cap on records delivered and billed.

Output

Records land in the Actor's default dataset and export as JSON, CSV, Excel or via the Apify API. A tabular overview view surfaces geography, period, the key dimension labels and the value.

Fields in detail

Each record leads with a composite record_id built from every dimension code, so it is stable and join-ready across runs. Every dimension arrives as both a machine code and a human-readable label, which means you can group and filter on the codes while reading the labels — no separate code list to maintain. The value is the observation itself, reproduced exactly; obs_status carries Eurostat's flag (for example a break in series or a provisional marker) when one is present, so you never silently lose the caveats Eurostat attaches to a number. The provenance block — source, source_dataset, licence, attribution, caveat, observed_at — is present on every record, so each row is self-describing and audit-ready without reference back to this page.

Sibling Actors

This Actor counts the stock of passenger cars by fuel type; the fleet's eu-vehicle-co2-records cell instead carries EEA new-car CO2 monitoring values (grams per km on newly registered cars). Fleet composition versus new-car emissions - two different questions, and both distinct from the RDW registration-count cells. It also shares its engineering — the runtime robots gate, the geo allow-list, the push-then-charge billing and the verbatim-value discipline — with the fleet's other Eurostat cells.

Sample output

Sample output — EU Passenger-Car Energy Mix — Stock by Fuel Type

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:NR:DIE:CC1400-1999:AL:2021",
"dataset_code": "road_eqs_carmot",
"indicator": "Passenger cars by type of motor energy (vehicle stock)",
"freq": "A",
"freq_label": "Annual",
"unit": "NR",
"unit_label": "Number",
"mot_nrg": "DIE",
"mot_nrg_label": "Diesel",
"engine": "CC1400-1999",
"engine_label": "From 1 400 to 1 999 cm³",
"geo": "AL",
"geo_label": "Albania",
"time_period": "2021",
"value": 233368,
"obs_status": null,
"source": "Eurostat",
"source_dataset": "road_eqs_carmot",
"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 road_eqs_carmot)",
"caveat": "Figures are counts of the passenger-car stock by motor-energy (fuel) type and engine class, not new registrations, emissions, or shares. Read the mot_nrg (motor energy) and engine dimensions to know which fuel and engine class a row counts. Values reproduced verbatim from Eurostat.",
"observed_at": "2026-09-25T17:33:32Z"
}

Pricing

This Actor uses Apify's pay-per-event model: a flat $0.05 per record actually delivered to the dataset, and nothing else — no monthly rental, no per-run base fee, no compute charge. Deliver 40 records and you pay $2.00; deliver 10,000 and you pay $500.00. Billing is wired after delivery — each record is pushed first and only then does the per-record event fire — so a mid-run failure can only ever under-charge you, never over-charge. Use Maximum records to cap spend precisely.

Scaling and limits

Set Maximum records low to sample cheaply or high to pull a territory in full. The Actor streams the cube and delivers incrementally, so memory stays bounded regardless of how large the requested territory is, and you are billed only for records actually delivered. Because Eurostat updates this cube on its own release calendar, re-running the Actor picks up new periods automatically, and each record's observed_at stamp dates the snapshot — schedule a run to keep a downstream table current. To assemble a multi-country panel, run the Actor once per territory and concatenate; every record already carries its geo code and label, so the panels align without any reconciliation work.

Typical uses

Compare the petrol/diesel mix of the car stock across member states; size the diesel or petrol fleet by engine class; benchmark the pace of the energy transition; or feed a mobility-planning, charging-infrastructure or policy model with clean, licence-clean stock inputs.

What this Actor does not do

It does not forecast, model, seasonally adjust, or merge multiple Eurostat datasets into one record, and it does not deliver commercial-barred geographies. It gives you faithful, licence-clean, analysis-ready observation records — one row per published cell — with an auditable provenance trail.