Carsales AU Scraper avatar

Carsales AU Scraper

Pricing

from $0.49 / 1,000 listings

Go to Apify Store
Carsales AU Scraper

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

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

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?

FieldDescription
networkIdcarsales Network ID of the listing (for example OAG-AD-26442865)
title, make, model, badge, variant, yearVehicle identity as shown on the listing
conditionNew, Used or Demo
price, priceText, priceLabelPrice in AUD and its type, such as "Excl. Govt. Charges" or "Drive away"
priceExclGovtChargesPrice excluding government charges, when the listing shows a drive-away price
priceRatingcarsales price badge, such as "Great Price" or "Fair Price"
odometerOdometer reading in km
bodyStyle, fuelType, transmission, driveType, engine, engineSizeCcMain specs
electricRangeKmEstimated range for electric cars
doors, seats, colour, interiorColourBody and colour details
buildDate, complianceDate, modelYearBuild and compliance month, model year
registrationPlate, registrationExpiryRegistration details, when the seller provides them
stockNumberDealer stock ID
ancapRating, fuelConsumption, vehicleDescriptionSafety rating, combined fuel use, full variant description
suburb, region, state, postcodeLocation of the car
sellerType, adType, dealerName, sellerId, lmctSeller details (dealer name shows on new-car listings)
sellerDealer profile: location, member since, current listings, rating and review count
sellerCommentsThe seller's full description of the car
specificationsManufacturer specs grouped by category (engine, dimensions, fuel, warranty and more)
featuresStandard features grouped by category
images, videosImage and video URLs
priceChanged, previousPriceIn monitoring mode with price tracking: whether the price changed since the last run

How to scrape carsales.com.au

  1. Open carsales.com.au and run a search with the filters you need (make, model, price, location, new or used, dealer or private).
  2. Copy the URL from your browser's address bar.
  3. Open Carsales AU Scraper on Apify and paste the URL into Start URLs. You can add several URLs, including single listings.
  4. Set Max cars and choose whether to Scrape full car details.
  5. 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

ParameterTypeRequiredDefaultDescription
startUrlsarrayYes—carsales.com.au search URLs, make/model/state pages, or listing URLs
maxItemsintegerNo100Maximum cars to save across all URLs. 0 = no limit
scrapeDetailsbooleanNotrueOpen each listing for full specs, features, seller comments and location
monitoringModebooleanNofalseSave only cars not saved by earlier runs with the same Start URLs
trackPriceChangesbooleanNofalseWith monitoring on, also save known cars whose price changed
skipPriceSplittingbooleanNofalseStop at the first ~440 cars of each search instead of splitting it into price bands
maxConcurrencyintegerNo8Maximum parallel requests
minConcurrencyintegerNo2Parallel requests at the start
maxRequestRetriesintegerNo8Retries per request, each with a new IP
proxyobjectNoResidential, AUProxy 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 ApifyClient
client = 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.

EventFreeBronzeSilverGold
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?

  1. Reads each Start URL and works out whether it is a search or a single listing.
  2. Loads the search results page by page, the same way the website does.
  3. If a search has more than ~440 results, it splits the search into price bands, each small enough to be fully listed.
  4. With details on, it opens every listing for the full data.
  5. 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

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?