Toyota Europe Inventory & Prices avatar

Toyota Europe Inventory & Prices

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Toyota Europe Inventory & Prices

Toyota Europe Inventory & Prices

Extract vehicle catalog, grades, variants, and prices from Toyota Europe across 30+ countries. Get list prices, discounts, promotions, engine specs, CO2 emissions, and fuel consumption for every model and trim level.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8.1 hours

Issues response

5 days ago

Last modified

Share

Extract the complete vehicle catalog, grades, variants, and pricing from Toyota Europe across 39 markets (42 country configurations) โ€” all from a single actor run. Toyota Europe Inventory & Prices is the fastest and most affordable way to monitor European car pricing at scale.

๐Ÿš€ Try it free โ€” your first $5 of usage is on Apify. No credit card required.

๐Ÿ“Œ What is Toyota Europe Inventory & Prices?

Toyota Europe operates a unified digital platform across all European markets. Behind the public configurator websites, structured pricing data is available for every model, grade, and variant across 39 markets โ€” from Spain to Kazakhstan.

Toyota Europe Inventory & Prices extracts every vehicle configuration with full pricing breakdown โ€” no browser needed, no JavaScript rendering, pure data. This makes it dramatically faster and cheaper than browser-based alternatives.

Use Toyota Europe Inventory & Prices to:

  • ๐Ÿ” Monitor competitor pricing โ€” track Toyota's list prices, discounts, and promotions across European markets
  • ๐Ÿ“Š Compare prices across countries โ€” use car_id + engine_code + fuel_code for approximate cross-market variant matching
  • ๐Ÿท๏ธ Analyze the full catalog โ€” every model, every grade, every engine/transmission combination
  • ๐Ÿ“ข Track promotions in real time โ€” detect when discounts appear or disappear on specific variants
  • ๐Ÿ’ถ VAT-exclusive analysis โ€” use vat_rate and net prices for B2B price benchmarking
  • ๐ŸŒฟ CO2 and emissions tracking โ€” per-variant CO2, WLTP fuel consumption and electric range data
  • ๐Ÿ”„ Automate recurring workflows โ€” schedule daily or weekly runs, set up webhooks, and keep your datasets fresh

The Apify platform gives Toyota Europe Inventory & Prices superpowers: scheduling, monitoring, API access, and integrations with Make, Zapier, Google Sheets, and more โ€” all out of the box.

๐Ÿ“‹ What data does Toyota Europe Inventory & Prices extract?

Toyota Europe Inventory & Prices returns ~85 structured fields per variant:

Core fields (always present)

