AutoTrader.com [$1.2💰] USA · VIN, EV Battery, Dealers avatar

AutoTrader.com [$1.2💰] USA · VIN, EV Battery, Dealers

Pricing

from $1.20 / 1,000 vehicle listings

Go to Apify Store
AutoTrader.com [$1.2💰] USA · VIN, EV Battery, Dealers

AutoTrader.com [$1.2💰] USA · VIN, EV Battery, Dealers

AutoTrader.com (USA) scraper: listings by URL or filters, one row per car with VIN, price, mileage, EV battery health, photos and full dealer data (address, phones, hours, rating, website). Reads past the 400-result cap for complete nationwide sweeps. Optional vehicle pages. JSON/CSV.

Pricing

from $1.20 / 1,000 vehicle listings

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

AutoTrader.com Scraper (USA) — every listing, VIN, EV battery health and the full dealer block

Turn any AutoTrader.com search into a clean dataset: one row per car with VIN, price, mileage, photos, EV range and battery-health score, and the complete dealer record (address with coordinates, every phone number, opening hours, rating, website). Paste a search URL or pick filters, and the actor collects the whole result set, including searches far bigger than the 400 cars the site itself will page through.

Nationwide sweeps, dealer-only or private-seller cuts, weekly market snapshots, single-vehicle lookups. JSON, CSV, Excel, or straight into your own pipeline through the Apify API.

How the AutoTrader.com Scraper works


Why Use This Scraper?

  • Beats the 400-result window. AutoTrader.com shows at most 400 cars per search. The actor splits any bigger search by make, price, year and model until every car is reachable, then reconciles the count against the site's own "Matches" total.
  • The dealer comes with the car. Name, street address, city, state, ZIP, latitude/longitude, typed phone numbers (office, call-tracking), opening hours, rating and review count, website, contract level. No second scrape needed.
  • EV data the search page hides. Battery-health rating and description, rating source, min/max range, EV range when new, charging time, plus VIN, KBB vehicle id and days on site.
  • Two ways in. Paste any AutoTrader.com search or vehicle URL, or use plain filters (make, model, ZIP, radius, price, year, mileage, condition, fuel, seller type, sort).
  • Optional full galleries, two ways. A light toggle pulls every photo (often 30 to 70) from the site's listing API at about a tenth of the cost of a page; a full toggle opens the vehicle page for the gallery plus the description, feature list, warranties and stock number.
  • Completeness you can enforce. Whole-market runs can be told to fail unless the collected count is within a tolerance of the site total, so a scheduled sweep never silently ships a partial file.
  • Runs on its own residential proxies. Traffic goes through US residential IPs at no extra cost; you pay per result.

Overview

This actor is for anyone who needs structured AutoTrader.com data: market analysts tracking used-EV prices, dealers benchmarking inventory, lead-generation teams building dealer lists, researchers, and developers feeding car data into apps and AI agents.

The primary entity is the vehicle listing. Every dataset row is one car, with the site's own listing object passed through unchanged, a set of flat convenience columns in front of it (priceUsd, mileageMiles, makeName, batteryHealthRating, dealerPhone, ...), and the seller attached as a nested dealer object. Search pages carry 1 to 4 photos per car; the optional vehicle-page fetch replaces that with the full gallery and adds description, features and warranties.

Default runs read search pages only, so a nationwide sweep of tens of thousands of cars costs a couple of thousand requests. Gallery or vehicle-page enrichment adds one request per car.


Supported Inputs

URL types

TypeExampleWhat you get
Search results page (any filters, any location)https://www.autotrader.com/cars-for-sale/used-cars/electric?searchRadius=0&zip=10001&sellerType=dEvery car in the result set, split automatically when it exceeds 400
Search built on the site with make/model/price/year/etc.https://www.autotrader.com/cars-for-sale/all-cars/tesla/model-3?zip=90210&searchRadius=100&minPrice=20000&maxPrice=40000Same, respecting every filter in the URL
Vehicle pagehttps://www.autotrader.com/cars-for-sale/vehicle/790084839That one car, always with the full gallery and details

