AutoTrader.com [$1.2💰] USA · VIN, EV Battery, Dealers
Pricing
from $1.20 / 1,000 vehicle listings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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.

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
| Type | Example | What you get |
|---|---|---|
| Search results page (any filters, any location) | https://www.autotrader.com/cars-for-sale/used-cars/electric?searchRadius=0&zip=10001&sellerType=d | Every 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=40000 | Same, respecting every filter in the URL |
| Vehicle page | https://www.autotrader.com/cars-for-sale/vehicle/790084839 | That 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
| Who | What they do with it |
|---|---|
| Market analysts and pricing teams | Weekly nationwide snapshots of used-EV prices, mileage and battery health by make, model and year |
| Dealers and dealer groups | Benchmark inventory and pricing against every competitor in a radius, track days on site |
| Lead generation and sales | Dealer lists with typed phone numbers, addresses, hours, ratings and websites, straight from the listings they run |
| Investors and researchers | Supply counts, price trends and EV adoption data per state, brand or segment |
| Developers and AI agents | Structured car data for apps, chatbots and agents through the Apify API or MCP server |
| Agencies and data vendors | Repeatable exports for clients, scheduled on Apify, delivered as CSV, JSON or webhook |
How It Works
- Input. Paste search or vehicle URLs, or set the filters. Choose whether to fetch vehicle pages and how many cars you need.
- 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.
- 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.
- 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.
- Build the rows. Each car is joined with its dealer record and pushed as one row. With
includeDetailsthe 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
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | prefilled example | AutoTrader.com search or vehicle URLs. When present, filters below are ignored. |
searchMake | string | – | Make name or site code, e.g. Tesla, Ford, Mercedes-Benz. |
searchModel | string | – | Model code as in the site URL after modelCodeList=, e.g. GMCHUMMER. Only with a make. |
zip | string | 10001 when needed | ZIP code to centre the search on. |
searchRadius | integer | 0 | Miles around the ZIP. 0 = whole USA. |
priceMin / priceMax | integer | – | Asking price bounds in USD. |
yearMin / yearMax | integer | – | Model year bounds. |
maxMileage | integer | – | Highest odometer reading in miles. |
condition | select | all | all, new, used, certified. |
fuelType | select | any | ELE electric, GSL gasoline, HYB hybrid, PIH plug-in hybrid, DSL diesel, HYD hydrogen. |
sellerType | select | all | all, dealer, private. |
sort | select | relevance | Site ordering: price, mileage, year, newest listings. Matters when maxItems caps the run. |
includeGallery | boolean | false | Fetch 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. |
includeDetails | boolean | false | Fetch each vehicle page: full gallery, description, features, warranties, stock number. One extra request per car (about 500 KB), billed as an additional-data event. |
enrichEmails | boolean | false | Experimental: find a contact email for each dealer from its own website. Adds contactEmail, contactWebsite, emailEnrichment. |
failIfIncomplete | boolean | false | Finish with status FAILED when the collected count is short of the site total by more than the tolerance. Ignored when maxItems caps the run. |
completenessTolerancePct | integer | 3 | Allowed shortfall in percent. The larger of this and completenessToleranceMin applies. |
completenessToleranceMin | integer | 25 | Allowed shortfall in listings, so a small search is not failed over a handful of cars sold during the run. |
maxItems | integer | 1000 | Maximum cars to collect. Set it above the site's "Matches" count for a complete sweep. |
maxConcurrency / minConcurrency | integer | 10 / 1 | Parallel requests. |
maxRequestRetries | integer | 8 | Retries per failed request. |
countProbes | boolean | true | Measure 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. |
proxy | object | built-in | Leave 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,stylesand everything else the page carries, under their original names. - Attachments:
imageUrls(plain array of photo URLs),imagesCount,dealer(the complete seller object, unchanged),source(srpfor search-page data,lscwhen the listing API was fetched for the gallery,vdpwhen the vehicle page was fetched,srp-fallbackwhen 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
- Report a problem or request a field in the Issues tab of the actor page.
- Website: muhameddidovic.com
- Email: muhameddidovic@gmail.com
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
- AutoTrader.co.uk Scraper — the UK marketplace, richest output
- AutoTrader.ca Scraper — Canada, filter search plus VIN/CarFax
- AutoTrader.com.au Scraper — Australia
- Cars.com Scraper — VIN, price history, dealer data
- All memo23 actors
🤖 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:
startUrlswin when present; otherwise the filters are used.searchRadius: 0means the whole USA.- Always set
maxItems(default 1000). Searches bigger than 400 cars are split automatically;maxItemscaps the total. includeGallery: truefetches one light API record per car (every photo);includeDetails: truefetches the vehicle page instead (gallery plus description, features, warranties). Both off by default.failIfIncomplete: trueends the run with FAILED when the collected count is short of the site total by more than the tolerance (the larger ofcompletenessTolerancePct, default 3, andcompletenessToleranceMin, default 25 listings). Every run stores aCOMPLETENESSrecord in its key-value store with the site total, collected count and deviation.dealer.privateSellertells dealer rows from private sellers;priceUsdisnullwhen 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
includeDetailsis 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