FieldTypeDescription
country / country_namestringCountry code and full name (e.g. fr / France)
currencystringLocal currency code (EUR, GBP, PLN, CHF, SEK...)
model_code / model_namestringModel identifier and localized display name
model_idstringToyota's shared identifier โ€” consistent across all countries
grade / grade_codestringTrim level (e.g. Active, Design, GR Sport, Excel)
body_typestringBody style in local language (e.g. 5P, Berline, SUV)
enginestringEngine spec (e.g. "1.8L Hybride 140ch")
transmissionstringTransmission type (e-CVT, Automatic, Manual)
wheel_drivestringDrive type (FWD, AWD, 4x4)
is_hybridbooleanWhether the variant uses a hybrid powertrain
fuel_typesstringPipe-separated fuel type codes (e.g. "H_1 | PH_1")
price_listnumberManufacturer's recommended retail price before discounts
price_discountnumberValue of active promotional discount
price_with_discountnumberFinal consumer price after promotions
price_netnumberPrice excluding taxes (after discount)
price_taxnumberTax amount included in the price (after discount)
has_promotionbooleanWhether active promotions apply
co2_combined_gkmnumberPer-variant CO2 g/km from specs calculationDetails
fuel_consumption_l100kmnumberCombined fuel consumption (l/100km)
grade_featuresstringKey equipment included in each grade
car_idstringUnique identifier for this specific variant configuration
car_descriptionstringFull variant description
source_urlstringMain Toyota domain for the country (e.g. https://www.toyota.es)
data_sourcestringprices_api (full), specs_fallback (prices failed), or catalog_only (basic)
fallback_reasonstringWhy a fallback was used (e.g. prices_endpoint_failed), null for normal rows
price_qualitystringConfidence flag: ok (price from prices API, highest confidence), degraded (catalog or specs fallback), missing (no price available). Derived from data_source + price_list presence
vehicle_segmentstringM1 (passenger car) or N1 (light commercial vehicle) hint from body type / seats, relevant for tax classification in some markets
scraped_at / extracted_atstringISO 8601 UTC timestamp

Discovery-mode fields (when discoveryMode=true)

FieldTypeDescription
min_pricenumberBest available starting price for the model in discovery mode
min_price_listnumberManufacturer list price (before discounts) for the cheapest variant in discovery mode
min_price_netnumberNet price (excluding taxes) for the cheapest variant in discovery mode
min_price_with_discountnumberPrice after promotions for the cheapest variant in discovery mode

Specs fields (when includeSpecs=true, default)

FieldTypeDescription
vat_ratenumberVAT rate for this market (e.g. 0.21 for Spain). Derived from price decomposition when API doesn't provide it directly
vat_rate_sourcestringProvenance: api_calculationDetails, derived_from_specs, derived_from_specs_model_level, statutory_rate, statutory_rate_sanity_rejected, unavailable, unavailable_tax_includes_fees
vat_rate_statutoryfloat|nullStatutory VAT rate from tax authority
source_tax_rationumberRaw from.tax/from.net ratio from source; informational. Compare with vat_rate_statutory
vat_includes_registration_taxbooleanDeprecated (always False since v0.2.20). Use registration_tax_applies instead
registration_tax_appliesboolWhether market levies a registration/purchase tax in the gross price
registration_tax_typestring|nullOfficial tax name (autovero, bpm, registreringsafgift, engangsavgift, otv, purchase_tax)
registration_tax_in_vat_basebool|nullWhether reg tax is inside the VAT base (True only for TR, IL)
price_ex_vatfloat|nullPrice minus statutory VAT only (current/discounted)
price_ex_vat_listfloat|nullPrice minus statutory VAT only (list)
price_ex_all_taxesfloat|nullFully tax-free price; null when reg tax can't be isolated
price_ex_all_taxes_listfloat|nullFully tax-free list price
price_ex_vat_incl_registration_taxfloat|nullAlias of price_ex_vat โ€” unambiguous name
price_ex_vat_excl_registration_taxfloat|nullAlias of price_ex_all_taxes โ€” unambiguous name
vat_amount_currentfloat|nullVAT amount in currency (gross โˆ’ price_ex_vat)
vat_amount_listfloat|nullVAT amount on list price
registration_tax_amount_currentfloat|nullRegistration tax amount isolated from source
registration_tax_amount_listfloat|nullRegistration tax amount on list price
registration_tax_sourcestring|nullapi_tax_field or unavailable
tax_calculation_statusstring|nullcomplete, partial, or unavailable
tax_calculation_methodstring|nullHow decomposition was performed
tax_calculation_warningstring|nullCaveat when decomposition is limited
price_net_currentnumberAlias of price_ex_vat โ€” net price with statutory VAT removed
price_tax_currentnumberTax component of the current gross price
price_net_listnumberNet price of the original list price
price_tax_listnumberTax component of the original list price
price_vat_includedbooleantrue when the API's price_net equals the gross price (no decomposition available)
price_source_tax_scopestring|nullWhat from.tax contains: vat_only, registration_tax_only, vat_and_other_charges, or null
fiscal_regionstringProvince/region used for tax calculation
fiscal_region_ratenumberRegional tax surcharge rate
price_net_before_discountnumberNet price before any promotions
price_tax_before_discountnumberTax amount before promotions
price_total_confignumberConfigurator total price
price_total_incl_promotionsnumberTotal price including all promotions
grade_idstringGrade-level UUID โ€” shared by all variants of the same grade within a market. NOT a cross-country key (Toyota may assign different UUIDs to equivalent grades in different markets). Use car_id + engine_code + fuel_code for approximate cross-market matching
grade_sort_indexintegerGrade display order (1 = entry level)
available_online_salesbooleanAvailable for online purchase
available_online_leasingbooleanAvailable for online leasing
available_online_reservationbooleanAvailable for online reservation
n_coloursintegerNumber of available colours
colour_codesstringPipe-separated colour codes (e.g. "040 | 089 | 1G3")
colour_namesstringPipe-separated colour display names
colour_typesstringPipe-separated colour types (Solida/Metalizada/Bi-tono)
colour_rgbsstringPipe-separated hex RGB values
colour_base_price_listnumberBase colour list price
colour_base_price_netnumberBase colour net price
n_enginesintegerNumber of engine options
engine_codesstringPipe-separated engine codes
engine_namesstringPipe-separated engine display names
engine_categoriesstringPipe-separated engine categories (Hybrid/PHEV/etc)
engine_has_pluginbooleanAny engine is a plugin hybrid
engine_any_sold_outbooleanAny engine is sold out
engine_category_codesstringPipe-separated distinct powertrain codes of the model (e.g. "MHEV | BEV")
n_powertrain_typesintegerNumber of distinct powertrain categories; >1 means WLTP summaries are cross-powertrain ranges
engine_categorystringPer-variant powertrain code: BEV, MHEV, HEV, PHEV, ICE
engine_category_namestringLocalized powertrain name for the variant
engine_category_sourcestring|nullOriginal API category before normalization
engine_category_warningstring|nullWarning when name contradicts API category
engine_codestringPer-variant engine code (e.g. 1gd-mhev-28mh)
fuel_codestringPer-variant fuel code (electric, 2 diesel, 1 petrol, h_1 hybrid)
submodel_code / submodel_namestringSubmodel when the model is split (e.g. "Hilux 48V" / "Hilux BEV")
wltp_sourcestringvariant (car_id matched), specs_fallback, unmatched (WLTP fields null), null (specs off / catalog-only)
wltp_value_scopestringmodel_summary (model-level minโ€“max, powertrain-inconsistent fields nulled) or null
wltp_fuel_combinedstringWLTP fuel consumption summary (e.g. "1.3 - 5.2 l/100 km"); null on BEV variants of mixed models
wltp_co2_combinedstringWLTP CO2 range (e.g. "30 - 119 g/km")
wltp_electric_rangestringWLTP electric range; null on ICE/MHEV/HEV variants of mixed models
wltp_energy_consumptionstringEnergy consumption from WLTP (Wh/km)
wltp_energy_consumption_kwhstringEnergy consumption in kWh/100km when available
wltp_range_citystringCity range when available
co2_wltp_numericnumberLower bound of wltp_co2_combined; in multi-powertrain models only kept for BEV variants (0)
co2_combined_gkm_sourcestringcalculation_details, prices_api_energy, bev_zero_inferred, wltp_techspecs, wltp_techspecs_range_min, unavailable_multi_powertrain, unavailable_unmatched, unavailable, null
n_equipment_itemsintegerTotal equipment items for this model
grade_features_countintegerCharacter count of grade features text
n_upholsteriesintegerNumber of upholstery options
upholstery_codesstringPipe-separated upholstery codes
upholstery_namesstringPipe-separated upholstery names
vehicle_typestringVehicle category (e.g. "Passenger")
vehicle_category_sourcestringAlias of vehicle_type โ€” the only vehicle categorisation from the source
homologation_categorynullAlways null. Not exposed by the source; do not infer from body/seats.
katashikistringToyota internal model code (e.g. GUN227L-DNTLRW). From PSLS, not decoded.
suffix_codestringPSLS suffix code
available_fromstringISO date when variant becomes available (from PSLS)
available_tostringISO date when variant stops being available (from PSLS); 2999-12-31 = open-ended
default_colour_codestringColour code from PSLS default configuration
default_upholstery_codestringUpholstery code from PSLS default configuration
doorsintegerNumber of doors (from specs body type)
body_type_codestringInternal body type code (from specs)
fuel_code_liststringPipe-separated fuel codes from specs
fuel_name_liststringPipe-separated fuel names
fuel_has_hybridbooleanFuel list includes a hybrid option
n_colour_combinationsintegerNumber of colour combinations for this variant
default_colour_surcharge_exvatnumberSurcharge for default colour (ex VAT)
default_colour_surcharge_invatnumberSurcharge for default colour (inc VAT)

Model-level fields (from catalog and pricing data)

FieldTypeDescription
has_electricbooleanModel has an electric version
has_fuel_cellbooleanModel has a fuel cell version
model_total_pricenumberModel starting price from configurator
model_total_price_incl_promonumberModel starting price with promotions
has_wheeldrivesbooleanMultiple wheeldrive options available
configurator_urlstringVariant deep link when provided upstream; check configurator_url_source
configurator_url_sourcestringapi_variant_links (from Toyota), constructed_unverified (specs-fallback pattern, known not to resolve), null
model_page_urlstringModel page link published by the upstream API (CarChapter); usually redirects to the localized model page
exterior_colour_idstringUUID of default exterior colour
upholstery_idstringUUID of default upholstery
variant_total_pricenumberVariant total price from configurator
promotion_namestringName of active promotion
promotion_valuenumberDiscount value of active promotion

Promotion fields (when includePromotions=true)

FieldTypeDescription
promo_detail_codesstringPipe-separated promotion codes
promo_detail_namesstringPipe-separated promotion names
promo_detail_fromstringPipe-separated start dates (ISO)
promo_detail_untilstringPipe-separated end dates (ISO)
promo_detail_entitiesstringPipe-separated promotion entities
promotion_disclaimerstringLegal disclaimer text (HTML cleaned)
promo_disclaimer_datestringDate parsed from promotion disclaimer text (ISO format)
promo_date_conflictbooleanTrue when structured API date and disclaimer date disagree

Market Reference Matrix

The actor ships a versioned JSON file, src/market_reference.json, containing per-market tax and configuration metadata read at runtime. The file version (metadata.version) is logged at the start of every run and cited in regression reports.

Fields per market entry:

FieldTypeDescription
vat_ratefloatStatutory VAT rate (e.g. 0.21 = 21%)
effective_datestring|nullDate the current rate took effect (ISO 8601); null if stable/unknown
authority_urlstring|nullURL of the official tax authority page for this market's VAT rate. null for AM, IL, MD (authority URL not independently verifiable via HTTP).
currencystringISO 4217 currency code
toyota_domainstringToyota website domain for this market (e.g. toyota.es)
language_codestringLanguage code used by the actor for API requests (IETF/ISO 639-1). For multilingual markets (BE, CH) this is the primary locale; the actor also supports secondary locales.
fiscal_region_defaultstring|nullFiscal region parameter if the actor passes one; null for all current markets
source_tax_ratio_reliableboolfalse where source_tax_ratio in the dataset should not be used for tax analysis. Currently false for NO (from.net for BEV = post-incentive residual, not market price) and CH (Toyota CH API exposes no net/tax decomposition).
registration_tax.namestring|nullName of the registration/purchase tax, if applicable
registration_tax.basisstring|nullTax basis (future use)
registration_tax.in_toyota_pricebool|nullWhether the tax is embedded in Toyota's displayed list price
registration_tax.actor_isolatesboolWhether the actor extracts this tax as a separate amount
registration_tax.in_vat_basebool|nullWhether the tax sits inside the VAT base (affects ex-all-taxes calculation)
registration_tax.n1_exemptbool|nullWhether N1 vehicles are exempt from this tax

Fail-fast policy: the actor raises FileNotFoundError at module import if src/market_reference.json is missing. A missing or malformed file will abort the run immediately rather than silently defaulting.

Versioning: metadata.version follows the build that introduced the last schema or data change. Pin the version string if you reference this file from external systems.

Tax-exclusive price reliability by market

The table below summarises per-market behaviour for price_ex_all_taxes and the informational source_tax_ratio field. See vat_rate_source in each dataset row for the per-row determination.

CategoryMarketsvat_rate_sourceprice_ex_all_taxesNotes
VAT derived from sourceMost EU marketsderived_from_specsAvailableSource decomposition from.tax/from.net matches statutory ยฑ1pp
VAT statutory (no source decomp.)CH, MD, AM, AZ, GE, UA, KZ, RSstatutory_ratePartial or nullToyota API exposes no net/tax split; statutory rate applied; reg-tax not isolable
VAT statutory (sanity rejected)GB, IT, KZ (current), othersstatutory_rate_sanity_rejectedUses statutorySource ratio deviates >1pp from statutory โ€” non-VAT component embedded or source lag
VAT with reg-tax isolatedDK, FI, NL, NO, TR, ILderived_from_specs or statutory_rateAvailable (complete)Actor isolates registration/purchase tax separately
Partial โ€” tax in VAT baseTR, ILderived_from_specs or statutory_ratetax_calculation_status=partialร–TV (TR) / purchase_tax (IL) sits inside the VAT base; fully tax-free price not computed
Embedded โ€” not isolableGB, ITstatutory_rate_sanity_rejectedNot presented as verifiedVED First Year Rate (GB) / IPT (IT) embedded in source price, no isolation field in API
source_tax_ratio unreliableNO, CHโ€”โ€”NO: from.net for BEV = post-incentive residual; CH: no decomp. available. Matrix marks source_tax_ratio_reliable=false

KZ transitional note: Toyota Kazakhstan's API continues to embed the pre-2026 rate of 12% in price breakdowns. The actor detects the >1pp deviation from the statutory 16% (effective 2026-01-01), publishes vat_rate=0.16 via vat_rate_source=statutory_rate_sanity_rejected, and will switch automatically to derived_from_specs once Toyota KZ updates its API.

๐ŸŒ Supported countries

Toyota Europe Inventory & Prices covers 39 markets (42 country configurations) across 6 regions:

RegionCountries
Western Europe๐Ÿ‡ช๐Ÿ‡ธ Spain, ๐Ÿ‡ซ๐Ÿ‡ท France, ๐Ÿ‡ฉ๐Ÿ‡ช Germany, ๐Ÿ‡ฌ๐Ÿ‡ง UK, ๐Ÿ‡ฎ๐Ÿ‡น Italy, ๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands, ๐Ÿ‡ต๐Ÿ‡น Portugal, ๐Ÿ‡ฎ๐Ÿ‡ช Ireland, ๐Ÿ‡ฆ๐Ÿ‡น Austria, ๐Ÿ‡ง๐Ÿ‡ช Belgium (NL/FR), ๐Ÿ‡ฑ๐Ÿ‡บ Luxembourg, ๐Ÿ‡จ๐Ÿ‡ญ Switzerland (DE/FR/IT)
Nordics๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark, ๐Ÿ‡ซ๐Ÿ‡ฎ Finland, ๐Ÿ‡ธ๐Ÿ‡ช Sweden, ๐Ÿ‡ณ๐Ÿ‡ด Norway, ๐Ÿ‡ฎ๐Ÿ‡ธ Iceland
Central Europe๐Ÿ‡ต๐Ÿ‡ฑ Poland, ๐Ÿ‡จ๐Ÿ‡ฟ Czech Republic, ๐Ÿ‡ธ๐Ÿ‡ฐ Slovakia, ๐Ÿ‡ญ๐Ÿ‡บ Hungary, ๐Ÿ‡ธ๐Ÿ‡ฎ Slovenia, ๐Ÿ‡ญ๐Ÿ‡ท Croatia
Eastern Europe๐Ÿ‡ท๐Ÿ‡ด Romania, ๐Ÿ‡ง๐Ÿ‡ฌ Bulgaria, ๐Ÿ‡ช๐Ÿ‡ช Estonia, ๐Ÿ‡ฑ๐Ÿ‡ป Latvia, ๐Ÿ‡ฑ๐Ÿ‡น Lithuania, ๐Ÿ‡ท๐Ÿ‡ธ Serbia
Mediterranean๐Ÿ‡ฌ๐Ÿ‡ท Greece, ๐Ÿ‡จ๐Ÿ‡พ Cyprus
Eurasia & Middle East๐Ÿ‡น๐Ÿ‡ท Turkey, ๐Ÿ‡บ๐Ÿ‡ฆ Ukraine, ๐Ÿ‡ฌ๐Ÿ‡ช Georgia, ๐Ÿ‡ฆ๐Ÿ‡ฟ Azerbaijan, ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel, ๐Ÿ‡ฒ๐Ÿ‡ฉ Moldova, ๐Ÿ‡ฆ๐Ÿ‡ฒ Armenia, ๐Ÿ‡ฐ๐Ÿ‡ฟ Kazakhstan

Belgium and Switzerland have separate entries per language (e.g. Belgium NL vs Belgium FR). Currency is automatically matched to each market.

๐Ÿš— Available models

The actor supports 34 Toyota model codes across 42 country configurations. Not all models are available in every market โ€” use discoveryMode to get a live list for each country.

CodeModelMarkets
hiluxHilux39
landcruiser150Land Cruiser 25039
ybYaris Cross36
raRAV436
pdProace City35
c-hrC-HR34
cbC-HR+34
cxCorolla Cross33
bzbZ4X Touring32
debZ4X32
yaYaris32
proaceversoProace Verso32
axAygo X31
proaceProace31
pfProace City Verso30
corolla-hbCorolla Hatchback29
gyGR Yaris28
corolla-tsCorolla Touring Sports28
pm_psProace Max28
corollaCorolla Sedan25
pgPrius Plug-in Hybrid21
camryCamry16
ucUrban Cruiser15
miraiMirai15
suGR Supra10
l1Land Cruiser 3006
reRAV4 PHEV6
highlanderHighlander5
evProace Verso EV4
ec*Proace City EV2
eq*Proace City Verso EV2
fortuner*Fortuner2
gr*GR861
ep*Proace EV1

* Available in very few markets.

Note: Toyota treats some variants as separate models. For example, bZ4X (de) and bZ4X Touring (bz) have different model codes and ModelIDs โ€” select both if you need the full bZ4X family.

๐Ÿš€ How to use Toyota Europe Inventory & Prices

Extracting Toyota Europe inventory and pricing takes under two minutes:

  1. Create a free Apify account at apify.com โ€” your first $5 is free
  2. Open Toyota Europe Inventory & Prices in Apify Console or click Try for free on this page
  3. Click Save & Start โ€” the default configuration extracts all models from Spain with full specs
  4. Add more countries โ€” select any of the 39 supported markets from the dropdown
  5. Filter specific models (optional) โ€” select models like Corolla, Yaris, or RAV4 to reduce runtime
  6. Download your results in JSON, CSV, Excel, or XML from the Dataset tab โ€” or access them via API

โš™๏ธ Input parameters

ParameterTypeRequiredDefaultDescription
countriesarrayNo["es"]Select one or more markets from the dropdown (42 configurations available)
modelFilterstring[]No[] (all models)Filter by specific models using exact model codes (e.g. corolla-hb, ya, ra). Exact match only โ€” use discoveryMode to list available codes per country
discoveryModebooleanNofalseOnly fetch model catalog (1 req/country). Returns model codes, names, IDs, min prices. Use to discover available models before a full run
includeSpecsbooleanNotrueFetch specs, CO2, VAT, colours, engines, WLTP data (default on since v0.2)
includePromotionsbooleanNofalseFetch detailed promotion info per model (+1 request/model)
requestDelayintegerNo500Delay between requests in milliseconds
proxyConfigurationobjectNononeOptional โ€” typically not needed

Example input:

{
"countries": ["es", "fr", "de"],
"modelFilter": ["corolla-hb", "ya"],
"includeSpecs": true,
"includePromotions": false,
"requestDelay": 500
}

๐Ÿ“ฆ Output example

Each result is a structured JSON object. Here's a sample from a real run (v0.2 with specs):

{
"country": "es",
"country_name": "Spain",
"currency": "EUR",
"model_code": "ra",
"model_name": "RAV4",
"model_id": "5e1a8b7c-...",
"grade": "Advance",
"grade_code": "advance",
"body_type": "SUV",
"engine": "Plug-in Hybrid 300",
"transmission": "e-CVT",
"wheel_drive": "AWD-i",
"is_hybrid": true,
"fuel_types": "H_1 | PH_1",
"price_list": 50750.0,
"price_discount": 4000.0,
"price_with_discount": 46750.0,
"price_net": 41942.15,
"price_tax": 8807.85,
"has_promotion": true,
"co2_combined_gkm": 30.0,
"fuel_consumption_l100km": 1.3,
"vat_rate": 0.21,
"fiscal_region": "Madrid",
"grade_id": "b1f8443f-e12f-4f71-be34-f08f2dca6f53",
"grade_sort_index": 4,
"available_online_sales": true,
"price_net_before_discount": 41942.15,
"price_total_config": 46750.0,
"wltp_co2_combined": "30 - 119 g/km",
"wltp_fuel_combined": "1.3 - 5.2 l/100 km",
"n_colours": 17,
"n_engines": 3,
"n_upholsteries": 5,
"vehicle_type": "Passenger",
"configurator_url": "https://www.toyota.es/...",
"data_source": "prices_api",
"scraped_at": "2026-09-15T12:00:00+00:00"
}

Download results in JSON, CSV, Excel, XML, or HTML from the Output tab, or pull them programmatically using the Apify API.

๐Ÿ’ฐ How much does it cost to use Toyota Europe Inventory & Prices?

Toyota Europe Inventory & Prices uses Apify's standard Compute Unit (CU) pricing. Since it uses no browser, it is extremely lightweight:

  • Memory: 256 MB (minimum)
  • Runtime: ~30 seconds for 1 country (with specs), ~5 minutes for all 39 markets
  • Typical cost: 0.01 CU per country ($0.005)
  • With includePromotions: adds ~1 extra request per model (marginal cost increase)

A full 39-market run with all models costs approximately $0.15 โ€” making daily monitoring very affordable.

Is extracting Toyota Europe data free? Your first $5 of Apify usage is covered by the free plan credit โ€” enough to run this actor hundreds of times at no cost.

๐Ÿ’ก Tip: Run a small test with 1 country and a single model first to verify output before scaling up.

๐Ÿ”„ Batching and cost control

Extracting a complete multi-country catalogue may exceed a single run's cost budget. The actor provides two complementary mechanisms to control completeness and cost:

Run one country (or a small group) per execution using the countries input parameter. This is the recommended way to guarantee a complete catalogue per market:

{
"countries": ["de"],
"includeSpecs": true,
"includePromotions": false
}

Each run is scoped to the countries you choose, and completed markets are listed explicitly in countries_completed in the run-summary. Because each run is self-contained, re-running a country you already completed does not create duplicate rows โ€” there is no partial internal state to replay.

Per-run cost cap

Set a maximum spend for the run via maxTotalChargeUsd (configured in the Apify Console under Run options โ†’ Maximum total charge, or via the API query parameter). If the cap is reached mid-run, the actor stops cleanly and the run-summary reports exactly what happened:

  • countries_completed โ€” markets fully extracted before the cap was reached
  • countries_partial โ€” the market that was in progress when the cap hit
  • countries_not_started โ€” markets that were queued but never began
  • stop_reason โ€” cost_limit (vs completed for a normal finish)
  • completeness โ€” partial (vs complete)

Row counts remain internally consistent even under a cost cut: rows_written always matches the dataset's actual itemCount. A separate rows_attempted field records items the actor tried to push before the cut, and count_discrepancy: true flags that a mid-batch cut occurred.

ScopeSuggested maxTotalChargeUsd
1 country (small market)$2
1 country (large market: DE, GB)$3โ€“5
3 countries$5โ€“10
Full 39-market catalogue$20+

Stateful resumption (roadmap)

Picking up mid-country after a cost-limit cut is not yet implemented. The current approach (country-scoped runs with adequate cost caps) is reliable and produces no duplicates. Stateful resumption is planned for a future development cycle.

โ“ Frequently Asked Questions

This actor accesses Toyota Europe's public-facing configurator data, which serves the same information shown to any visitor on toyota.es, toyota.fr, etc. No authentication or login is required. The actor uses configurable request delays to be respectful of Toyota's servers.

As with any data collection activity, you are responsible for ensuring your use case complies with applicable laws (GDPR, CCPA) and Toyota's Terms of Service. For guidance, see Apify's blog on the legality of web scraping.

Can I get M1/N1 classification?

No. Toyota's European API does not expose homologation category (M1/N1/N1G), number of seats, maximum authorised mass, or payload. What it does expose is vehicle_type (e.g. "Passenger", "LCV"), the katashiki code per variant (which encodes body style, cabin type, and drivetrain according to Toyota's internal scheme), doors, and body_type_code. The actor does not attempt to decode the Katashiki โ€” if you have historical price lists with decoded Katashiki mappings, you are likely better positioned to build that mapping than we are. If you need us to attempt it, that would be a separate project with its own validation.