searchRadius=0 with any ZIP means the whole USA. Page numbers (firstRecord, numRecords) and tracking parameters in a pasted URL are ignored; the actor pages through the complete result set itself.

Copy-pasteable startUrls

{
"startUrls": [
{ "url": "https://www.autotrader.com/cars-for-sale/used-cars/electric?searchRadius=0&zip=10001&sellerType=d" },
{ "url": "https://www.autotrader.com/cars-for-sale/vehicle/790084839" }
],
"maxItems": 50000
}

Filter mode

Leave startUrls empty and fill the filters instead. The actor builds the search URL for you: searchMake (name or code), searchModel (site model code), zip, searchRadius (miles, 0 = nationwide), priceMin/priceMax, yearMin/yearMax, maxMileage, condition, fuelType, sellerType, sort. When any Start URL is present, URL mode wins and filters are ignored.

Unsupported inputs

  • Dealer inventory pages (/car-dealers/...) and dealer profile pages. Dealer data is attached to every car instead.
  • Saved searches, alerts, "My Autotrader" and anything behind a login.
  • Vehicle history reports (Carfax/AutoCheck), KBB Instant Cash Offers, financing calculators.
  • Other AutoTrader sites. Use the dedicated actors for AutoTrader.co.uk, AutoTrader.ca and AutoTrader.com.au.

Use Cases

WhoWhat they do with it
Market analysts and pricing teamsWeekly nationwide snapshots of used-EV prices, mileage and battery health by make, model and year
Dealers and dealer groupsBenchmark inventory and pricing against every competitor in a radius, track days on site
Lead generation and salesDealer lists with typed phone numbers, addresses, hours, ratings and websites, straight from the listings they run
Investors and researchersSupply counts, price trends and EV adoption data per state, brand or segment
Developers and AI agentsStructured car data for apps, chatbots and agents through the Apify API or MCP server
Agencies and data vendorsRepeatable exports for clients, scheduled on Apify, delivered as CSV, JSON or webhook

How It Works

  1. Input. Paste search or vehicle URLs, or set the filters. Choose whether to fetch vehicle pages and how many cars you need.
  2. Probe the search. The actor reads the search page, notes the site's "Matches" total and the effective filters, and checks that the site's count endpoint agrees with them.
  3. Split past the 400 cap. Any search bigger than the site's window is divided by make, then price band, then model year, then model, until every segment fits. Each segment is measured through the count endpoint for a few bytes; overlapping bands are deduplicated by listing id.
  4. Read every page. Each segment is paged in 100-record windows, including the partial last page the site otherwise hides. Cars that the site pads in from outside the filters are dropped.
  5. Build the rows. Each car is joined with its dealer record and pushed as one row. With includeDetails the vehicle page is fetched first for the full gallery, description, features and warranties. At the end the collected count is compared with the site total and, if you asked for it, the run fails when it falls short.

Input Configuration

Input fields

