# Chileautos Scraper (`normdata/chileautos-scraper`) Actor

Track Chile's entire car market in one pull: dealers spot competitor pricing, researchers model depreciation by year and mileage, lead-gen teams get seller names and contacts, and buyers skip sponsored ads — every car, moto, truck and bus on Chileautos, without stalling.

- **URL**: https://apify.com/normdata/chileautos-scraper.md
- **Developed by:** [Norm Data](https://apify.com/normdata) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $17.00 / 1,000 vehicles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 🚗 Chileautos Scraper

Extract car, motorcycle, truck, and bus listings from **Chileautos.cl**: make, model, year, price, odometer, fuel, transmission, body type, seller, region, and photos, as clean structured rows. No browser, **no proxy**, CSV/JSON/Excel ready.

Chileautos is Chile's largest vehicle classifieds site, with tens of thousands of active listings. Its listing pages are protected by DataDome, but this Actor talks directly to the same JSON API the site itself uses to render results, so it never needs a browser, a proxy, or a CAPTCHA solve to work.

> 👉 **Try it now:** press **Start**. The ready-made input gives you 10 vehicles in a few seconds.<br>
> 💰 **$0.02 per vehicle** on the Free plan (10 vehicles per run), from $0.019 on paid plans. [See pricing](#-pricing)

### ✨ Why this scraper?

> - **Zero proxy, zero browser, by design**<br>
>   Every request is a plain JSON call to the same endpoint the site's own search page calls, not a workaround bolted onto a browser scraper.
>
> - **No artificial page cap**<br>
>   It keeps going until the matching pool is exhausted, instead of stopping at a fixed number of pages.
>
> - **Transparent about sponsored content**<br>
>   Featured/boosted listings are flagged, not silently mixed in with organic results.
>
> - **One run, many searches**<br>
>   Keywords are a list, run "corolla" and "civic" together and get both back, each tagged with the term that matched.
>
> - **Paste a search link, or use the filters**<br>
>   Already built a search on chileautos.cl? Paste that page's URL and it's reused exactly, same as pasting a `startUrl` on other scrapers.
>
> - **Every filter Chileautos itself offers**<br>
>   Make, several models at once, body type, condition, region, several cities at once, fuel, transmission, color, price/year/km ranges.
>
> - **Apify platform**<br>
>   Schedule runs, get only new vehicles, export to Excel or CSV, use the API, or connect Google Sheets, Zapier and Make.

### ⚖️ How it compares

| Capability | This actor | [scraperschile/chileautos](https://apify.com/scraperschile/chileautos) |
|---|:--:|:--:|
| Paste a search link from the site instead of filling filters | yes | yes (`startUrl`) |
| Needs a browser or proxy in normal operation | **no, pure JSON API** | no (own README: structured route first) |
| Ships a browser + proxy fallback path at all | **no** | yes (documented fallback for when the structured route fails) |
| Public 30-day run reliability (from each Actor's Apify stats) | **0 of 103 runs failed** | 37 of 486 runs **failed or timed out** (~8%) |
| Multiple keywords in one run, tagged per row | **yes** | no (single filter set per run) |
| Sponsored/featured listings flagged | **yes** | not exposed |
| Seller (dealership) name in output | yes | yes |
| Seller phone **and** WhatsApp | **yes** | not listed in their output fields |
| Price, year and km range filters | yes | yes |
| Model filter | **yes, several models in one run** | yes |
| City filter | **yes, several cities in one run** | yes, plus comuna |
| Seller description and full spec sheet (60+ specs on most cars) | **yes** (Include full listing details) | not listed in their output fields |
| Raw query override for power users | **yes** | no |

Comuna filtering inside greater Santiago is the one place the other actor is ahead: Chileautos files all of greater Santiago under the single city "Santiago", so this one filters by city, and Include full listing details adds each vehicle's comuna to the row.

### 🚀 How to scrape Chileautos

1. Create a free Apify account.
2. Pick the filters you need, or keep the ready-made input.
3. Click **Start**.
4. Download the vehicles as Excel, CSV or JSON from the **Output** tab.

### 💰 Pricing

#### How much does it cost to scrape Chileautos?

You pay a one-time **$0.003** per run, plus a price for each vehicle saved:

| Charged for | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| **Vehicle**: One vehicle listing saved to the dataset: full specs, seller name, phone and WhatsApp, and photos. | 0.02 | 0.019 | 0.018 | 0.017 |

Example: 1,000 vehicles cost about **$19** on Bronze. No proxy or compute costs on top.

### 📦 What data you get

| Field | Description |
| --- | --- |
| `adId`, `url` | Chileautos' internal ad ID and the canonical listing URL. |
| `title`, `year`, `make`, `model`, `variant` | Full title plus its parsed year, make, model, and trim/engine variant. |
| `condition` | `Nuevo` or `Usado`. |
| `price`, `currency` | Listed price and currency (almost always CLP). |
| `km` | Odometer reading. |
| `bodyType`, `fuel`, `transmission` | Vehicle specs, when the listing shows them (new-vehicle and motorcycle listings often omit some of these). |
| `region` | Chilean region where the vehicle is listed. |
| `sellerName`, `sellerType` | Dealership name (when sold by an agency) and `Particular` / `Agencia`. |
| `sellerPhone`, `sellerWhatsapp` | The seller's public phone and WhatsApp, normalized to `+56…`. Left out of the row entirely when Include seller phone and WhatsApp is off. |
| `description`, `comuna` | The seller's own description and the comuna (city) of the vehicle. Include full listing details only. |
| `exteriorColor`, `interiorColor`, `doors`, `seats` | Colors and cabin layout. Include full listing details only. |
| `engineLiters`, `engineCc`, `horsepower`, `drivetrain` | Engine size, power and traction (e.g. `4X2`, `4X4`). Include full listing details only. |
| `singleOwner` | `true` when the listing says it has had one owner (empty when the listing doesn't say). Include full listing details only. |
| `sellerId`, `sellerListings` | Chileautos' seller ID, and how many listings a dealer has published. Include full listing details only. |
| `specs` | Every other spec the listing publishes, label to value, e.g. `"Capacidad del maletero (L)": "470"`, `"Cantidad de airbags": "7"`. Include full listing details only. |
| `featured`, `badge` | Whether the listing is a paid/sponsored placement, and any on-site badge text. |
| `mainImage`, `images` | Photo URLs. |
| `searchKeyword`, `searchMake` | Which input produced this row. |
| `source`, `scrapedAt` | Always `chileautos.cl`, plus the UTC timestamp. |

The Include full listing details fields are left out of the row entirely when it is off. If a listing's page can't be loaded, they are empty on that row and an `error` field says why.

### ⚙️ Input

| Section | What it's for |
| --- | --- |
| **Maximum vehicles** | Always first, caps the whole run. |
| **Search** | Paste a search link from the site, or use Keywords, Make, Models, Vehicle type, Condition. |
| **Location** | Region and Cities. |
| **Price, year and odometer** | Min/max price, model year, and kilometers. |
| **Vehicle details** | Body type, fuel, transmission, color. |
| **Seller** | Keep only private sellers or only dealerships, include their phone/WhatsApp, and include the full listing details. |
| **Advanced** | A raw Chileautos query override. |

#### Input examples

#### 🚘 Monitor Toyota Corolla and Yaris pricing by year and mileage

```json
{ "maxItems": 500, "make": "Toyota", "models": ["Corolla", "Yaris"], "condition": "usado" }
```

#### 🏙️ Every used car for sale in Concepción and Temuco

```json
{ "cities": ["Concepción", "Temuco"], "condition": "usado" }
```

#### 📊 Snapshot new SUV inventory nationwide

```json
{ "maxItems": 1000, "vehicleType": "autos", "bodyType": "SUV", "condition": "nuevo" }
```

#### 📇 Build a private-seller lead list in one region

```json
{ "maxItems": 300, "region": "Valparaíso", "sellerType": "particular" }
```

#### 🏍️ Track used motorcycle listings under a price cap

```json
{ "maxItems": 200, "vehicleType": "motos", "priceMax": 5000000, "condition": "usado" }
```

#### 🔎 Full spec sheet and seller description for every used SUV

```json
{ "maxItems": 200, "bodyType": "SUV", "condition": "usado", "includeDetails": true }
```

#### 🔗 Reuse a search you already built on the site

```json
{ "maxItems": 100, "pageUrl": "https://www.chileautos.cl/vehiculos/?q=(And.Servicio.ChileAutos._.Marca.Toyota.)" }
```

### ❓ FAQ and troubleshooting

#### Is there a Chileautos API? Do I need an API key?

> Chileautos has no public data API for this. This Actor works as a Chileautos API alternative: it reads the public pages and gives you clean JSON, CSV or Excel, with no API key, no login and no code to maintain. You can also call it from your own code with the Apify API, or from an AI agent through MCP:
> `claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/chileautos-scraper"`

#### Why do I get only 10 vehicles?

> On the Apify free plan each run saves up to 10 results, so you can try it before paying. Any paid plan removes the limit.

#### Why am I getting no results?

> Make, Model, Region, City, Body type, and Color must match Chileautos' own spelling exactly (see the examples in each field's description). Chileautos itself doesn't error on an unrecognized value, it silently answers with its general catalog instead, so this Actor double-checks Make, Region, and Condition on every row and drops anything that doesn't actually match, rather than shipping the wrong vehicles. A misspelled filter shows up as zero results, not wrong ones. Model and City ignore case and accents. A Model needs its Make.

#### I pasted a search link and nothing happened / my filters below were ignored

> That's expected when the link has a `?q=` in it, it's reused as-is and every filter below is intentionally skipped (the run log says so). If the link has no `?q=` (a single listing's own page, or a plain category link like `/vehiculos/toyota/`), it can't be reused as a filter, the run logs a warning and falls back to whatever filters you set below instead.

#### Is this an official Chileautos tool?

> No. It is independent and not affiliated with Chileautos. It reads only data Chileautos publishes on its public pages, at a moderate pace. Use the data in line with Chileautos's terms and the laws that apply to you.

### 📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

# Actor input Schema

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

Stop after this many listings. Leave empty for no limit (the run stops on its own once the matching listings run out). The Apify Free plan is always capped at 10.

## `pageUrl` (type: `string`):

Already built a search on chileautos.cl with the filters you want? Paste that page's URL here and this Actor reuses it exactly, every filter below is then ignored. Works for a search results link; it does not work for a single listing's own page.

## `keywords` (type: `array`):

Free-text search terms, e.g. "corolla" or "4x4 diesel". Each keyword runs its own search and is tagged on every row it produces. Combines with Make and every filter below.

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

Brand name as shown on Chileautos, e.g. "Toyota", "Chevrolet", "Great Wall". Leave empty for every make.

## `models` (type: `array`):

Only these models of the make above, e.g. "Corolla" or "Yaris" for Toyota. Needs Make. Case and accents don't matter. Leave empty for every model.

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

Top-level category to search.

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

New or used vehicles.

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

Chilean region, exactly as Chileautos names it, e.g. "Metropolitana de Santiago", "Valparaíso", "Bío Bío", "Araucanía", "Ñuble", "Los Lagos", "Los Ríos", "Maule", "Coquimbo", "Atacama", "Tarapacá", "Arica y Parinacota", "Aysén", "Magallanes y Antártica Chilena", "OHiggins". Leave empty for all of Chile.

## `cities` (type: `array`):

Only vehicles in these cities, as Chileautos names them, e.g. "Santiago", "Concepción", "Temuco", "Viña del Mar", "Puerto Montt". All of greater Santiago (Las Condes, Ñuñoa, Maipú…) is the single city "Santiago" on Chileautos. Works with or without Region. Case and accents don't matter.

## `priceMin` (type: `integer`):

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

## `priceMax` (type: `integer`):

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

## `yearMin` (type: `integer`):

Oldest model year to include.

## `yearMax` (type: `integer`):

Newest model year to include.

## `kmMin` (type: `integer`):

Minimum kilometers travelled.

## `kmMax` (type: `integer`):

Maximum kilometers travelled.

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

Exact body style as shown on Chileautos, e.g. "SUV", "Sedán", "Hatchback", "Camioneta", "Furgón", "Coupé", "Station Wagon". Leave empty for any.

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

Engine fuel type.

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

Gearbox type.

## `color` (type: `string`):

Exact color name as shown on Chileautos, e.g. "Blanco", "Negro", "Gris". Leave empty for any.

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

Keep only private sellers or only dealerships. Applied after fetching, like a client-side filter.

## `includeSellerContact` (type: `boolean`):

Adds the seller's public phone and WhatsApp number to every row, ready-to-call leads. One extra quick request per listing; turn off for a faster listing-only run.

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

Adds what only the listing page has: the seller's description, comuna, exterior and interior color, doors, seats, engine size (liters and cc), horsepower, drivetrain, single owner, the seller ID and how many listings a dealer has, plus every spec Chileautos publishes (dimensions, fuel economy, airbags, equipment and more) in specs. One extra request per listing, so the run is slower. Off: none of these fields are added.

## `customQuery` (type: `string`):

Optional. Paste a raw Chileautos search expression (the same format the site builds when you apply filters, e.g. "Marca.Toyota.\_.Precio.range(5000000..15000000).") to filter on something not exposed above. When set, it's combined with Keywords but replaces every other filter.

## Actor input object example

```json
{
  "maxItems": 10,
  "pageUrl": "https://www.chileautos.cl/vehiculos/?q=(And.Servicio.ChileAutos._.Marca.Toyota.)",
  "keywords": [
    "corolla"
  ],
  "make": "Toyota",
  "models": [
    "Corolla",
    "Yaris"
  ],
  "vehicleType": "autos",
  "condition": "cualquiera",
  "region": "Metropolitana de Santiago",
  "cities": [
    "Concepción",
    "Temuco"
  ],
  "bodyType": "SUV",
  "fuel": "cualquiera",
  "transmission": "cualquiera",
  "sellerType": "todos",
  "includeSellerContact": true,
  "includeDetails": false
}
```

# Actor output Schema

## `vehicles` (type: `string`):

One row per 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 = {
    "maxItems": 10,
    "vehicleType": "autos",
    "condition": "cualquiera",
    "fuel": "cualquiera",
    "transmission": "cualquiera",
    "sellerType": "todos",
    "includeSellerContact": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/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 = {
    "maxItems": 10,
    "vehicleType": "autos",
    "condition": "cualquiera",
    "fuel": "cualquiera",
    "transmission": "cualquiera",
    "sellerType": "todos",
    "includeSellerContact": True,
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/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 '{
  "maxItems": 10,
  "vehicleType": "autos",
  "condition": "cualquiera",
  "fuel": "cualquiera",
  "transmission": "cualquiera",
  "sellerType": "todos",
  "includeSellerContact": true
}' |
apify call normdata/chileautos-scraper --silent --output-dataset

```

## MCP server setup

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