Why was CO2 always null in v0.1?

The primary pricing data returns an empty energy object for most markets. In v0.2, CO2 is extracted from the specs data's calculation details โ€” which has reliable per-variant CO2 values. Specs are now enabled by default to ensure this field is populated.

How do I match grades across countries?

grade_id is a grade-level UUID shared by all variants of the same grade within a single market โ€” it is NOT a reliable cross-country key, because Toyota may assign different UUIDs to equivalent grades in different markets. For approximate cross-market variant matching, use car_id + engine_code + fuel_code. For grade-level grouping within one market, grade_id is stable and reliable.

How do I calculate VAT-exclusive prices?

Use price_ex_vat (alias price_ex_vat_incl_registration_tax) for the price with statutory VAT removed (may still include registration tax). Use price_ex_all_taxes (alias price_ex_vat_excl_registration_tax) for the fully tax-free price โ€” this is null when the registration tax amount cannot be isolated from the source data. Check tax_calculation_status (complete = both available, partial = only ex_vat, unavailable = neither) and tax_calculation_method / tax_calculation_warning for the decomposition audit trail. price_net_current is an alias of price_ex_vat kept for backward compatibility.

What is vat_includes_registration_tax?

Deprecated since v0.2.20 โ€” always False. In earlier versions this was True in registration-tax markets. It is replaced by registration_tax_applies (whether the market levies a registration tax) and registration_tax_in_vat_base (whether the reg tax is inside the VAT base โ€” only TR/IL). Use registration_tax_type to identify the specific tax and registration_tax_amount_current for the isolated amount.

