BMW prices and trims pulled from the official configurator across Europe. Each record separates the tax-inclusive price (gross_list_price), the price without tax (net_list_price) and the tax component (total_taxes, vat_percentage and emission_tax_pct). Available as an Apify actor or as a custom dataset.
Quick answer: The actor bmw-europe-price-tracker collects the BMW configurator across 14 markets and returns prices and trims as JSON, CSV or Excel from Apify. You can download a 100-row sample with 25 fields or order a historical, normalized dataset.
The BMW Europe Price Tracker actor (bmw-europe-price-tracker) opens the official BMW configurator and stores one row per configurable version (model, trim and powertrain). The public sample holds 100 rows and 25 native fields; every run reflects the configurator at that moment and stamps it in scraped_at.
In its latest full run the actor returned 4,187 records from 14 countries (Austria, Belgium, Switzerland, Czechia, Germany, Spain, France, United Kingdom and 6 more) and 532 model names. Those are the markets verified so far, not a fixed ceiling for the actor.
The sample includes models such as BMW 118d, BMW 120d, BMW M135 xDrive, BMW 116, BMW 120, BMW 216 Gran Coupé. The model_name field keeps the name exactly as the manufacturer publishes it and market identifies the market, which makes them the natural join key against other brands.
Markets verified in the latest full run and how many rows of the public sample belong to each. Actual actor coverage may be wider than a single run.
| Country | Code | Rows in sample | Models in sample |
|---|---|---|---|
| Austria | AT | 0 | — |
| Belgium | BE | 0 | — |
| Switzerland | CH | 0 | — |
| Czechia | CZ | 0 | — |
| Germany | DE | 0 | — |
| Spain | ES | 100 | BMW 118d, BMW 120d, BMW M135 xDrive |
| France | FR | 0 | — |
| United Kingdom | GB | 0 | — |
| Italy | IT | 0 | — |
| Netherlands | NL | 0 | — |
| Norway | NO | 0 | — |
| Poland | PL | 0 | — |
| Portugal | PT | 0 | — |
| Sweden | SE | 0 | — |
Extract of the downloadable sample (100 rows, 25 columns). The 8 key BMW columns are shown; no personal fields.
| market | model_range_name | model_name | line_name | gross_list_price | net_list_price | total_taxes | vat_percentage |
|---|---|---|---|---|---|---|---|
| es | BMW Serie 1 | BMW 118d | Paquete M Sport Pro | 42768.1 | 34010.4 | 8757.678 | 0.21 |
| es | BMW Serie 1 | BMW 120d | Paquete M Sport Pro | 42768.1 | 34010.4 | 8757.678 | 0.21 |
| es | BMW Serie 1 | BMW M135 xDrive | Paquete M Sport Pro | 42768.1 | 34010.4 | 8757.678 | 0.21 |
| es | BMW Serie 1 | BMW 116 | Paquete M Sport Pro | 42768.1 | 34010.4 | 8757.678 | 0.21 |
| es | BMW Serie 1 | BMW 120 | Paquete M Sport Pro | 42768.1 | 34010.4 | 8757.678 | 0.21 |
| es | — | BMW 216 Gran Coupé | Paquete M Sport Pro | 46636.4 | 37086.62 | 9549.8047 | 0.21 |
| es | — | BMW 218d Gran Coupé | Paquete M Sport Pro | 46636.4 | 37086.62 | 9549.8047 | 0.21 |
| es | — | BMW 220d Gran Coupé | Paquete M Sport Pro | 46636.4 | 37086.62 | 9549.8047 | 0.21 |
| es | — | BMW 220 Gran Coupé | Paquete M Sport Pro | 46636.4 | 37086.62 | 9549.8047 | 0.21 |
| es | — | BMW M235 xDrive Gran Coupé | Paquete M Sport Pro | 46636.4 | 37086.62 | 9549.8047 | 0.21 |
Values are exactly what the actor returned in its latest extraction; they have not been edited.
Native output fields of the actor, with type and an example value taken from the sample.
| Field | Type | Example |
|---|---|---|
| market | string | es |
| currency | string | EUR |
| scraped_at | string | 2026-10-04T13:58:50.945144+00:00 |
| model_range | string | F70 |
| model_range_name | string | BMW Serie 1 |
| model_code | string | 11GF |
| model_name | string | BMW 118d |
| series | string | 1 |
| derivative | string | 118D |
| line_code | string | S033B |
| line_name | string | Paquete M Sport Pro |
| fuel_type | string | D |
| body_style | string | SH |
| doors | string | 5 |
| drive_type | string | VR |
| hybrid_flag | string | NOHY |
| transmission | string | X |
| engine_series | string | B47 |
| effect_date | string | 2026-10-04 |
| gross_list_price | number | 42768.1 |
| net_list_price | number | 34010.4 |
| total_taxes | number | 8757.678 |
| vat_percentage | number | 0.21 |
| emission_tax_pct | number | 0.0475 |
| configurator_url | string | https://configure.bmw.es/es_ES/co… |
BMW publishes the tax-inclusive price in gross_list_price and the price without tax in net_list_price. The fiscal component arrives in total_taxes, vat_percentage and emission_tax_pct. Those fields let you reconcile list price and net price without recomputing VAT, and compare markets with different tax rates.
Need gross, net and taxes on the same basis across all brands? The data normalization service handles it.
Both are there: the tax-inclusive price is in gross_list_price and the price without tax in net_list_price; the tax detail is in total_taxes, vat_percentage and emission_tax_pct.
Each actor run reflects the configurator at that moment and stamps it in scraped_at. You can schedule recurring runs on Apify; if you need a fixed cadence with automatic delivery by API, S3 or CSV, we set it up as a custom dataset.
The actor does not keep history by itself: each run is a snapshot, and history builds up by accumulating runs. If you want it already built for BMW and the markets you care about, request it on the datasets page and we will tell you which period we can deliver.
Apify exports every dataset as JSON, CSV, Excel, XML, HTML and RSS. Here you can download the sample as JSON and CSV (100 rows, 25 columns). For recurring deliveries we add API, S3 or whatever format your team uses.
Coverage: Europe. Markets verified in the latest run: 14. The 100-row sample includes 1 market and 52 distinct models. It is meant to validate the schema, not to replace the full dataset.
Run the actor yourself on pay-per-result or order the historical or normalized dataset your team needs.