CarMax Scraper — Used Car Inventory, VIN & Prices avatar

CarMax Scraper — Used Car Inventory, VIN & Prices

Pricing

from $8.00 / 1,000 vehicle extracteds

Go to Apify Store
CarMax Scraper — Used Car Inventory, VIN & Prices

CarMax Scraper — Used Car Inventory, VIN & Prices

Scrape CarMax used car inventory with VIN, price, mileage, trim, body style and store for pricing and comps. USD 10 per 1,000 vehicles plus a start fee.

Pricing

from $8.00 / 1,000 vehicle extracteds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

6 days ago

Last modified

Categories

Security

Limited permissions

Share

CarMax Scraper extracts public CarMax used-car inventory into a clean dataset with VIN, stock number, year, make, model and trim, price, mileage, body style, store location and key features, for dealers, auto analysts and pricing teams. It costs USD 10.00 per 1,000 vehicles on the FREE tier plus a start fee per run, and you pay only for vehicles saved to your dataset.

Give it any CarMax search URL (all cars, a make, a model, a filtered search) or individual vehicle URLs, and it returns one row per vehicle.

What data does the CarMax scraper return?

FieldExampleSource
urlhttps://www.carmax.com/car/70286089search results
stockNumber70286089search results
vin7SAYGAEE8PF927030search results
year, make, model2023, Tesla, Model Y Long Range (model plus trim)search results
price38998 (US dollars)search results
mileage43043search results
locationCarMax Roanoke, VAsearch results
bodyType4D Sport Utilitysearch results
features["Automated Cruise Control", "Rear Defroster"]search results
imageUrlshero photo; full photo set with detailssearch results and detail page
color, transmissionGray, Automaticdetail page (Open vehicle details)
fuelTypeusually nullCarMax rarely publishes it in the page data
description2023 Tesla Model Y Long Rangebuilt from year, make and model
sourceUrl, scrapedAt, warningsprovenance and notesevery row

Missing values are null, never guessed.

How do I scrape CarMax inventory?

Open carmax.com, filter the inventory the way you want (make, model, price, body type, distance), copy the URL and paste it into CarMax URLs. Then set Maximum vehicles and Maximum search pages.

{
"startUrls": [{ "url": "https://www.carmax.com/cars/toyota/camry" }],
"maxResults": 100,
"maxPages": 3,
"includeDetails": false
}

Each search page shows up to 48 vehicles. For more, the Actor asks the site's own search data for the next batch, up to Maximum search pages (1 to 10). If a further batch does not load, it keeps the vehicles it has and says so in the status message and OUTPUT.warnings; in the 2026-10-27 tests only the first 48 were confirmed, so split large searches by make or model. Maximum vehicles caps the dataset at 1 to 200 rows.

Should I turn on vehicle details?

Turn on Open vehicle details only if you need exterior color, transmission or the full photo set. Search results already carry VIN, price, mileage, trim, body, store and features. Details open one page per vehicle, which adds about 15 to 30 seconds each, so 100 vehicles with details take far longer than 100 without. If a detail page cannot be read after retries, the vehicle is still saved from the search data with a warning and is not charged.

When should I use this Actor, and when not?

Use it to:

  • track CarMax asking prices and mileage for a make or model over time;
  • build comparables with VIN, trim and store for appraisal or pricing tools;
  • monitor inventory at a set of stores or in a region.

Do not use it for:

How much does the CarMax scraper cost?

You pay one vehicle-result event per vehicle saved, plus Apify's start event once per started GB of allocated memory (the default run uses 1 GB). Vehicles saved without a charge (detail page failed) and blocked or empty runs incur no vehicle events.

EventFREEBRONZESILVERGOLD and above
Vehicle saved (vehicle-result)USD 0.010001USD 0.00975USD 0.0095USD 0.008
Actor start (per started GB)USD 0.175232USD 0.170851USD 0.16647USD 0.140185

Worked totals on the FREE tier at 1 GB:

  • The Console default run (3 vehicles with details): 3 × USD 0.010001 + USD 0.175232 = about USD 0.21.
  • 100 vehicles without details: 100 × USD 0.010001 + USD 0.175232 = about USD 1.18.

The start fee is the larger part of a small run, so collecting more vehicles per run is cheaper per vehicle.

Use it from an AI assistant

CarMax Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/carmax-scraper to your client and ask, for example: "Pull 50 used Honda CR-Vs from CarMax with price, mileage, year and VIN, and tell me the average price per 10,000 miles."

API examples

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/carmax-scraper').call({
startUrls: [{ url: 'https://www.carmax.com/cars/ford/f150' }],
maxResults: 50,
maxPages: 2,
includeDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python (apify-client 3.x):

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/carmax-scraper").call(
run_input={"startUrls": [{"url": "https://www.carmax.com/cars/honda"}], "maxResults": 25, "includeDetails": False}
)
for car in client.dataset(run.default_dataset_id).iterate_items():
print(car["year"], car["make"], car["model"], car["price"], car["mileage"])

Output example

[
{
"recordType": "vehicle",
"url": "https://www.carmax.com/car/70286089",
"stockNumber": "70286089",
"vin": "7SAYGAEE8PF927030",
"year": 2023,
"make": "Tesla",
"model": "Model Y Long Range",
"price": 38998,
"mileage": 43043,
"location": "CarMax Roanoke, VA",
"bodyType": "4D Sport Utility",
"fuelType": null,
"transmission": "Automatic",
"color": "Gray",
"imageUrls": ["https://img2.carmax.com/assets/70286089/hero.jpg?width=400"],
"features": ["Automated Cruise Control", "Rear Defroster", "Power Windows"],
"warnings": []
},
{
"recordType": "vehicle",
"url": "https://www.carmax.com/car/29138146",
"stockNumber": "29138146",
"vin": "3VW517AT6FM808697",
"year": 2015,
"make": "Volkswagen",
"model": "Beetle Classic",
"price": 17998,
"mileage": 101328,
"bodyType": "2D Convertible",
"warnings": []
}
]

Reliability and limits

CarMax uses bot protection, so the Actor uses a real Chrome browser, a US access route and fresh exits on each retry. Typical runs: about 30 to 90 seconds for a search page, plus 15 to 30 seconds per vehicle when details are on. CarMax refuses some runs outright: on 2026-10-27, 8 of 15 test runs got through. If CarMax refuses every attempt for about three minutes, the run ends with a failed status that starts with "Blocked", saves nothing and charges no vehicle events, so retry later. A minute before the run timeout it stops and keeps what it saved. Every run writes an OUTPUT record with saved and charged counts, failed pages and warnings.

FAQ

Does CarMax have a public inventory API? No public API is offered for inventory data. This Actor reads the data the CarMax website itself loads for its search pages.

Does it return the VIN for every car? Yes, when CarMax shows it in the search data, which was the case for every vehicle in the 2026-10-27 tests.

Can I scrape one specific car? Yes. Paste a https://www.carmax.com/car/<stock number> URL; the Actor opens that vehicle page.

Why is fuelType empty? CarMax does not include fuel type in the data its pages expose for most vehicles, so the Actor leaves it null instead of guessing.

How many cars can one run return? Up to 200 vehicles and 10 search pages per run. Split bigger needs into several searches, for example by make.

Are duplicate vehicles charged twice? No. Each stock number is saved and charged once per run.

The Actor collects only public inventory data shown without a login and no personal data. Use it in line with CarMax's terms and applicable law.

Last verified: 2026-10-27