FieldTypeDefaultDescription
startUrlsarrayprefilled exampleAutoTrader.com search or vehicle URLs. When present, filters below are ignored.
searchMakestringMake name or site code, e.g. Tesla, Ford, Mercedes-Benz.
searchModelstringModel code as in the site URL after modelCodeList=, e.g. GMCHUMMER. Only with a make.
zipstring10001 when neededZIP code to centre the search on.
searchRadiusinteger0Miles around the ZIP. 0 = whole USA.
priceMin / priceMaxintegerAsking price bounds in USD.
yearMin / yearMaxintegerModel year bounds.
maxMileageintegerHighest odometer reading in miles.
conditionselectallall, new, used, certified.
fuelTypeselectanyELE electric, GSL gasoline, HYB hybrid, PIH plug-in hybrid, DSL diesel, HYD hydrogen.
sellerTypeselectallall, dealer, private.
sortselectrelevanceSite ordering: price, mileage, year, newest listings. Matters when maxItems caps the run.
includeGallerybooleanfalseFetch each car's record from the site's listing API: every photo as light JSON (about 54 KB per car). One extra request per car, billed as an additional-data event. Skipped when includeDetails is on.
includeDetailsbooleanfalseFetch each vehicle page: full gallery, description, features, warranties, stock number. One extra request per car (about 500 KB), billed as an additional-data event.
enrichEmailsbooleanfalseExperimental: find a contact email for each dealer from its own website. Adds contactEmail, contactWebsite, emailEnrichment.
failIfIncompletebooleanfalseFinish with status FAILED when the collected count is short of the site total by more than the tolerance. Ignored when maxItems caps the run.
completenessTolerancePctinteger3Allowed shortfall in percent. The larger of this and completenessToleranceMin applies.
completenessToleranceMininteger25Allowed shortfall in listings, so a small search is not failed over a handful of cars sold during the run.
maxItemsinteger1000Maximum cars to collect. Set it above the site's "Matches" count for a complete sweep.
maxConcurrency / minConcurrencyinteger10 / 1Parallel requests.
maxRequestRetriesinteger8Retries per failed request.
countProbesbooleantrueMeasure search segments through the site's own count endpoint (a few bytes each) instead of full search pages. Falls back to full pages by itself when the endpoint disagrees with the search page or stops answering.
proxyobjectbuilt-inLeave empty; paid runs already use the actor's own US residential proxies.

Common scenarios

Whole-market weekly sweep: every used EV sold by dealers in the USA

{
"startUrls": [{ "url": "https://www.autotrader.com/cars-for-sale/used-cars/electric?searchRadius=0&zip=10001&sellerType=d" }],
"maxItems": 60000,
"failIfIncomplete": true,
"completenessTolerancePct": 3,
"maxConcurrency": 16
}

Filter mode: used Teslas under $30,000 from dealers, cheapest first

{
"searchMake": "Tesla",
"condition": "used",
"fuelType": "ELE",
"sellerType": "dealer",
"priceMax": 30000,
"sort": "derivedpriceASC",
"maxItems": 500
}

Specific cars with the full gallery and description

{
"startUrls": [
{ "url": "https://www.autotrader.com/cars-for-sale/vehicle/790084839" },
{ "url": "https://www.autotrader.com/cars-for-sale/vehicle/783554741" }
],
"includeDetails": true,
"maxItems": 10
}

Output Overview

One row per vehicle. Each row has three layers:

  • Flat convenience columns first: id, url, vin, year, makeName, modelName, trimName, title, listingType, priceUsd, mileageMiles, fuelTypeName, evRangeMiles, batteryHealthRating, batteryHealthDescription, batteryHealthSource, dealerName, dealerPhone, dealerCity, dealerState, dealerZip, dealerWebsite, dealerRating, dealerRatingCount, dealerLevel. These are what you want in a spreadsheet.
  • The site's own listing object, unchanged: make, model, trim (code + name), pricingDetail, pricingHistory, mileage, images, specifications, electricComponentInfo, phone, kbbVehicleId, daysOnSite, listingTypes, fuelType, packages, styles and everything else the page carries, under their original names.
  • Attachments: imageUrls (plain array of photo URLs), imagesCount, dealer (the complete seller object, unchanged), source (srp for search-page data, lsc when the listing API was fetched for the gallery, vdp when the vehicle page was fetched, srp-fallback when a detail fetch failed after retries), scrapedAt.

With includeDetails: true the row also carries fullDescription, features (grouped lists), warranties, stockNumber, exteriorColorSimple, driveGroup, videos and the full gallery. Nested fields flatten to dealer.location.address.city style columns in CSV exports.


Output Samples

Search-page start with includeDetails: true, trimmed to the useful fields

