Used-car pricing and inventory research
Usa los endpoints de CarMax para convertir used-car pricing and inventory research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Turn public CarMax pages into structured used-car data — vehicle search filtered by make, model, year, price and mileage, full vehicle detail with pricing and specs, similar-vehicle recommendations, autocomplete, the make taxonomy, and store location lookup, all as normalized JSON. Credential-free.
Search CarMax used-vehicle listings and get vehicle detail, similar-vehicle recommendations, and store locations as structured JSON.
Familias de endpoints
5
Parámetros documentados
27
Ejemplos
7
Snapshot en vivo del catálogo
Endpoints activos
7
Métodos
GET
Parámetros obligatorios
12
Referencias de esquema
7
{
"platform": "CarMax",
"endpoint": "carmax-search",
"method": "GET",
"path": "/carmax/search",
"auth": "apiKey"
}Casos de uso
Search CarMax used-vehicle listings and get vehicle detail, similar-vehicle recommendations, and store locations as structured JSON.
Usa los endpoints de CarMax para convertir used-car pricing and inventory research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de CarMax para convertir vehicle listing monitoring en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de CarMax para convertir dealership location lookup en solicitudes API repetibles con inputs documentados y respuestas JSON.
Ejecución gestionada
Cada cifra de abajo se lee directamente del catálogo de endpoints en vivo de CarMax — 7 endpoints, 27 parámetros de solicitud documentados y 7 esquemas de respuesta publicados — el mismo catálogo contra el que corren Docs y Playground.
7 documented CarMax endpoints, grouped into 5 request families — Search, Vehicle and Shop By Brand, plus 2 more.
27 request parameters are documented across those CarMax endpoints, 12 of them required — the full input contract is public before you write any integration code.
7 of the 7 CarMax endpoints ship a recorded example response, and 7 carry a documented response schema — you can code against the real JSON before the first request.
CarMax endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
7 hosted MCP tools back the CarMax endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Mapa de cobertura
Estas tarjetas se generan a partir del catálogo de endpoints activo, así que la landing page refleja la misma superficie de API que usan Docs y Playground.
/carmax/search
/carmax/vehicle/{stock_number}
/carmax/shop-by-brand
/carmax/store/{id}
/carmax/stores
Catálogo de endpoints
/carmax/searchSearches CarMax for used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, colors, engine, fuel economy, pricing, store, images), available search facets with live counts, and the total matching count. Credential-free public data sourced from CarMax's own mobile-app search API.
Notas de la respuesta
- `total_count` reflects CarMax's full matching-result count for the applied filters, not just `len(vehicles)`. - `price_info.is_price_reduced` and `price_info.previous_price` are set when CarMax shows a recent price drop on the listing. - Vehicle summaries carry exact numeric engine/performance fields (`engine_torque_lb_ft`, `engine_torque_rpm`, `horsepower`, `horsepower_rpm`, `cylinders`, `towing_capacity_lbs`, `passenger_count`) and listing metadata (`image_count`, `description`, `prior_uses`) that a page-scrape transport never carried — the mobile search API returns full per-vehicle detail inline, not just a summary. - `filters` lists CarMax's own search facets for the applied filters, with live counts/bounds — the same data CarMax's own filter UI is built from. Each entry's `type` is either `Value` (a discrete list of options with per-value counts, e.g. make, model, body type, exterior color, feature — populates `values`) or `Range` (numeric bounds plus a count histogram, e.g. price, year, mileage — populates `range`). Example response: ```json { "code": 200, "msg": "OK", "data": { "total_count": 91136, "page": 1, "page_size": 48, "vehicles": [ { "stock_number": 28187774, "vin": "1FMJK1K89REA27006", "year": 2024, "make": "Ford", "model": "Expedition Max", "trim": "Limited", "body": "4D Sport Utility", "mileage": 41406, "exterior_color": "Black", "interior_color": "Tan", "engine": "3.5L", "transmission": {"type": "Automatic", "display": "Automatic"}, "drive_train_type": "Rear Wheel Drive", "fuel": {"type": "Gas"}, "efficiency": {"mpg_city": 17, "mpg_highway": 23}, "price_info": {"price": 45998, "is_price_reduced": true, "previous_price": 46998}, "store": {"id": 7124, "name": "Canoga Park"}, "hero_image_url": "https://img2.carmax.com/assets/28187774/hero.jpg?width=400", "highlighted_features": ["Turbo Charged Engine", "Leather Seats", "Panoramic Sunroof"], "engine_torque_lb_ft": 480, "engine_torque_rpm": 2250, "horsepower": 400, "horsepower_rpm": 5000, "cylinders": 6, "towing_capacity_lbs": 6300, "passenger_count": 7, "prior_uses": ["Leased Vehicle", "Rental"], "image_count": 31, "description": "2024 Ford Expedition Max Limited", "url": "https://www.carmax.com/car/28187774" } ], "filters": [ { "name": "Make", "display_name": "Make", "type": "Value", "values": [ {"value": "Toyota", "count": 12453}, {"value": "Ford", "count": 9821} ] }, { "name": "BasePrice", "display_name": "Price range", "type": "Range", "range": { "minimum": 8000, "maximum": 138999, "increment": 1000, "histogram": [ {"minimum": 8000, "maximum": 8999, "count": 4}, {"minimum": 9000, "maximum": 9999, "count": 36} ] } } ], "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/search" } } ```
Herramienta MCP carmax_search
/carmax/search/suggestionsReturns autocomplete suggestions for a partial search term (make/model/trim), typo-tolerant by default. Credential-free public data sourced from CarMax's own mobile-app API.
Notas de la respuesta
- With fuzzy matching on (the default), a misspelled term like `civik` still resolves to `Honda Civic`-family suggestions; with `exact_match=true`, the same misspelled term returns an empty list. - `category` on each suggestion is CarMax's own classification, e.g. `MakeModel` or `MakeModelTrim`. Example response: ```json { "code": 200, "msg": "OK", "data": { "suggestions": [ {"term": "Honda Civic", "category": "MakeModel"}, {"term": "Honda Civic Sport", "category": "MakeModelTrim"}, {"term": "Honda Civic LX", "category": "MakeModelTrim"}, {"term": "Honda Civic Type R", "category": "MakeModelTrim"} ], "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/search/suggestions?isFuzzy=true&search=civ" } } ```
Herramienta MCP carmax_search_suggestions
/carmax/vehicle/{stock_number}Returns a normalized CarMax vehicle listing: full vehicle spec (make, model, trim, mileage, colors, engine, transmission, fuel economy, pricing), equipment features, labeled specifications, warranty coverage, accident/owner history, and CarMax's return guarantee terms. Credential-free public data sourced primarily from CarMax's own mobile-app API, backfilled with the website's server-rendered page for accident/owner history and warranty terms the mobile API doesn't expose.
Notas de la respuesta
- `stock_number` must be numeric; a non-numeric value returns `400` before any upstream request is made. - A stock number that is well-formed but no longer exists (sold, removed, or never existed) returns `404`. - **Hybrid sourcing**: most fields come from CarMax's mobile-app API. Three things it doesn't expose are backfilled from the website's own page instead — `history` (accident/owner counts), `warranties` (structured coverage terms), and `body`/`fuel.type`. If that backfill fetch fails for any reason, the response is still returned successfully with everything the mobile API provided; `history` is **omitted entirely** in that case (not present as `null` or a zero-valued object) rather than showing a misleading `accident_count: 0`/`owner_count: 0` that would read as "verified clean" when it's actually "unknown". `warranties` similarly comes back as an empty list, and `body`/`fuel.type` as empty strings, in that scenario. - `vehicle_guarantee` (CarMax's return-policy terms) and exact `horsepower`/`cylinders`/`engine_torque_lb_ft` figures are only available via the mobile API and have no website-scrape equivalent to fall back to. - `specs` entries from the mobile API don't carry a `category` (CarMax's mobile response is a flat name/value list, unlike the website's categorized spec groups) — `category` is empty in that case. Example response: ```json { "code": 200, "msg": "OK", "data": { "stock_number": 28187774, "vin": "1FMJK1K89REA27006", "year": 2024, "make": "Ford", "model": "Expedition Max", "trim": "Limited", "body": "4D Sport Utility", "mileage": 41406, "exterior_color": "Black", "interior_color": "Tan", "engine": "3.5L", "transmission": {"type": "Automatic", "display": "Automatic"}, "drive_train_type": "Rear Wheel Drive", "fuel": {"type": "Gas"}, "efficiency": {"mpg_city": 17, "mpg_highway": 23}, "price_info": {"price": 45998, "is_price_reduced": true, "previous_price": 46998}, "store": {"id": 7124, "name": "Canoga Park", "state": "CA", "latitude": 34.21972, "longitude": -118.59617}, "cylinders": 6, "horsepower": 400, "engine_torque_lb_ft": 480, "specs": [ {"name": "Transmission", "display_value": "Automatic"}, {"name": "EPA estimated mileage", "display_value": "17/23 mpg"} ], "features": [ {"name": "Panoramic Sunroof"}, {"name": "Leather Seats"} ], "warranties": [ {"type": "Basic", "years": 3, "miles": 36000}, {"type": "Powertrain", "years": 5, "miles": 60000} ], "history": {"accident_count": 1, "owner_count": 1, "prior_uses": ["Leased Vehicle", "Rental"]}, "vehicle_guarantee": { "title": "Love your car guarantee", "description": "30-day money back returns (up to 1,500 miles)", "disclaimer": "Take 24 hours to decide. You can then purchase or return the car..." }, "url": "https://www.carmax.com/car/28187774", "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/vehicles/28187774" } } ```
Herramienta MCP carmax_vehicle
/carmax/vehicle/{stock_number}/recommendationsReturns CarMax's own similar-vehicle recommendations for a listing: stock number, description, display mileage/price, store location, and image, for vehicles CarMax considers comparable. An empty list is a normal result, not an error. Credential-free public data sourced from CarMax's own mobile-app API.
Notas de la respuesta
- Only a display-formatted summary is available at this endpoint (`mileage_display`/`price_display` as CarMax's own rounded strings, e.g. `"78K"`/`"$22,998"`, not exact numeric values) — fetch `/carmax/vehicle/{stock_number}` for the full record on any recommended stock number. - An empty `recommendations` list is a normal result (CarMax has no similar vehicles to suggest for that listing/location), not an error. A malformed request (e.g. a missing `store_id`) still returns `400`. Example response: ```json { "code": 200, "msg": "OK", "data": { "stock_number": 28187774, "recommendations": [ { "stock_number": 70078825, "description": "2022 Honda Civic Sport", "mileage_display": "78K", "price_display": "$22,998", "location": "San Gabriel Valley/Duarte", "vehicle_caption": "Only available at CarMax San Gabriel Valley/Duarte, CA", "hero_image_url": "https://img2.carmax.com/assets/70078825/hero.jpg?width=400&height=225", "url": "https://www.carmax.com/car/70078825" } ], "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/vehicles/recommendations?locationId=7124&stockNumber=28187774" } } ```
Herramienta MCP carmax_vehicle_recommendations
/carmax/shop-by-brandReturns CarMax's full make taxonomy for browsing by brand: every make, a display image, and CarMax's own display order. Credential-free public data sourced from CarMax's own mobile-app API.
Notas de la respuesta
- `make` is the exact value to pass as `/carmax/search`'s `make` query parameter to filter results to that brand. - `display_order` reflects CarMax's own browse-by-brand ordering (not alphabetical). Example response: ```json { "code": 200, "msg": "OK", "data": { "brands": [ {"make": "Acura", "image_url": "https://content-images.carmax.com/qeontfmijmzv/25NcA62ks4WtOMUJlvsW9x/77ace1ff19f51d1968a363b1515c4af6/acura.jpg", "display_order": 1}, {"make": "Audi", "image_url": "https://content-images.carmax.com/qeontfmijmzv/31ViiSHNIysuutwlO3zprm/08b0abfc8ca32732d32061a788af51e3/audi.jpg", "display_order": 2}, {"make": "BMW", "image_url": "https://content-images.carmax.com/qeontfmijmzv/4w3T6OsuubLfEu9bxafgBn/c99282ded8407ca5deed20551f77e4cf/bmw.jpg", "display_order": 3} ], "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/search/shop-by-brand" } } ```
Herramienta MCP carmax_shop_by_brand
/carmax/storesSearches CarMax's physical store locations by ZIP code or free-text keyword, returning normalized stores with full address, every published phone number, opening hours, and (for a ZIP-based search) live driving distance in miles. Credential-free public data sourced from CarMax's own mobile-app store-locator API.
Notas de la respuesta
- `distance_miles` is only populated when `zip` was used to search — a `keyword` text search does not compute distance. - `hours` reports CarMax's own compact day-range representation (`start_day_of_week`/`end_day_of_week`, 0=Sunday through 6=Saturday) plus human-readable `days_of_week_display`/`hours_display` strings. - `store_availability` is a live, human-readable status string (e.g. "Open Now. Closes at 9:00 PM PDT"). - `phone_numbers` lists every phone line CarMax publishes for the store, tagged by type (local sales line, service line, fax, toll-free, ...). `primary_phone_number` is CarMax's own designated primary contact number. Example response: ```json { "code": 200, "msg": "OK", "data": { "stores": [ { "id": 7126, "name": "CarMax Burbank", "address_line1": "301 N Victory Blvd", "city": "Burbank", "state": "California", "state_abbreviation": "CA", "zip_code": "91502", "phone_numbers": [ {"type": "PhoneLocal", "number": "8184316000"} ], "primary_phone_number": "8184316000", "latitude": 34.17144, "longitude": -118.30294, "hours": [ {"start_day_of_week": 1, "end_day_of_week": 5, "open_time": "10:00:00", "close_time": "21:00:00", "days_of_week_display": "Monday - Friday", "hours_display": "10:00 AM - 9:00 PM"} ], "active_status": "Active", "store_availability": "Open Now. Closes at 9:00 PM PDT", "distance_miles": 8.3, "time_zone": "PDT", "iana_time_zone": "America/Los_Angeles", "url": "https://www.carmax.com/stores/7126" } ], "source_url": "https://mobileapps-afd-prod-endpoint-drgsgffchcfkbmg4.z01.azurefd.net/api/stores/details?Take=10&KeyWord=90210" } } ```
Herramienta MCP carmax_stores
/carmax/store/{id}Returns a normalized CarMax store: name, full address, phone numbers, coordinates, opening hours, and store-type flags (car buying center, microstore). Credential-free public data sourced from CarMax's own server-rendered store page.
Notas de la respuesta
- `id` must be numeric; a non-numeric value returns `400` before any upstream request is made. - A store id that is well-formed but does not exist returns `404`, not an empty `200`. - `hours` reports CarMax's own compact day-range representation (`start_day_of_week`/`end_day_of_week`, 0=Sunday through 6=Saturday) — one entry can cover multiple consecutive days (e.g. Monday through Friday), not one entry per day. - `is_car_buying_center` is set for CarMax's appraisal-only locations that don't carry a full sales lot; `is_microstore` is set for its smaller- format locations. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": 7124, "name": "Canoga Park", "address_line1": "21300 Roscoe Blvd", "city": "Los Angeles", "state": "CA", "state_abbreviation": "CA", "zip_code": "91304", "phone": "(818) 431-6000", "toll_free_phone": "(833) 741-0489", "latitude": 34.21972, "longitude": -118.59617, "hours": [ {"start_day_of_week": 0, "end_day_of_week": 0, "open_time": "11:00:00", "close_time": "19:00:00"}, {"start_day_of_week": 1, "end_day_of_week": 5, "open_time": "10:00:00", "close_time": "21:00:00"}, {"start_day_of_week": 6, "end_day_of_week": 6, "open_time": "09:00:00", "close_time": "21:00:00"} ], "is_car_buying_center": false, "is_microstore": false, "active_status": "Active", "url": "https://www.carmax.com/stores/7124", "source_url": "https://www.carmax.com/stores/7124" } } ```
Herramienta MCP carmax_store
APIs relacionadas
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Cobertura de la empresa
CarMax, Inc. · KMX
CarMax es operado por CarMax, Inc. (KMX). Los endpoints SEC de Crawlora usan el mismo CIK de esa empresa, así que los filings, datos financieros, transacciones de insiders y participaciones 13F provienen de la misma API key que los endpoints de CarMax de arriba.
API de filings y datos financieros SEC →Cómo hacer scraping de CarMax
Crawlora's CarMax endpoints return vehicle search, detail, recommendations, and store data as normalized JSON with one API key — no HTML parsing or account required.
/carmax/search takes make, model, zip, sort, min_year, max_year, min_price, max_price, max_mileage and page. There is no free-text or query parameter — an unrecognised one is silently ignored rather than rejected, so a call meant to search for a Civic quietly returns CarMax's entire unfiltered inventory. Always filter with make and model.
/carmax/search/suggestions takes a partial search string and returns CarMax's own autocomplete, and /carmax/shop-by-brand returns the make taxonomy — use either to get make and model values that CarMax actually recognises before you filter.
Pass a stock_number from a search result to /carmax/vehicle/{stock_number} for full detail and pricing. An optional store_id scopes it to a specific location.
/carmax/vehicle/{stock_number}/recommendations returns CarMax's similar-vehicle listings. Unlike the detail endpoint, store_id is required here as well as the stock number.
/carmax/stores searches physical locations by zip or keyword with a take limit, and /carmax/store/{id} returns one store's detail.
Preguntas frecuentes
Call /carmax/search with structured filters — make and model, plus optional zip, min_year, max_year, min_price, max_price, max_mileage, sort and page — and get normalized vehicle listings with stock number, VIN, year, make, model, trim, mileage, colors, engine, transmission and pricing.
No, and this is worth knowing because it fails quietly rather than loudly. /carmax/search has no free-text parameter, and an unrecognised query parameter is ignored instead of rejected — verified live, a call with query=honda+civic returns the exact same 60,711 unfiltered vehicles as a call with no parameters at all, led by a Nissan Rogue. Filter with make and model instead, and use /carmax/search/suggestions if you need to resolve a free-text phrase into terms CarMax recognises first.
Yes — /carmax/vehicle/{stock_number}/recommendations returns similar vehicle listings for a given stock number.
No CarMax account or login is required from the caller — only your Crawlora API key.