# Chileautos.cl Scraper - Cars, Prices & Specs from Chile (`rastriq/chileautos-scraper`) Actor

Scrape car listings from chileautos.cl, Chile's largest car marketplace: prices, year, mileage, specs, dealers, regions and images. Fast HTTP-only scraper with no 900-result limit.

- **URL**: https://apify.com/rastriq/chileautos-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 listing scrapeds

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

## Chileautos.cl Scraper — car listings, prices and specs from Chile

Scrape new and used car listings from **[chileautos.cl](https://www.chileautos.cl)**, Chile's largest vehicle marketplace (60,000+ cars and 3,000+ motorcycles). Get prices in CLP, year, mileage, body type, fuel, transmission, region and seller for every listing — and optionally ~60 technical specifications, colors, commune, seller description, dealer profile, financing simulation and the full photo gallery.

### Why this Chileautos scraper?

- **No 900-result limit.** Chileautos only lets you browse 50 pages (900 cars) per search. This Actor splits large searches automatically by price, so you can export **the whole marketplace** or any brand/region in a single run, without duplicates.
- **Fast and cheap.** Pure HTTP, no browser: ~18 listings per request and 512 MB of memory. A full brand like Toyota (2,400 listings) takes under a minute.
- **Richer data.** Year, region, seller type and condition come with every listing — even without details. With details enabled you get the complete spec sheet (engine cc, power, torque, traction, doors, seats, dimensions, safety equipment…).
- **Every way to search.** Filters, chileautos.cl URLs (copy-paste from your browser), listing IDs, dealer IDs or the site's raw query expression.
- **Dealer stock monitoring.** Scrape every car of a given dealer with its seller ID.
- **Incremental mode.** Schedule it daily and receive only new listings and price changes — unchanged listings are skipped and not charged. Price drops come out as a signed `_price_delta`.
- **Delisting detection.** Get every listing ID seen in a sweep, with an explicit flag telling you when it is safe to mark missing cars as sold.

### What data can you scrape from Chileautos?

| Field | Example | Needs details |
|---|---|---|
| Listing ID, URL, title | `CL-AD-20899780`, `2022 Toyota Corolla 2.0 XEI 4X2 MT 4P.` | |
| Brand, model, version, year | Toyota, Corolla, 2.0 XEI 4X2 MT 4P, 2022 | |
| Price (CLP) | 14490000 | |
| Mileage (km) | 65000 | |
| Body type, fuel, transmission | Sedán, Bencina, Manual | |
| Condition | Usado / Nuevo | |
| Seller type and dealer name | Agencia, AUTOMOTORA PETERSEN | |
| Region | Valparaíso | |
| Images, photo count | up to 5 (all with *Include all images*), 16 | |
| Commune, exterior/interior color | Villa Alemana, Blanco, Negro | ✓ |
| Engine cc, power, torque, traction, doors, seats | 1987, 170, 200, 4X2, 4, 5 | ✓ |
| Full specifications (~60 fields) | Airbag, ABS, ISOFIX, dimensions, consumption… | ✓ |
| Seller description | "Único dueño, mantenciones al día…" | ✓ |
| Dealer profile | ID, name, location, number of listings, years on site | ✓ |
| Financing simulation | monthly payment, months, total cost (CTC), CAE % | ✓ |
| Sale status | for sale / in stock / sold or withdrawn | ✓ |

### How to scrape Chileautos.cl

1. Click **Try for free** / **Start**.
2. Set your filters (brand, model, region, year, price…) or paste chileautos.cl URLs into **Start URLs**.
3. Choose **Max results** (`0` = everything) and whether to include full details.
4. Run the Actor and download the results as JSON, CSV, Excel or HTML, or get them through the API.

#### Input example

```json
{
  "make": "Toyota",
  "model": "Hilux",
  "condition": "Usado",
  "region": "Metropolitana de Santiago",
  "minYear": 2020,
  "maxPrice": 30000000,
  "maxItems": 500,
  "includeDetails": true
}
```

Scrape the whole marketplace:

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

Scrape from URLs, listing IDs or a dealer:

```json
{
  "urls": [
    "https://www.chileautos.cl/vehiculos/autos-vehículo/toyota/hilux/",
    "https://www.chileautos.cl/vehiculos/detalles/2022-toyota-corolla-2-0-xei-4x2-mt-4p/CL-AD-20899780/",
    "GI-AD-930739"
  ],
  "dealerIds": ["CL-SELLER-1428"]
}
```

#### Output example

```json
{
  "listingId": "GI-AD-949506",
  "url": "https://www.chileautos.cl/vehiculos/detalles/toyota-corolla-se-g-cvt-172t1s0-2018-4772/GI-AD-949506/",
  "title": "TOYOTA COROLLA SE-G CVT 172T1S0 - 2018 | 4772",
  "brand": "Toyota",
  "model": "Corolla",
  "version": "SE-G CVT 172T1S0",
  "year": 2018,
  "price": 11980000,
  "currency": "CLP",
  "mileageKm": 145137,
  "bodyType": "Sedán",
  "transmission": "Automática",
  "fuelType": "Bencina",
  "condition": "Usado",
  "sellerType": "Agencia",
  "sellerName": "AUTOMOTORA PETERSEN",
  "region": "Metropolitana de Santiago",
  "commune": "Vitacura",
  "colorExterior": "Gris",
  "photoCount": 39,
  "mainImage": "https://chileautos.pxcrush.net/car/dealer/dcli9a8lls12ty6cp22dz3q7b.jpg",
  "seller": {
    "id": "cl-seller-3005",
    "type": "Agencia",
    "name": "AUTOMOTORA PETERSEN",
    "location": "Metropolitana de Santiago",
    "listingsCount": 24,
    "yearsOnSite": 7,
    "listingsUrl": "https://www.chileautos.cl/vehiculos?q=(And.SellerId.CL-SELLER-3005.)"
  },
  "financing": { "monthlyPayment": 344031, "months": 48, "totalCost": 16513488, "cae": 16.73 },
  "specifications": { "Transmisión": "Automática", "Tracción": "4X2", "Puertas": "4" },
  "scrapedAt": "2026-10-02T19:54:06+00:00"
}
```

### Track new listings and price drops (incremental mode)

Turn on **Incremental mode** and schedule the same input daily (or hourly). The first run delivers the full baseline. Every later run delivers only:

- **new** listings (`_delta_status: "new"`), and
- **updated** listings (`_delta_status: "updated"`) whose price, mileage, title, version or seller type changed — with `_changed_fields`, `_previous_price` and `_price_delta` (negative = price drop).

Unchanged listings are skipped and **not charged**, so a daily feed of a whole brand costs a fraction of a full re-scrape. With **Emit seen ids** on, the run also stores every listing ID it saw in `SEEN_IDS`, together with `reconcilable: true/false` — mark a car as sold only when it is missing from a reconcilable sweep.

```json
{
  "make": "Toyota",
  "maxItems": 0,
  "enableCursor": true,
  "emitSeenIds": true
}
```

Every run also writes a `SUMMARY` record (scanned, new, updated, unchanged, sweep completeness) to its key-value store.

### Filters

| Filter | Values |
|---|---|
| Make | Any brand as written on the site (Toyota, Hyundai, Mercedes-Benz, Land Rover…). Several brands separated by commas = OR |
| Model | Hilux, Corolla, Tucson… (with exactly one brand) |
| Vehicle type | Autos (cars, pick-ups, SUVs, vans), Motos |
| Condition | Usado, Nuevo |
| Body type | SUV, Sedán, Hatchback, Pick up, Station Wagon, Coupé, Convertible, Van, Furgón, Minivan |
| Fuel | Bencina, Diesel, Híbrido, Eléctrico, Gas |
| Transmission | Automática, Manual |
| Region | All 16 Chilean regions |
| Seller type | Agencia (dealer), Particular, Particular Verificado |
| Year, price (CLP), mileage (km) | from / to |
| Sort | Recently updated, featured, price, year, mileage |

> Chileautos returns **0 results — not an error — for unknown values**. If a run returns nothing, check the spelling of brands, models and regions against the site.

### Pricing

Simple pay-per-event pricing — **platform usage is included**, you only pay for results:

| Event | Price | 1,000 listings |
|---|---|---|
| Listing scraped | $0.0015 | $1.50 |
| Full listing details add-on (only when enabled) | $0.0015 | +$1.50 |

Examples: all Toyota listings in Chile (~2,400) cost about **$3.60**; the entire marketplace (~62,000 listings) about **$93**, or $186 with full details. Set a *Maximum cost per run* and the Actor stops cleanly when it is reached.

### FAQ

**Can I scrape all of Chileautos?** Yes. Leave the filters empty and set *Max results* to `0`. The Actor splits the search by price ranges so that every listing is reached despite the site's 900-results-per-search limit.

**Why does the result count differ slightly from the site?** Listings are deduplicated by ID, and listings published or removed during the run can shift the totals. Sponsored listings that the site repeats on several pages are only returned once.

**Does it scrape phone numbers?** No. Chileautos only shows seller phone numbers to logged-in users; this Actor collects only publicly visible data. Private sellers sometimes type a phone or e-mail into the description — enable **Strip seller personal data** to redact them.

**Why are some specifications "NO" or missing?** Specs are published by the seller or the dealer's inventory feed. Some dealer feeds fill unknown fields with "NO" or "0"; numeric zeros are returned as `null`.

**Which URLs can I paste?** Search pages (`/vehiculos/autos-vehículo/toyota/…`, including filter segments such as `/suv-carroceria/` or `/usado-tipo/`), search URLs with `?q=(…)`, and listing pages (`/vehiculos/detalles/…/CL-AD-123/`).

**Do I need a proxy?** The default Apify Proxy (datacenter) works. If the log shows many blocked requests, switch to residential proxies with country CL.

**Is scraping Chileautos legal?** This Actor extracts only publicly available listing data and does not log in or access personal contact data. You are responsible for using the data in line with applicable laws (including Chile's Ley 19.628 on personal data) and the website's terms.

### Support

Found a bug or need a field that is missing? Open an issue in the **Issues** tab and we'll take a look.

# Changelog

This Actor's version history is a separate document: https://apify.com/rastriq/chileautos-scraper/changelog.md

# Actor input Schema

## `urls` (type: `array`):

<b>Paste one or more chileautos.cl links — or bare listing IDs.</b><br><br>Supported:<br>• <b>Search pages</b>, as they appear in your browser — e.g. <code>https://www.chileautos.cl/vehiculos/autos-vehículo/toyota/hilux/</code> or with filter segments like <code>/suv-carroceria/</code>, <code>/usado-tipo/</code>, <code>/ohiggins-región/</code><br>• <b>Search URLs with a query</b> — <code>…/vehiculos/?q=(And.…)</code><br>• <b>Listing pages</b> — <code>…/vehiculos/detalles/…/CL-AD-20899780/</code> → that listing with full details<br>• <b>Listing IDs</b> — <code>CL-AD-20899780</code>, <code>GI-AD-930739</code><br><br>When URLs are set, the search filters below are ignored (except <b>Dealer IDs</b>).

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

<b>Brand exactly as written on chileautos.cl.</b> Examples: <code>Toyota</code>, <code>Hyundai</code>, <code>Mercedes-Benz</code>, <code>Land Rover</code>.<br>Several brands separated by commas are combined with OR: <code>Toyota, Kia, Hyundai</code>.<br>Leave empty for all brands.<br><br>⚠️ The site returns <b>0 results — not an error —</b> for a misspelled brand. The run log warns you when that happens.

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

Model within the make. Examples: <code>Hilux</code>, <code>Corolla</code>, <code>Tucson</code>, <code>Sportage</code>.<br>Requires exactly one make. Leave empty for every model of that brand.

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

Used or new vehicles. Leave unset for both.

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

Body style as categorized by chileautos.cl. Pick-ups are listed here, not as a separate vehicle type.

## `fuel` (type: `string`):

Filter by fuel type. Leave unset to include all.

## `gearbox` (type: `string`):

Filter by transmission type.

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

Only listings priced at or above this amount, in Chilean pesos. Example: <code>10000000</code> = $10M CLP.

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

Only listings priced at or below this amount, in Chilean pesos.

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

Oldest model year to include.

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

Newest model year to include.

## `minKm` (type: `integer`):

Lowest odometer reading to include.

## `maxKm` (type: `integer`):

Highest odometer reading to include. Example: <code>50000</code> for low-mileage cars.

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

<b>Dealers or private sellers.</b><br>With incremental mode, give each seller type its own <b>Stream id</b> if you want independent dealer and private streams.

## `vehicleType` (type: `string`):

Leave unset for cars (the default on chileautos.cl). Choose <b>Motos</b> for motorcycles.

## `region` (type: `string`):

Chilean region where the vehicle is located. Useful for sharding a national extraction: each region is an independent slice.

## `dealerIds` (type: `array`):

<b>Scrape the full stock of specific dealers.</b> Example: <code>CL-SELLER-1428</code>.<br>You get each dealer's ID in <code>seller.id</code> when <b>Include full listing details</b> is on. Combined with the search filters above, e.g. one dealer's SUVs only.

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

<b>Hard cap on the number of listings returned.</b><br>The default of <b>50</b> finishes in seconds. A whole brand (~2,500 listings) takes under a minute; the entire marketplace (~62,000) about 20 minutes.<br>Set <b>0</b> for no limit. Chileautos only lets a search reach 900 results; above that the actor splits the search by price automatically, so you still get everything, without duplicates.

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

<b>Adds the full spec sheet and seller block.</b> ~60 specifications (engine cc, power, torque, traction, doors, seats, dimensions, safety equipment…), exterior and interior color, commune, seller description, dealer profile and the financing simulation.<br>One extra request per listing, billed as the <b>details add-on</b> event.

## `includeAllImages` (type: `boolean`):

Search results carry up to 5 images per listing. Enable to fetch the complete gallery (16–40 photos is common for dealers). One extra request per listing that has more than 5 photos. No extra charge.

## `enableCursor` (type: `boolean`):

<b>Return only listings that are new or have changed since your last run.</b><br>The actor keeps a ledger of every listing it has delivered for this search stream, with a fingerprint of <code>price / km / title / version / seller type</code>. A listing is emitted when its id is unknown (<code>\_delta_status: "new"</code>) or its fingerprint changed (<code>"updated"</code>, with <code>\_changed_fields</code>, <code>\_previous_price</code> and <code>\_price_delta</code> — negative is a price drop). Unchanged listings are skipped and <b>not charged</b>.<br><br>The first run captures a full baseline. Schedule the same input afterwards (e.g. daily) to receive only the deltas. Entries unseen for 90 days expire.

## `cursorId` (type: `string`):

<b>Optional.</b> Names the ingestion stream. Runs sharing a stream id share one ledger; different ids are fully independent.<br><br>Leave empty and the actor derives a stable id from your filters, which is normally what you want. Set it explicitly (e.g. <code>catalogue-cl</code>) when you shard one catalogue across several searches, so a listing that appears in two shards is delivered once.

## `emitSeenIds` (type: `boolean`):

<b>Write every listing id observed during the sweep to <code>SEEN_IDS</code></b> in the run's key-value store — including those skipped as unchanged.<br><br>With incremental ingestion your catalogue never expires rows on its own: a sold vehicle simply stops appearing. Compare <code>SEEN_IDS</code> against your catalogue to mark it as sold — but only when <code>reconcilable</code> is <code>true</code>. A sweep cut short by <b>Max results</b>, the spending limit or failed pages reports <code>reconcilable: false</code>, and absence then means <i>unknown</i>, not sold.

## `stripSellerPII` (type: `boolean`):

<b>Remove personal data of private sellers from the output.</b><br>The actor never collects phone numbers (chileautos.cl hides them behind login), but private sellers often type their phone or e-mail into the description. When enabled, phone numbers and e-mails in descriptions of <b>private</b> sellers are replaced with <code>\[REDACTED]</code>.<br><br>Dealer data is commercial and is not modified. Recommended if you store the data under Chile's Ley 19.628 / Ley 21.719.

## `sort` (type: `string`):

Order of the results. Applies when the search has 900 results or fewer, or when <b>Max results</b> is 900 or less. Larger searches are split by price and come out grouped by price range.

## `searchExpression` (type: `string`):

<b>For power users.</b> The site's internal query language, e.g. <code>(And.TipoVehículo.Autos.*.Marca.Toyota.*.Ano.range(2020..).)</code>. Replaces the search filters. Values are case-insensitive but accent-sensitive.

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

Parallel requests. 5 is safe; 10 halves the time of a full-marketplace run. Higher values raise the chance of rate limiting.

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

Apify datacenter proxy works for chileautos.cl (tested on a full 62,000-listing sweep). Switch to residential, country <code>CL</code>, only if the log shows many blocked requests.

## Actor input object example

```json
{
  "urls": [],
  "make": "Toyota",
  "model": "Hilux",
  "dealerIds": [],
  "maxItems": 50,
  "includeDetails": false,
  "includeAllImages": false,
  "enableCursor": false,
  "emitSeenIds": false,
  "stripSellerPII": false,
  "sort": "LastUpdated",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Dataset with one item per vehicle listing.

# 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 = {
    "urls": [],
    "make": "Toyota",
    "model": "Hilux",
    "dealerIds": [],
    "maxItems": 50,
    "cursorId": "",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/chileautos-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 = {
    "urls": [],
    "make": "Toyota",
    "model": "Hilux",
    "dealerIds": [],
    "maxItems": 50,
    "cursorId": "",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/chileautos-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 '{
  "urls": [],
  "make": "Toyota",
  "model": "Hilux",
  "dealerIds": [],
  "maxItems": 50,
  "cursorId": "",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rastriq/chileautos-scraper --silent --output-dataset

```

## MCP server setup

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