Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in
All collectors

Autotrader Scraper API

Classifieds & vehicles · v1.1.0 · autotrader_search

$0.001 / listing

$0.80 / 1K · pay per delivered listing

An Autotrader scraper API for US car listings: search around a ZIP, optionally by condition, make and model, and get one row per vehicle — year, make, model and trim, price and MSRP, mileage, body style, fuel and drive type, exterior colour, the full specification pairs, VIN, days on site, photo and listing URL.

$0.001 per delivered listing · $2 free every month · Failed runs never billed

What it does

What an Autotrader scraper API does

A car search is a geography query, so this collector takes a five-digit zip and reads Autotrader's results around it, with optional condition (new, used, certified or all), make and model filters. The rows come from the server-rendered results payload, so each vehicle arrives already structured rather than scraped out of card markup.

Pricing on a car lot is not one number, and the fields keep them apart: price is the display price, msrp the sticker when shown, and a listing with neither carries no_price_label ("Contact Dealer For Price") instead of a fabricated zero. The specifications object holds the full label→value spec sheet, and the vin is returned so each row ties back to a single physical car.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
zipstringyesUS ZIP code to search around.
conditionstringnoall-cars (default), new-cars, used-cars, certified-cars. One of: all-cars, new-cars, used-cars, certified-cars.
makestringnoVehicle make, e.g. "Honda".
modelstringnoVehicle model (requires make), e.g. "Civic".
max_resultsintegernoHow many listings to deliver at most (1–75). You pay only for delivered listings.

Outputs — 52 fields, one row per listing

What one listing looks like

Every delivered listing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position.
listing_idstringAutotrader listing id.
vinstring · nullableVIN.
titlestringListing title ("New 2025 …").
yearinteger · nullableModel year.
makestring · nullableMake.
modelstring · nullableModel.
trimstring · nullableTrim.
conditionstring · nullableNEW/USED/CERTIFIED.
pricenumber · nullableDisplay price.
msrpnumber · nullableMSRP when shown.
no_price_labelstring · nullable"Contact Dealer For Price" when no price.
mileageinteger · nullableOdometer miles.
body_stylestring · nullableBody style.
fuel_typestring · nullableFuel type.
drive_typestring · nullableDrive type.
exterior_colorstring · nullableExterior color.
specificationsobjectLabel → value spec pairs.
days_on_siteinteger · nullableDays listed.
imagestring · nullablePrimary photo.
urlstringListing URL.
pageintegerResults page the row came from.
exterior_color_fullstring · nullableManufacturer colour name.
interior_colorstring · nullableInterior colour.
transmissionstring · nullableTransmission.
enginestring · nullableEngine.
mpg_citynumber · nullableCity MPG.
mpg_highwaynumber · nullableHighway MPG.
doorsinteger · nullableNumber of doors.
stock_idstring · nullableDealer stock number.
certifiedbooleanTrue for certified pre-owned listings.
history_flagsstring[]Vehicle history highlights (NO_ACCIDENTS_REPORTED…).
kbb_fair_pricenumber · nullableKelley Blue Book fair purchase price.
kbb_fair_price_lownumber · nullableLow end of the KBB fair price range.
kbb_fair_price_highnumber · nullableHigh end of the KBB fair price range.
dealer_fees_totalnumber · nullableDealer fees included in the price.
price_historyobject[]Price changes: { date, price }.
special_offerstring · nullableTop special offer on the listing.
descriptionstring · nullableListing description (first 600 characters).
images_countinteger · nullableNumber of photos.
seller_typestring · nullabledealer or private.
dealer_idstring · nullableAutotrader seller id.
dealer_namestring · nullableDealer name.
dealer_phonestring · nullableDealer phone.
dealer_addressstring · nullableDealer street address.
dealer_citystring · nullableCity.
dealer_statestring · nullableState.
dealer_zipstring · nullableZIP.
dealer_latitudenumber · nullableDealer latitude.
dealer_longitudenumber · nullableDealer longitude.
dealer_websitestring · nullableDealer website.
distance_milesnumber · nullableDistance from the searched ZIP.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/autotrader_search/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/autotrader_search/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"zip":"90210","condition":"all-cars","max_results":25}'

Example response

POST /v1/scraper/collectors/autotrader_search/run
$ curl $QD/autotrader_search/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"zip": "90210", "condition": "all-cars", "max_results": 25}'
{ "status": "done", "count": 25,
  "results": [
    {
      "listing_id": "…",
      "vin": "…",
      "title": "…",
      "year": … } ],
  "cost": 0.025 }
# 25 listings × $0.001 · nothing delivered, nothing charged

Try it

Autotrader car listings, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key
Autotrader Scraper API: from zip and condition, QuanticData reads the Autotrader results and returns one row per listing with title, vin and year, at $0.001 per delivered listing.
You send zip and condition; the run goes out through a residential exit and comes back as listings with rank, listing_id and vin — 52 fields on every row — and you are billed $0.001 for each listing actually delivered, nothing for a run that delivers none.
$0.001 / listing2,000 listings on the free $2 every month
Semantic inputzip, condition, make — no URL lists
Up to 75listings per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Pricing

Autotrader Scraper API pricing

$0.001 per delivered listing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 listings before you spend anything.

$0.001per delivered listing$0.8 per 1,000 delivered listings
2,000 listingson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

What people build with the Autotrader scraper API

Three shapes of work this endpoint was designed around.

Local price benchmarking

Compare asking price against MSRP for a make and model within a ZIP's radius.

Inventory tracking

Re-run a search and watch mileage, price and days-on-site move across a dealer set.

VIN-level datasets

Assemble a spec-and-price table keyed on VIN for a segment you follow.

Autotrader Scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
Search inputA URL with encoded filtersA ZIP plus optional condition, make and model
No-price listingsA zero or a blankno_price_label kept as shown
SpecsBuried in the cardFull label→value pairs, plus VIN

What people search for

Live autocomplete demand around Autotrader car listings, pulled with our own Keyword ideas collector.

Autotrader Scraper API: the POST to the autotrader_search collector, 25 listings delivered and the bill, 25 × $0.001 = $0.025 in usage.cost_usd; zero listings would cost $0.
The same call you would paste into a terminal: a Bearer key, zip, condition and make in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many listings arrived and usage.cost_usd is $0.025, which is 25 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the Autotrader scraper API.

Something else? Ask us

Is there an official Autotrader listings API?

Autotrader's APIs are dealer- and partner-facing, not an open feed of live listings. This collector reads the public search results around a ZIP, so you query by location rather than onboard as a partner.

Do I have to give a make and model?

No. A zip is the only requirement; condition defaults to all cars, and make then model narrow it when you want them — model expects a make alongside it.

What comes back when a listing hides its price?

The no_price_label field carries Autotrader's own text, typically "Contact Dealer For Price", while price stays null — so a dealer withholding a number never becomes a misleading value in your data.

Is there a free Autotrader scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered listings on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 75 listings — the maximum for this collector — costs $0.075 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the Autotrader scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Run in dashboard
Illustration: three coloured zones of the page that is read (Autotrader results) turn into clean JSON with the fields title, vin and year; 52 fields on every row.