CUPRA Official APIcupraofficial.de ↗
Access CUPRA's vehicle configurator: list models, explore trim levels, get engines, colors, wheels, upholstery, pricing, and optional equipment via 5 endpoints.
What is the CUPRA Official API?
The CUPRA Official API exposes 5 endpoints that cover the full CUPRA vehicle configurator — from listing all available models with base pricing to retrieving granular configuration details including engines, exterior colors, wheels, and upholstery. The get_configuration_details endpoint alone returns six distinct option arrays (colors, wheels, engines, upholsteries, images, and prices) for any given configuration ID, and update_configuration lets you programmatically modify a build and receive a new configuration ID reflecting those changes.
curl -X GET 'https://api.parse.bot/scraper/1be6782f-e846-4fb1-94f5-1f09ec036bdf/list_models?language=de-DE&market_code=007' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cupraofficial-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: CUPRA Vehicle Configurator — explore models, customize, inspect equipment."""
from parse_apis.cupra_vehicle_configurator_api import Cupra, ConfigurationNotFound
client = Cupra()
# List all available models with pricing and specs.
for model in client.models.list(limit=5):
print(model.name, model.engine_name, model.price_formatted)
# Drill into the first model's trim levels.
model = client.models.list(limit=1).first()
for trim in model.trims.list(limit=5):
print(trim.name, trim.description, trim.highlights)
# Fetch full configuration details (engines, colors, wheels, upholstery).
config = model.details()
print(config.configuration_id, len(config.engines), "engines", len(config.colors), "colors")
# Customize the configuration by adding a color code.
result = model.update(equipment_codes="F14 2Y2Y")
print(result.new_configuration_id, result.valid)
# Browse optional equipment on the updated configuration.
updated = client.model(configuration_id=result.new_configuration_id)
for equip in updated.optional_equipment.list(limit=3):
print(equip.name, equip.category, equip.discount_package)
# Typed error handling: catch invalid configuration IDs.
try:
bad = client.model(configuration_id="invalid_id_000")
bad.details()
except ConfigurationNotFound as exc:
print(f"not found: {exc}")
print("exercised: models.list / trims.list / details / update / optional_equipment.list")
List all available CUPRA vehicle models with default pricing, engine types, efficiency data, and technical specifications. Each model carries a configuration_id that scopes all downstream endpoints (trims, configuration details, optional equipment, updates). Returns the full catalog in a single page — no pagination token.
| Param | Type | Description |
|---|---|---|
| language | string | Language code for responses. |
| market_code | string | Market code (e.g. '007' for Germany). |
{
"type": "object",
"fields": {
"total": "integer total number of models",
"models": "array of model objects with name, configuration_id, engine_name, prices, efficiency_data, technical_detail"
}
}About the CUPRA Official API
Models, Trims, and Configuration IDs
The list_models endpoint returns all available CUPRA vehicles, each with a configuration_id that acts as the entry point for every downstream call. Response fields include engine_name, prices, efficiency_data, and technical_detail. Both language and market_code parameters (e.g. 007 for Germany) are accepted across all endpoints to localize results. Once you have a model's configuration_id, pass it to get_trims to retrieve available trim levels — each trim returns its own base_configuration_id, highlights array, and descriptive text.
Configuration Details and Equipment
get_configuration_details takes any configuration ID — from list_models, get_trims, or a previous update_configuration call — and returns the full current state of that build. The engines array includes fuelType, efficiencyTestData, and per-engine prices. The colors, wheels, and upholsteries arrays each carry an imageUrl, a selected boolean indicating the current state, and a prices array. An images array aggregates image references across engines, colors, and wheels in one place.
Modifying Builds and Optional Equipment
update_configuration accepts comma-separated equipment_codes (for example F14 2Y2Y to select Glacial White, or GZ9AZ9A for 19" Cosmic wheels) alongside a configuration_id. The response returns a new_configuration_id, a valid boolean, and a conflicts object with add and remove arrays that flag incompatibilities. Feed the new ID into get_configuration_details or get_optional_equipment. The optional equipment endpoint surfaces packages and individual accessories grouped by category, with per-item prices, images, description, and a packageParts array for bundle contents.
The CUPRA Official API is a managed, monitored endpoint for cupraofficial.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cupraofficial.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cupraofficial.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a CUPRA model comparison tool showing base prices, engine options, and efficiency data across all models using
list_models. - Generate a trim-level selector UI that surfaces highlight features and descriptions from
get_trimsfor a chosen model. - Display a live vehicle configurator that updates colors, wheels, and upholstery imagery and pricing in real time via
get_configuration_details. - Detect configuration conflicts when a user selects incompatible options by parsing the
conflicts.addandconflicts.removearrays fromupdate_configuration. - Catalogue all optional equipment packages for a given build, including constituent
packagePartsand category groupings, usingget_optional_equipment. - Track pricing changes across markets by calling
list_modelsandget_configuration_detailswith differentmarket_codevalues. - Automate EV/hybrid inventory research by filtering
enginesresults onfuelTypeandefficiencyTestDatafields fromget_configuration_details.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does CUPRA provide an official public developer API for its configurator?+
What does `get_configuration_details` return that `list_models` does not?+
list_models returns one engine variant and one price point per model at its default configuration. get_configuration_details returns full arrays for all available engines, all color options with individual pricing, all wheel variants with dimensions, all upholstery choices, and an aggregated images array — all scoped to the exact configuration ID you pass in.Are markets outside Germany supported?+
market_code parameter is accepted on all five endpoints, so you can query different regional markets. However, coverage depends on the markets configured within the CUPRA configurator itself. Not all models, trims, or equipment options are guaranteed to be available in every market, and the API returns whatever the configurator exposes for the requested market_code.Does the API return dealer inventory or stock availability for configured vehicles?+
Can I retrieve the full change history of a configuration session across multiple `update_configuration` calls?+
update_configuration call returns a single new_configuration_id representing the resulting state, but the API does not maintain or expose a session history or diff log of prior states. You can fork this API on Parse and revise it to persist and surface configuration history if your application requires it.