{
"id": 790084839,
"url": "https://www.autotrader.com/cars-for-sale/vehicle/790084839",
"vin": "5YJSA1E6XPF510652",
"year": 2023,
"makeName": "Tesla",
"modelName": "Model S",
"trimName": "Plaid",
"title": "Used 2023 Tesla Model S Plaid",
"listingType": "Used",
"priceUsd": 76870,
"mileageMiles": 24759,
"fuelTypeName": "Electric",
"evRangeMiles": 405,
"batteryHealthRating": 88,
"batteryHealthDescription": "GREAT",
"batteryHealthSource": "Manheim Average",
"dealerName": "Rolling Hills Auto Plaza",
"dealerPhone": "8166714500",
"dealerCity": "Saint Joseph",
"dealerState": "MO",
"dealerZip": "64506",
"dealerWebsite": "https://www.rollinghillshonda.com/used-St+Joseph-2023-Tesla-Model+S-Plaid-5YJSA1E6XPF510652?stocknum=H15044A&atc_ownerid=57200741&utm_source=autotrader.com&utm_medium=referral&utm_campaign=autotrader_listings",
"dealerRating": 4.8,
"dealerRatingCount": 1661,
"dealerLevel": "PARTNER",
"daysOnSite": 5,
"kbbVehicleId": 464199,
"stockNumber": "H15044A",
"imagesCount": 67,
"imageUrls": [
"https://images.autotrader.com/hn/c/c4aebdaa1e0947948dbf93d3e15572ad.jpg",
"https://images.autotrader.com/hn/c/9efb9bdf7c454054b8aa725a1bbb81e7.jpg",
"…"
],
"dealer": {
"id": 57200741,
"name": "Rolling Hills Auto Plaza",
"contractDealerLevel": "PARTNER",
"privateSeller": false,
"location": {
"address": {
"address1": "1617 CROSS STREET",
"city": "Saint Joseph",
"latitude": 39.78181,
"longitude": -94.80043,
"state": "MO",
"zip": "64506"
}
},
"phoneNumbers": [
{
"label": "Phone number",
"privateNumber": false,
"type": "KBB_CALL_TRACKING_USED",
"value": "8165570415",
"visible": true
},
{
"label": "Phone number",
"privateNumber": false,
"type": "KBB_CALL_TRACKING_NEW",
"value": "8165570339",
"visible": true
}
],
"hours": [
{
"close": "8:00 PM",
"label": "Monday",
"open": "9:00 AM"
},
"…"
],
"rating": {
"count": 1661,
"value": 4.8
},
"website": {
"deepLink": true,
"href": "https://www.rollinghillshonda.com/used-St+Joseph-2023-Tesla-Model+S-Plaid-5YJSA1E6XPF510652?stocknum=H15044A&atc_ownerid=57200741&utm_source=autotrader.com&utm_medium=referral&utm_campaign=autotrader_listings"
}
},
"features": {
"exterior": [
"Alloy wheels",
"Auto High-beam Headlights",
"Auto-dimming door mirrors",
"…"
],
"interior": [
"Air Conditioning",
"Auto-dimming Rear-View mirror",
"Driver door bin",
"…"
]
},
"fullDescription": "**Home Delivery Available**.<br><br>2023 Tesla Model S Plaid AWD Electric Motor 1-Speed Automatic 4D Hatchback Pearl White Multi-Coat<br><br…",
"source": "vdp",
"scrapedAt": "2026-09-08T21:32:21.724Z"
}

Dropped for brevity: the remaining imageUrls, the full dealer.phoneNumbers and dealer.hours arrays, pricingDetail, specifications, features beyond the first few, and the rest of the original listing object.


Key Output Fields

Vehicle core

id, url, vin, year, makeName, modelName, trimName, title, listingType (USED, NEW, CERTIFIED), fuelTypeName, mileageMiles, daysOnSite, kbbVehicleId, stockNumber (details)

Price

priceUsd, priceLabel (set when the site shows no price, e.g. "Contact Dealer For Price"), pricingDetail (sale, display and pre-fee derived price, dealer fees, KBB fair-price range), pricingHistory

EV and battery

evRangeMiles, batteryHealthRating (0 to 100), batteryHealthDescription, batteryHealthSource, electricComponentInfo.batteryDegradationInfo (min/max range, score date and expiry)

Photos

imageUrls, imagesCount, images (original object with dimensions and alt text)

Dealer

dealerName, dealerPhone, dealerCity, dealerState, dealerZip, dealerWebsite, dealerRating, dealerRatingCount, dealerLevel, and the full dealer object: location.address (street, city, state, ZIP, latitude, longitude), phoneNumbers[] with type (PRIMARY_OFFICE, CALL_TRACKING, ...), hours[], rating, website, privateSeller, isVirtual

