# Portalinmobiliario Scraper — Chile Property Data & API (`sian.agency/portalinmobiliario-property-scraper`) Actor

Portalinmobiliario.cl scraper & real estate data API for Chile's #1 property marketplace. Sale & rent listings: price in UF & CLP, area, beds, baths, parking, address, GPS, photos & full spec sheet — clean JSON/CSV. Fast overview or full detail. No account, no API key.

- **URL**: https://apify.com/sian.agency/portalinmobiliario-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 overview listing extracteds

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

## Portalinmobiliario Scraper — Chile Property Data & API 🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Idealista Scraper](https://img.shields.io/badge/Store-Idealista%20Scraper-E60023)](https://apify.com/sian.agency/smart-idealista-scraper?fpr=sian) [![Immobiliare Scraper](https://img.shields.io/badge/Store-Immobiliare%20Scraper-1AE392)](https://apify.com/sian.agency/immobiliare-property-scraper?fpr=sian) [![Zillow Scraper](https://img.shields.io/badge/Store-Zillow%20Scraper-1F4E79)](https://apify.com/sian.agency/zillow-property-scraper?fpr=sian)

#### 🎉 Every Portalinmobiliario listing — price in UF & CLP, GPS, photos & full spec sheet — in clean JSON, no account or API key
##### For analysts, brokers and developers building a Chilean real-estate data pipeline

---

### 📋 Overview

**Pull live listings from Portalinmobiliario — Chile's #1 property marketplace — into a clean, structured dataset.** Search any region or comuna for sale (venta), rent (arriendo) or short-term (arriendo temporal), and get back price (in UF *and* CLP), useful & total area, bedrooms, bathrooms, parking, storage, address, GPS coordinates, the full photo gallery, gastos comunes and a complete spec sheet — ready for Excel, a database or your own API.

**Why professionals choose this scraper:**
- ✅ **Chile's #1 portal, fully covered**: departamentos, casas, oficinas, terrenos and more — venta, arriendo & arriendo temporal across every region and comuna.
- ⚡ **Overview mode is fast & complete**: 48 fully-populated listings per page — price, location, beds/baths, area and lead photo included, with no per-listing fetches.
- 🎯 **38 structured fields**: UF/CLP price, condition, areas, parking, storage, floors, antiquity, gastos comunes, amenities, GPS and the full gallery.
- 💸 **Pay only per result**: transparent per-listing pricing with a free trial — no monthly subscription, no API key, no account.
- 💱 **Built-in extras**: live UF→CLP and USD conversion, price-per-m², and a thumbnail on every row.
- 🔗 **Paste any search URL**: build a search on Portalinmobiliario with all your filters and paste the link — every facet and sort is preserved.

---

### ✨ Features

- 🏙️ **Search by place or URL**: pick operation + property type + location, or paste a full Portalinmobiliario search-results URL.
- ⚡ **Overview mode**: cheap, high-volume listing extraction straight from the search-result cards (48 per page).
- 🔍 **Detail mode**: open each listing for the full record — condition, full spec sheet, amenities, GPS, description and the whole photo gallery — and it still carries **every** overview field, so detail rows are never sparse.
- 💱 **Dual currency**: every price kept in its native unit (UF or CLP) **and** converted to USD at the run's live FX rate.
- 📐 **Price per m²**: computed automatically for fast comparables.
- 📍 **GPS coordinates**: latitude/longitude on every detail listing — map them instantly.
- 🖼️ **All photos**: full hi-res gallery URLs plus a cover thumbnail per row.
- 🏠 **By listing URLs**: paste exact property URLs or MLC ids to scrape a specific shortlist.
- 📤 **Export anywhere**: JSON, CSV or Excel straight from the dataset.

---

### 🎬 Quick Start

Pick a scrape mode, tell it a location (or paste a search URL), and run. Results stream into the dataset as they're found. Start in Overview mode — it already includes price, location and photos.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~portalinmobiliario-property-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byPlace","operation":"venta","propertyType":"departamento","location":"santiago-metropolitana","maxResults":50}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose a mode

Pick **Overview** (fast, cheap list) or **Detail** (full record per listing).

#### Step 2: Tell it where to look

Set operation + property type + location (e.g. `venta` · `departamento` · `santiago-metropolitana`), or paste a Portalinmobiliario search URL.

#### Step 3: Run

Press **Start** and watch listings stream into your dataset.

**That's it! In under a minute, you'll have:**

