# TOC TOC Chile Scraper & API (`scraperschile/toctoc`) Actor

Scrape public TOC TOC real estate listings in Chile. Extract houses and apartments for sale or rent with UF/CLP prices, locations, bedrooms, bathrooms, surface, images, listing URLs, coordinates, and paginated results as JSON, CSV, Excel, or API data.

- **URL**: https://apify.com/scraperschile/toctoc.md
- **Developed by:** [Scrapers Chile](https://apify.com/scraperschile) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## TOC TOC Chile Scraper API

Use this **TOC TOC scraper API** to extract public Chile real estate listings from [toctoc.com](https://www.toctoc.com/). The Actor exports structured property data for apartments and houses for sale or rent, including UF/CLP prices, locations, bedrooms, bathrooms, surface details, images, coordinates, listing URLs, and paginated search results.

Use it to collect listings from TOC TOC by location, property type, and operation:

- departamentos en venta en Santiago
- casas en arriendo en Las Condes
- departamentos en arriendo en Providencia
- casas en venta en Nunoa
- Chile real estate listings, property prices, and housing market data

Also known as: TOCTOC scraper, TOC TOC API, Chile property scraper, Chile real estate scraper, departamentos Chile API, casas en arriendo Chile, propiedades en venta Chile, Apify real estate scraper Chile.

### What does this TOC TOC scraper do?

The Actor opens the public TOC TOC results page with a headless browser, captures the JSON response used by the site, and saves each public property listing to the Apify Dataset. Results can be downloaded as JSON, CSV, Excel, XML, RSS, or accessed through the Apify API.

It supports:

- Apartments, houses, and mixed house/apartment searches.
- Properties for sale and rent.
- Location-based searches through TOC TOC autocomplete.
- Multi-page extraction with up to 30 visible results per TOC TOC page.
- Backend JSON extraction in blocks of up to 510 properties.
- Residential Chile proxy configuration for more stable cloud runs.
- Raw indexed property arrays in `raw_property` for traceability.

### What data can you extract?

Each dataset item can include:

| Field | Description |
| --- | --- |
| `listing_id` | TOC TOC property identifier. |
| `title` | Public listing title or project name. |
| `price_text` | Price normalized as readable text. |
| `price_uf_min`, `price_uf_max` | UF price range when available. |
| `price_clp_min`, `price_clp_max` | CLP price range when available. |
| `operation` | Sale or rent. |
| `property_type` | Apartment, house, or other property type returned by TOC TOC. |
| `status` | New or used when it can be inferred. |
| `commune`, `region`, `location` | Published location fields. |
| `bedrooms_min`, `bedrooms_max` | Bedroom range. |
| `bathrooms_min`, `bathrooms_max` | Bathroom range. |
| `usable_area_m2_min`, `usable_area_m2_max` | Usable area range. |
| `total_area_m2_min`, `total_area_m2_max` | Total area range. |
| `latitude`, `longitude` | Coordinates returned by TOC TOC. |
| `image_url` | Public image URL when available. |
| `url` | Public listing URL. |
| `page`, `position` | Result position metadata. |
| `raw_property` | Original indexed property array returned by TOC TOC. |

Example output:

```json
{
  "listing_id": "3141513",
  "title": "Diagonal Vicuna",
  "url": "https://www.toctoc.com/propiedades/compranuevo/departamento/santiago/diagonal-vicuna/3141513",
  "operation": "Venta",
  "property_type": "Departamento",
  "status": "Nuevo",
  "location": "Santiago",
  "price_text": "UF 3.109",
  "price_uf_min": 3109,
  "bedrooms_min": 1,
  "bedrooms_max": 2,
  "bathrooms_min": 1,
  "bathrooms_max": 2,
  "usable_area_m2_min": 31,
  "usable_area_m2_max": 59.07
}
````

### Input

For most runs, use:

- `location`: normal location text, such as `Santiago`, `Las Condes`, `Providencia`, or `Vina del Mar`.
- `propertyType`: `departamento`, `casa`, or `casa-departamento`.
- `operation`: `comprar` for sale listings or `arrendar` for rental listings.
- `maxItems`: maximum properties to save.
- `maxPages`: maximum visible TOC TOC pages, where each page is treated as 30 results.

```json
{
  "location": "Santiago",
  "propertyType": "departamento",
  "operation": "comprar",
  "maxItems": 100,
  "maxPages": 4
}
```

Advanced users can pass `locationId` if they already know the TOC TOC polygon ID. If `locationId` is omitted, the Actor uses TOC TOC autocomplete and prefers an exact commune match.

### Typical use cases

| Use case | How this Actor helps |
| --- | --- |
| Real estate market research in Chile | Track asking prices, UF/CLP values, locations, property types, and visible features across communes. |
| Lead generation | Build structured datasets of public property ads for brokerage, sales, and real estate prospecting workflows. |
| Competitor monitoring | Monitor listings by neighborhood, property type, operation, project, seller, or commune. |
| Pricing intelligence | Compare sale and rental prices, UF ranges, and visible property attributes. |
| Dashboards and BI | Export JSON, CSV, Excel, XML, or API data into spreadsheets, warehouses, BI dashboards, and internal reports. |

### Reliability notes

TOC TOC blocks basic HTTP clients for its search endpoints. This Actor uses a browser session only to establish the same public session as a normal visitor and capture the JSON payload used by the result page. It does not log in, bypass private areas, collect credentials, or access non-public data.

For best results:

- Keep `maxItems` reasonable.
- Use Chile residential proxies in Apify cloud.
- Prefer commune names in `location`.
- Use `locationId` only when you know the exact TOC TOC polygon ID.

### Responsible use

This Actor only extracts public listing information visible on TOC TOC search pages. Use the data responsibly and in accordance with applicable laws, privacy rules, TOC TOC terms, and Apify's policies. The Actor is not affiliated with TOC TOC or any real estate broker.

# Actor input Schema

## `location` (type: `string`):

Comuna, ciudad, barrio o texto de ubicacion. Ejemplos: Santiago, Las Condes, Providencia, Nunoa, Vina del Mar.

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

Tipo de propiedad a buscar en TOC TOC.

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

Elige si quieres propiedades en venta o arriendo.

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

Limite de propiedades a guardar. Util para pruebas rapidas, presupuestos controlados o monitoreos acotados.

## `maxPages` (type: `integer`):

Limite opcional de paginas visibles de TOC TOC. Cada pagina visible contiene 30 resultados; el backend entrega bloques de hasta 510.

## `locationId` (type: `integer`):

Opcional. ID de poligono de TOC TOC si ya lo conoces. Si se omite, el Actor usa el autocomplete publico y elige la mejor comuna encontrada.

## `timeoutSecs` (type: `integer`):

Segundos maximos para cargar la pagina publica de resultados y capturar el JSON.

## `delaySecs` (type: `number`):

Pausa en segundos entre bloques backend de hasta 510 resultados.

## `failOnNoResults` (type: `boolean`):

Si esta activo, la ejecucion falla cuando TOC TOC no devuelve propiedades. Si esta apagado, guarda OUTPUT con estado no\_results y dataset vacio.

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

El Actor usa proxy residencial de Chile por defecto en Apify cloud para mayor estabilidad.

## Actor input object example

```json
{
  "location": "Santiago",
  "propertyType": "departamento",
  "operation": "comprar",
  "maxItems": 100,
  "maxPages": 4,
  "timeoutSecs": 60,
  "delaySecs": 0.5,
  "failOnNoResults": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CL"
  }
}
```

# Actor output Schema

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

Dataset items with normalized TOC TOC property listings.

## `summary` (type: `string`):

OUTPUT key-value record with status, totals, warnings, errors, pages, and raw listing collection.

# 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 = {
    "location": "Santiago",
    "maxItems": 100,
    "maxPages": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperschile/toctoc").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 = {
    "location": "Santiago",
    "maxItems": 100,
    "maxPages": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("scraperschile/toctoc").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Santiago",
  "maxItems": 100,
  "maxPages": 4
}' |
apify call scraperschile/toctoc --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraperschile/toctoc",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TOC TOC Chile Scraper & API",
        "description": "Scrape public TOC TOC real estate listings in Chile. Extract houses and apartments for sale or rent with UF/CLP prices, locations, bedrooms, bathrooms, surface, images, listing URLs, coordinates, and paginated results as JSON, CSV, Excel, or API data.",
        "version": "0.1",
        "x-build-id": "NRswfTzpxkcZlEHbG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperschile~toctoc/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperschile-toctoc",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraperschile~toctoc/runs": {
            "post": {
                "operationId": "runs-sync-scraperschile-toctoc",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraperschile~toctoc/run-sync": {
            "post": {
                "operationId": "run-sync-scraperschile-toctoc",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "location",
                    "propertyType",
                    "operation"
                ],
                "properties": {
                    "location": {
                        "title": "Ubicacion / comuna a buscar",
                        "type": "string",
                        "description": "Comuna, ciudad, barrio o texto de ubicacion. Ejemplos: Santiago, Las Condes, Providencia, Nunoa, Vina del Mar."
                    },
                    "propertyType": {
                        "title": "Tipo de propiedad",
                        "enum": [
                            "departamento",
                            "casa",
                            "casa-departamento"
                        ],
                        "type": "string",
                        "description": "Tipo de propiedad a buscar en TOC TOC.",
                        "default": "departamento"
                    },
                    "operation": {
                        "title": "Operacion",
                        "enum": [
                            "comprar",
                            "arrendar"
                        ],
                        "type": "string",
                        "description": "Elige si quieres propiedades en venta o arriendo.",
                        "default": "comprar"
                    },
                    "maxItems": {
                        "title": "Maximo de avisos",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Limite de propiedades a guardar. Util para pruebas rapidas, presupuestos controlados o monitoreos acotados.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Maximo de paginas visibles",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Limite opcional de paginas visibles de TOC TOC. Cada pagina visible contiene 30 resultados; el backend entrega bloques de hasta 510.",
                        "default": 4
                    },
                    "locationId": {
                        "title": "Avanzado: ID de ubicacion",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Opcional. ID de poligono de TOC TOC si ya lo conoces. Si se omite, el Actor usa el autocomplete publico y elige la mejor comuna encontrada."
                    },
                    "timeoutSecs": {
                        "title": "Avanzado: timeout",
                        "minimum": 10,
                        "maximum": 180,
                        "type": "integer",
                        "description": "Segundos maximos para cargar la pagina publica de resultados y capturar el JSON.",
                        "default": 60
                    },
                    "delaySecs": {
                        "title": "Avanzado: pausa entre bloques",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Pausa en segundos entre bloques backend de hasta 510 resultados.",
                        "default": 0.5
                    },
                    "failOnNoResults": {
                        "title": "Fallar si no hay resultados",
                        "type": "boolean",
                        "description": "Si esta activo, la ejecucion falla cuando TOC TOC no devuelve propiedades. Si esta apagado, guarda OUTPUT con estado no_results y dataset vacio.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Avanzado: proxy",
                        "type": "object",
                        "description": "El Actor usa proxy residencial de Chile por defecto en Apify cloud para mayor estabilidad.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "CL"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
