CarMax Scraper avatar

CarMax Scraper

Pricing

from $1.00 / 1,000 cars

Go to Apify Store
CarMax Scraper

CarMax Scraper

Collect CarMax used-car listings from search URLs, including vehicle specs, pricing, store location, and optional zip-code inventory filtering.

Pricing

from $1.00 / 1,000 cars

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

CarMax Scraper creates a structured dataset of used-car listings collected from CarMax. Each dataset item represents one vehicle and can include VIN and stock number, year, make, model, trim, price, mileage, specs, colors, store location, transfer information, and listing flags. Query the source with a CarMax search URL (searchUrl or searchUrls) and an optional zip code. Control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.

Dataset at a glance

PropertyValue
Sourcecarmax.com used-car search
Record unitOne CarMax vehicle listing
Input methodsSearch URL (searchUrl) or multiple search URLs (searchUrls), optional zipCode
Main identifiersvin, stockNumber, listing URL (url)
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML (Apify dataset exports)
Update modelFresh records per Actor run
Pricing$1 / 1,000 cars; Actor start $0.00005

Coverage and available records

The Actor collects public CarMax search listings. Filters encoded in the search URL (make, model, body type, price, features) are applied as CarMax shows them.

  • Single URL: searchUrl (for example https://www.carmax.com/cars or https://www.carmax.com/cars/suvs/audi).
  • Multiple URLs: searchUrls overrides searchUrl when set.
  • Zip code: zipCode scopes inventory to that area. Leave empty for a nationwide search. Schema default is 20760.

Record types and limits:

  • Listing records include identifiers, vehicle specs, pricing, store location, transfer fields, and listing flags as CarMax returns them.
  • Pagination: the Actor continues through search pages until CarMax returns no further listings or maxItems is reached.
  • Result cap: maxItems limits cars collected (0 means unlimited; console prefill 20).

Known exclusions: content CarMax only shows after login is not collected; each run captures inventory at run time (no historical snapshots); sold or reserved vehicles may still appear if they remain on the search page.

Data dictionary

Field names below match dataset record JSON properties exactly. Values come from CarMax. Not every listing includes every spec (for example EV battery range on gasoline cars).

FieldTypeNullableDescriptionExample
vinstringYesVehicle identification number; recommended deduplication key4S4BTALCXR3155366
stockNumbernumberYesCarMax stock number; secondary key28735752
urlstringYesListing URLhttps://www.carmax.com/car/28735752
heroImageUrlstringYesPrimary listing imagehttps://img2.carmax.com/assets/28735752/hero.jpg?width=400&height=300
yearnumberYesModel year2024
makestringYesMakeSubaru
modelstringYesModelOutback
bodystringYesBody style4D Sport Utility
trimstringYesTrim levelOnyx Edition
basePricenumberYesCurrent price in USD25998.0
originalPricenumberYesPrior price when CarMax shows a drop26998.0
hasPriceDropbooleanYesWhether CarMax marks a price dropfalse
mileagenumberYesOdometer reading (miles)56484
exteriorColorstringYesExterior color as shownBlack
interiorColorstringYesInterior color as shownBlack
normalizedExteriorColorstringYesNormalized exterior colorBlack
normalizedInteriorColorstringYesNormalized interior colorBlack
transmissionstringYesTransmissionAutomatic
driveTrainstringYesDrivetrainAll Wheel Drive
engineTypestringYesEngine typeGas
engineSizestringYesEngine size2.5L
cylindersnumberYesCylinder count4
horsepowernumberYesHorsepower182
horsepowerRpmnumberYesHorsepower RPM5800
engineTorquenumberYesTorque176
engineTorqueRpmnumberYesTorque RPM4400
mpgCitynumberYesCity MPG26
mpgHighwaynumberYesHighway MPG32
originalBatteryRangeInMilesnumberYesEV battery range (miles) when listednull
fuelTypestringYesFuel typeGas
featuresarrayYesFeature listFeature strings from the listing
highlightedFeaturesstringYesHighlighted feature textAs shown by CarMax
highlightsarrayYesHighlight tagsTags from the listing
storeIdnumberYesStore identifierStore id from CarMax
storeNamestringYesStore nameGreenwood
storeCitystringYesStore cityIndianapolis
statestringYesStore stateIndiana
stateAbbreviationstringYesState codeIN
distancenumberYesDistance from the zip filter (miles)Distance when a zip is set
averageRatingnumberYesStore ratingStore rating when shown
numberOfReviewsnumberYesStore review countReview count when shown
isTransferablebooleanYesWhether the car can be transferredTransfer flag
transferFeenumberYesTransfer fee in USD when listedFee when shown
isSaleablebooleanYesWhether the listing is marked saleableSaleable flag
isComingSoonbooleanYesComing-soon flagComing-soon flag
isReservedbooleanYesReserved flagReserved flag
isAvailableToTransactbooleanYesAvailable-to-transact flagAvailability flag
isEVTaxCreditEligiblebooleanYesEV tax-credit eligibility flagEligibility flag
priorUseDescriptionsarrayYesPrior-use labels (rental, fleet, and similar)Labels when listed

Additional store, transfer, package, finance, and RepairPal objects may appear when CarMax returns them (store, badge, packages, bestFinanceDecision, repairPalData).

Example dataset record

Listing from https://www.carmax.com/cars with an empty zip code (nationwide search).

{
"heroImageUrl": "https://img2.carmax.com/assets/28735752/hero.jpg?width=400&height=300",
"url": "https://www.carmax.com/car/28735752",
"stockNumber": 28735752,
"vin": "4S4BTALCXR3155366",
"year": 2024,
"make": "Subaru",
"model": "Outback",
"body": "4D Sport Utility",
"trim": "Onyx Edition",
"basePrice": 25998.0,
"mileage": 56484,
"exteriorColor": "Black",
"transmission": "Automatic",
"driveTrain": "All Wheel Drive",
"engineSize": "2.5L",
"horsepower": 182,
"mpgCity": 26,
"mpgHighway": 32,
"storeName": "Greenwood",
"storeCity": "Indianapolis",
"state": "Indiana"
}

The record above was produced with this input:

{
"searchUrl": "https://www.carmax.com/cars",
"zipCode": "",
"maxItems": 20
}

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchUrlstringNo— (prefill https://www.carmax.com/cars)CarMax search URLSingle search; filters in the URL are applied
searchUrlsarray (requestListSources)NoCarMax search URLsOverrides searchUrl when set
zipCodestringNo20760US zip code or emptyInventory area; empty = nationwide
maxItemsintegerNo00 or any positive integerMaximum cars; 0 = unlimited (console prefill 20)
proxyConfigurationobjectNoApify proxy, RESIDENTIALApify proxy groups or custom proxiesResidential proxies are recommended

Provide searchUrl and/or searchUrls. If both are omitted, the schema prefill https://www.carmax.com/cars is the usual console starting point.

Minimal request:

{ "searchUrl": "https://www.carmax.com/cars/suvs/audi", "zipCode": "" }

Advanced request (multiple URLs, zip filter, cap):

{
"searchUrls": [
{ "url": "https://www.carmax.com/cars/suvs/audi" },
{ "url": "https://www.carmax.com/cars/trucks" }
],
"zipCode": "90210",
"maxItems": 50,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

Records are delivered through the Apify Actor and Dataset APIs — not an official CarMax API.

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR-APIFY-TOKEN")
run_input = {
"searchUrl": "https://www.carmax.com/cars",
"zipCode": "",
"maxItems": 20,
}
run = client.actor("datascrapers/carmax-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("vin"), item.get("year"), item.get("make"), item.get("basePrice"))

Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.

Data quality and record handling

  • Incomplete specs: engine, MPG, EV range, and transfer fields are omitted or null when CarMax does not list them.
  • Source changes: CarMax inventory and field names can change; unreadable fields are omitted rather than fabricated.
  • Deduplication: within a run, vehicles are identified by VIN or stock number. Across runs, records are appended. Use vin as the stable key.
  • Normalization: basePrice and mileage are numeric. Colors may appear in both raw and normalized fields.
  • Zip filter: distance is meaningful when zipCode is set.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore inventory and price history
Google SheetsApify Google Sheets integrationShare shortlists by make or zip
Pricing modelsDataset API JSON exportComp sets and drop detection
S3 / cloud storageScheduled export via Apify scheduler + integrationArchival of inventory snapshots

Pricing and cost examples

The Actor uses pay-per-event pricing. Each run also charges a one-time Actor start. Residential proxies are recommended. Proxy and compute are billed by your Apify plan.

EventTriggerRate
Actor startOnce per run$0.00005
apify-default-dataset-item (car)Each car written to the dataset$0.001 / car ($1 / 1,000)

Example costs (Actor start negligible; plan-tier discounts not applied):

RecordsConfigurationEstimated base cost
1,000Cars$1.00
10,000Cars$10.00

Estimates depend on the verified pricing model and the number of cars collected.

Limitations and responsible data use

  • The Actor collects publicly accessible CarMax search listings only.
  • Field availability depends on what CarMax renders at run time; some specs can be null.
  • The Actor does not provide historical snapshots unless you store them yourself. Inventory changes continuously.
  • Large runs should use residential proxies; without them, coverage may degrade.
  • You are responsible for compliance with CarMax's terms of service, applicable privacy law, and any contractual obligations before using the data.

Dataset questions

What does one dataset item represent?

One CarMax vehicle listing. Features, packages, and transfer details nest on that listing.

Which field should I use as a unique identifier?

vin is the recommended deduplication key. stockNumber and url are reasonable secondary keys.

Are fields nullable or conditional?

Yes. EV range, transfer fees, finance objects, and some engine specs appear only when CarMax lists them.

Can I retrieve the records as CSV or JSON?

Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.

Does the Actor return historical data?

No. Each run captures inventory at run time. To track price drops, schedule repeated runs and store the outputs yourself.

What counts as a billable result?

Two pay-per-event charges apply: Actor start once per run ($0.00005) and a car charge for every listing ($0.001, or $1 per 1,000).

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.