- A clean table of Chilean property listings
- Price in UF & CLP (plus USD), area, rooms, location & photos
- A one-click JSON / CSV / Excel export

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (cheap list) or `detail` (full record). Default `overview`. |
| searchMode | string | No | `byPlace`, `bySearchUrl`, or `byListingUrl` (detail only). Default `byPlace`. |
| operation | string | No | `venta` (sale), `arriendo` (rent), `arriendo-temporal`. Used in **byPlace**. |
| propertyType | string | No | `departamento`, `casa`, `oficina`, `terreno`, `parcela`, `local`, `bodega`. |
| location | string | No | Region/comuna slug, e.g. `santiago-metropolitana`, `vina-del-mar-valparaiso`. |
| condition | string | No | `any`, `propiedades-usadas` (used) or `propiedades-nuevas` (new). |
| sort | string | No | `relevance`, `price_asc`, `price_desc`. |
| searchUrl | string | No | Paste a Portalinmobiliario search URL — every filter & sort preserved. |
| listingUrls | array | No | Exact property URLs or MLC ids (detail mode). |
| maxResults | integer | No | Cap on listings per run. FREE: 25. PAID: unlimited. Default 100. |
| maxPages | integer | No | Max search pages to walk (48 each). Default 5. |

**Example (by place):**

```json
{
  "scrapeMode": "detail",
  "searchMode": "byPlace",
  "operation": "venta",
  "propertyType": "departamento",
  "location": "providencia-metropolitana",
  "maxResults": 30
}
```

**Example (by search URL):**

