# Carsales Scraper: carsales.com.au Car Listings | $1/1K (`one_dollar_store/carsales-car-listings-scraper`) Actor

$1 per 1,000 results, platform usage included. Public car listings from carsales.com.au searches, by search link or make and model: title, price, price badge, year, odometer, body type, transmission, fuel, seller type, state, photos and listing link. No login.

- **URL**: https://apify.com/one_dollar_store/carsales-car-listings-scraper.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Carsales Scraper: carsales.com.au Car Listings with Prices and Specs

**$1 per 1,000 listings. Platform usage included. No rental, no minimum.**

Turn a carsales.com.au search into a clean table of cars for sale: title, year, make, model, variant, price, carsales price badge, odometer, body type, transmission, engine, fuel, seller type, state, photo links and the listing link. Paste search links from the site or type a make and model. No login, no API key.

[Open it in Apify Console](https://console.apify.com/actors/x4WW9CeKgMFtRwalQ/input)

### What it costs

| Listings | This actor |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

Plus $0.001 per run. One flat price, platform usage included, so there is no separate compute or proxy bill. Pages that fail or show no cars cost nothing beyond the run fee. One search gives up to about 150 cars (see Limits). A weekly run of 750 listings costs $0.751, or about $3 a month.

### Why use it

- **One flat price.** carsales.com.au needs an Australian residential proxy. It is included, so the bill follows the number of listings and nothing else.
- **Search links or make and model.** Set any filters on the site and paste the link, or just type a make and model.
- **More than one page of cars.** The actor reads each search in up to 9 sort orders (7 by default) and removes duplicates, for up to about 150 different cars per search.
- **Price context.** Asking price as a number, carsales' own GREAT, GOOD or FAIR PRICE badge, price notes, odometer in km, seller type and state.

### Quick start

1. Open the actor, type a make and model or paste a carsales.com.au search link, press **Start**.
2. Or paste this input:

```json
{ "make": "Toyota", "model": "Hilux", "sortOrders": ["Odometer", "~Year", "Power"], "maxItems": 50 }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~carsales-car-listings-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchUrls": ["https://www.carsales.com.au/cars/mazda/cx-5/"], "maxItems": 50}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/carsales-car-listings-scraper").call(
    run_input={"searchUrls": ["https://www.carsales.com.au/cars/mazda/cx-5/"], "maxItems": 50}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("title"), item.get("price"), item.get("odometerKm"), item.get("state"))
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/carsales-car-listings-scraper
```

Then ask, for example: "Get 100 Toyota Hilux listings from carsales.com.au with prices, odometer and state."

### Switching from another Carsales actor

Search links go in `searchUrls` (a list), or use `make` and `model`. Sort orders go in `sortOrders` and the limit in `maxItems`. The core fields are `title`, `price`, `year`, `odometerKm`, `state` and `url`.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchUrls` | list | none | carsales.com.au search result links. Set your filters on the site, then paste the link. |
| `make`, `model` | text | none | Used when you have no link, for example Toyota and Hilux. |
| `sortOrders` | list | 7 orders | Sort orders to read per search: `TopDeal` (Featured), `~Price`, `Price`, `~Odometer`, `Odometer`, `Year`, `~Year`, `Power`, `Acceleration`. More orders give more cars. |
| `maxItems` | number | 100 | Stop after this many listings in total. Minimum 10. |
| `proxyConfiguration` | proxy | AU residential | Australian residential proxy, which carsales.com.au needs. |

### Output fields

| Field | Meaning |
|---|---|
| `listingId`, `url` | carsales listing ID and the listing link. |
| `title`, `year`, `make`, `model`, `variant` | The car as listed. |
| `price`, `priceText`, `priceNote` | Asking price in AUD, as shown, and notes such as "Excl. Govt. Charges". |
| `priceIndicator` | carsales' own badge (GREAT, GOOD or FAIR PRICE), when shown. |
| `odometerKm` | Odometer reading in km. |
| `bodyType`, `transmission`, `engine`, `fuelType` | Key details from the result card. |
| `sellerType`, `listingType`, `state` | `dealer` or `private`, the card's label (for example Dealer used) and the state. |
| `imageCount`, `imageUrl`, `images` | Number of photos and the first few photo links. |
| `position`, `sortOrder`, `searchUrl`, `scrapedAt` | Where the car appeared, which search and sort order found it, and when. |

### Sample results

Real rows from a test run on 4 October 2026. One row (photo links left out):

```json
{
  "listingId": "OAG-AD-26146620", "title": "2018 Mazda CX-5 GT KF Series Auto i-ACTIV AWD",
  "year": 2018, "make": "Mazda", "model": "CX-5", "variant": "GT Auto i-ACTIV AWD",
  "price": 24444, "priceText": "$24,444", "priceNote": "Excl. Govt. Charges", "odometerKm": 119765,
  "bodyType": "SUV", "transmission": "Automatic", "engine": "4cyl 2.5L Petrol", "fuelType": "Petrol",
  "sellerType": "dealer", "listingType": "Dealer used", "state": "NSW", "imageCount": 25,
  "url": "https://www.carsales.com.au/cars/details/2018-mazda-cx-5-gt-kf-series-auto-i-activ-awd/OAG-AD-26146620/",
  "position": 3, "sortOrder": "Featured", "searchUrl": "https://www.carsales.com.au/cars/mazda/cx-5/",
  "scrapedAt": "2026-10-04T13:22:31.595Z"
}
```

Three more, main fields only:

| title | price | priceIndicator | odometerKm | engine | sellerType | state | sortOrder |
|---|---|---|---|---|---|---|---|
| 2025 Mazda CX-5 G25 Maxx Sport KF Series Auto FWD | 35490 | GOOD PRICE | 2033 | 4cyl 2.5L Petrol | dealer | SA | Featured |
| 2012 Mazda CX-5 Grand Touring KE Series Auto AWD | 3000 | GREAT PRICE | 205000 | 4cyl 2.2L T Diesel | private | ACT | Price: low to high |
| 2017 Mazda CX-5 Touring KF Series Auto i-ACTIV AWD | 8500 | GREAT PRICE | 285000 | 4cyl 2.5L Petrol | private | QLD | Price: low to high |

### Limits

- **First results page only, per sort order.** carsales.com.au lets a visitor without a browser open only the first page of a search; its next page links are behind a bot check that this actor does not try to get past. So it reads the first page in several sort orders instead. That is about 20 to 30 cars per page and up to about 150 different cars per search with the default seven orders.
- **For more cars, split the search.** Narrow it by state (for example `/cars/toyota/camry/victoria-state/`), year, price or body type using filters on the site, and paste each link.
- **Details come from the search result cards.** The full listing page (description, VIN, seller phone) is not opened.
- **Bot checks.** If carsales.com.au shows its bot check, the actor does not solve it. It asks once more as a new visitor, then skips that page. After four refused pages in a row the run stops and says so in the log.
- **Run summary.** How many pages the site says each search has is saved as `RUN_SUMMARY` in the key-value store.

### FAQ

**How much does it cost to scrape 10,000 carsales.com.au listings?**
$10, plus $0.001 for each run. At up to about 150 cars per search, that takes many narrow searches, which can all go in one run.

**Do I pay for compute or proxy on top?**
No. Platform usage, including the Australian residential proxy, is included in the $1 per 1,000 price.

**Why did I get fewer cars than I asked for?**
Each search gives at most one page per sort order. Add more sort orders, or split the search by state, price or year and add each link.

**Is it legal?**
The actor reads only public search pages that any visitor can open without logging in, at a slow, polite pace. You are responsible for how you use the data: follow carsales.com.au's terms and the laws where you live, especially for private seller details.

**Is this an official carsales product?**
No. It is an independent tool and is not affiliated with or endorsed by carsales.com.au.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included.

**Google and search**

- [Google News Scraper](https://apify.com/one_dollar_store/google-news-articles-scraper): News articles by keyword, topic or country.
- [Google Maps Leads Scraper](https://apify.com/one_dollar_store/google-maps-leads-scraper): Local businesses with phones, websites and emails.
- [Google Ads Transparency Scraper](https://apify.com/one_dollar_store/google-ads-transparency-scraper): Ads any advertiser or domain runs on Google.

**Maps and local business**

- [2GIS Business Scraper](https://apify.com/one_dollar_store/2gis-business-scraper): Businesses in Russia, Central Asia and the UAE.
- [Yandex Maps Scraper](https://apify.com/one_dollar_store/yandex-maps-business-scraper): Businesses on Yandex Maps around any city.
- [IndiaMART Supplier Scraper](https://apify.com/one_dollar_store/indiamart-supplier-scraper): Indian suppliers for any product, with phones.

**Social media**

- [Threads Scraper](https://apify.com/one_dollar_store/threads-post-scraper): Public Threads posts by keyword or profile.
- [Instagram Profile Scraper](https://apify.com/one_dollar_store/instagram-profile-data-scraper): Followers, posts and engagement for public profiles.
- [TikTok Hashtag Scraper](https://apify.com/one_dollar_store/tiktok-hashtag-videos-scraper): Videos, views and creators for any hashtag.
- [Pinterest Pin Search Scraper](https://apify.com/one_dollar_store/pinterest-pin-search-scraper): Public pins with images and outbound links.
- [Telegram Channel Scraper](https://apify.com/one_dollar_store/telegram-channel-posts-scraper): Posts, views and media from public channels.
- [Xiaohongshu Scraper](https://apify.com/one_dollar_store/xiaohongshu-explore-feed-scraper): RedNote notes from the public explore feeds.
- [Facebook Ad Library Scraper](https://apify.com/one_dollar_store/facebook-ad-library-scraper): Meta ads by keyword or advertiser page.

**Shopping**

- [Amazon Reviews Scraper](https://apify.com/one_dollar_store/amazon-product-reviews-scraper): Public reviews for any Amazon product.
- [AliExpress Product Scraper](https://apify.com/one_dollar_store/aliexpress-product-search-scraper): Products with prices, orders sold and ratings.
- [Etsy Scraper](https://apify.com/one_dollar_store/etsy-listings-scraper): Listings with prices, shops and badges.

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/one_dollar_store/zillow-rentals-scraper): US rentals by city, ZIP or search link.
- [Zillow Sold Homes Scraper](https://apify.com/one_dollar_store/zillow-sold-homes-scraper): Recently sold US homes with prices and dates.
- [Zillow Photos Scraper](https://apify.com/one_dollar_store/zillow-listing-photos-scraper): Every photo of a Zillow listing.

**Jobs**

- [Foundit Jobs Scraper](https://apify.com/one_dollar_store/foundit-jobs-search-scraper): Indian jobs with salary and experience filters.
- [Naukri Jobs Scraper](https://apify.com/one_dollar_store/naukri-job-listings-scraper): Naukri.com jobs by keyword, city and experience.

**Company records**

- [Bundesanzeiger Scraper](https://apify.com/one_dollar_store/bundesanzeiger-filings-scraper): German company filings and notices.
- [US Business Registry Search](https://apify.com/one_dollar_store/us-business-registry-search): Company records from 6 US state registries.

### Changelog

- October 2026: first release.

# Actor input Schema

## `searchUrls` (type: `array`):

carsales.com.au search result links, for example https://www.carsales.com.au/cars/toyota/hilux/ or https://www.carsales.com.au/cars/toyota/camry/victoria-state/. Set your filters on the site, then paste the link.

## `make` (type: `string`):

Optional. A make such as Toyota or Mazda, used when you have no search link.

## `model` (type: `string`):

Optional. A model of that make, such as Corolla or CX-5.

## `sortOrders` (type: `array`):

Only the first results page of a search can be read without a browser (about 20 to 29 cars). Each sort order shows a different first page, so picking more orders gives more cars per search. Duplicates are removed.

## `maxItems` (type: `integer`):

The run stops after this many listings in total. Minimum 10. One search gives up to about 150 cars with all default sort orders.

## `proxyConfiguration` (type: `object`):

carsales.com.au refuses most cloud server addresses, so Australian residential proxy is the default.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.carsales.com.au/cars/toyota/hilux/"
  ],
  "sortOrders": [
    "TopDeal",
    "~Price",
    "Price",
    "~Odometer",
    "Odometer",
    "Year",
    "~Year"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://www.carsales.com.au/cars/toyota/hilux/"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/carsales-car-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": ["https://www.carsales.com.au/cars/toyota/hilux/"],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/carsales-car-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://www.carsales.com.au/cars/toyota/hilux/"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}' |
apify call one_dollar_store/carsales-car-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,one_dollar_store/carsales-car-listings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/x4WW9CeKgMFtRwalQ/builds/xCbgMGcxJhJt7YgyG/openapi.json