Why are some prices missing for Germany?

Primary pricing data returns an error for some German BEV models due to a server-side formatting issue with CO2=0. In v0.2.7, the actor automatically falls back to an alternative data source to build variant rows with full grade/engine/pricing detail (data_source=specs_fallback).

How often is the data updated?

Toyota updates their vehicle data regularly. Prices can change at any time when new promotions launch. Schedule daily or weekly runs to stay current.

Can I add more countries?

The actor already covers 39 Toyota Europe markets (42 configurations) โ€” select any combination from the Countries dropdown.

What is the model_id?

Toyota uses a shared identifier system across all European markets. The same model_id works in every country, making cross-country price comparisons straightforward.

Why does modelFilter return 0 results for some countries?

Model codes (slugs) vary across markets. For example, "Corolla" may appear as corolla, corolla-hb, corolla-ts, or corolla-cross depending on the country. Italy, for instance, offers corolla-ts (Touring Sports) but not corolla-hb (Hatchback). Some markets (Denmark, Norway) may not carry certain models at all. Use discoveryMode=true to list all available model codes for your target markets before setting a filter.

Why are WLTP fields null for some rows?

Check wltp_source first. "variant" (or "specs_fallback") means the row was matched in the technical specification data; "unmatched" means no match was found and the WLTP fields are null; null means specs were disabled (includeSpecs=false), unavailable for that model, or the row is catalog-only. Since v0.2.13, matched rows can also have individual WLTP fields set to null on purpose โ€” see the multi-powertrain question below.