```json
{
  "scrapeMode": "overview",
  "searchMode": "bySearchUrl",
  "searchUrl": "https://www.portalinmobiliario.com/venta/departamento/propiedades-usadas/santiago-metropolitana"
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **38 fields** including:

| Field | Type | Description |
|-------|------|-------------|
| id | string | Mercado Libre Chile id (MLC-XXXXXXXXXX) — stable join key |
| url | string | Canonical listing URL |
| propertyTitle | string | Listing title |
| operation | string | venta · arriendo · arriendo-temporal |
| property\_type | string | Departamento, Casa, Oficina, Terreno… |
| price | number | Price in the listing's own currency |
| currency | string | UF (Unidad de Fomento) or CLP (peso) |
| priceUsd | number | Price converted to USD at the run's live FX rate |
| pricePerM2 | number | Price per m² (listing currency) |
| useful\_area / total\_area | string | Superficie útil / total |
| bedrooms / bathrooms | integer | Dormitorios / baños |
| parking / storage | integer | Estacionamientos / bodegas |
| maintenance\_fee | string | Gastos comunes |
| location | string | Address line |
| latitude / longitude | number | GPS coordinates (detail mode) |
| amenities | array | Gym, lift, A/C, etc. (detail mode) |
| images | array | Full photo gallery |

**Example:**

```json
{
  "thumbnail": "https://http2.mlstatic.com/D_NQ_NP_2X_700443-MLC...-F.webp",
  "id": "MLC-1933316335",
  "url": "https://www.portalinmobiliario.com/MLC-1933316335-...-_JM",
  "source": "detail",
  "propertyTitle": "Eco Arauco - Fundamenta",
  "operation": "venta",
  "property_type": "Departamento",
  "condition": "Nuevo",
  "price": 2934,
  "currency": "UF",
  "priceUsd": 118879.58,
  "pricePerM2": 68.23,
  "useful_area": "43 m²",
  "bedrooms": 1,
  "bathrooms": 1,
  "parking": 1,
  "maintenance_fee": "65.000 CLP",
  "location": "San Diego 2044, Santiago",
  "latitude": -33.4691,
  "longitude": -70.6420,
  "amenities": ["Gimnasio", "Ascensor"],
  "images": ["https://http2.mlstatic.com/..."]
}
```

***

### 💼 Use Cases & Examples

#### 1. Real-Estate Market Research

**Analysts tracking Chilean property supply and price trends.**

**Input:** A region or comuna + operation
**Output:** Every active listing with price (UF & CLP), area and location
**Use:** Build supply dashboards and track median UF/m² by comuna over time.

#### 2. UF-per-m² Benchmarking

**Brokers pricing a new listing against the market.**

**Input:** A target comuna + property type
**Output:** pricePerM2 on every comparable listing
**Use:** Set a competitive asking price backed by live comps.

#### 3. Investor Deal-Flow

**Property investors hunting under-priced units.**

**Input:** Sort by `price_asc` + a price-filtered search URL
**Output:** Cheapest listings first, with full spec sheet in detail mode
**Use:** Surface opportunities and shortlist by yield potential.

#### 4. PropTech Data Pipelines

**Developers powering a Chilean property app or model.**

**Input:** Scheduled runs by region
**Output:** Clean JSON with a stable MLC id join key
**Use:** Keep an always-fresh listings table behind your product.

#### 5. Lead & Inventory Lists

**Agencies building outreach or inventory lists.**

**Input:** A search URL with your filters
**Output:** Titles, locations, photos and contact context
**Use:** Feed a CRM or generate inventory reports.

#### 6. Comparable (Comps) Analysis

**Appraisers and lenders valuing a property.**

**Input:** Detail mode on a comuna
**Output:** Areas, condition, antiquity, gastos comunes and GPS
**Use:** Assemble a defensible comps set in minutes.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/portalinmobiliario-property-scraper').call({
  scrapeMode: 'overview',
  searchMode: 'byPlace',
  operation: 'venta',
  propertyType: 'departamento',
  location: 'santiago-metropolitana',
  maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/portalinmobiliario-property-scraper').call(
    run_input={
        'scrapeMode': 'detail',
        'searchMode': 'byPlace',
        'operation': 'arriendo',
        'propertyType': 'departamento',
        'location': 'providencia-metropolitana',
        'maxResults': 30,
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~portalinmobiliario-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byPlace","location":"santiago-metropolitana"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet, notify, or transform

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Pay-per-result: only charged for listings actually delivered
- A cheap, high-volume **Overview** event and a richer **Detail** event

💸 **Transparent pay-per-result** — no monthly subscription, no API key.

🔗 [View current pricing](https://apify.com/sian.agency/portalinmobiliario-property-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many listings can I scrape?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Why are some prices in UF and some in CLP?**
A: Chile quotes property in UF (an inflation-indexed unit) or CLP (pesos). Each row keeps its native currency *and* a USD conversion at the run's live FX rate.

**Q: Does Detail mode lose the list fields?**
A: No — Detail rows merge in every Overview field, so each detail record is complete.

**Q: What output formats are available?**
A: JSON, CSV, Excel — export directly from the Apify dataset.

**Q: Can I use my own search filters?**
A: Yes. Build a search on Portalinmobiliario and paste the URL with `bySearchUrl` — every filter and sort is preserved.

**Q: Do I need an account or API key for the site?**
A: No. Just your Apify token.

**Q: How fresh is the data?**
A: Every run reads live listings at the moment it runs.

***

### 🐛 Troubleshooting

**No results returned**

- Check the location slug matches a real Portalinmobiliario URL (e.g. `santiago-metropolitana`).
- In `bySearchUrl`, confirm the URL opens a results page in your browser.

**Fewer results than expected**

- Raise `maxResults` and `maxPages`. FREE tier caps at 25 listings/run.

**Detail mode is slower than Overview**

- Expected — Detail opens each listing page. Use Overview for high-volume list pulls and Detail for the records you need enriched.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🏷️ Trademark Disclaimer

Portalinmobiliario, Mercado Libre, and all related names, logos and brands are trademarks of their respective owners. SIÁN Agency is **not** affiliated with, endorsed by, or sponsored by Portalinmobiliario or Mercado Libre. This actor is an independent tool that accesses **publicly available** information for legitimate data-analysis purposes only.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

**Overview** (cheap, high-volume) reads the search-result cards: id, URL, title, operation/type, price+currency, beds/baths/area, location & lead photo. **Detail** opens each listing for the full record — clean numeric price, condition, full spec sheet (areas, parking, storage, floors, antiquity, gastos comunes), amenities, GPS, description & the whole photo gallery — and still carries every overview field.

## `searchMode` (type: `string`):

**By place** builds the search from operation + property type + location below. **Search URL** uses a Portalinmobiliario search URL you paste (all its filters/sorting preserved). **Listing URLs** (detail mode only) scrapes a specific list of property URLs.

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

Sale or rental type. Used in **By place** mode.

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

Property category. Used in **By place** mode.

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

Region/comuna slug as it appears in a Portalinmobiliario URL, e.g. `santiago-metropolitana`, `vina-del-mar-valparaiso`, `providencia-metropolitana`. Used in **By place** mode.

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

Restrict to used or new properties. Leave as Any to include both. Used in **By place** mode.

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

Result ordering. Used in **By place** mode.

## `searchUrl` (type: `string`):

Paste a Portalinmobiliario search URL — every filter and sort in it is preserved verbatim. Used when **Search by = Search URL**.

**Example:** `https://www.portalinmobiliario.com/venta/departamento/propiedades-usadas/santiago-metropolitana`

## `listingUrls` (type: `array`):

Scrape a specific list of property URLs (or MLC ids). Used when **Search by = Listing URLs** (detail mode only). Click **Bulk edit** to paste one URL per line.

**Example:** `https://www.portalinmobiliario.com/MLC-4020446020-...-_JM`

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

Maximum number of listings to scrape. **FREE users:** capped at 25 per run. **PAID users:** unlimited (set as high as you need).

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

