# Carsales.com.au Scraper (`unfenced-group/carsales-scraper`) Actor

Extract car listings from carsales.com.au with 14 search filters including colour, cylinders, odometer range, postcode radius and sort order. 40+ fields per listing. $0.89/1k.

- **URL**: https://apify.com/unfenced-group/carsales-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Scraper

![Carsales.com.au Scraper](https://api.apify.com/v2/key-value-stores/lJlifu6C8YQfZMPKE/records/carsales-scraper)

![Banner](https://i.imgur.com/EDYpQR4.png)

Extract structured car listings from [carsales.com.au](https://www.carsales.com.au/) — Australia's largest automotive marketplace with 200,000+ active listings. Filter by make, model, state, condition, colour, cylinders, odometer range, postcode radius, sort order, and more. No API key required.

---

### Why this scraper?

#### 🔍 The most filters of any carsales scraper
Build your search with 14 filter parameters: make, model, state, condition (new/used/demo), body style, fuel type, transmission, colour, cylinders, doors, price range, year range, odometer range, and postcode + radius. Or paste any carsales.com.au URL directly.

#### 🏷️ Dealer and private seller listings
Scrape dealer inventory, private seller listings, or both. Every result includes seller type and state. Enable `fetchDetails` for dealer phone, stock number, full description, features list, ANCAP rating, and registration details.

#### 📋 40+ fields per listing
Every record includes make, model, year, badge, body style, fuel type, transmission, engine string (e.g. `4cyl 2.8L Diesel`), drivetrain, colour, odometer, formatted price, image count, video count, and up to 20 photo URLs.

#### 🔢 Sort order control
Return listings sorted by: featured, price low-to-high, price high-to-low, newest year, oldest year, lowest odometer, or most recently listed. No other carsales scraper on Apify exposes sort order as an input.

#### 🔁 Repost deduplication
A built-in 90-day deduplication cache detects listings already scraped. Enable `skipReposts` to receive only new listings per run — ideal for daily lead-generation pipelines.

#### 💰 Cheapest price
At **$0.89 per 1,000 listings**, this actor is cheaper than every competitor while delivering more fields and more filters.

---

### Filter coverage

| Filter | This actor | abotapi | azzouzana | memo23 |
|---|:-:|:-:|:-:|:-:|
| Condition (new / used / demo) | ✅ | ✅ | ❌ | ❌ |
| Make + Model | ✅ | ✅ | ❌ | ❌ |
| State | ✅ | ✅ | ❌ | ❌ |
| Body style | ✅ | ✅ | ❌ | ❌ |
| Fuel type | ✅ | ✅ | ❌ | ❌ |
| Transmission | ✅ | ✅ | ❌ | ❌ |
| Colour | ✅ | ✅ | ❌ | ❌ |
| Cylinders | ✅ | ✅ | ❌ | ❌ |
| Doors | ✅ | ✅ | ❌ | ❌ |
| Price range | ✅ | ✅ | ❌ | ❌ |
| Year range | ✅ | ✅ | ❌ | ❌ |
| Odometer range | ✅ | ✅ | ❌ | ❌ |
| Postcode + radius | ✅ | ✅ | ❌ | ❌ |
| Sort order | ✅ | ❌ | ❌ | ❌ |
| Paste any search URL | ✅ | ✅ | ✅ | ✅ |
| 90-day repost deduplication | ✅ | ❌ | ❌ | ❌ |
| Price per 1,000 listings | **$0.89** | $1.00 | $1.00 | $1.20 |

---

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `[]` | Paste one or more carsales.com.au search URLs. Overrides all filter fields below. |
| `condition` | string | `all` | `all`, `used`, `new`, or `demo` |
| `make` | string | — | Car make/brand (e.g. `Toyota`, `BMW`, `Ford`) |
| `model` | string | — | Car model (e.g. `Hilux`, `Camry`). Requires `make`. |
| `state` | string | All | `NSW`, `VIC`, `QLD`, `SA`, `WA`, `TAS`, `ACT`, `NT` |
| `bodyStyle` | string | All | `SUV`, `Sedan`, `Hatchback`, `Ute`, `Van`, `Wagon`, `Coupe`, `Convertible` |
| `fuelType` | string | All | `Petrol`, `Diesel`, `Hybrid`, `Electric`, `Plug-in Hybrid`, `LPG` |
| `transmission` | string | All | `Automatic` or `Manual` |
| `colour` | string | All | `Black`, `White`, `Silver`, `Grey`, `Blue`, `Red`, `Green`, etc. |
| `cylinders` | integer | Any | `3`, `4`, `6`, `8`, `10`, or `12` cylinders |
| `doors` | integer | Any | `2`, `3`, `4`, or `5` doors |
| `sellerType` | string | `all` | `all`, `dealer`, or `private` |
| `minPrice` | integer | — | Minimum price in AUD |
| `maxPrice` | integer | — | Maximum price in AUD |
| `minYear` | integer | — | Oldest model year |
| `maxYear` | integer | — | Newest model year |
| `minOdometer` | integer | — | Minimum odometer in kilometres |
| `maxOdometer` | integer | — | Maximum odometer in kilometres |
| `postcode` | string | — | 4-digit Australian postcode to search near |
| `radius` | integer | — | Search radius in kilometres around the postcode |
| `sortBy` | string | `featured` | `featured`, `price-asc`, `price-desc`, `year-desc`, `year-asc`, `odometer-asc`, `newest` |
| `maxResults` | integer | `100` | Maximum listings to return |
| `fetchDetails` | boolean | `false` | Fetch full description, features list, registration details, and dealer phone |
| `skipReposts` | boolean | `false` | Skip listings seen in previous runs (daily-feed mode) |
| `requestDelayMs` | integer | `1500` | Minimum delay between requests (ms) |

---

### Output schema

#### Always present

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique listing identifier (networkId) |
| `url` | string | Full URL on carsales.com.au |
| `title` | string | Listing title (year + make + model + badge) |
| `make` | string | Vehicle make/brand |
| `model` | string | Vehicle model |
| `year` | integer | Model year |
| `badge` | string | Trim/badge level (e.g. SR5, M Sport) — null if not specified |
| `condition` | string | `Used`, `New`, or `Demo` |
| `bodyStyle` | string | Body style (Sedan, SUV, Ute, etc.) |
| `fuelType` | string | Fuel type |
| `transmission` | string | `Automatic` or `Manual` |
| `engine` | string | Engine summary string (e.g. `4cyl 2.8L Diesel`) — null if not specified |
| `engineCapacity` | string | Engine displacement (e.g. `2.8L`) — null if not specified |
| `cylinders` | integer | Number of cylinders — null if not specified |
| `drivetrain` | string | Drive type (FWD, RWD, AWD, 4WD) — null if not specified |
| `doors` | integer | Number of doors — null if not specified |
| `seats` | integer | Seating capacity — null if not specified |
| `colour` | string | Exterior colour — null if not specified |
| `odometer` | integer | Odometer in kilometres — null if not specified |
| `odometerDisplay` | string | Formatted odometer (e.g. `68,200 km`) |
| `price` | number | Listing price in AUD — null if price on application |
| `priceDisplay` | string | Formatted price (e.g. `A$62,990`) |
| `currency` | string | Always `AUD` |
| `priceType` | string | `EGC` (excl. govt. charges) or `Drive Away` — null if not shown |
| `sellerType` | string | `private` or `dealer` |
| `dealerName` | string | Dealer name — present for promoted listings only, otherwise null |
| `state` | string | Australian state (e.g. `VIC`) |
| `location` | string | Location text as shown on the listing |
| `badges` | array | Badge tags on the listing (e.g. `["Dealer used"]`) |
| `images` | array | Up to 20 photo URLs |
| `imageCount` | integer | Total number of photos in the listing |
| `videoCount` | integer | Number of videos attached to the listing |
| `threeSixtyCount` | integer | Number of 360-degree views |
| `publishDate` | string | Date listed (AEST, YYYY-MM-DD) |
| `publishDateISO` | string | Date listed as ISO 8601 timestamp |
| `isRepost` | boolean | True if seen in a previous run |
| `originalPublishDate` | string | Date first scraped — null if not a repost |
| `originalUrl` | string | Original URL — null if not a repost |
| `contentHash` | string | 16-character MD5 hash of the listing ID |
| `source` | string | Always `carsales.com.au` |
| `scrapedAt` | string | ISO 8601 scrape timestamp |

#### With `fetchDetails: true`

| Field | Type | Description |
|---|---|---|
| `descriptionText` | string | Full seller description as plain text |
| `descriptionMarkdown` | string | Seller description formatted as Markdown |
| `colour` | string | Exterior colour (more reliably present than card-level) |
| `doors` | integer | Number of doors |
| `seats` | integer | Seating capacity |
| `drivetrain` | string | Drive type (FWD, RWD, AWD, 4WD) |
| `stockNumber` | string | Dealer stock number — null for private sellers |
| `sellerPhone` | string | Dealer contact phone — null for private sellers |
| `registrationExpiry` | string | Registration expiry (e.g. `July 2026`) |
| `registrationPlate` | string | Registration plate number |
| `features` | array | Key highlight features (e.g. `["Apple CarPlay", "Heated seats"]`) |

#### Sample JSON record

```json
{
  "id": "OAG-AD-25820964",
  "url": "https://www.carsales.com.au/cars/details/2025-ford-everest-wildtrak-auto/OAG-AD-25820964/",
  "title": "2025 Ford Everest",
  "make": "Ford",
  "model": "Everest",
  "year": 2025,
  "badge": "Wildtrak Auto FullTime 4WD DR MY25.25",
  "condition": "Used",
  "bodyStyle": "SUV",
  "fuelType": "Diesel",
  "transmission": "Automatic",
  "engine": "6cyl 3.0L T Diesel",
  "engineCapacity": "3.0L",
  "cylinders": 6,
  "drivetrain": "4WD",
  "doors": 5,
  "seats": 7,
  "colour": "Meteor Grey",
  "odometer": 22480,
  "odometerDisplay": "22,480 km",
  "price": 75888,
  "priceDisplay": "$75,888",
  "currency": "AUD",
  "priceType": null,
  "sellerType": "dealer",
  "dealerName": null,
  "state": "VIC",
  "location": "VIC",
  "badges": ["Dealer used"],
  "images": [
    "https://carsales.pxcrush.net/carsales/car/dealer/abc123.jpg"
  ],
  "imageCount": 34,
  "videoCount": 0,
  "threeSixtyCount": 0,
  "publishDate": "2025-02-07",
  "publishDateISO": "2025-02-07T06:00:20.000Z",
  "isRepost": false,
  "originalPublishDate": null,
  "originalUrl": null,
  "descriptionText": "Introducing the 2025 Ford Everest Wildtrak, an exceptional SUV designed for large families and adventure seekers...",
  "descriptionMarkdown": "Introducing the 2025 Ford Everest Wildtrak, an exceptional SUV designed for large families and adventure seekers...",
  "sellerPhone": "(03) 7043 8347",
  "stockNumber": "1163",
  "registrationExpiry": "10 months/April 2027",
  "registrationPlate": "DNT863",
  "features": ["Apple CarPlay and Android Auto", "360 degree camera", "AEB"],
  "contentHash": "5d93785239a733c9",
  "source": "carsales.com.au",
  "scrapedAt": "2026-06-04T09:55:27.218Z"
}
````

***

### Examples

**Search for used Toyota Hilux in Queensland, sorted by price:**

```json
{
  "condition": "used",
  "make": "Toyota",
  "model": "Hilux",
  "state": "QLD",
  "sellerType": "dealer",
  "sortBy": "price-asc",
  "maxResults": 200
}
```

**Electric vehicles under $80,000, newest models first:**

```json
{
  "fuelType": "Electric",
  "maxPrice": 80000,
  "minYear": 2022,
  "sortBy": "year-desc",
  "maxResults": 500,
  "fetchDetails": true
}
```

**Low-km automatics near a postcode:**

```json
{
  "transmission": "Automatic",
  "maxOdometer": 30000,
  "postcode": "2000",
  "radius": 50,
  "sortBy": "odometer-asc",
  "maxResults": 100
}
```

**Paste your own search URL from the browser:**

```json
{
  "startUrls": [
    { "url": "https://www.carsales.com.au/cars/?q=%28And.Service.Carsales._.Category.Cars._.Make.BMW._.State.VIC.%29" }
  ],
  "maxResults": 300,
  "fetchDetails": true
}
```

**Daily feed — new listings only (schedule this run daily):**

```json
{
  "make": "Toyota",
  "skipReposts": true,
  "maxResults": 1000
}
```

***

### 💰 Pricing

**$0.89 per 1,000 listings** — cheaper than every other carsales scraper on Apify.
You only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.

| Results | Cost |
|---------|------|
| 100 | ~$0.09 |
| 1,000 | ~$0.89 |
| 10,000 | ~$8.90 |
| 100,000 | ~$89.00 |

> Flat-rate alternatives typically charge $29–$99/month regardless of usage.

***

### Performance

| Run size | Estimated time |
|---|---|
| 100 listings | ~1 minute |
| 1,000 listings | ~8 minutes |
| 10,000 listings | ~70 minutes |
| 50,000 listings | ~6 hours |

***

### Known limitations

- Suburb and postcode are not exposed by carsales in their page data — only state-level location is available
- Login-protected listings (dealer inquiry forms) are not accessible
- Photo URLs may expire — download images promptly for permanent storage
- `fetchDetails` adds one request per listing; disable for large bulk runs

***

### Technical details

- **Source:** carsales.com.au — Australia's largest car marketplace
- **Memory:** 512 MB
- **Repost storage:** KeyValueStore `carsales-scraper-dedup`, 90-day TTL
- **Retry:** Automatic retry on network errors, exponential backoff, 3 attempts per request

***

### Additional services

Need a custom actor, additional filters, scheduled runs, or integration support?
Send an email to <info@unfencedgroup.nl> — we build on request.

***

*Part of the [Unfenced Group](https://apify.com/unfenced-group) scraper portfolio — 100+ markets covered.*
*Built by [unfenced-group](https://apify.com/unfenced-group) · Issues? Open a ticket or send a message.*

# Actor input Schema

## `startUrls` (type: `array`):

One or more carsales.com.au search URLs. Paste the URL from your browser after applying all filters on the site. If provided, all filter fields below are ignored.

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

Filter by vehicle condition.

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

Car make/brand to filter by (e.g. Toyota, BMW, Ford). Leave empty for all makes.

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

Car model to filter by (e.g. Hilux, Camry). Requires Make to be set.

## `state` (type: `string`):

Australian state or territory to filter by.

## `bodyStyle` (type: `string`):

Vehicle body style to filter by.

## `fuelType` (type: `string`):

Fuel type to filter by.

## `transmission` (type: `string`):

Transmission type to filter by.

## `colour` (type: `string`):

Exterior colour to filter by.

## `cylinders` (type: `string`):

Number of engine cylinders to filter by.

## `doors` (type: `string`):

Number of doors to filter by.

## `sellerType` (type: `string`):

Filter by seller type.

## `minPrice` (type: `integer`):

Minimum listing price in Australian dollars. Leave blank for no minimum.

## `maxPrice` (type: `integer`):

Maximum listing price in Australian dollars. Leave blank for no maximum.

## `minYear` (type: `integer`):

Oldest model year to include. Leave blank for no minimum.

## `maxYear` (type: `integer`):

Newest model year to include. Leave blank for no maximum.

## `minOdometer` (type: `integer`):

Minimum odometer reading in kilometres. Leave blank for no minimum.

## `maxOdometer` (type: `integer`):

Maximum odometer reading in kilometres. Leave blank for no maximum.

## `postcode` (type: `string`):

4-digit Australian postcode to search near. Use together with Radius.

## `radius` (type: `integer`):

Search radius in kilometres around the postcode. Requires Postcode to be set.

## `sortBy` (type: `string`):

Order in which to return listings.

## `maxResults` (type: `integer`):

Maximum number of listings to return. Each listing counts as one result for billing.

## `fetchDetails` (type: `boolean`):

Fetch full description, features list, VIN, ANCAP rating, and dealer phone from each listing's detail page. Slower and uses more proxy bandwidth.

## `skipReposts` (type: `boolean`):

Skip listings already seen in previous runs. Uses a 90-day deduplication cache. Ideal for daily scheduled runs.

## `requestDelayMs` (type: `integer`):

Minimum delay between page requests in milliseconds. Increase to reduce load on the server.

## Actor input object example

```json
{
  "startUrls": [],
  "condition": "all",
  "make": "",
  "model": "",
  "state": "",
  "bodyStyle": "",
  "fuelType": "",
  "transmission": "",
  "colour": "",
  "cylinders": "0",
  "doors": "0",
  "sellerType": "all",
  "postcode": "",
  "sortBy": "featured",
  "maxResults": 5,
  "fetchDetails": false,
  "skipReposts": false,
  "requestDelayMs": 1500
}
```

# Actor output Schema

## `results` (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 = {
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/carsales-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 = { "maxResults": 5 }

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

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

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

```

## CLI example

```bash
echo '{
  "maxResults": 5
}' |
apify call unfenced-group/carsales-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unfenced-group/carsales-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Carsales.com.au Scraper",
        "description": "Extract car listings from carsales.com.au with 14 search filters including colour, cylinders, odometer range, postcode radius and sort order. 40+ fields per listing. $0.89/1k.",
        "version": "0.0",
        "x-build-id": "fT7VRPICBxHqfhga8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~carsales-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-carsales-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/unfenced-group~carsales-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-carsales-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/unfenced-group~carsales-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-carsales-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "One or more carsales.com.au search URLs. Paste the URL from your browser after applying all filters on the site. If provided, all filter fields below are ignored.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "condition": {
                        "title": "Vehicle condition",
                        "enum": [
                            "all",
                            "used",
                            "new",
                            "demo"
                        ],
                        "type": "string",
                        "description": "Filter by vehicle condition.",
                        "default": "all"
                    },
                    "make": {
                        "title": "Car brand (make)",
                        "type": "string",
                        "description": "Car make/brand to filter by (e.g. Toyota, BMW, Ford). Leave empty for all makes.",
                        "default": ""
                    },
                    "model": {
                        "title": "Car model",
                        "type": "string",
                        "description": "Car model to filter by (e.g. Hilux, Camry). Requires Make to be set.",
                        "default": ""
                    },
                    "state": {
                        "title": "State",
                        "enum": [
                            "",
                            "NSW",
                            "VIC",
                            "QLD",
                            "SA",
                            "WA",
                            "TAS",
                            "ACT",
                            "NT"
                        ],
                        "type": "string",
                        "description": "Australian state or territory to filter by.",
                        "default": ""
                    },
                    "bodyStyle": {
                        "title": "Body style",
                        "enum": [
                            "",
                            "SUV",
                            "Sedan",
                            "Hatchback",
                            "Ute",
                            "Van",
                            "Wagon",
                            "Coupe",
                            "Convertible",
                            "People Mover"
                        ],
                        "type": "string",
                        "description": "Vehicle body style to filter by.",
                        "default": ""
                    },
                    "fuelType": {
                        "title": "Fuel type",
                        "enum": [
                            "",
                            "Petrol",
                            "Diesel",
                            "Hybrid",
                            "Electric",
                            "Plug-in Hybrid",
                            "LPG"
                        ],
                        "type": "string",
                        "description": "Fuel type to filter by.",
                        "default": ""
                    },
                    "transmission": {
                        "title": "Transmission type",
                        "enum": [
                            "",
                            "Automatic",
                            "Manual"
                        ],
                        "type": "string",
                        "description": "Transmission type to filter by.",
                        "default": ""
                    },
                    "colour": {
                        "title": "Colour",
                        "enum": [
                            "",
                            "Black",
                            "White",
                            "Silver",
                            "Grey",
                            "Blue",
                            "Red",
                            "Green",
                            "Brown",
                            "Orange",
                            "Yellow",
                            "Gold",
                            "Purple"
                        ],
                        "type": "string",
                        "description": "Exterior colour to filter by.",
                        "default": ""
                    },
                    "cylinders": {
                        "title": "Cylinders",
                        "enum": [
                            "0",
                            "3",
                            "4",
                            "6",
                            "8",
                            "10",
                            "12"
                        ],
                        "type": "string",
                        "description": "Number of engine cylinders to filter by.",
                        "default": "0"
                    },
                    "doors": {
                        "title": "Doors",
                        "enum": [
                            "0",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "type": "string",
                        "description": "Number of doors to filter by.",
                        "default": "0"
                    },
                    "sellerType": {
                        "title": "Seller type",
                        "enum": [
                            "all",
                            "dealer",
                            "private"
                        ],
                        "type": "string",
                        "description": "Filter by seller type.",
                        "default": "all"
                    },
                    "minPrice": {
                        "title": "Min price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum listing price in Australian dollars. Leave blank for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum listing price in Australian dollars. Leave blank for no maximum."
                    },
                    "minYear": {
                        "title": "Min year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Oldest model year to include. Leave blank for no minimum."
                    },
                    "maxYear": {
                        "title": "Max year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Newest model year to include. Leave blank for no maximum."
                    },
                    "minOdometer": {
                        "title": "Min odometer (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum odometer reading in kilometres. Leave blank for no minimum."
                    },
                    "maxOdometer": {
                        "title": "Max odometer (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum odometer reading in kilometres. Leave blank for no maximum."
                    },
                    "postcode": {
                        "title": "Postcode",
                        "type": "string",
                        "description": "4-digit Australian postcode to search near. Use together with Radius.",
                        "default": ""
                    },
                    "radius": {
                        "title": "Search radius (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Search radius in kilometres around the postcode. Requires Postcode to be set."
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "featured",
                            "price-asc",
                            "price-desc",
                            "year-desc",
                            "year-asc",
                            "odometer-asc",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Order in which to return listings.",
                        "default": "featured"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to return. Each listing counts as one result for billing.",
                        "default": 100
                    },
                    "fetchDetails": {
                        "title": "Fetch full listing details",
                        "type": "boolean",
                        "description": "Fetch full description, features list, VIN, ANCAP rating, and dealer phone from each listing's detail page. Slower and uses more proxy bandwidth.",
                        "default": false
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Skip listings already seen in previous runs. Uses a 90-day deduplication cache. Ideal for daily scheduled runs.",
                        "default": false
                    },
                    "requestDelayMs": {
                        "title": "Request delay (ms)",
                        "minimum": 500,
                        "type": "integer",
                        "description": "Minimum delay between page requests in milliseconds. Increase to reduce load on the server.",
                        "default": 1500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
