US Autotrader Scraper
Pricing
from $2.50 / 1,000 results
US Autotrader Scraper
Scrape Autotrader.com vehicle listings nationwide or for a specific US state.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Fahim Mahmud Chisti
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
What does US Autotrader Scraper do?
US Autotrader Scraper extracts public vehicle listings from Autotrader.com into a structured Apify dataset. It supports nationwide searches, verified state-specific results, keyword searches, filtered Autotrader URLs, and direct vehicle-detail URLs. Camoufox, browser sessions, retries, and US residential proxy support help handle Autotrader's JavaScript application and anti-bot controls.
Why use US Autotrader Scraper?
- Monitor vehicle inventory across the entire United States.
- Restrict saved vehicles to any US state or Washington, DC.
- Compare prices, mileage, model years, trims, and sellers.
- Track newly listed vehicles using newest-first search and optional age filtering.
- Export results through the Apify API or as JSON, CSV, Excel, XML, RSS, or HTML.
How to scrape Autotrader vehicles
- Open the Actor's Input tab.
- Add search keywords, Autotrader search URLs, or direct vehicle URLs.
- Select Entire United States or Specific state.
- When using a specific state, select its two-letter state code.
- Set item/page limits and start the Actor.
The Actor adds location parameters to search URLs but also verifies each listing's location before saving state-specific output. This prevents nearby out-of-state inventory from leaking into state results.
Input
searchKeywords— phrases such asToyota Camry,Ford F-150, orelectric SUV.startUrls— Autotrader search or vehicle-detail URLs. Existing filters (including zip, radius, and sort) are preserved.locationScope—nationwideorstate.state— required for state scope; supports all 50 states and DC.maxItems— maximum listings saved across all searches;0means unlimited.maxPagesPerSearch— maximum result pages per search.maxListingAgeDays— optional publication-age limit. Listings without a known date are excluded.scrapeItemDetails— opens detail pages for VIN, mileage, seller, specifications, description, and images.duplicateCheck— skip detail scraping for listing URLs already known (defaultfalse).duplicateCheckApiUrl— optional POST exists API; leave empty for Apify storage only.duplicateCheckStoreName— named KV store (defaultvehicle-listing-urls).proxyConfiguration— US residential proxy settings are strongly recommended.
Nationwide example:
{"searchKeywords": ["Toyota Camry"],"locationScope": "nationwide","maxItems": 100,"maxPagesPerSearch": 3,"scrapeItemDetails": true}
Texas example:
{"startUrls": [{"url": "https://www.autotrader.com/cars-for-sale/all-cars?startYear=2020&endYear=2026"}],"locationScope": "state","state": "TX","maxItems": 50,"scrapeItemDetails": true}
Skip existing listings (duplicate check)
Autotrader detail scraping opens each vehicle in a real browser with residential proxies. On scheduled re-runs, most results are often listings you already stored. Duplicate check skips those URLs so you do not pay again for detail pages you already have.
Enable it with duplicateCheck: true (default false).
If N consecutive listing URLs in a search are known duplicates (N = duplicateCheckLeadingStop, default 20), that search stops (no further pages) to avoid paying for known inventory.
Modes
- When
duplicateCheckApiUrlis set, the Actor POSTs batches of up to 500 listing URLs to your endpoint, then skips URLs returned inexisting. It also reads and updates the named Apify Key-Value store. A URL is skipped if either your API or the store marks it as known. - When
duplicateCheckApiUrlis empty, the Actor uses the Apify Key-Value store only (no external API).
API contract
// Request{ "listingUrls": ["https://example.com/listing/1", "https://example.com/listing/2"] }// Response{"existing": ["https://example.com/listing/1"],"missing": ["https://example.com/listing/2"]}
listingUrls may also be a single string. URLs are normalized (query string and trailing slash ignored). No auth header is required for public endpoints. If the API call fails or exceeds a 20s timeout, the Actor fail-opens and scrapes the batch.
After a listing is saved successfully, its URL is written to the named store under the KNOWN_LISTING_URLS record so future runs skip it even without an API. Cached URLs expire after 30 days, and the store is capped at 50,000 entries (oldest first). Legacy boolean true entries are migrated to timestamps on load.
Example:
{"searchKeywords": ["Toyota Camry"],"locationScope": "nationwide","maxItems": 100,"duplicateCheck": true,"duplicateCheckApiUrl": "https://your-api.example.com/listings/exists","duplicateCheckStoreName": "vehicle-listing-urls"}
Output
The output uses the same vehicle contract as the eBay and Craigslist Actors:
{"itemId": "765432109","title": "2022 Toyota Camry XSE","listedAt": "2026-07-18T14:30:00.000Z","price": "29995","currency": "USD","year": "2022","make": "Toyota","model": "Camry","trim": "XSE","mileage": "31220","vin": "4T1TESTVIN1234567","location": "Austin, TX","seller": "Example Toyota","imageUrl": "https://images.autotrader.com/example.jpg","images": ["https://images.autotrader.com/example.jpg"],"url": "https://www.autotrader.com/cars-for-sale/vehicle/765432109"}
When the Actor is started from an Apify Task, each dataset item also includes taskId and taskName so you can track which Task produced it. Direct Actor runs set both to null.
Additional fields include description, condition, body type, engine, transmission, drivetrain, fuel type, colors, seller type, title status, source URL, page number, scrape timestamp, and a specifics object. Fields unavailable on a listing remain null.
Autotrader usually does not publish an exact listing timestamp. When a "days on site" / "days on market" counter is available, the Actor prefers that over embedded inventory dates and derives listedAt from the US Eastern calendar day (noon UTC, so the civil date stays stable across US timezones). It marks this with "listedAtDerivedFrom": "daysOnSite" in specifics. Private-seller listings sometimes expose no counter at all; if Autotrader flags them as newly listed, the Actor sets listedAt to today and marks it with "listedAtDerivedFrom": "isNewlyListed". The maxListingAgeDays filter uses the same value. Mileage strings like 32K mi are expanded to full mile counts.
Cost and performance
Autotrader requires a real browser, so this Actor uses more memory and compute than HTTP-only scrapers. Detail mode also opens one page per vehicle. Use maxItems, maxPagesPerSearch, and maxListingAgeDays to control cost. Enable duplicateCheck on scheduled re-runs to skip known vehicles. Set scrapeItemDetails: false when search-card fields are enough. Prefer skipping known listings over raising memory. Keep browser concurrency low. State searches may inspect extra listings because location is verified before output.
Tips
- Keep the default US residential proxy configuration.
- Use filtered Autotrader search URLs for make, model, price, year, mileage, body style, and condition filters.
- Enable detail scraping for the most reliable state filtering and richest output.
- Enable
duplicateCheckon scheduled re-runs to skip vehicles you already stored. - Set
scrapeItemDetails: falsewhen search-card fields are enough. - Prefer skipping known listings over raising memory.
- Keep browser concurrency low.
- The run Container URL exposes
/and/statusfor live progress while the Actor is active.
Legal notice and support
Scrape only public information and comply with applicable law, Autotrader's terms, and reasonable request rates. The Actor does not intentionally collect private contact information. Autotrader can change its application or blocking behavior; if a run fails, provide its run ID and affected URL through the Actor's Issues tab.