Detail-mode extras (includeDetails: true)

fullDescription, features (exterior, interior, safety, ...), warranties, packages, videos, exteriorColorSimple, driveGroup

Bookkeeping

source, scrapedAt, and with enrichEmails: contactEmail, contactWebsite, emailEnrichment


FAQ

Which AutoTrader.com URLs are supported?

Any search results URL under /cars-for-sale/ (with path filters like /used-cars/electric or /all-cars/tesla/model-3, and query filters like zip, searchRadius, minPrice, maxPrice, startYear, endYear, makeCodeList, sellerType) and vehicle pages under /cars-for-sale/vehicle/{id}. Dealer pages and anything behind a login are not supported.

The site only shows 400 results. How do you get 43,000?

AutoTrader.com silently returns page 1 again for anything past record 400. The actor treats every search as a segment: if its "Matches" total is above the window it is split by make, then by price band (using the price distribution of the page as the pivot), then by model year, then by model, and as a last resort re-read through several sort orders. Every segment is paged in 100-record windows, the partial last page is read through a backward-aligned window the site does accept, and listing ids are deduplicated across overlapping segments. A nationwide used-EV dealer sweep of ~44,000 cars resolves into a few hundred segments: roughly 2,500 count probes of a few bytes each plus about 1,100 full search pages, finishing in around 10 minutes at the default concurrency.

What does failIfIncomplete compare against?

The "Matches" total the site reported on the very first search page of the run. That number keeps moving while a long run is in progress (cars are listed and sold every minute), which is why a tolerance exists: the larger of completenessTolerancePct and completenessToleranceMin listings. Every run writes a COMPLETENESS record to its key-value store (site total at start, collected, shortfall, deviation, the tolerance that applied, segment statistics) and puts the same summary in the run status message. With failIfIncomplete: true the run ends with status FAILED when the shortfall exceeds the tolerance, so a scheduled sweep can never pass off a partial dataset as complete. A run capped by maxItems is never judged incomplete.

What about cars listed as "Contact Dealer For Price"?

They are collected too. AutoTrader.com drops unpriced cars from any search that carries a price bound, which is exactly how big searches have to be split, so the actor runs a separate pass for them: the same segment cut by model year, model, colour and trim instead of price, reading the tail of the price-sorted order where unpriced cars sit. Their rows have priceUsd: null and priceLabel: "Contact Dealer For Price".

Do I get dealers or private sellers?

Whatever your search asks for. sellerType=d (or the dealer filter) restricts to dealers, sellerType=p to private sellers, and the dealer.privateSeller flag on every row tells you which one you got. When a filter combination has no exact matches the site pads the page with similar cars from outside the filters; the actor detects that and drops them.

Is battery health available for every EV?

For most: in nationwide used-EV tests about 95% of listings carried a batteryDegradationInfo block (rating, description, source such as Manheim, min/max range). Where the dealer did not provide it the fields are null.

Why do search-page rows have only a few photos?

Search pages embed 1 to 4 photos per car. Turn on includeGallery to fetch each car's record from the site's listing API: every photo (30 to 70 is typical) as light JSON, one extra request per car, about a tenth of the traffic of a vehicle page. Turn on includeDetails instead when you also need the full description, feature list, warranties and stock number; that opens each vehicle page and includes the gallery.

What does the actor NOT scrape?

Vehicle history reports (Carfax, AutoCheck), dealer inventory and profile pages, consumer reviews, KBB valuations beyond the fair-price fields already embedded in the listing, financing offers, and any data that requires an account. Emails are not on the site; the experimental enrichEmails option discovers them from the dealer's own website.

How fast is it and what concurrency should I use?