Maximum search-result pages to walk (48 listings each) before stopping. Caps how far the crawler paginates.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "byPlace",
  "operation": "venta",
  "propertyType": "departamento",
  "location": "santiago-metropolitana",
  "condition": "any",
  "sort": "relevance",
  "searchUrl": "https://www.portalinmobiliario.com/venta/departamento/santiago-metropolitana",
  "maxResults": 100,
  "maxPages": 5
}
```

# Actor output Schema

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

The scraped Portalinmobiliario listings dataset (overview cards or full detail records).

## `scrapingSummary` (type: `string`):

HTML summary of the run — counts, coverage and key metrics.

# 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("sian.agency/portalinmobiliario-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("sian.agency/portalinmobiliario-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 sian.agency/portalinmobiliario-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Portalinmobiliario Scraper — Chile Property Data & API",
        "description": "Portalinmobiliario.cl scraper & real estate data API for Chile's #1 property marketplace. Sale & rent listings: price in UF & CLP, area, beds, baths, parking, address, GPS, photos & full spec sheet — clean JSON/CSV. Fast overview or full detail. No account, no API key.",
        "version": "1.0",
        "x-build-id": "0cQVRYMEqKumkcORL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~portalinmobiliario-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-portalinmobiliario-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/sian.agency~portalinmobiliario-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-portalinmobiliario-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/sian.agency~portalinmobiliario-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-portalinmobiliario-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",
                "properties": {
                    "scrapeMode": {
                        "title": "🧭 Scrape mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "**Overview** (cheap, high-volume) reads the search-result cards: id, URL, title, operation/type, price+currency, beds/baths/area, location & lead photo. **Detail** opens each listing for the full record — clean numeric price, condition, full spec sheet (areas, parking, storage, floors, antiquity, gastos comunes), amenities, GPS, description & the whole photo gallery — and still carries every overview field.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🎯 Search by",
                        "enum": [
                            "byPlace",
                            "bySearchUrl",
                            "byListingUrl"
                        ],
                        "type": "string",
                        "description": "**By place** builds the search from operation + property type + location below. **Search URL** uses a Portalinmobiliario search URL you paste (all its filters/sorting preserved). **Listing URLs** (detail mode only) scrapes a specific list of property URLs.",
                        "default": "byPlace"
                    },
                    "operation": {
                        "title": "💼 Operation",
                        "enum": [
                            "venta",
                            "arriendo",
                            "arriendo-temporal"
                        ],
                        "type": "string",
                        "description": "Sale or rental type. Used in **By place** mode.",
                        "default": "venta"
                    },
                    "propertyType": {
                        "title": "🏘️ Property type",
                        "enum": [
                            "departamento",
                            "casa",
                            "oficina",
                            "terreno",
                            "parcela",
                            "local",
                            "bodega"
                        ],
                        "type": "string",
                        "description": "Property category. Used in **By place** mode.",
                        "default": "departamento"
                    },
                    "location": {
                        "title": "📍 Location slug",
                        "type": "string",
                        "description": "Region/comuna slug as it appears in a Portalinmobiliario URL, e.g. `santiago-metropolitana`, `vina-del-mar-valparaiso`, `providencia-metropolitana`. Used in **By place** mode.",
                        "default": "santiago-metropolitana"
                    },
                    "condition": {
                        "title": "🆕 Condition (optional)",
                        "enum": [
                            "any",
                            "propiedades-usadas",
                            "propiedades-nuevas"
                        ],
                        "type": "string",
                        "description": "Restrict to used or new properties. Leave as Any to include both. Used in **By place** mode.",
                        "default": "any"
                    },
                    "sort": {
                        "title": "↕️ Sort",
                        "enum": [
                            "relevance",
                            "price_asc",
                            "price_desc"
                        ],
                        "type": "string",
                        "description": "Result ordering. Used in **By place** mode.",
                        "default": "relevance"
                    },
                    "searchUrl": {
                        "title": "🔗 Search URL",
                        "type": "string",
                        "description": "Paste a Portalinmobiliario search URL — every filter and sort in it is preserved verbatim. Used when **Search by = Search URL**.\n\n**Example:** `https://www.portalinmobiliario.com/venta/departamento/propiedades-usadas/santiago-metropolitana`"
                    },
                    "listingUrls": {
                        "title": "🏠 Listing URLs (detail mode)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Scrape a specific list of property URLs (or MLC ids). Used when **Search by = Listing URLs** (detail mode only). Click **Bulk edit** to paste one URL per line.\n\n**Example:** `https://www.portalinmobiliario.com/MLC-4020446020-...-_JM`",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape. **FREE users:** capped at 25 per run. **PAID users:** unlimited (set as high as you need).",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "📄 Max search pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum search-result pages to walk (48 listings each) before stopping. Caps how far the crawler paginates.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
