Carsales AU Scraper
Pricing
from $0.49 / 1,000 listings
Carsales AU Scraper
Scrape carsales.com.au car listings from any search, make/model page, or listing URL. Get price, odometer, specs, features, seller comments, dealer details, location, and images. Monitor new listings and price changes. Export as JSON, CSV, or Excel.
Pricing
from $0.49 / 1,000 listings
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
Carsales AU Scraper
Carsales AU Scraper extracts car listings from carsales.com.au, Australia's leading car marketplace, using any search, make/model page, or listing URL. It returns price, odometer, specs, features, seller comments, dealer details, location, and images.
| Paste any carsales.com.au search URL with your filters (make, model, price, state, dealer or private, new or used) and get 70+ fields per car: full specifications, feature lists, registration and compliance dates, dealer rating, and suburb-level location. Searches beyond the site's ~440-result limit are split automatically. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify actor "parsebird/carsales-scraper" (Carsales AU Scraper) scrapes car listings from carsales.com.au. Call it with the apify-client package: client.actor("parsebird/carsales-scraper").call(run_input={...}). Input: startUrls (array of {url}, required; carsales.com.au search URLs like https://www.carsales.com.au/cars/?q=(And.Make.Toyota._.Model.Hilux.), make/model/state pages like https://www.carsales.com.au/cars/toyota/landcruiser/, or listing URLs like https://www.carsales.com.au/cars/details/<slug>/OAG-AD-12345678/), maxItems (integer, default 100, 0 = no limit), scrapeDetails (boolean, default true; opens each listing for full specs, features, seller comments and location), monitoringMode (boolean, default false; save only cars not seen in earlier runs with the same startUrls), trackPriceChanges (boolean, default false; with monitoring, also save known cars whose price changed, with priceChanged and previousPrice), skipPriceSplitting (boolean, default false; stop at ~440 cars per search), proxy (object, default Apify RESIDENTIAL proxy, country AU). Output: one dataset item per car with networkId, url, title, make, model, badge, variant, year, condition, price, priceLabel, priceExclGovtCharges, priceRating, odometer, bodyStyle, fuelType, transmission, driveType, engine, colour, buildDate, complianceDate, registrationExpiry, stockNumber, suburb, state, postcode, sellerType, dealerName, seller (rating, reviewCount, memberSince), sellerComments, overview, specifications, features, images, scrapedAt. API docs: https://apify.com/parsebird/carsales-scraper/api. Get a token: https://console.apify.com/settings/integrations
What is Carsales AU Scraper?
Carsales AU Scraper is a carsales.com.au scraper and unofficial carsales API alternative. Run any search on carsales.com.au, copy the URL from your browser, and paste it into the actor. You get a clean dataset of every matching car, with the same data you see on the listing page.
When we tested in November 2026, carsales.com.au held more than 200,000 car listings from dealers and private sellers across Australia. The site only shows about 20 pages (~440 cars) per search. Carsales AU Scraper gets past that limit by splitting large searches into price bands automatically.
What can Carsales AU Scraper do?
- 🔎 Scrape any search. Supports filtered search URLs (
/cars/?q=...), make, model, state and seller-type pages (/cars/toyota/hilux/,/cars/dealer/volvo/,/cars/private/), and single listing URLs. - 📈 Go past the ~440-result limit. Searches with more results are split into price bands so every priced car can be reached. In our test, the 1,359-car Volvo dealer search returned all 1,359 cars.
- 📋 Full listing details. Optionally opens every listing for seller comments, full manufacturer specifications, grouped feature lists, colours, registration expiry, build and compliance dates, dealer stock ID, suburb and postcode, and the dealer's rating.
- 🔔 Monitor new listings. Monitoring mode remembers which cars were already saved for your search, so scheduled runs return only new listings. It can also catch price changes, with the old price included.
- ⚡ Search-only mode. Turn off details to collect price, odometer, body, engine, transmission, state, seller type and images straight from the search results. This is faster and cheaper.
- 🧰 Apify platform built in. Schedule runs, call the actor through the Apify API, connect it to integrations such as Google Sheets, Slack, Zapier or Make, and export the data as JSON, CSV, Excel, XML or HTML.
What data can you extract from carsales.com.au?
| Field | Description |
|---|---|
networkId | carsales Network ID of the listing (for example OAG-AD-26442865) |
title, make, model, badge, variant, year | Vehicle identity as shown on the listing |
condition | New, Used or Demo |
price, priceText, priceLabel | Price in AUD and its type, such as "Excl. Govt. Charges" or "Drive away" |
priceExclGovtCharges | Price excluding government charges, when the listing shows a drive-away price |
priceRating | carsales price badge, such as "Great Price" or "Fair Price" |
odometer | Odometer reading in km |
bodyStyle, fuelType, transmission, driveType, engine, engineSizeCc | Main specs |
electricRangeKm | Estimated range for electric cars |
doors, seats, colour, interiorColour | Body and colour details |
buildDate, complianceDate, modelYear | Build and compliance month, model year |
registrationPlate, registrationExpiry | Registration details, when the seller provides them |
stockNumber | Dealer stock ID |
ancapRating, fuelConsumption, vehicleDescription | Safety rating, combined fuel use, full variant description |
suburb, region, state, postcode | Location of the car |
sellerType, adType, dealerName, sellerId, lmct | Seller details (dealer name shows on new-car listings) |
seller | Dealer profile: location, member since, current listings, rating and review count |
sellerComments | The seller's full description of the car |
specifications | Manufacturer specs grouped by category (engine, dimensions, fuel, warranty and more) |
features | Standard features grouped by category |
images, videos | Image and video URLs |
priceChanged, previousPrice | In monitoring mode with price tracking: whether the price changed since the last run |
How to scrape carsales.com.au
- Open carsales.com.au and run a search with the filters you need (make, model, price, location, new or used, dealer or private).
- Copy the URL from your browser's address bar.
- Open Carsales AU Scraper on Apify and paste the URL into Start URLs. You can add several URLs, including single listings.
- Set Max cars and choose whether to Scrape full car details.
- Click Start. When the run finishes, open the Output tab and download the data as JSON, CSV or Excel, or read it through the API.
To track new listings, turn on Save only new listings (monitoring) and schedule the actor to run daily or hourly.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | Yes | — | carsales.com.au search URLs, make/model/state pages, or listing URLs |
maxItems | integer | No | 100 | Maximum cars to save across all URLs. 0 = no limit |
scrapeDetails | boolean | No | true | Open each listing for full specs, features, seller comments and location |
monitoringMode | boolean | No | false | Save only cars not saved by earlier runs with the same Start URLs |
trackPriceChanges | boolean | No | false | With monitoring on, also save known cars whose price changed |
skipPriceSplitting | boolean | No | false | Stop at the first ~440 cars of each search instead of splitting it into price bands |
maxConcurrency | integer | No | 8 | Maximum parallel requests |
minConcurrency | integer | No | 2 | Parallel requests at the start |
maxRequestRetries | integer | No | 8 | Retries per request, each with a new IP |
proxy | object | No | Residential, AU | Proxy settings. carsales.com.au works best with Australian residential IPs |
Example input:
{"startUrls": [{ "url": "https://www.carsales.com.au/cars/toyota/landcruiser/" },{ "url": "https://www.carsales.com.au/cars/?q=(And.Make.Volvo._.Model.EX30.)" }],"maxItems": 100,"scrapeDetails": true}
Output example
One item per car (shortened; specifications and features hold many more groups):
{"networkId": "OAG-AD-26442865","url": "https://www.carsales.com.au/cars/details/2020-toyota-landcruiser-gxl-auto-4x4/OAG-AD-26442865/","title": "2020 Toyota Landcruiser GXL Auto 4x4","make": "Toyota","model": "Landcruiser","badge": "GXL","variant": "GXL Auto 4x4","year": 2020,"condition": "Used","price": 87977,"priceText": "$87,977","priceLabel": "Excl. Govt. Charges","priceRating": "Fair Price","odometer": 127751,"bodyStyle": "SUV","fuelType": "Diesel","transmission": "Automatic","driveType": "4x4","engine": "8cyl 4.5L T Diesel","engineSizeCc": 4461,"doors": 5,"seats": 8,"colour": "Black","vehicleDescription": "VDJ200R GXL Wagon 8st 5dr Spts Auto 6sp 4x4 610kg 4.5DTT","fuelConsumption": "9.5 L/100km","buildDate": "March 2020","complianceDate": "April 2020","stockNumber": "229812","ancapRating": 5,"suburb": "Bentley","state": "WA","postcode": "6102","sellerType": "Dealer","adType": "Dealer used","sellerId": "AGC-SELLER-10934","seller": { "location": "Western Australia", "memberSince": 2017, "currentListings": 1779 },"sellerComments": "GVM UPGRADE! BLACK BEAUTY! V8 turbo diesel 200 series GXL, one owner with service history...","specifications": {"Engine": { "Engine Size (cc)": "4461cc", "Cylinders": "8", "Induction": "Twin Turbo Intercooled" },"Fuel": { "Fuel Type": "Diesel", "Fuel Capacity": "138L" }},"features": {"Safety & Security": { "Airbags": ["Driver", "Passenger", "Knee driver"] }},"imageUrl": "https://carsales.pxcrush.net/carsales/car/dealer/ddec5081159a74ed4e16c0fbf3781343.jpg","images": ["https://carsales.pxcrush.net/carsales/car/dealer/ddec5081159a74ed4e16c0fbf3781343.jpg"],"detailsScraped": true,"scrapedAt": "2026-11-05T12:17:42Z"}
Download the dataset in JSON, CSV, Excel, XML or HTML from the Output tab, or read it with the Apify API.
Use cases
- Dealer pricing research: compare asking prices, odometer and age across makes, models and states.
- Stock monitoring: get alerted when new cars matching your search are listed, or when prices drop.
- Market analytics: track supply, prices and price badges for a segment over time.
- Lead generation for automotive services: build lists of dealers with their location, licence number and rating.
- Valuation models: feed specs, build dates and prices into pricing or residual-value models.
How to use the Carsales API in Python and JavaScript
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("parsebird/carsales-scraper").call(run_input={"startUrls": [{"url": "https://www.carsales.com.au/cars/toyota/hilux/"}],"maxItems": 200,"scrapeDetails": True,})for car in client.dataset(run["defaultDatasetId"]).iterate_items():print(car["title"], car["price"], car["odometer"])
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('parsebird/carsales-scraper').call({startUrls: [{ url: 'https://www.carsales.com.au/cars/toyota/hilux/' }],maxItems: 200,scrapeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((car) => console.log(car.title, car.price, car.odometer));
How much does it cost to scrape carsales.com.au?
Carsales AU Scraper uses pay-per-event pricing. You pay for the cars you get. Platform usage (compute and proxy) is included in the event price and not billed separately.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
listing-scraped: each car saved (per 1,000) | $0.89 | $0.79 | $0.69 | $0.49 |
listing-details-scraped: each car opened for full details (per 1,000) | $0.99 | $0.89 | $0.79 | $0.69 |
Every saved car counts as one listing-scraped event. With Scrape full car details on, each car also counts as one listing-details-scraped event. For example, 1,000 cars with full details cost $1.88 on the Free plan, and 1,000 cars from search results only cost $0.89. Set a maximum cost per run in the run options, and the actor stops when that limit is reached.
How does Carsales AU Scraper work?
- Reads each Start URL and works out whether it is a search or a single listing.
- Loads the search results page by page, the same way the website does.
- If a search has more than ~440 results, it splits the search into price bands, each small enough to be fully listed.
- With details on, it opens every listing for the full data.
- Saves one clean record per car, with duplicates removed. Promoted listings that appear on several pages are saved once.
FAQ
Is there an official carsales API? carsales.com.au does not offer a public self-serve API for its listing data. Carsales AU Scraper is a simple alternative: paste a search URL and get structured data back through the Apify API.
Can I scrape more than 440 cars from one search? Yes. carsales.com.au shows at most about 20 pages per search. The actor splits bigger searches into price bands automatically. Cars listed without a price ("POA") cannot be reached by price bands; the log tells you how many there were. To keep only the first ~440 cars in the site's own order, turn on Turn off price splitting.
How does monitoring mode work?
The actor stores the IDs and prices of cars it has saved for your exact set of Start URLs in your named key-value store carsales-monitor. On the next run with the same URLs, it saves only cars it has not seen before. With Also save price changes on, it also saves known cars whose price changed, with priceChanged: true and previousPrice. New cars are also added to your named dataset carsales-monitor-<your user ID>, so you get one growing feed across runs. The first run saves everything it finds. Each run checks the whole search, so keep monitored searches focused.
Can I filter by the date a car was listed? No. carsales.com.au does not show the listing date publicly, so the actor cannot filter by it. Use monitoring mode with a schedule to get only new listings.
Why is dealerName empty for some cars?
carsales.com.au shows the dealer's name on new-car search results only. For used and demo cars, the actor returns the dealer's sellerId, licence number (lmct), location, rating and stock ID.
Which proxy should I use? Keep the default: Apify residential proxy with country Australia. If a different proxy gets blocked, the actor switches to Australian residential automatically.
Can I scrape bikes, boats or trucks? Not yet. This actor covers cars on carsales.com.au. Request other sites in the Issues tab.
Can I schedule runs or connect the data to other apps? Yes. Use Apify schedules for daily or hourly runs, and integrations to send results to Google Sheets, Slack, Zapier, Make, webhooks and more.
Something is not working. What should I do? Open an issue in the Issues tab with your input and the run link, and we will look at it quickly.
Other car and Australian scrapers
- Mobile.de Search Scraper: German and European car listings
- AutoTrader.co.uk Scraper: UK car listings
- AutoTrader Canada Scraper: Canadian car listings
- Cars.com Scraper with Contacts: US car listings with dealer contacts
- Otomoto.pl Scraper with Contacts: Polish car listings
- Bid.cars Scraper: US car auction data
- Facebook Marketplace Scraper: Marketplace listings, including vehicles
- Realestate.com.au Scraper: Australian property listings
- Domain.com.au Property Scraper: Australian property listings
Is it legal to scrape carsales.com.au?
Carsales AU Scraper collects only publicly available listing data that anyone can see on carsales.com.au without logging in. It does not collect private seller contact details. You are responsible for how you use the data. Check carsales' terms of use and the laws that apply to you, such as the Australian Privacy Act, especially before you use any personal data. Read more in Apify's guide: Is web scraping legal?