Search pages weigh about 1.3 MB each and answer in a few seconds through residential proxies; count probes answer in under a second. A default maxConcurrency of 10 is safe; whole-market sweeps run comfortably at 16 to 24. A search-only sweep of ~44,000 cars finishes in about 10 minutes at concurrency 16. With includeGallery every car is one more light request (about 1.5 seconds each; a ~44,000-car sweep takes 1 to 2.5 hours at maxConcurrency 16 to 32). With includeDetails the vehicle pages are heavier and slower, so plan a multi-hour run at maxConcurrency 24 to 32 with 1 GB of memory.

Can I schedule it?

Yes. Run it weekly with failIfIncomplete: true and connect a webhook or the Apify integration of your choice; the completeness figures are in the log and in the run's status message when it fails.


Support


Additional Services

Need a tailored export (custom columns, deduplication against your CRM, delivery to S3, BigQuery or a webhook), a private version of this actor, or another automotive marketplace covered? Get in touch through the email above.


Explore More Scrapers


🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/autotrader-com-scraper).

Purpose: Scrape AutoTrader.com (USA) vehicle listings by pasted search/vehicle URL or by filters (make, model code, ZIP, radius, price, year, mileage, condition, fuel, seller type). Every row carries VIN, price, mileage, EV battery health and the full dealer record.

Minimal input:

{
"searchMake": "Tesla",
"fuelType": "ELE",
"sellerType": "dealer",
"priceMax": 30000,
"maxItems": 25
}

URL alternative: { "startUrls": [{ "url": "https://www.autotrader.com/cars-for-sale/used-cars/electric?searchRadius=0&zip=10001&sellerType=d" }], "maxItems": 25 }.

Output: one row per vehicle — id, url, vin, year, makeName, modelName, trimName, title, listingType, priceUsd, priceLabel, mileageMiles, fuelTypeName, evRangeMiles, batteryHealthRating, batteryHealthDescription, batteryHealthSource, dealerName, dealerPhone, dealerCity, dealerState, dealerZip, dealerWebsite, dealerRating, dealerRatingCount, dealerLevel, imageUrls[], imagesCount, dealer {name, location.address {address1, city, state, zip, latitude, longitude}, phoneNumbers[], hours[], rating, website, privateSeller}, plus the original listing object (pricingDetail, pricingHistory, specifications, electricComponentInfo, daysOnSite, kbbVehicleId, ...), source, scrapedAt. With includeDetails: fullDescription, features, warranties, stockNumber, full gallery.

Behaviors an agent should know:

  • startUrls win when present; otherwise the filters are used. searchRadius: 0 means the whole USA.
  • Always set maxItems (default 1000). Searches bigger than 400 cars are split automatically; maxItems caps the total.
  • includeGallery: true fetches one light API record per car (every photo); includeDetails: true fetches the vehicle page instead (gallery plus description, features, warranties). Both off by default.
  • failIfIncomplete: true ends the run with FAILED when the collected count is short of the site total by more than the tolerance (the larger of completenessTolerancePct, default 3, and completenessToleranceMin, default 25 listings). Every run stores a COMPLETENESS record in its key-value store with the site total, collected count and deviation.
  • dealer.privateSeller tells dealer rows from private sellers; priceUsd is null when the site shows "Contact Dealer For Price".
  • Pay-per-result billing: one dataset row per vehicle, plus one additional-data event per vehicle page when includeDetails is on. See the Pricing tab on the actor page.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Autotrader.com, Autotrader, Inc., Cox Automotive, Inc., Cox Enterprises, Inc., or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available vehicle-listing data — no authenticated endpoints, dealer-only features, or content behind an AutoTrader.com login. Users are responsible for ensuring their use complies with AutoTrader.com's Terms of Service, applicable data-protection law (CCPA, GDPR, etc.), and any contractual obligations of their own organisation.


SEO Keywords

autotrader.com scraper, autotrader scraper, scrape autotrader, autotrader api, autotrader usa scraper, used car listings scraper, us car listings api, car dealer data scraper, dealer phone numbers scraper, used ev listings data, ev battery health data, tesla listings scraper, vehicle listings dataset usa, car price data usa, automotive market data, car inventory scraper, autotrader csv export, autotrader json export, apify autotrader, scrape car listings usa, cars.com alternative scraper, cargurus alternative scraper, used car market data