# Easyauto123 \[Only $1💰] Scraper (`memo23/easyauto123-scraper`) Actor

💰$1 per 1000 results, No limits, unlimited extraction. Scrape easyauto123 used-car listings and detail pages. Get normalized vehicle data including price, drive-away price, VIN, rego, odometer, make/model/variant, fuel, transmission, body style, dealer and location details, features, and image URLs

- **URL**: https://apify.com/memo23/easyauto123-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Automation, Lead generation, Integrations
- **Stats:** 19 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## 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?

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

## easyauto123 Scraper

### How it works

This actor extracts used vehicle data from [easyauto123](https://easyauto123.com.au/buy/used-cars?limit=20). It supports both actor modes:

- `crawler` mode uses `CheerioCrawler` to request the search/list URL first, then it generates and requests each vehicle detail URL.
- `internal` mode uses the internal `Impit` handlers to fetch the same search and detail flow without going through the crawler queue.

The site is a Next.js app that returns `text/x-component` RSC payloads. The actor parses those payloads, resolves listing cards from the search page, enriches each result with the detail page payload, and returns a normalized dataset with pricing, vehicle, dealer, location, features, and media fields.

### Features

This actor offers the following features:

- **Search And Detail Support:** Accepts both search result URLs and direct vehicle detail URLs.
- **Two Execution Modes:** Supports both `crawler` and `internal` request flows.
- **RSC Payload Parsing:** Extracts data from Next.js `text/x-component` responses instead of relying on rendered HTML.
- **Detail Enrichment:** Search pages can automatically queue each matching vehicle detail request.
- **Rich Vehicle Output:** Returns normalized pricing, specs, registration, dealer, and media fields.
- **Proxy Support:** Built-in proxy support to improve reliability.
- **Customizable Configuration:** Adjust item limits, concurrency, retries, and request mode.

### How to Use

1. **Set Up:** Ensure you have an Apify account and access to the actor.
2. **Input Start URLs:** Specify one or more easyauto123 URLs to scrape, e.g.:
   - Search results: `https://easyauto123.com.au/buy/used-cars?limit=20`
   - Search results, later page: `https://easyauto123.com.au/buy/used-cars?page=5&limit=20`
   - Individual listing: `https://easyauto123.com.au/buy/used-cars/details/2022/SUBARU/XV/Hybrid-S/VIC/Melbourne/Brooklyn/Automatic/White/Hatchback-SUV-Hybrid/JF1GTEKL5NG160847`
3. **Configure Settings (Optional):**
   - Set `maxItems` to limit the number of vehicles to scrape
   - Adjust concurrency settings if needed
   - Configure proxy settings if required
   - Enable `includeListingDetails` if you want detail enrichment
4. **Run the Actor:** Start the actor and monitor its progress.
5. **Download Results:** Export the scraped data in your preferred format (JSON, CSV, etc.).

#### Supported URL Formats

The scraper supports the following URL formats:

1. **Search Results Pages**
   - Example: `https://easyauto123.com.au/buy/used-cars?limit=20`
   - Scrapes vehicles from the used-car listings page

2. **Paginated Search Results**
   - Example: `https://easyauto123.com.au/buy/used-cars?page=5&limit=20`
   - Starts scraping from the requested search page

3. **Individual Vehicle Listings**
   - Example: `https://easyauto123.com.au/buy/used-cars/details/2022/SUBARU/XV/Hybrid-S/VIC/Melbourne/Brooklyn/Automatic/White/Hatchback-SUV-Hybrid/JF1GTEKL5NG160847`
   - Scrapes comprehensive information from a single vehicle listing

### Input Data

Here's an example input for scraping vehicle listings from easyauto123:

```json
{
    "startUrls": [
        {
            "url": "https://easyauto123.com.au/buy/used-cars?limit=20"
        },
        {
            "url": "https://easyauto123.com.au/buy/used-cars?page=5&limit=20"
        },
        {
            "url": "https://easyauto123.com.au/buy/used-cars/details/2022/SUBARU/XV/Hybrid-S/VIC/Melbourne/Brooklyn/Automatic/White/Hatchback-SUV-Hybrid/JF1GTEKL5NG160847"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 30,
    "includeListingDetails": true
}
```

#### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | Array | Required | List of easyauto123 URLs to start scraping from |
| `maxItems` | Integer | 100 | Maximum number of items to scrape |
| `maxConcurrency` | Integer | 10 | Maximum concurrent requests |
| `minConcurrency` | Integer | 1 | Minimum concurrent requests |
| `maxRequestRetries` | Integer | 30 | Number of retries for failed requests |
| `includeListingDetails` | Boolean | false | Whether to request detail-page enrichment for each listing |

### Output Structure

The scraper returns data in a consistent JSON format for easyauto123 vehicle listings.

#### Sample output data

This sample uses the first object from `data.json`:

```json
{
    "id": "21dd6b7a-cf95-4772-9c4e-08de5c63e4ff",
    "listing_url": "https://easyauto123.com.au/buy/used-cars/details/2022/SUBARU/XV/Hybrid-S/VIC/Melbourne/Brooklyn/Automatic/White/Hatchback-SUV-Hybrid/JF1GTEKL5NG160847",
    "stock_no": "B23166",
    "description": "2022 SUBARU XV G5X MY22 HYBRID S HBK LIN 7SP 2.0I/12KW HYBRI",
    "vin": "JF1GTEKL5NG160847",
    "condition": "USED",
    "is_driveaway_pricing_model": 1,
    "advertised_price": 29883,
    "driveaway_price": 29883,
    "manu_year": 2022,
    "odometer": 77283,
    "rego": "1XC4MG",
    "rego_expiry": "2027-01-16",
    "variant": "Hybrid S",
    "series": "G5X",
    "colour_base": "White",
    "colour_body": "White",
    "colour_interior": "",
    "status_api": "IN-STOCK",
    "created_at_api": "Tue Mar 10 2026 20:07:03 GMT+0000 (Coordinated Universal Time)",
    "updated_at_api": "2026-03-10T20:07:06.450Z",
    "is_dealer_listing": true,
    "is_private_listing": false,
    "vehicle_transmission_type": "Automatic",
    "vehicle_fuel_type": "Hybrid",
    "vehicle_engine_size": "2",
    "vehicle_drive_type": "Four Wheel Drive",
    "vehicle_drive_type_abbreviated": "",
    "vehicle_seats": 5,
    "vehicle_safety_rating_ancap": 5,
    "vehicle_body_type": "Hatchback, SUV, Hybrid",
    "vehicle_body_type_group": "Hatchback",
    "vehicle_body_type_style": "SUV",
    "vehicle_cylinders": 4,
    "link": "https://easyauto123.com.au/buy/used-cars/details/2022/SUBARU/XV/Hybrid-S/VIC/Melbourne/Brooklyn/Automatic/White/Hatchback-SUV-Hybrid/JF1GTEKL5NG160847",
    "name": "2022 SUBARU XV G5X MY22 HYBRID S HBK LIN 7SP 2.0I/12KW HYBRI",
    "model": "XV",
    "year": "2022",
    "make": "SUBARU",
    "spec": "Hybrid S G5X",
    "spec_clean": "Hybrid S",
    "Location": "Brooklyn",
    "Region": "VIC",
    "kms": "77283",
    "kms_categ": "",
    "fuel_type": "Hybrid",
    "transmission": "Automatic",
    "fourwd": "",
    "price_type": "Drive Away",
    "est_price": "29883",
    "number_pl": "1XC4MG",
    "ext_color": "White",
    "int_color": "",
    "imp_history": "",
    "seller_type": "dealer",
    "number_of_days_listed": "0",
    "dealer_name": "easyauto123",
    "dealer_city": "Brooklyn",
    "dealer_state": "VIC",
    "dealer_address": "BROOKLYN QV TEAM 2, Brooklyn, Melbourne, VIC",
    "price": "29883",
    "listing_location_city": "Brooklyn",
    "listing_location_state": "VIC",
    "feature_search_terms_string": "12V Socket(s) - Auxiliary,18\" Alloy Wheels,6 Speaker Stereo,ABS (Antilock Brakes),Active Torque Transfer System,...",
    "bodyStyle": "Hatchback SUV Hybrid",
    "overview": "$26",
    "performed": "2026-03-11",
    "images": [
        "https://steagprdinventoryaue01.blob.core.windows.net/container-inventory/MEDIA/IMAGE/01b05da7-96ba-4bf3-a52d-76a6c698a4aa.jpg?...",
        "https://steagprdinventoryaue01.blob.core.windows.net/container-inventory/MEDIA/IMAGE/2bf7e56f-0a44-4c70-b088-be4d7c67f312.jpg?...",
        "https://steagprdinventoryaue01.blob.core.windows.net/container-inventory/MEDIA/IMAGE/69b14bfc-53d7-49fc-a580-8dfbde1dd6fb.jpg?..."
    ]
}
```

##### Basic Information

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | easyauto123 vehicle identifier |
| `listing_url` | String | Direct easyauto123 detail page URL |
| `stock_no` | String | Dealer stock number |
| `description` | String | Full listing description/title returned by the site |
| `vin` | String | Vehicle identification number |
| `condition` | String | Product category such as `USED` |
| `manu_year` | Number | Vehicle year as numeric output |
| `odometer` | Number | Odometer reading as a number |
| `rego` | String | Registration number |
| `rego_expiry` | String or null | Registration expiry date when present |
| `status_api` | String | Stock status returned by the site, for example `IN-STOCK` |
| `created_at_api` | String | Listing availability timestamp from the source payload |
| `updated_at_api` | String | Last update timestamp from the source payload metadata |

##### Pricing Information

| Field | Type | Description |
|-------|------|-------------|
| `is_driveaway_pricing_model` | Number | `1` when the listing uses drive-away pricing, otherwise `0` |
| `advertised_price` | Number | Displayed numeric price from the source payload |
| `driveaway_price` | Number | Drive-away price when available |
| `price_type` | String | Normalized price label such as `Drive Away` |
| `est_price` | String | String version of the normalized price |
| `price` | String | Main normalized price string used in tabular output |

##### Vehicle Specifications

| Field | Type | Description |
|-------|------|-------------|
| `variant` | String | Vehicle trim/variant |
| `series` | String or null | Vehicle series code |
| `colour_base` | String | Base colour value |
| `colour_body` | String | Body colour value |
| `colour_interior` | String | Interior colour when available |
| `vehicle_transmission_type` | String | Transmission type from the detail payload |
| `vehicle_fuel_type` | String | Fuel type from the detail payload |
| `vehicle_engine_size` | String | Engine size normalized from the source engine capacity |
| `vehicle_drive_type` | String | Full drive type description |
| `vehicle_drive_type_abbreviated` | String | Short drive type label when derivable |
| `vehicle_seats` | Number | Number of seats |
| `vehicle_safety_rating_ancap` | Number or null | ANCAP safety rating |
| `vehicle_body_type` | String | Combined body type text |
| `vehicle_body_type_group` | String | Primary body type group |
| `vehicle_body_type_style` | String | Secondary body style text |
| `vehicle_cylinders` | Number | Number of cylinders |

##### Dealer Information

| Field | Type | Description |
|-------|------|-------------|
| `is_dealer_listing` | Boolean | Whether the listing is treated as a dealer listing |
| `is_private_listing` | Boolean | Whether the listing is treated as a private listing |
| `seller_type` | String | Normalized seller type |
| `dealer_name` | String | Dealer name used in normalized output |
| `dealer_city` | String | Dealer suburb/locality |
| `dealer_state` | String | Dealer state abbreviation |
| `dealer_address` | String | Joined dealer address/location string |

##### Location Information

| Field | Type | Description |
|-------|------|-------------|
| `Location` | String | Normalized suburb/locality field |
| `Region` | String | Normalized state/region field |
| `listing_location_city` | String | Listing suburb/locality |
| `listing_location_state` | String | Listing state abbreviation |

##### Normalized Fields

| Field | Type | Description |
|-------|------|-------------|
| `link` | String | Normalized listing URL |
| `name` | String | Human-readable vehicle title |
| `make` | String | Vehicle make |
| `model` | String | Vehicle model |
| `year` | String | Vehicle year as string |
| `spec` | String | Combined variant and series value |
| `spec_clean` | String | Cleaned variant value |
| `kms` | String | Odometer value as a string |
| `kms_categ` | String | Reserved mileage category field |
| `fuel_type` | String | Normalized fuel type |
| `transmission` | String | Normalized transmission |
| `fourwd` | String | Normalized drive-type shorthand |
| `number_pl` | String | Registration number mirrored into the normalized schema |
| `ext_color` | String | Exterior colour |
| `int_color` | String | Interior colour |
| `imp_history` | String | Reserved import-history field |
| `number_of_days_listed` | String | Days since the listing became available |
| `bodyStyle` | String | Combined normalized body style |
| `overview` | String | Overview/description field from the source payload |
| `performed` | String | Extraction date |

##### Media Content

| Field | Type | Description |
|-------|------|-------------|
| `feature_search_terms_string` | String | Comma-separated equipment/features list from the detail payload |
| `images` | Array | Array of listing image URLs, including gallery and orbit images when available |

#### Data Quality Features

The easyauto123 scraper includes several data quality features:

1. **RSC Search Parsing**
   - Reads Next.js `text/x-component` payloads from search pages
   - Extracts vehicle cards directly from the `vehicles` array in the RSC response
   - Preserves requested pagination through `page` and `limit`

2. **Detail Enrichment**
   - Generates each detail page URL from the search payload
   - Fetches the richer detail payload for each listing when `includeListingDetails` is enabled
   - Falls back to listing-card data if detail enrichment fails

3. **Normalized Vehicle Output**
   - Maps raw easyauto123 fields into a stable output schema
   - Preserves pricing, registration, specs, location, and equipment details
   - Normalizes body type, transmission, fuel, and media fields into consistent keys

### Troubleshooting

#### Common Issues

1. **No results found**
   - Verify that the start URLs are correct and accessible
   - Check if the easyauto123 website structure has changed
   - Try with a different proxy or IP address
   - Ensure URLs are properly formatted `easyauto123.com.au` links

2. **Incomplete data**
   - Some fields might be optional and not always present in every listing
   - Some normalized fields are intentionally blank when the source payload does not provide a value
   - Detail enrichment depends on whether `includeListingDetails` is enabled
   - Verify that the `includeListingDetails` parameter is set correctly for your use case

3. **Blocking**
   - If you encounter blocking, try:
     - Using residential proxies
     - Reducing concurrency
     - Rotating sessions or proxies more aggressively

4. **Slow crawling**
   - Compare `crawler` and `internal` mode on the same input
   - Use smaller `maxItems` values when testing
   - Reduce the number of simultaneous start URLs for more predictable throughput

5. **Data inconsistencies**
   - Vehicle specifications may vary between listings due to different site content sources
   - Some normalized fields are convenience fields derived from the raw detail payload
   - Image counts and feature lists depend on the vehicle detail page content

### Related scrapers

[AutoTrader Australia Scraper](https://apify.com/memo23/autotrader-australia-cheerio) - Another vehicle scraping actor from the same general codebase family.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/FkSyirPKKsZHyKuGC/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or 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>

### 🤖 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/easyauto123-scraper`).

**Purpose:** Extract used-vehicle listings from easyauto123.com.au — normalized pricing, vehicle specs, registration, dealer, location, features, and media — parsed from the site's Next.js RSC payloads.

**Minimal input:**

```json
{
  "startUrls": [{ "url": "https://easyauto123.com.au/buy/used-cars?limit=20" }],
  "includeListingDetails": true,
  "maxItems": 20,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 30
}
```

Search/list URLs (`?limit`, `?page`) auto-paginate; direct detail URLs (`/buy/used-cars/details/...`) scrape one vehicle each.

**Output:** one row per vehicle — id, listing\_url, link, stock\_no, vin, description, condition, advertised\_price, driveaway\_price, price, price\_type, manu\_year, year, make, model, variant, odometer, kms, rego, rego\_expiry, colour\_base, vehicle\_transmission\_type, vehicle\_fuel\_type, vehicle\_body\_type, vehicle\_seats, vehicle\_safety\_rating\_ancap, seller\_type, dealer\_name, dealer\_city, dealer\_state, dealer\_address, Location, Region, feature\_search\_terms\_string, images.

**Behaviors an agent should know:**

- `includeListingDetails` (default true) enriches each listing with its detail-page payload; set false for faster, card-only rows.
- Two execution flows run automatically — an internal Impit fetch (default) with a CheerioCrawler fallback; no input toggle is needed.
- Always set `maxItems` — the schema default is very high (10000).
- Proxy is built-in residential; leave the `proxy` field unset unless supplying your own.
- Pay-per-event billing — see the Pricing tab on the actor page.

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Eagers Automotive Limited or any of its subsidiaries operating the easyauto123 brand. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available used-vehicle listing pages on easyauto123.com.au — no authenticated endpoints, paid features, or content behind a login wall. Users are responsible for ensuring their use complies with easyauto123.com.au's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

### SEO Keywords

easyauto123 scraper, scrape easyauto123, easyauto123 api, easyauto123.com.au scraper, used car scraper australia, used cars data api, australian car listings scraper, vehicle listings scraper, car dealer inventory data, automotive data australia, used vehicle pricing data, car price scraper, vehicle inventory scraper, car market intelligence australia, dealer inventory data, VIN data scraper, car classifieds scraper, used car market data, Apify easyauto123

# Actor input Schema

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

URLs to start with.

## `includeListingDetails` (type: `boolean`):

Whether to include listing details in the output.

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

Maximum number of items to scrape per crawl. This is useful to avoid blocking by LinkedIn. The actor will stop scraping when it reaches this number.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

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

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://easyauto123.com.au/buy/used-cars?limit=20"
    }
  ],
  "includeListingDetails": true,
  "maxItems": 10000,
  "maxConcurrency": 100,
  "minConcurrency": 1,
  "maxRequestRetries": 30
}
```

# 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://easyauto123.com.au/buy/used-cars?limit=20"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/easyauto123-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://easyauto123.com.au/buy/used-cars?limit=20" }] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/easyauto123-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://easyauto123.com.au/buy/used-cars?limit=20"
    }
  ]
}' |
apify call memo23/easyauto123-scraper --silent --output-dataset

```

## MCP server setup

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