# Drive.com.au Scraper: Car Listings, VIN & Dealers (`memo23/drive-com-au-scraper`) Actor

Scrape every new, used and demo car on Drive.com.au, with no page cap. Paste search URLs or filter by make, model, state, price, year, odometer, fuel and body type. Add VIN, plate, specs, price rating and dealer address, licence and email as an option. JSON or CSV.

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

## Pricing

from $1.00 / 1,000 car listings

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

## Drive.com.au Car Listings Scraper

**Every car for sale on Drive.com.au, as clean rows with VIN, specs, price and dealer.**
Paste a Drive.com.au search URL or pick filters, and get the full result set: all 86,000+ new, used and demo dealer listings when you leave the filters empty, with no 20-page cap.

### Why Use This Scraper?

- **The whole result set, not the first pages.** A search for used Toyotas in Sydney returns all 1,319 listings, the same count the website shows.
- **Every row has the essentials:** make, model, badge, year, price, odometer, condition, body, transmission, fuel, colour, region, dealer name and suburb, and photos.
- **Optional vehicle details add-on:** VIN and registration plate (97% and 81% of used cars in our test set), engine size, power, torque, key features and seller comments.
- **Drive's own price signals in the add-on:** the price rating (e.g. FAIR, POOR), the price with and without government charges, and the car's original new price.
- **Dealer leads in the add-on:** street address, licence number, and email or website where the dealer published one.
- **Paste URLs straight from the site.** Condition, state, region, make and model are read from the search URL.
- **Fast and cheap to run.** No browser and no proxy: about 2,000 listings a minute.

### Overview

Drive.com.au is one of Australia's main car marketplaces and lists only cars from dealers. This actor reads the same listing data that powers the site's cars-for-sale pages and writes one dataset row per car.

It is built for dealers tracking competitor stock and pricing, analysts studying the Australian new and used car market, and lead-generation teams that need dealer details next to each car. Each row is a flat car record with a nested `dealer` object and an `images` array. Turn on `includeDetails` to add VIN, specs, price signals and dealer contact fields to every row.

### Supported Inputs

#### URL types

| URL type | Example |
|---|---|
| Search, whole country | `https://www.drive.com.au/cars-for-sale/search/used/` |
| Search by state | `https://www.drive.com.au/cars-for-sale/search/used/vic/all/mazda/` |
| Search by region | `https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/` |
| Search by model | `https://www.drive.com.au/cars-for-sale/search/nsw/sydney-nsw/toyota/corolla/` |
| Single listing | `https://www.drive.com.au/cars-for-sale/car/970417814/` |

#### Copy-pasteable startUrls

```json
{
  "startUrls": [
    { "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/" },
    { "url": "https://www.drive.com.au/cars-for-sale/car/970417814/" }
  ]
}
```

#### Filter mode

Leave `startUrls` empty and set any of `make`, `model`, `stockType`, `state`, price, year and odometer ranges, `bodyType`, `fuelType`, `transmission` or `dealerId`. With URLs, these filters narrow every URL search further.

#### Unsupported inputs

