Carsales.com.au Scraper: Price, Odometer, Year avatar

Carsales.com.au Scraper: Price, Odometer, Year

Pricing

from $1.20 / 1,000 vehicles

Go to Apify Store
Carsales.com.au Scraper: Price, Odometer, Year

Carsales.com.au Scraper: Price, Odometer, Year

Scrape Carsales.com.au vehicle listings by make and model: price, year, odometer, listing URL and photos. Australia residential proxy, no login, pay per vehicle.

Pricing

from $1.20 / 1,000 vehicles

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

A 29 car Carsales results page read in 7 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Type a make and a model (toyota and camry, ford and ranger) and get the cars Carsales.com.au lists for them as clean rows: the listing title, model year, asking price in Australian dollars and odometer reading as real numbers, the main photo, the number of photos and a direct link to the advert. No Carsales account, no cookies and no browser.

Why choose this actor?

  • Numbers you can sort straight away. Price and odometer come back as plain numbers (19836, 131650), and the model year is read from the listing title. In a recorded run on 2 September, one Toyota Camry search read a results page of 29 cars in about 7 seconds and delivered the 3 the run asked for, each with price, kilometres, year and photo.
  • Gets past Carsales' bot protection without a browser. Carsales guards its pages with DataDome. The actor fetches the search page the way a real browser's network stack would, through Apify's Australian residential proxy, and retries on a fresh connection up to 3 times. You need no proxy of your own.
  • Pay only for cars delivered. From $1.20 per 1,000 vehicles on Gold. Cars removed by your year or price filter, a blocked search, an empty search and the run's report rows cost nothing beyond the $0.005 start fee.

Run it on Apify

Part of The Mine Works E-commerce and marketplaces family: Ozon.ru Scraper, Amazon Product Scraper, ⭐ Amazon Reviews Scraper, Etsy Listings Scraper, AliExpress Scraper, Kleinanzeigen.de Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"make": "toyota",
"model": "camry",
"maxItems": 10
}

You get 10 Toyota Camry listings from Carsales in a few seconds.

The search is built from make and model, typed the way Carsales writes them in its own links (toyota, mazda, land rover; spaces become dashes). Leave model empty for every model of the make, or leave both empty for Carsales' all cars page; a model without a make is ignored. Then narrow the results with minYear, minPrice and maxPrice, and cap them with maxItems. There is no URL, location or dealer input.

One page per search. Carsales does not let anyone ask for page 2 by link: its Next button sends a single use, server signed token that its bot protection refuses to accept from anything but a real browser. So each run reads one results page, which held 29 cars in our recorded run, in Carsales' own "Featured" order. For more cars, search more models (each make and model is its own page). The year and price filters only trim that one page; they do not fetch different cars.

Apify's free plan includes $5 of credit every month, which covers about 2,300 vehicles at this actor's Free plan price ($0.002 a vehicle plus the $0.005 start fee, in full page runs of about 29 cars).

Copy to your AI assistant

