# TocToc Property Scraper (`datacach/toctoc-property-scraper`) Actor

Scrape property listings from TocToc.com — Chile's largest real estate portal. Filter by location, operation type (buy/rent), and property category. Supports full pagination and concurrent fetching.

- **URL**: https://apify.com/datacach/toctoc-property-scraper.md
- **Developed by:** [DataCach](https://apify.com/datacach) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 property scrapeds

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

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

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

## TocToc Property Scraper – Chilean Real Estate Listings

Extract **property listings from TocToc.com**, Chile's largest real estate portal, without writing a single line of code. Search by city or commune, filter by operation type (buy or rent) and property category, and receive clean structured data ready for analysis, lead generation, or market research.

Try it now on [Apify](https://apify.com) and get your first results in seconds.

---

### What does TocToc Property Scraper do?

**TocToc Property Scraper** automates the collection of property listings published on [toctoc.com](https://www.toctoc.com). You provide a location — a city, commune, or neighbourhood in Chile — and the actor returns a structured dataset of matching properties, including direct listing URLs and property IDs.

It handles pagination automatically, fetches pages concurrently for maximum speed, and respects any result limit you set so you only pay for the data you need. All runs are powered by residential proxies to ensure high success rates.

---

### Why use TocToc Property Scraper?

- **No API key required** — works directly against TocToc's public listing engine.
- **Full pagination support** — retrieves all available results across every page, not just the first one.
- **Concurrent fetching** — pages are fetched in parallel batches, cutting total run time significantly compared to sequential scraping.
- **Flexible filtering** — combine any operation type (buy / rent) with any property category (apartments, houses, offices, land, and more).
- **Controllable output size** — set `maxResults` to cap the number of records and avoid unnecessary compute costs.
- **Apify ecosystem ready** — schedule runs, connect to Google Sheets, Zapier, Make, or any webhook in a few clicks from the Apify Console.

---

### Typical use cases

1. **Real estate market research** — track listing supply levels and availability across communes in Santiago, Valparaíso, Concepción, or any Chilean city.
2. **Lead generation for brokers and agents** — build prospecting lists with fresh listing URLs segmented by type and location.
3. **Competitive intelligence** — monitor how many units a developer is listing and how inventory changes over time.
4. **Investment analysis** — compare the volume of buy vs. rent listings in target areas to identify market dynamics.
5. **Academic and journalistic research** — gather housing supply data for urban planning studies or investigative reporting.

---

### How to use TocToc Property Scraper

1. **Open the actor** on the Apify platform and click **Try for free**.
2. In the **Input** tab, type the location you want to scrape (e.g. `"Las Condes"`, `"Valparaíso"`, `"Antofagasta"`).
3. Select one or more **operation types** (Comprar / Arrendar) and one or more **property types**.
4. Optionally set **Max Results** to limit the number of records returned (leave at `0` for unlimited).
5. Click **Start** and watch the live log. Results appear in the **Dataset** tab as they are collected.
6. **Download** your dataset in JSON, CSV, Excel, or HTML from the Dataset tab.

---

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `location` | string | Yes | — | City, commune, or address to search (e.g. `"Santiago"`, `"Providencia"`, `"Viña del Mar"`). |
| `operation` | array | No | `["COMPRAR"]` | Operation type(s): `"COMPRAR"` (buy) and/or `"ARRENDAR"` (rent). |
| `propertyType` | string | No | `"departamento"` | Property category. Supported values: `departamento`, `casas`, `oficina`, `terreno`, `parcela`, `agricola`, `industrial`, `bodega`, `estacionamiento`, `vacacional`, `localcomercial`. |
| `maxResults` | integer | No | `0` | Maximum number of properties to return. Must be a multiple of 10. `0` means no limit. |

#### Example input

```json
{
  "location": "Las Condes",
  "operation": ["COMPRAR", "ARRENDAR"],
  "propertyType": "departamento",
  "maxResults": 200
}
````

***

### Output

Each item in the dataset represents one property listing. The actor captures the canonical listing URL and its unique identifier, timestamped at extraction time.

```json
{
  "property_id": 2847391,
  "url": "https://www.toctoc.com/propiedades/departamento-en-venta-en-las-condes-2847391",
  "extraction_date": "14-04-2026",
  "extraction_datetime": "2026-04-14T18:32:05.123456+00:00"
}
```

You can download the full dataset in **JSON, CSV, Excel, or HTML** directly from the Apify Console Dataset tab, or retrieve it programmatically via the Apify API.

#### Output fields

| Field | Format | Description |
|-------|--------|-------------|
| `property_id` | integer | Unique TocToc listing identifier. |
| `url` | string | Direct URL to the property listing on toctoc.com. |
| `extraction_date` | `DD-MM-YYYY` | Date when the record was extracted. |
| `extraction_datetime` | ISO 8601 | Full UTC timestamp of extraction. |

***

### Pricing

TocToc Property Scraper uses a **pay-per-result** model — you only pay for the properties you actually collect.

| Volume | Price |
|--------|-------|
| 1,000 properties | **$6.99** |
| 5,000 properties | **$34.95** |
| 10,000 properties | **$69.90** |

> Prices are in USD and billed through your Apify account usage balance.

Use `maxResults` to control exactly how many records each run fetches and keep costs predictable.

#### Free tier limitations

Free Apify accounts have the following restrictions applied automatically, regardless of the input provided:

| Limitation | Free | Paid |
|------------|------|------|
| Max results per run | **10** | Unlimited |
| Property types per run | **1** | **1** |

Upgrade your plan to remove all limitations.

***

### Tips for better results

- **Use commune-level searches** — searching `"Las Condes"` yields more targeted results than `"Santiago"`, which spans the entire metropolitan area.
- **Combine operation types** — passing both `"COMPRAR"` and `"ARRENDAR"` in a single run doubles coverage without duplicating location resolution requests.
- **Use `maxResults` for sampling** — set it to `100` or `200` for quick market snapshots before committing to a full extraction.
- **Schedule recurring runs** — use Apify's built-in scheduler to track listing volume changes weekly or monthly with zero manual effort.

***

### FAQ, disclaimers, and support

**Is scraping TocToc legal?**\
This actor accesses publicly available listing data from toctoc.com in the same way a browser would. It does not bypass authentication, access private data, or violate any paywall. Users are responsible for ensuring their use of the extracted data complies with TocToc's Terms of Service and applicable Chilean law.

**Does it scrape property details like price, area, or number of rooms?**\
The current version returns listing URLs and IDs. Property detail extraction (price, surface area, bedrooms, bathrooms, etc.) is on the roadmap. Use the listing URL to navigate directly to each property page for full details.

**What if a location returns zero results?**\
The actor logs a warning and exits cleanly. Try a broader location name or verify the spelling matches TocToc's search suggestions.

**I found a bug or need a custom feature.**\
Open an issue in the **Issues** tab on the actor page. We aim to respond within one business day.

***

*Made with love for the Chilean real estate data community.*

# Actor input Schema

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

Ciudad, comuna o dirección a buscar (ej: 'Arica', 'Las Condes', 'Santiago').

## `operation` (type: `array`):

Tipo de operación a buscar.

## `maxResults` (type: `integer`):

Límite máximo de propiedades a retornar. Debe ser múltiplo de 10. Usa 0 para sin límite.

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

Tipo de propiedad a buscar.

## Actor input object example

```json
{
  "operation": [
    "COMPRAR"
  ],
  "maxResults": 0,
  "propertyType": "departamento"
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped property listings.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("datacach/toctoc-property-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("datacach/toctoc-property-scraper").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 '{}' |
apify call datacach/toctoc-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TocToc Property Scraper",
        "description": "Scrape property listings from TocToc.com — Chile's largest real estate portal. Filter by location, operation type (buy/rent), and property category. Supports full pagination and concurrent fetching.",
        "version": "0.0",
        "x-build-id": "HbuYb3IfqsfIfTarC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datacach~toctoc-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datacach-toctoc-property-scraper",
                "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/datacach~toctoc-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datacach-toctoc-property-scraper",
                "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/datacach~toctoc-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datacach-toctoc-property-scraper",
                "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"
                ],
                "properties": {
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Ciudad, comuna o dirección a buscar (ej: 'Arica', 'Las Condes', 'Santiago')."
                    },
                    "operation": {
                        "title": "Operación",
                        "type": "array",
                        "description": "Tipo de operación a buscar.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "COMPRAR",
                                "ARRENDAR"
                            ],
                            "enumTitles": [
                                "Comprar",
                                "Arrendar"
                            ]
                        },
                        "default": [
                            "COMPRAR"
                        ]
                    },
                    "maxResults": {
                        "title": "Máximo de resultados",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Límite máximo de propiedades a retornar. Debe ser múltiplo de 10. Usa 0 para sin límite.",
                        "default": 0
                    },
                    "propertyType": {
                        "title": "Tipo de propiedad",
                        "enum": [
                            "departamento",
                            "casas",
                            "oficina",
                            "terreno",
                            "parcela",
                            "agricola",
                            "industrial",
                            "bodega",
                            "estacionamiento",
                            "vacacional",
                            "localcomercial"
                        ],
                        "type": "string",
                        "description": "Tipo de propiedad a buscar.",
                        "default": "departamento"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