What does wltp_value_scope = "model_summary" mean?

Toyota's data source publishes WLTP figures only as model-level summaries โ€” a minโ€“max range (or a min/max scalar) across every powertrain the model offers. There is no per-variant WLTP figure anywhere in the source. So a matched Hilux diesel and a matched Hilux BEV both receive the same "0 - 262 g/km" CO2 summary. wltp_value_scope makes this explicit; use n_powertrain_types to know whether the summary spans several powertrains (>1) or effectively describes a single one.

Why are some WLTP fields null on matched rows of multi-powertrain models?

Because the model summary cannot apply to every variant, the actor nulls the physically inconsistent fields based on the variant's real engine_category: wltp_electric_range, wltp_range_city and the kWh consumption fields are nulled on ICE/MHEV/HEV variants; wltp_fuel_combined is nulled on BEV variants; co2_wltp_numeric (the lower bound of the range, i.e. the BEV's 0) and scalar "0" summaries are nulled on combustion/hybrid variants. Nothing is dropped from the dataset โ€” rows are kept and flagged, so you decide.

What is the difference between co2_combined_gkm_source values?

  • calculation_details โ€” per-variant CO2 from the fiscal calculation block (most accurate, market-dependent)
  • prices_api_energy โ€” CO2 from the pricing endpoint's energy block (rare)
  • bev_zero_inferred โ€” variant is a BEV (engine_category = "BEV"), so 0 g/km is set
  • wltp_techspecs โ€” single-powertrain model, scalar WLTP summary applied to the variant
  • wltp_techspecs_range_min โ€” single-powertrain model whose WLTP summary is a range; the value is the lower bound, not the variant's exact figure
  • unavailable_multi_powertrain โ€” mixed-powertrain model and no per-variant CO2 in the source; null rather than a misleading range minimum
  • unavailable_unmatched / unavailable โ€” no match or no data
  • null โ€” specs disabled or catalog-only row

