Used-car pricing and inventory research
Use CarMax endpoints to turn used-car pricing and inventory research into repeatable API requests with documented inputs and JSON responses.
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.
Endpoint families
5
Documented params
27
Examples
7
Live catalog snapshot
Active endpoints
7
Methods
GET
Required params
12
Schema refs
7
{
"platform": "CarMax",
"endpoint": "carmax-search",
"method": "GET",
"path": "/carmax/search",
"auth": "apiKey"
}Use cases
Search CarMax used-vehicle listings and get vehicle detail, similar-vehicle recommendations, and store locations as structured JSON.
Use CarMax endpoints to turn used-car pricing and inventory research into repeatable API requests with documented inputs and JSON responses.
Use CarMax endpoints to turn vehicle listing monitoring into repeatable API requests with documented inputs and JSON responses.
Use CarMax endpoints to turn dealership location lookup into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live CarMax endpoint catalog — 7 endpoints, 27 documented request parameters, and 7 published response schemas — the same catalog Docs and Playground run against.
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.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/carmax/search
/carmax/vehicle/{stock_number}
/carmax/shop-by-brand
/carmax/store/{id}
/carmax/stores
Endpoint catalog
/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.
Response notes
- `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" } } ```
MCP tool 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.
Response notes
- 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" } } ```
MCP tool 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.
Response notes
- `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" } } ```
MCP tool 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.
Response notes
- 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" } } ```
MCP tool 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.
Response notes
- `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" } } ```
MCP tool 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.
Response notes
- `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" } } ```
MCP tool 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.
Response notes
- `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" } } ```
MCP tool carmax_store
Related APIs
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.
Company coverage
CarMax, Inc. · KMX
CarMax is operated by CarMax, Inc. (KMX). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the CarMax endpoints above.
SEC filings & financials API →How to scrape 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.
FAQ
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.