# 🚘Carsales.com.au Car Data Scraper🇦🇺 (`mrdoe/carsales-com-au-scraper`) Actor

Scrape new & used car listings from carsales.com.au — Australia's biggest car marketplace. Get price, year, make, model, trim, mileage, condition & photos in a clean, structured dataset. Fast, reliable, no coding required.

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

## Pricing

from $0.70 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🚗 Carsales.com.au Car Data Scraper

**Scrape new and used car listings from carsales.com.au — Australia's biggest car marketplace — in seconds, no coding required.**

A carsales scraper API alternative and car market data API in one: give it a make and model (or leave them blank) and this actor pulls a structured vehicle listings dataset straight from carsales.com.au — price, year, trim, mileage, condition, photos, and more. Built for used car data extraction, competitor price monitoring, and car dealer lead generation, without writing a single line of scraping code.

### 🇦🇺 Part of the Australia Car Data Scraper collection

Use this actor if you only need carsales.com.au data. For multi-site coverage, use one of the collective actors instead:

- **[All Car Data Scraper Australia](https://apify.com/jordan-byte/all-car-data-scraper-australia)** — searches carsales.com.au plus 5 more major Australian car sites (new + used) in one run.
- **[Used Car Data Scraper Australia](https://apify.com/jordan-byte/used-car-data-scraper-australia)** — same 6 sites, used/second-hand listings only.

Or scrape another single Australian site directly:

- [AutoTrader.com.au Car Data Scraper](https://apify.com/jordan-byte/autotrader-com-au-scraper)
- [CarsGuide.com.au Car Data Scraper](https://apify.com/jordan-byte/carsguide-com-au-scraper)
- [Pickles.com.au Car Data Scraper](https://apify.com/jordan-byte/pickles-com-au-scraper)
- [Drive.com.au Car Data Scraper](https://apify.com/jordan-byte/drive-com-au-scraper)
- [JustCars.com.au Car Data Scraper](https://apify.com/jordan-byte/justcars-com-au-scraper)

### 🧑‍💼 Who uses this

- **Car dealers** using this as a competitor price monitoring tool across carsales.com.au for their region or segment
- **Market researchers** building a vehicle listings dataset for Australia to track used car price trends over time
- **Classified sites & dropship platforms** aggregating real listings instead of manual data entry
- **Investors & analysts** studying vehicle depreciation by make, model, and year
- **Developers** feeding carsales.com.au data into their own app, CRM, or dashboard

### ✨ Why use this instead of browsing manually

- 🔎 **Any make, any model, or none at all** — leave make/model blank to search across the whole site instead of one vehicle line (default `maxItems` is 20 per run — raise or set it to `0` for deeper coverage).
- 🆕 **New and used, distinctly filterable** — carsales.com.au has real separate search views for new vs. used inventory, not a guess-and-filter approach, so results are exact.
- 📄 **Real depth** — set "Max results" to `0` and it pages through as much real inventory as the query actually has (up to a 5,000-listing safety ceiling), not just a first-page sample — useful for building a full Australian car listings dataset rather than a spot check.
- 🖼️ **Photos included** — every listing's main image comes through in the output.
- 🛡️ **Built to survive anti-bot walls** — carsales.com.au blocks non-proxied traffic aggressively; proxy handling is built in.

### 💰 Pricing

This actor makes lightweight HTTP requests only — no browser is launched — so it runs on comparatively few Apify compute units per listing. See the **Pricing** tab on this actor's Store page for current rates before running at scale.

### ⚙️ Input

Nothing is required except a proxy.

| Field | Type | Description |
|---|---|---|
| `make` | string | Optional. e.g. `"Ford"`, `"Toyota"`. Leave blank to search every make. |
| `model` | string | Optional. e.g. `"F-150"`, `"Corolla"`. Leave blank to search all models of the make. |
| `condition` | string | `"any"` (default), `"new"`, or `"used"`. |
| `maxItems` | integer | Stop once this many listings are collected. Default `20`. Set to `0` for "no limit". |
| `proxyConfiguration` | object | Required. Defaults to an Australian residential proxy. |

### 📦 Output

One row per listing:

```json
{
  "url": "https://www.carsales.com.au/cars/details/2024-ford-f-150-lariat-swb-auto-fulltime-4wd-dr-my23/OAG-AD-26176768/",
  "title": "2024 Ford F-150 Lariat SWB Auto FullTime 4WD DR MY23",
  "image": "https://carsales.pxcrush.net/carsales/cars/dealer/6ejeyc6n01t7qg136ojuv4t6m.jpg",
  "make": "Ford",
  "model": "F-150",
  "price": 94990,
  "vin": null,
  "location": null,
  "sellerName": null,
  "sellerPhone": null,
  "currency": "AUD",
  "trim": "Lariat SWB Auto FullTime 4WD DR MY23",
  "year": 2024,
  "condition": "used",
  "mileage": 74826,
  "exteriorColor": null,
  "listedAt": null
}
```

You can download the dataset in JSON, CSV, Excel, HTML, or several other formats from the Console, or pull it via the API.

### 📝 Notes

- `vin`, `location`, `sellerName`, `sellerPhone`, and `exteriorColor` are `null` in this version - they live on the individual listing page rather than the search results, and aren't pulled through yet.
- A residential Australian proxy is required, not optional - the site blocks non-proxied traffic aggressively.

### ❓ FAQ

**Is this actor affiliated with carsales.com.au?**
No. This is an independent, unofficial scraper built on Apify — it isn't operated by, endorsed by, or affiliated with carsales.com.au in any way.

**Do I need to know how to code?**
No. Fill in the input form (make, model, condition), click "Start", and download the results as JSON, CSV, or Excel from the run's Dataset tab.

**Is scraping carsales.com.au data legal?**
This actor only collects publicly visible listing data. You're responsible for how you use the output — check carsales.com.au's terms of service and applicable law for your specific use case.

**How much does this cost to run?**
This actor doesn't use a browser, so it consumes fewer compute units than most scrapers on a per-listing basis. See the Pricing tab on the Store page for exact current rates.

**How is this different from the multi-site actor?**
This actor only queries carsales.com.au. If you want the same kind of data alongside 5 other Australian car sites in a single run, use [All Car Data Scraper Australia](https://apify.com/jordan-byte/all-car-data-scraper-australia) instead.

**Can I schedule this to run automatically?**
Yes — use Apify's built-in Scheduler to run this actor on a recurring basis (hourly, daily, weekly) with no code, so your dataset stays current without you starting it manually.

**How often is the data updated?**
Every run pulls live data at the moment it executes — nothing is pre-scraped or served from a stale cache.

**Can I get VIN, seller name, or phone number?**
Not in the current version — those fields live on the individual listing page rather than the search results, and aren't pulled through yet.

# Actor input Schema

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

Optional. e.g. "Ford", "Toyota". Leave blank to search every make.

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

Optional. e.g. "F-150", "Corolla". Leave blank to search all models of the given make.

## `condition` (type: `string`):

"Both" searches new and used listings together. "New only"/"Used only" scope the search to just that inventory - carsales.com.au has real, separate search views for each, so this is exact rather than a post-filter.

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

Stop once this many listings have been collected. Set to 0 for "no limit" - pages through as much real inventory as the query actually has, up to a 5,000-item safety ceiling.

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

Required. carsales.com.au blocks non-proxied traffic aggressively at any real volume.

## Actor input object example

```json
{
  "make": "Ford",
  "model": "F-150",
  "condition": "any",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}
```

# Actor output Schema

## `listings` (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 = {
    "make": "Ford",
    "model": "F-150"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/carsales-com-au-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 = {
    "make": "Ford",
    "model": "F-150",
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/carsales-com-au-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 '{
  "make": "Ford",
  "model": "F-150"
}' |
apify call mrdoe/carsales-com-au-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/carsales-com-au-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/m6s35P0c4rwFXOp8J/builds/ypRK1ty2xTASPn6bD/openapi.json