Can I trust configurator_url?

Only when configurator_url_source = "api_variant_links" (the link comes from Toyota's data). Rows with "constructed_unverified" carry a URL pattern that returns 404 โ€” localized paths and per-market model slugs are not derivable from the data source. The field is kept for backward compatibility and flagged; model_page_url gives the upstream model page link instead.

What does source_url point to?

source_url is the market portal URL (e.g. https://www.toyota.es) identifying the country source. It is not a direct link to the specific model or variant page. Use model_code and country to construct your own deep links if needed.

Why does vat_rate_source show different values?

  • api_calculationDetails โ€” VAT rate published directly by the data source for the variant (most accurate)
  • derived_from_specs โ€” source net/tax decomposition confirms the statutory rate (ยฑ1pp)
  • derived_from_specs_model_level โ€” model-level fiscal data confirms the statutory rate (fallback)
  • statutory_rate โ€” Country's standard VAT rate applied as last resort (no usable decomposition)
  • statutory_rate_sanity_rejected โ€” Statutory VAT used because derived ratio deviated >1pp. Raw ratio preserved in source_tax_ratio. Typically means source tax includes non-VAT charges.
  • unavailable โ€” Market does not expose VAT in its data
  • unavailable_tax_includes_fees โ€” Market bundles VAT with registration/purchase taxes (e.g. DK, NO). vat_rate is null.

Why did vat_rate change in Italy/UK/Romania/Estonia?

Since v0.2.25, the VAT sanity band was tightened from ยฑ5pp to ยฑ1pp. In these markets, the source from.tax/from.net ratio includes non-VAT charges and no longer passes the sanity check. vat_rate is now the statutory rate, and the raw ratio is preserved in source_tax_ratio for transparency.

Does this actor use a browser?

No. Toyota Europe Inventory & Prices works with structured data directly โ€” no browser, no JavaScript rendering. This is why it runs so fast and costs so little.

I found a bug or my run failed. Where do I report it?

Please open an issue in the Issues tab on this page. Include your input configuration and the run ID so we can investigate quickly.

Explore the full Rastriq intelligence portfolio on Apify Store:

ActorDescription
Rastriq StoreFull catalog of marketplace intelligence and data extraction tools

๐Ÿ“ Changelog

For full details see CHANGELOG.md. Summary by version (newest first):

0.2.39 (2026-09-20)

  • README restructured (actually deployed) โ€” Product-first structure now live on the Apify Store. Supersedes 0.2.38 which was tagged but never deployed the restructured README. No code, schema, or output changes.

0.2.38 (2026-09-20)

  • No-op โ€” Tagged as README restructure but the sourceFiles push did not include the updated README. Superseded by 0.2.39.

0.2.37 (2026-09-20)

  • Input schema deployed for the first time โ€” .actor/input_schema.json (7 fields, 42-country enum) now included in Apify builds. Console renders the structured input form. Fix: push tooling DOTDIR_ALLOW = {'.actor'}. No code changes.

0.2.35 (2026-09-19)

  • Norway BEV ยง6-8 partial exemption โ€” BEV priced above NOK 300,000 threshold: tax_calculation_status=partial, price_ex_vat=null. market_reference.json โ†’ v1.3.0 with vat_relief block. 42-config regression gate now canonical (42 enum values, not 39 markets).

0.2.34 (2026-09-19)

  • Documentation release โ€” market_reference.json v1.2.0 with authority URLs, Toyota domain, language codes, fiscal-region defaults. Tax-exclusive reliability table added. No code changes.

0.2.33 (2026-09-18)

  • VAT rate corrections (6 markets) โ€” EE 22%โ†’24%, RO 19%โ†’21%, SK 20%โ†’23%, CH 7.7%โ†’8.1%, IL 17%โ†’18%, KZ 12%โ†’16%. market_reference.json introduced (versioned JSON replacing inline dicts).

0.2.32 (2026-09-18)

  • VAT corrections โ€” intermediate build, superseded by v0.2.33.

0.2.27

  • Vehicle classification source fields โ€” katashiki, suffix_code, available_from/available_to, default_colour_code/default_upholstery_code, doors, body_type_code, vehicle_category_source, homologation_category (always null).

0.2.26

  • Labelling consistency โ€” vat_rate snapped to statutory within ยฑ1pp band. price_source_tax_scope inferred centrally. No price changes.

0.2.25

  • VAT sanity band tightened (ยฑ5pp โ†’ ยฑ1pp) โ€” composite tax ratios now detected. New fields: source_tax_ratio, price_source_tax_scope. Breaking: price_net_current now uses statutory VAT.

0.2.23

  • Fix โ€” includeSpecs=false runs returned 0 rows due to registration_tax_applies null validation.

0.2.20

  • Tax model overhaul โ€” Registration-tax markets (DK, FI, NL, NO, TR, IL) get full tax transparency. ~20 new tax/price fields. Norway MHEV classification fix. grade_id documentation corrected.

0.2.13

  • Submodel traversal fix (Hilux, Proace family). Per-variant powertrain identity fields. WLTP scope made explicit. CO2 provenance on every row. Configurator URL honesty.

0.2.12

  • VAT sanity check โ€” derived rates deviating >ยฑ5pp auto-rejected. Finland added to registration tax set.

0.2.11

  • VAT statutory fallback. Registration tax flag (deprecated v0.2.20). Row-level configurator URLs.

0.2.9

  • WLTP variant matching โ€” values populated only on matched variants. New fields: wltp_source, co2_combined_gkm_source.

0.2.8

  • Currency normalization โ€” obsolete codes (LTL, YTL) mapped to current ISO codes.

0.2.7

  • VAT derivation fallback from price decomposition. Correct net/tax computation. Romania currency fix. Expanded WLTP parser. German specs fallback. Promotion date conflict detection.

0.2

  • Version 0.2 expands coverage from ~25 to ~85 fields per variant with zero extra requests for core enrichment. Specs enabled by default. Full pricing breakdown, CO2, colours, engines, WLTP, upholsteries, equipment, configurator links, promotions.