themineworks/carsales-scraper on Apify. Reads one Carsales.com.au search results page for a make and model and returns one row per car with title, year, make, model, price in AUD, odometer in km, main photo URL, photo count and listing URL. Call ApifyClient("TOKEN").actor("themineworks/carsales-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: nothing (an empty input reads Carsales' all cars page), but normally make (string, such as "toyota") and model (string, such as "camry"; ignored without make). Optional: maxItems (1 to 50, default 30; one results page holds about 29 cars, there is no pagination), minYear, minPrice, maxPrice (AUD; applied after the page is read, filtered cars are not charged). Rows with _type "summary" or "info" are run reports, never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~carsales-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • 13 fields per car: listing_id, title, year, make, model, price, odometer_km, image_url, image_count, url, search_make, search_model and scraped_at.
  • Carsales' own structured data. Rows come from the schema.org listing data Carsales embeds in every search page for search engines, so the values are the ones Carsales publishes, not text scraped off the screen.
  • Year and price filters that do not cost you anything. minYear, minPrice and maxPrice are applied after the page is read and before anything is written, so a car outside your band is never delivered or charged.
  • Australian residential proxy, included. Plain datacenter IPs get a DataDome 403 on Carsales (we re-checked on 2 October: 3 of 3 attempts refused). The actor always uses Apify's residential proxy in Australia, with a fresh session on each retry, and the proxy cost is ours.
  • Clean failure handling. If all 3 attempts are refused, the run ends with a summary row marked blocked: true and charges nothing beyond the start fee.

How to use it

Basic: one make and model

{
"make": "ford",
"model": "ranger",
"maxItems": 30
}

Returns up to one page of Ford Ranger listings, in Carsales' "Featured" order.

Every model of a make

{
"make": "mazda",
"maxItems": 30
}

Leave model empty to read the make's own results page, which mixes all its models.

Pricing research for one model by year and kilometres

{
"make": "toyota",
"model": "rav4",
"minYear": 2019,
"maxItems": 50
}

Plot price against odometer_km and year to see what the market is asking for each age and mileage. One search reads one page, and the page changes as adverts come and go, so a daily schedule over a week or two, deduplicated on listing_id, builds a much wider sample than a single run.

Buying alerts inside a budget

{
"make": "honda",
"model": "civic",
"minYear": 2018,
"maxPrice": 25000
}

Save it as a task and schedule it daily (for example 0 7 * * * in Australian time). Each run returns the cars currently on the page that fit your year and price. The actor keeps no memory between runs, so compare listing_id with yesterday's rows to spot new adverts.

Dealer and remarketing stock watch

{
"make": "hyundai",
"model": "tucson",
"minPrice": 20000,
"maxPrice": 45000
}

Run it weekly per model you trade. The count of rows, the spread of price and how long the same listing_id keeps appearing tell you how fast that model's stock turns over.

Input parameters

ParameterTypeDefaultWhat it does
makestringnone (form prefill: toyota)Vehicle make, such as toyota or ford. Leave blank to search all makes.
modelstringnone (form prefill: camry)Vehicle model, such as camry or ranger. Leave blank for every model of the make. Ignored when make is blank.
maxItemsinteger (1 to 50)30Most cars to deliver. One results page holds about 29 cars, so values above that return everything on the page.
minYearintegernoneOnly cars of this model year or newer.
minPriceintegernoneOnly cars listed at or above this price, in AUD.
maxPriceintegernoneOnly cars listed at or below this price, in AUD.

"Form prefill" values fill the Console form for you but are not defaults: an API call with no make reads the all cars page.

The year and price filters work on the page the search returns; they do not make Carsales return different cars. A strict filter on a broad search can leave few or no rows (a test with maxPrice: 3 read the page and delivered nothing, at no charge). A car with no year or no price in its listing is kept, because it cannot be checked.

Run options. The default memory is 256 MB and the default timeout is 3,600 seconds. A run is one page fetch and normally finishes in under 10 seconds.

What data do you get?

One row per car. Fields a listing does not carry are left out of that row rather than filled with zeros.

The car: title (as Carsales shows it, such as 2016 Toyota Camry Atara SX Auto), year (read from the start of the title), make, model.

Price and use: price (asking price in AUD, a whole number) and odometer_km (kilometres, a whole number).

The advert: listing_id (Carsales' advert ID, such as OAG-AD-26136546), url (the advert page), image_url (the main photo) and image_count (photos included in the listing data).

Run context: search_make and search_model (what you typed) and scraped_at.

Carsales' listing data can also carry a body type; it was not present on any car in our recorded rows, so do not rely on it. Seller details, location, colour and transmission are not returned; open url for those.

Each run ends with a _type: "summary" row (vehicles_delivered, charged_for, pages_fetched, blocked) and a _type: "info" row with a short message. Neither is a car and neither is ever charged. Skip rows that have a _type field when you load cars.

Stable fields for automations

These 13 fields were present in every car row we sampled (the 3 delivered rows of our 2 September run, a small sample; the code fills them from the same listing data for every car):

FieldWhat it holds
listing_idCarsales advert ID; the key for deduplication across runs
titleListing title
yearModel year, number
makeMake as Carsales lists it, such as Toyota
modelModel as Carsales lists it, such as Camry
priceAsking price in AUD, number
odometer_kmOdometer in km, number
image_urlMain photo URL
image_countNumber of photos in the listing data
urlAdvert page on carsales.com.au
search_makeThe make you searched
search_modelThe model you searched
scraped_atISO timestamp when the row was captured

We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our run on 2 September 2026 (make: "toyota", model: "camry", maxItems: 3).

{
"listing_id": "OAG-AD-26136546",
"title": "2016 Toyota Camry Atara SX Auto",
"year": 2016,
"make": "Toyota",
"model": "Camry",
"price": 19836,
"odometer_km": 131650,
"image_url": "https://carsales.pxcrush.net/carsales/cars/dealer/1nmxw4wtemkyaykl7d9b871dl.jpg?pxc_method=fitfill&pxc_bgtype=self&pxc_size=720,480",
"image_count": 5,
"url": "https://www.carsales.com.au/cars/details/2016-toyota-camry-atara-sx-auto/OAG-AD-26136546/",
"search_make": "toyota",
"search_model": "camry",
"scraped_at": "2026-09-02T08:32:35.987Z"
}
{
"listing_id": "OAG-AD-26187189",
"title": "2021 Toyota Camry SX Auto",
"year": 2021,
"make": "Toyota",
"model": "Camry",
"price": 34990,
"odometer_km": 79361,
"image_url": "https://carsales.pxcrush.net/carsales/cars/dealer/1kpp3ro86ij4hit9kuo9qvqii.jpg?pxc_method=fitfill&pxc_bgtype=self&pxc_size=720,480",
"image_count": 5,
"url": "https://www.carsales.com.au/cars/details/2021-toyota-camry-sx-auto/OAG-AD-26187189/",
"search_make": "toyota",
"search_model": "camry",
"scraped_at": "2026-09-02T08:32:36.119Z"
}

The summary row of the same run (never charged; guard counters left out):

{
"_type": "summary",
"search_make": "toyota",
"search_model": "camry",
"vehicles_delivered": 3,
"charged_for": 3,
"pages_fetched": 1,
"blocked": false,
"scraped_at": "2026-09-02T08:32:36.191Z"
}

Pricing

Pay per event: you pay for each car delivered to your dataset, plus a small start fee per run.

EventFreeBronzeSilverGold and above
vehicle-scraped, per car$0.002$0.0018$0.0016$0.0012
vehicle-scraped, per 1,000 cars$2.00$1.80$1.60$1.20
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 256 MB by default, so a default run pays one event: $0.005.

Worked examples. A full page of 29 cars on the Free plan: $0.058 plus $0.005. The same on Gold: $0.0348 plus $0.005. Twenty models checked daily for a 30 day month at 29 cars each (17,400 cars) on Gold: $20.88 plus $3.00 of start fees. The residential proxy is included.

Never charged: cars removed by your year or price filter, a search Carsales blocks, a search with no cars, retries, and the summary and info rows. A run that delivers nothing pays only the start fee.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

FAQ

What is Carsales? Carsales.com.au is Australia's largest online marketplace for new and used cars, with listings from dealers and private sellers. Its search pages show each car's title, price, kilometres and photos to anyone, without signing in. This actor reads those public search pages.

How many cars can I get per run? One results page per search, which held 29 cars in our recorded run, and up to maxItems (at most 50) of them. Carsales' Next button uses a single use token that its bot protection only accepts from a real browser, so the actor does not page further. Search several models, or schedule the same search over time, to collect more.

Why did I get fewer cars than maxItems? Because the one page held fewer cars, your year or price filter removed some, or Carsales blocked all 3 attempts (the summary row then says blocked: true). You are only charged for cars delivered.

Can I filter by state, suburb, body type or seller type? Not in this version. Carsales does not expose those as simple search links the way it does make and model, and the actor does not return location or seller fields. Make, model, year and price are what it supports.

How fresh is the data? Every run reads Carsales live; nothing is cached. The order is Carsales' own "Featured" sort for that page at that moment.

Do I need a Carsales account, cookies or a proxy? No. You need only an Apify account. The actor always uses Apify's residential proxy in Australia, paid by us; datacenter IPs are refused by Carsales' DataDome protection.

Is price the drive away price? It is the asking price figure in Carsales' listing data, as a whole number of Australian dollars. Whether that figure is drive away or excludes government charges depends on the advert; check the advert at url before you compare dealer and private prices closely.

Can I run it on a schedule? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 7 * * *. The actor keeps no memory between runs, so compare listing_id between runs to find new adverts.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop rows that have a _type field if you want cars only.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/carsales-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http carsales-scraper "https://mcp.apify.com/?tools=themineworks/carsales-scraper".

Is it legal to scrape Carsales? The actor reads only public search results that anyone can see on Carsales without logging in, and it does not log in or collect seller contact details. You are responsible for how you use the data, including Carsales' terms and privacy laws such as Australia's Privacy Act, GDPR and CCPA. This is general information, not legal advice. This actor is independent and not affiliated with Carsales.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to add each scheduled run's cars.
  • Make, Zapier and n8n: use the Apify app or node to start a run and send matching cars to Slack, email or a CRM.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

Pricing a move or a relocation in Australia? Pair it with Domain.com.au Property Scraper and realestate.com.au Scraper for housing, and SEEK Jobs Scraper for jobs.

More from The Mine Works

E-commerce and marketplaces

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a search that comes back blocked, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new marketplace, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Carsales.com.au Scraper turns a make and model search into car rows with price, kilometres, year and photos, charged only for the cars you keep.