- Carsales.com.au, CarsGuide or other sites (for Carsales use [Carsales Scraper](https://apify.com/memo23/carsales-cheerio)).
- Private-seller cars: Drive.com.au lists dealer stock only.
- Filters kept in the part of a URL after `#` (sort order, for example) are ignored. Use the input filters for price, year, odometer, fuel and transmission.

### Use Cases

| Who | What they do with it |
|---|---|
| Car dealers | Track competitor stock, prices and days on market by region |
| Market analysts | Price and supply studies by make, model, year and state |
| Lead generation | Dealer lists with address, licence number and email |
| Valuation and finance | Comparable listings with VIN, odometer and Drive's price rating |
| Data and AI teams | A daily feed of the Australian dealer car market |

### How It Works

1. You give search URLs, listing URLs or filters.
2. The actor turns each search into a query against Drive.com.au's listing data and asks how many cars match.
3. It reads the results 100 cars at a time until every match is saved or your `maxItems` limit is reached.
4. Each car is saved as one row with specs, price signals, images and the selling dealer.
5. Download the dataset as JSON, CSV or Excel, or read it through the Apify API.

### Input Configuration

#### Input fields

| Field | Type | Description | Default |
|---|---|---|---|
| `startUrls` | array | Drive.com.au search or listing URLs | none (an example is prefilled) |
| `make` | string | Make slug, e.g. `toyota`. Comma-separate several | none |
| `model` | string | Model slug, e.g. `corolla`. Comma-separate several | none |
| `stockType` | select | `used`, `new` or `demo` | all |
| `state` | select | `NSW`, `VIC`, `QLD`, `WA`, `SA`, `TAS`, `ACT`, `NT` | all |
| `minPrice` / `maxPrice` | integer | Price range in AUD | none |
| `minYear` / `maxYear` | integer | Build year range | none |
| `minOdometer` / `maxOdometer` | integer | Kilometre range | none |
| `bodyType` | select | Wagon (includes SUVs), Hatchback, Sedan, Utility and more | all |
| `fuelType` | select | `petrol`, `diesel`, `electric`, `lpg` | all |
| `transmission` | select | `automatic`, `manual`, `cvt` | all |
| `dealerId` | integer | Only one dealer's stock (the `dealerId` output field) | none |
| `listingIds` | array | Listing IDs to fetch directly | none |
| `includeDetails` | boolean | Paid add-on: VIN, plate, specs, key features, comments, price rating, govt-charge prices, dealer address, email, website and licence | `false` |
| `maxItems` | integer | Stop after this many listings, `0` = no limit | `100` |
| `proxy` | object | Not needed; leave off | off |

#### Common scenarios

**Every used Toyota in Sydney:**

```json
{
  "startUrls": [{ "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/" }],
  "maxItems": 0
}
```

**Automatic petrol Mazda or Kia SUVs in Victoria, 2020 or newer, $20k to $30k:**

```json
{
  "make": "mazda, kia",
  "stockType": "used",
  "state": "VIC",
  "bodyType": "Wagon",
  "fuelType": "petrol",
  "transmission": "automatic",
  "minYear": 2020,
  "minPrice": 20000,
  "maxPrice": 30000,
  "includeDetails": true,
  "maxItems": 500
}
```

**The full Drive.com.au catalogue:**

```json
{ "maxItems": 0 }
```

A full catalogue run saves about 86,000 listings and takes about 45 minutes.

### Output Overview

One row per car. A base row covers the vehicle (make, model, badge, year, odometer, body, transmission, fuel, colour), the asking price, the location (state, region), the listing (URL, dates, images) and the selling dealer's name and suburb in a nested `dealer` object.

With `includeDetails` on, each row also gets the variant, VIN, plate, engine size, power, torque, key features, seller comments, Drive's price rating, the new price and the price with and without government charges, and the `dealer` object gains street address, email, website and licence number.

### Output Samples

A used car from the search URL `.../search/used/nsw/sydney-nsw/toyota/` with `includeDetails` on, shortened. Without the add-on, the fields from `variantDescription` to `priceRating` and the dealer's `address`, `email`, `website` and `licenseNumber` are left out:

```json
{
  "id": 970417602,
  "url": "https://www.drive.com.au/cars-for-sale/car/970417602/",
  "title": "2019 Toyota C-HR",
  "make": "Toyota",
  "model": "C-HR",
  "makeSlug": "toyota",
  "modelSlug": "c-hr",
  "badge": null,
  "variantDescription": "NGX50R Wagon 5dr S-CVT 7sp AWD 1.2T",
  "year": 2019,
  "price": 26990,
  "priceExcludingGovtCharges": 26990,
  "priceIncludingGovtCharges": 27800,
  "newPrice": 30990,
  "priceRating": "POOR",
  "odometer": 88286,
  "condition": "used",
  "bodyType": "Wagon",
  "bodyStyle": "Wagon",
  "transmission": "Constantly Variable Transmission",
  "fuelType": "Petrol - Premium ULP",
  "engineSizeCc": 1197,
  "powerKw": 85,
  "torqueNm": 185,
  "exteriorColour": "White",
  "vin": "JTNLY3FX201007775",
  "registrationPlate": "CW31AB",
  "keyFeatures": ["Airbags", "Auto braking", "Autonomous emergency braking", "Blind spot alert", "Collision warning"],
  "sellerComments": "YES! WE ARE OPEN 7 DAYS A WEEK ! ...",
  "ageYears": 7,
  "isWithinWarranty": false,
  "warrantyKm": null,
  "state": "NSW",
  "region": "Sydney NSW",
  "regionId": 2,
  "dealerId": 668,
  "dealer": {
    "id": 668,
    "name": "Castle Hill Toyota - Used Cars",
    "suburb": "Castle Hill",
    "postcode": 2154,
    "state": "NSW",
    "address": "2 Victoria Ave",
    "email": null,
    "website": null,
    "licenseNumber": null
  },
  "imageCount": 24,
  "thumbnail": "https://media.drive.com.au/obj/driveau/upload/vehicles/used/toyota/c-hr/2019/08b09dee-4ab1-541e-b5ee-efcd48750000",
  "images": ["https://media.drive.com.au/obj/driveau/upload/vehicles/used/toyota/c-hr/2019/08b09dee-4ab1-541e-b5ee-efcd48750000", "..."],
  "listedAt": "2026-09-29T18:31:05.000Z",
  "updatedAt": "2026-10-06T11:31:12.000Z",
  "scrapedAt": "2026-10-09T08:58:24.939Z"
}
```

### Key Output Fields

Fields marked \* need `includeDetails`.

**Vehicle:** `title`, `make`, `model`, `badge`, `year`, `bodyType`, `transmission`, `fuelType`, `exteriorColour`, `variantDescription`*, `bodyStyle`*, `engineSizeCc`*, `powerKw`*, `torqueNm`*, `keyFeatures`*, `ageYears`\*

**Identity:** `id`, `url`, `makeSlug`, `modelSlug`, `vin`*, `registrationPlate`*

**Price:** `price`, `priceExcludingGovtCharges`*, `priceIncludingGovtCharges`*, `newPrice`*, `priceRating`*

**Condition:** `condition` (used, new or demo), `odometer`, `isWithinWarranty`, `warrantyKm`*, `sellerComments`*

**Location:** `state`, `region`, `regionId`

**Dealer:** `dealerId`, `dealer.name`, `dealer.suburb`, `dealer.postcode`, `dealer.state`, `dealer.address`*, `dealer.email`*, `dealer.website`*, `dealer.licenseNumber`*

**Media and dates:** `thumbnail`, `images`, `imageCount`, `listedAt`, `updatedAt`, `scrapedAt`

### FAQ

**Which URLs can I paste?**
Any Drive.com.au `cars-for-sale/search/...` URL and any `cars-for-sale/car/<id>/` listing URL. Condition, state, region, make and model are taken from the URL path.

**Is there a page limit like on Carsales?**
No. Every listing that matches is returned. An empty search returns the whole catalogue of about 86,000 cars.

**How is it priced?**
You pay per listing saved. The vehicle details add-on (`includeDetails`) is a second, separate charge per listing, so you only pay for VIN, specs and dealer contacts when you need them. A search with no matches costs only the run start fee (half a cent at the default 512 MB).

**Does it include dealer phone numbers?**
No. Drive.com.au does not publish dealer phone numbers in its listing data. Every row has the dealer's name, suburb and postcode. With `includeDetails` you also get the street address and licence number, plus email (about a quarter of dealers) and website where the dealer published them.

**Why is a field null?**
Some detail fields are only filled when the dealer supplied them: in our test set the plate was missing on about 1 in 5 cars, the badge on about 1 in 12, and warranty kilometres on two thirds.

**Where are SUVs?**
Drive.com.au files SUVs under the body type `Wagon`.

**Are private sellers included?**
No. Drive.com.au lists cars from dealers only.

**Do I need a proxy?**
No. Leave the proxy setting off.

### Support

- For issues or feature requests, please use the Issues tab of this actor.
- If you need customization or have questions, contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or the whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>

### Explore More Scrapers

More Australian car marketplaces from the same author:

- [Carsales Scraper](https://apify.com/memo23/carsales-cheerio): Carsales.com.au, dealer and private listings, past the 440-car search cap
- [memo23's Apify profile](https://apify.com/memo23): car, real estate, jobs and marketplace scrapers for many countries

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/drive-com-au-scraper`).

**Purpose:** Australian dealer car listings from Drive.com.au with VIN, specs, price rating and dealer details, with no result cap.

**Minimal input:**

```json
{ "make": "toyota", "model": "corolla", "stockType": "used", "state": "NSW", "maxItems": 20 }
```

**Output:** one dataset row per car: id, url, title, make, model, badge, year, price, odometer, condition, bodyType, transmission, fuelType, exteriorColour, state, region, dealer {name, suburb, postcode, state}, images, listedAt. With `includeDetails: true` also: variantDescription, vin, registrationPlate, engineSizeCc, powerKw, torqueNm, keyFeatures, sellerComments, priceRating, newPrice, priceIncludingGovtCharges, priceExcludingGovtCharges, dealer {address, email, website, licenseNumber}.

**Behaviors an agent should know:**

- Always set `maxItems`. With no filters and `maxItems: 0` the run saves about 86,000 rows.
- `make` and `model` are URL slugs (`land-rover`, `cx-5`), comma-separated for several.
- `startUrls` and the filter fields combine: the filters narrow each URL search.
- SUVs are `bodyType: "Wagon"`. Dealer phone numbers are not available.
- Billing is per saved listing; `includeDetails` adds a second per-listing charge. Only set it when VIN, specs or dealer contacts are needed.
- A search with no matches saves nothing and ends with a status message.

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Drive.com.au, its owners or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available car listing data, with no authenticated endpoints, paid features, or content behind a Drive.com.au login. Users are responsible for ensuring their use complies with Drive.com.au's Terms of Service, applicable data-protection law (GDPR, CCPA, the Australian Privacy Act, etc.), and any contractual obligations of their own organization.

### SEO Keywords

drive.com.au scraper, drive scraper, drive car listings scraper, australian car listings scraper, used cars australia data, new car listings australia, car dealer data australia, car dealer leads australia, vin data australia, used car price data, car market data australia, car inventory scraper, dealer stock tracking, car price monitoring, automotive data scraper, cars for sale scraper, sydney used cars data, melbourne used cars data, toyota listings australia, carsales alternative scraper

# Actor input Schema

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

Search URLs (e.g. https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/) or listing URLs (e.g. https://www.drive.com.au/cars-for-sale/car/970417814/). Condition, state, region, make and model are read from the search URL. Leave empty to search with the filters below.

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

Make as it appears in Drive.com.au URLs, e.g. toyota, mazda, land-rover. Separate several with commas.

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

Model as it appears in Drive.com.au URLs, e.g. corolla, cx-5, hilux. Separate several with commas.

## `stockType` (type: `string`):

New, used or demo cars.

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

Australian state or territory.

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

Lowest price in Australian dollars.

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

Highest price in Australian dollars.

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

Oldest build year, e.g. 2018.

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

Newest build year.

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

Lowest kilometres driven.

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

Highest kilometres driven.

## `bodyType` (type: `string`):

Body type. SUVs are listed by Drive.com.au as Wagon.

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

Fuel type.

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

Automatic includes sports automatics and dual-clutch gearboxes.

## `dealerId` (type: `integer`):

Only listings from this dealer (the dealerId field in the output). Useful for tracking one dealer's stock.

## `listingIds` (type: `array`):

Drive.com.au listing IDs to fetch directly, e.g. 970417814.

## `includeDetails` (type: `boolean`):

Add VIN, registration plate, variant, engine size, power, torque, key features, seller comments, Drive's price rating, new price and the price with and without government charges, plus the dealer's street address, email, website and licence number. Billed as an extra 'vehicle details' event per listing. Off: each row still has make, model, year, price, odometer, condition, body, transmission, fuel, colour, location, dealer name and suburb, and photos.

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

Stop after this many listings. 0 = no limit (the full catalogue is about 86,000 listings).

## `proxy` (type: `object`):

Not needed: the data source answers without a proxy. Set one only if you have a reason to.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/"
    }
  ],
  "includeDetails": false,
  "maxItems": 100,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/"
        }
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/drive-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 = {
    "startUrls": [{ "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/" }],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/drive-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 '{
  "startUrls": [
    {
      "url": "https://www.drive.com.au/cars-for-sale/search/used/nsw/sydney-nsw/toyota/"
    }
  ],
  "maxItems": 100
}' |
apify call memo23/drive-com-au-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/drive-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/rAudLASfTpBU0khJP/builds/duGAMCqz90ntdrDAV/openapi.json
