# Chilepropiedades Scraper — Chile Real Estate Listings (`fabrikit/chilepropiedades-scraper`) Actor

Scrape Chilepropiedades.cl property listings for sale and rent across Chile: price in UF/CLP/USD plus normalized CLP, m², bedrooms, comuna, GPS, broker and photos. Filter by type, region, comuna, price and rooms. From US$2 per 1,000 properties.

- **URL**: https://apify.com/fabrikit/chilepropiedades-scraper.md
- **Developed by:** [Fabrikit](https://apify.com/fabrikit) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 property 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?

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

## Chilepropiedades Scraper — Chile Real Estate Listings

Scrape **Chilepropiedades.cl**, one of Chile's long-running property portals, into clean JSON, CSV or Excel. Get apartments, houses, land, rural plots, offices, retail and parking for **sale, monthly rent or daily rent** anywhere in Chile — about 13,700 apartments for sale in the Santiago Metropolitan Region alone — with price, surface, rooms, comuna and photos.

Every listing carries its price **as published (UF, CLP or USD)** plus a **normalized CLP value** computed with the UF and dollar rates the site itself shows, so UF and peso listings sort and average together. Filter by region, comuna, property type, price range (in UF, CLP or USD), bedrooms and bathrooms, sort by newest or by price, or paste any Chilepropiedades.cl search URL.

No browser and no login: plain HTTP requests, fast and cheap.

### What you get

- **From every results page**: operation, property type, price + currency, normalized CLP price, total and built m², bedrooms, bathrooms, parking, comuna, region, publication date, featured flag, virtual-tour flag, a photo and a short summary.
- **With the detail add-on** (`fetchDetails`): **GPS coordinates**, street address, full description, full photo gallery, amenities (pool, gym, quincho ...), useful m², year built, floor, common expenses, furnished flag, and the **publisher type and brokerage name**.
- **Monitoring-ready**: sort by `newest`, schedule a daily run and diff on the stable `id`.

### Example output

With `fetchDetails` on (photos and description shortened):

```json
{
    "id": "138772926",
    "url": "https://chilepropiedades.cl/ver-publicacion/arriendo-mensual/penaflor/casa/pasaje-siete/138772926",
    "title": "Casa Villa Cantaros de Agua, Peñaflor",
    "operation": "rent",
    "propertyType": "house",
    "price": 470000,
    "currency": "CLP",
    "priceNormalized": 470000,
    "priceNormalizedCurrency": "CLP",
    "totalAreaM2": 74,
    "builtAreaM2": 51,
    "usefulAreaM2": null,
    "bedrooms": 2,
    "bathrooms": 1,
    "parking": 1,
    "floor": null,
    "yearBuilt": 2013,
    "commonExpensesClp": null,
    "furnished": null,
    "comuna": "Peñaflor",
    "region": "Metropolitana de Santiago",
    "address": "Pasaje Siete",
    "latitude": -33.6087918,
    "longitude": -70.8911401,
    "publisherType": "agency",
    "publisherName": "Propiedades Coda",
    "publisherUrl": "https://chilepropiedades.cl/ver-corredora/10221475/propiedades-coda/0",
    "featured": false,
    "hasVirtualTour": false,
    "photos": ["https://chilepropiedades.cl/imagenes/publicacion/arriendo-mensual/casa/penaflor/2/fe9ed597-c84c-4555-8a32-872fc911d162.jpeg"],
    "amenities": ["Cocina Amoblada", "Antejardín", "Protección en ventanas"],
    "publishedAt": "2026-10-11",
    "descriptionSnippet": "Casa | Peñaflor Ubicación: Villa Cántaros de Agua ...",
    "description": "Casa | Peñaflor Ubicación: Villa Cántaros de Agua, Peñaflor ...",
    "detailsFetched": true,
    "scrapedAt": "2026-10-12T17:30:07.007Z"
}
```

A UF listing from a results page (no add-on): `"price": 7600, "currency": "UF", "priceNormalized": 312595144, "priceNormalizedCurrency": "CLP"`.

Every item always has all the fields listed below; fields the source does not provide are `null`.

### How to use

1. Pick the **operation** (`sale`, `rent`, `rent_daily`) and the **property type**.
2. Pick a **region** (or `All of Chile`) and optionally a **comuna** — `Ñuñoa`, `Las Condes`, `Viña del Mar`, `Puerto Varas` ...
3. Optionally set a **price range** with its **currency** (UF, CLP or USD), **minimum bedrooms / bathrooms** and the **sort order**.
4. Set **maxItems**, decide whether you need the **detail add-on**, and press **Start**.

#### Input examples

Apartments for sale in Ñuñoa between UF 3,000 and 6,000 with 2+ bedrooms, cheapest first:

```json
{
    "operation": "sale",
    "propertyType": "apartment",
    "region": "rm",
    "comuna": "Ñuñoa",
    "priceMin": 3000,
    "priceMax": 6000,
    "priceCurrency": "UF",
    "bedroomsMin": 2,
    "sort": "price_asc",
    "maxItems": 300
}
```

Newest houses for monthly rent in the Metropolitan Region, with GPS, amenities and broker:

```json
{
    "operation": "rent",
    "propertyType": "house",
    "region": "rm",
    "sort": "newest",
    "fetchDetails": true,
    "maxItems": 200
}
```

Rural plots for sale anywhere in Chile (the Actor walks the regions one by one):

```json
{
    "operation": "sale",
    "propertyType": "plot",
    "region": "all",
    "maxItems": 2000
}
```

Paste search or listing URLs from your browser instead of using the filters:

```json
{
    "startUrls": [
        { "url": "https://chilepropiedades.cl/propiedades/venta/casa/vina-del-mar/0?ordenar=2" },
        { "url": "https://chilepropiedades.cl/ver-publicacion/venta/las-condes/departamento/geronimo-de-alderete/142639085" }
    ],
    "maxItems": 500
}
```

#### Input fields

| Field | Description |
|---|---|
| `operation` | `sale` (venta), `rent` (arriendo mensual) or `rent_daily` (arriendo diario) |
| `propertyType` | `apartment`, `house`, `studio`, `loft`, `office`, `retail`, `warehouse`, `industrial_shed`, `parking`, `plot`, `lot`, `land`, `agricultural_land`, `forest_land`, `industrial_land`, `hotel`, `tourism_business`, `cemetery_plot` |
| `region` | One of Chile's 16 regions (`rm`, `valparaiso`, `biobio`, `nuble` ...) or `all` |
| `comuna` | Optional comuna, resolved with the site's own location search and checked against the region |
| `priceMin` / `priceMax` / `priceCurrency` | Price range in `UF`, `CLP` or `USD` (the site converts between them) |
| `bedroomsMin` / `bathroomsMin` | Minimum rooms (0–6) |
| `sort` | `newest`, `relevance`, `oldest`, `price_asc`, `price_desc`, `area_asc`, `area_desc` |
| `startUrls` | Chilepropiedades.cl search or listing URLs; when set, the filters are ignored |
| `maxItems` | Maximum properties to return (default 50) |
| `fetchDetails` | Detail add-on, see below (default off) |
| `proxyConfiguration` | Leave as is — the Actor switches proxies by itself if the site ever blocks |

### Output fields

| Field | Type | Description |
|---|---|---|
| `id` | string | Chilepropiedades.cl listing code, stable across runs |
| `url` | string | Link to the listing |
| `title` | string | Listing title (phones and e-mails removed) |
| `operation` | string | null | `sale`, `rent` or `rent_daily` |
| `propertyType` | string | null | Normalized type, e.g. `apartment`, `house`, `plot`, `office` |
| `price` / `currency` | number / string | Price as published, in `UF`, `CLP` or `USD` |
| `priceNormalized` / `priceNormalizedCurrency` | number / string | The same price in CLP, with the site's own UF/USD rates |
| `totalAreaM2` / `builtAreaM2` / `usefulAreaM2` | number | null | Surfaces in m² (hectares converted) |
| `bedrooms` / `bathrooms` / `parking` | number | null | Rooms and parking spaces |
| `floor` / `yearBuilt` | number | null | Floor number and year built (detail add-on) |
| `commonExpensesClp` | number | null | Monthly common expenses in CLP (detail add-on) |
| `furnished` | boolean | null | Furnished, when stated (detail add-on) |
| `comuna` / `region` | string | null | Location |
| `address` | string | null | Street or sector as published (detail add-on) |
| `latitude` / `longitude` | number | null | Map pin of the listing (detail add-on) |
| `publisherType` | string | null | `agency`, `developer` or `private` (detail add-on) |
| `publisherName` / `publisherUrl` | string | null | Brokerage name and its profile page. Always `null` for private sellers |
| `featured` / `hasVirtualTour` | boolean | Paid "Destacado" placement / 360° tour available |
| `photos` | string\[] | Photo URLs (one from results pages, the full gallery with the add-on) |
| `amenities` | string\[] | null | Equipment and amenities (detail add-on) |
| `publishedAt` | string | null | Publication date (YYYY-MM-DD) |
| `descriptionSnippet` / `description` | string | null | Short summary from results / full text with the add-on |
| `detailsFetched` | boolean | Whether the detail page was read |
| `scrapedAt` | string | ISO timestamp of the run |

A run summary (searches, pages, totals reported by the site, UF/USD rates used, detail errors) is saved in the run's key-value store under `SUMMARY`.

### Pricing

Pay per event — you only pay for what lands in your dataset. Platform usage is included.

| Event | When it is charged | Price |
|---|---|---|
| `property-result` | each property saved to the dataset | **US$2.00 per 1,000** |
| `property-details` | each property whose detail page was opened (`fetchDetails` on) | **US$1.00 per 1,000** |
| Actor start | once per run | US$0.00005 |

So 1,000 properties cost **US$2.00**, or **US$3.00** with GPS, description, amenities and broker. If you set a maximum charge for a run, the Actor stops cleanly when it is reached and never hands out more items than your limit covers.

### Use cases

- **Valuation and market research**: price per m² by comuna and property type, UF vs. CLP listings normalized to one currency, rent yields from sale and rent searches over the same comuna.
- **Broker prospecting**: which brokerages are active in a comuna and how many listings they carry (`publisherName`, `publisherUrl`), and which listings are published by owners (`publisherType: "private"`) — without any personal contact data.
- **Daily new-listing alerts**: `sort: newest`, a schedule and a diff on `id`.
- **Maps and geo-analysis**: coordinates for every listing with the detail add-on.
- **Feeds for CRMs, portals and BI dashboards** via the Apify API, webhooks, Google Sheets, Make or Zapier.

### FAQ

**Is there an official Chilepropiedades.cl API?**
No public one. This Actor reads the public result and listing pages over HTTP and turns them into a fixed schema.

**What does "normalized price" mean?**
Sales in Chile are usually listed in UF (an inflation-indexed unit), rentals in CLP, some in USD. The Actor converts every price to CLP with the UF and dollar values Chilepropiedades.cl publishes on its own pages, and keeps the original `price` and `currency`.

**Which locations work?**
All 16 regions, and any comuna the site knows. Comunas are resolved through the site's own location search; if a comuna can't be matched the run fails with the closest suggestions. The site silently serves a "similar" place for unknown location URLs — the Actor detects that and refuses to return results for the wrong place.

**How many results can I get?**
The site serves 10 listings per page with deep pagination (1,370 pages for apartments for sale in the Metropolitan Region). Use `maxItems` to size your run; `region: "all"` continues region by region.

**Do you collect personal data?**
No. Private sellers' and agents' names, phones and e-mails are never stored, and phone numbers or e-mails pasted into titles and descriptions are replaced with `[phone removed]` / `[email removed]`. Only brokerage businesses are named; a brokerage account that is just a person's name is treated as a person and left out.

**Do I need a proxy?**
No — the site answers plain requests. If it ever starts refusing them, the Actor switches to Chilean residential proxies automatically.

### En español

**Chilepropiedades Scraper** extrae avisos de **Chilepropiedades.cl**: departamentos, casas, terrenos, parcelas, oficinas, locales y estacionamientos en **venta, arriendo mensual o arriendo diario** en todo Chile. Cada aviso trae el precio tal como se publicó (UF, CLP o USD) y el **precio normalizado en pesos** con los valores de UF y dólar que muestra el propio sitio, más m² totales y construidos, dormitorios, baños, estacionamientos, comuna, región, fecha y foto. Con el complemento de detalle suma **coordenadas GPS**, dirección, descripción completa, galería, equipamiento, año de construcción, gastos comunes y el nombre de la corredora. Filtra por región, comuna, tipo, rango de precio en UF/CLP/USD, dormitorios y baños, y ordena por más recientes o por precio.

Precio: **US$2 por 1.000 propiedades** + **US$1 por 1.000** fichas de detalle. No se guardan nombres, teléfonos ni correos de personas (Ley 21.719): solo se identifican corredoras.

### Technical details

- Source: the server-rendered HTML of chilepropiedades.cl (10 listings per results page) and each listing's JSON-LD (`RealEstateListing`) plus its map marker.
- Advanced filters (price, rooms) are sent the way the site's own search form sends them; sorting uses the site's own orders.
- Detail pages are fetched 5 at a time; a failed detail page never drops the listing (the results-page data is kept and the error is noted in `SUMMARY`).
- Transient errors are retried with exponential backoff; if the site blocks, the Actor switches to Chilean residential proxies, and if that fails too, the run fails with a clear message instead of returning an empty dataset.

# Actor input Schema

## `operation` (type: `string`):

`sale` = Venta, `rent` = Arriendo mensual (monthly rent), `rent_daily` = Arriendo diario (holiday / short-term rentals).

## `propertyType` (type: `string`):

Chilepropiedades.cl property type (one per run).

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

Chilean region. `All of Chile` runs the search region by region, largest markets first, until Max properties is reached.

## `comuna` (type: `string`):

Optional comuna, e.g. `Ñuñoa`, `Las Condes`, `Viña del Mar`, `Puerto Varas` (accents optional). Resolved with the site's own location search and checked against the selected region; the run fails with the closest matches if it can't be resolved — it never silently searches somewhere else.

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

Minimum price in the currency below. 0 = no minimum.

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

Maximum price in the currency below. 0 = no maximum.

## `priceCurrency` (type: `string`):

Currency of the price filter. UF (Unidad de Fomento) is the usual unit for sales, CLP for rentals. The site converts, so a UF range also matches listings published in CLP or USD.

## `bedroomsMin` (type: `integer`):

At least this many bedrooms (0–6). 0 = any.

## `bathroomsMin` (type: `integer`):

At least this many bathrooms (0–6). 0 = any.

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

`newest` is the right choice for monitoring pipelines. `relevance` is the site default (featured listings first).

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

Chilepropiedades.cl search URLs copied from your browser (e.g. `https://chilepropiedades.cl/propiedades/venta/casa/vina-del-mar/0?ordenar=2`) and/or single listing URLs (`https://chilepropiedades.cl/ver-publicacion/...`). When set, the filters above are ignored.

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

Stop after this many properties. The site serves 10 listings per search page.

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

Open each listing's page (1 extra request per property) to add: GPS coordinates, street address, region, full description (phones and e-mails removed), full photo gallery, amenities, useful/built m², year built, floor, common expenses, furnished flag and the publisher type and brokerage name. Charged as a `property-details` event (US$1 per 1,000).

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

Chilepropiedades.cl answers plain requests from Apify's servers, so no proxy is needed. If the site ever returns 403, the Actor switches to Apify RESIDENTIAL proxies in Chile automatically.

## Actor input object example

```json
{
  "operation": "sale",
  "propertyType": "apartment",
  "region": "rm",
  "comuna": "",
  "priceMin": 0,
  "priceMax": 0,
  "priceCurrency": "UF",
  "bedroomsMin": 0,
  "bathroomsMin": 0,
  "sort": "newest",
  "maxItems": 50,
  "fetchDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `properties` (type: `string`):

All property listings collected during the run

# 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 = {
    "comuna": "",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("fabrikit/chilepropiedades-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 = {
    "comuna": "",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("fabrikit/chilepropiedades-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 '{
  "comuna": "",
  "maxItems": 50
}' |
apify call fabrikit/chilepropiedades-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fabrikit/chilepropiedades-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/5TV5UFCPgVAXm4RCs/builds/6zeJ41PlE7ttjcMf7/openapi.json
