BMW USA APIbmwusa.com ↗
Access BMW USA vehicle models, specs, pricing, M-Series, electric/PHEV lineups, and current lease/finance offers via a structured REST API.
What is the BMW USA API?
The BMW USA API provides 5 endpoints covering the full bmwusa.com vehicle catalog, including specs, pricing, and national offers. get_all_models returns every model across all series with fields like horsepower, 0-60 acceleration, drivetrain, and base MSRP. Dedicated endpoints isolate the electric and plug-in hybrid lineup, the M performance roster, and current lease and finance promotions — all in structured JSON with no parsing required.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/cd370ef7-1ca6-4f7a-a657-01d7c899f2ce/get_all_models' \ -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 bmwusa-com-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.
from parse_apis.bmw_usa_scraper_api import BmwUsa
bmw = BmwUsa()
# List all M performance vehicles
for vehicle in bmw.vehiclesummaries.list_m():
print(vehicle.name, vehicle.horsepower, vehicle.price)
# Get detailed info on the first M model found
m_vehicles = list(bmw.vehiclesummaries.list_m(limit=1))
detail = m_vehicles[0].details()
print(detail.name, detail.price, detail.acceleration)
if detail.lease_offer:
print(detail.lease_offer.monthly_payment, detail.lease_offer.lease_term)
# List all current offers
for offer in bmw.offers.list():
print(offer.vehicle_name, offer.type, offer.monthly_payment, offer.msrp)
Returns all BMW vehicle models available on bmwusa.com. Each vehicle includes performance specs (horsepower, acceleration, MPG), pricing, drivetrain, fuel type, series, body style, and image URLs. Results span all series and body styles in the current model year lineup.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer total count of vehicles returned",
"vehicles": "array of vehicle objects with code, name, model_year, series, body_style, price, horsepower, mpg, acceleration, drive_train, fuel_type, cylinders, is_m, is_m_performance, marketing_text, technical_text, cosy_urls, and pdp_url"
},
"sample": {
"data": {
"total": 77,
"vehicles": [
{
"mpg": 35,
"code": "262B",
"is_m": false,
"name": "230i Coupe",
"price": 42200,
"series": "2",
"pdp_url": null,
"cosy_urls": {},
"cylinders": 4,
"fuel_type": "O",
"body_style": "Coupe",
"horsepower": 255,
"model_year": 2026,
"drive_train": "Rear-wheel drive",
"acceleration": "5.50000",
"marketing_text": "All New 2 Series: Less rules, more performance.",
"technical_text": "2.0-liter BMW TwinPower Turbo inline 4-cylinder",
"is_m_performance": false
}
]
},
"status": "success"
}
}About the BMW USA API
Vehicle Catalog Endpoints
get_all_models returns every BMW model currently listed on bmwusa.com, with each vehicle object carrying fields including code, name, model_year, series, body_style, price (base MSRP in USD), horsepower, mpg, acceleration (0-60 string), drive_train, and fuel_type. The total integer in the response tells you exactly how many models are in the current lineup. get_electric_models filters that catalog to vehicles with fuel_type of 'E' (all-electric) or 'X' (plug-in hybrid), returning the same field structure — useful for applications focused on EV comparisons or range/efficiency data.
M-Series and Detail Endpoints
get_bmw_m_models returns vehicles where is_m or is_m_performance is true, covering both full M cars and M Performance variants in one call. For per-model depth, get_model_details accepts a vehicle_code string (e.g. '262B' for the 230i Coupe) and returns extended data: full specs, a lease_offer object with monthly_payment, lease_term, msrp, due_at_signing, start_date, and end_date, plus image_urls, disclaimers, and configuration options. Vehicle codes can be discovered from any of the list endpoints.
Offers Endpoint
get_all_offers returns every active national lease and finance promotion across all models. Each offer object includes vehicle_name, vehicle_code, type (lease or finance), monthly_payment, term_months, due_at_signing, loyalty_credit, and validity dates (start_date, end_date). This endpoint reflects national promotional pricing and does not require a vehicle code as input — it returns the full offers table in one response.
The BMW USA API is a managed, monitored endpoint for bmwusa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bmwusa.com 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 bmwusa.com 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 BMW model comparison tool using horsepower, acceleration, and MSRP fields from get_all_models
- Track month-to-month changes in lease offers by polling get_all_offers and diffing monthly_payment and due_at_signing
- Populate an EV-focused configurator using get_electric_models to surface fuel_type, mpg, and drivetrain data
- Display M-lineup specs side-by-side using get_bmw_m_models with horsepower and acceleration fields
- Build a deal-alerting tool that monitors loyalty_credit and end_date fields from get_all_offers
- Retrieve detailed lease terms and image URLs for a specific model using get_model_details with a known vehicle_code
| 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.