# Zonaprop Scraper (`solidcode/zonaprop-scraper`) Actor

\[💰 $0.9 / 1K] Extract real estate listings from Zonaprop, Argentina's largest property marketplace. Search by location, transaction type, property type, price range, bedrooms, and more. Returns listings with prices in ARS and USD, photos, amenities, and contact info.

- **URL**: https://apify.com/solidcode/zonaprop-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Developer tools, Lead generation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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

## Zonaprop Scraper

Pull real estate listings from Zonaprop — Argentina's largest property marketplace — at scale, with dual-currency prices (ARS and USD), GPS coordinates, publisher contact details, and full property specs for every for-sale, long-term-rent, and temporary-rent listing across the country. Built for real estate investors, brokerage analysts, and relocation consultants who need a clean, structured Argentine property dataset without hand-building search URLs or stitching together pesos and dollar listings.

### Why This Scraper?

- **Dual-currency pricing on every listing** — both `priceArs` and `priceUsd` captured separately, plus monthly `expensesArs` (expensas) and the originally posted currency. No collapsed single-price field, no dollar/peso guesswork.
- **11 property types covered** — Apartment, House, PH, Land, Office, Commercial, Garage, Warehouse, Country / Gated Community, Hotel, and full Building. Multi-select to fan out across categories in one run.
- **Three transaction modes in one actor** — Buy (Venta), long-term Rent (Alquiler), and Temporary furnished Rent (Alquiler Temporal). Flip a single dropdown.
- **Full publisher contact block** — agency name, WhatsApp number (digits-only, ready for click-to-chat links), public profile URL, and agency-vs-particular flag on every row. One-shot lead list for any barrio.
- **GPS coordinates wherever Zonaprop publishes them** — latitude and longitude pulled straight from the listing geolocation, ready to plot on a map or feed into a heatmap. Coverage is effectively complete in CABA and Gran Buenos Aires; sparser in interior land and special-use listings.
- **National coverage from CABA to Patagonia** — search any Argentine barrio, city, or province by name (e.g. "Palermo", "Mar del Plata", "Mendoza"), or paste any Zonaprop search URL and every filter in the slug carries over.
- **Half-bath precision** — bathrooms returned as a float (1.0, 1.5, 2.5) to match how Zonaprop displays them, not floored to integer.
- **A-estrenar and condition tags surfaced** — "A estrenar" (brand-new), "Usado", and "En construcción" exposed as their own field so you can isolate new builds vs resale stock.
- **Up to 8 high-resolution photos per listing** — zonapropcdn URLs at 720×532 ready for thumbnail grids and image pipelines.

### Use Cases

**Real Estate Investment**
- Compare USD asking prices across Buenos Aires barrios for cap-rate underwriting
- Track new-build (A estrenar) inventory by neighborhood for off-plan opportunity sourcing
- Pull rental yields by combining `priceUsd` (sale) and `priceUsd` (alquiler) at the same address

**Brokerage Intelligence**
- Map competitor inventory across CABA, Gran Buenos Aires, and the interior
- Identify which agencies dominate a given barrio with publisher-name aggregation
- Track listing velocity by re-running the same search and comparing `lastUpdatedAt`

**Relocation Services**
- Build a curated apartment list for an inbound expat with bedroom, bathroom, and area filters
- Surface temporary-furnished options (Alquiler Temporal) for stays under six months
- Combine ARS and USD pricing in one view for clients comparing local vs imported rates

**Market Research**
- Aggregate per-square-meter pricing by province for macro Argentine real estate trends
- Track expensas (monthly building fees) growth across CABA neighborhoods
- Monitor commercial inventory (Local, Oficina, Galpón) for retail and logistics analysts

**Lead Generation**
- Build agency contact lists with WhatsApp numbers ready for cold outreach
- Identify "particular" (FSBO) listings by filtering `publisherType` for direct-to-owner contact
- Power CRM imports with publisher profile URLs and agency websites

### Getting Started

#### Apartments for Sale in Capital Federal

The simplest run — defaults to apartments for sale in CABA, 100 results:

```json
{
    "location": "Capital Federal",
    "maxResults": 100
}
````

#### Houses for Rent in Palermo Under USD 2,000

```json
{
    "location": "Palermo",
    "transactionType": "alquiler",
    "propertyTypes": ["casa", "ph"],
    "currency": "USD",
    "priceMax": 2000,
    "maxResults": 200
}
```

#### Investment Apartments — 2+ Bedrooms, 50–100 m², USD 100k–300k

```json
{
    "location": "Capital Federal",
    "transactionType": "venta",
    "propertyTypes": ["departamento"],
    "currency": "USD",
    "priceMin": 100000,
    "priceMax": 300000,
    "bedroomsMin": 2,
    "coveredAreaMin": 50,
    "coveredAreaMax": 100,
    "maxResults": 500
}
```

#### Use a Zonaprop URL Directly

Paste any search URL — every filter in the slug is preserved:

```json
{
    "startUrls": [
        "https://www.zonaprop.com.ar/departamentos-venta-palermo-3-habitaciones.html"
    ],
    "maxResults": 300
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste one or more Zonaprop search URLs directly. Filters built into the URL (price, rooms, type) are honored automatically. When provided, these override the Location and filter fields below. |
| `location` | string | `"Capital Federal"` | Free-text location: a barrio, city, or province in Argentina — e.g. "Palermo", "Capital Federal", "Mar del Plata", "Córdoba". Ignored when Start URLs are provided. |

#### Search Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `transactionType` | select | `Buy (Venta)` | Buy, Rent, or Temporary Rent. Maps to Zonaprop's venta / alquiler / alquiler-temporal. |
| `propertyTypes` | select\[] | `[]` (all) | Multi-select from 11 types — Apartment, House, PH, Land, Office, Commercial, Garage, Warehouse, Country / Gated Community, Hotel, Building. Leave empty for all. |

#### Price

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `currency` | select | `Argentine Peso (ARS)` | Currency the price filter is in — Zonaprop publishes most listings in both ARS and USD. |
| `priceMin` | integer | (none) | Minimum price in the chosen currency. |
| `priceMax` | integer | (none) | Maximum price in the chosen currency. |

#### Rooms & Size

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `bedroomsMin` | integer (0–10) | (none) | Minimum number of bedrooms (dormitorios). |
| `bathroomsMin` | integer (0–10) | (none) | Minimum number of bathrooms. |
| `coveredAreaMin` | integer (m²) | (none) | Minimum covered area in square meters. |
| `coveredAreaMax` | integer (m²) | (none) | Maximum covered area in square meters. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum total listings to return across all searches and URLs. Set to 0 to collect every available result. Tip: start with 50–200 to test, then increase. |

### Output

One flat row per listing — easy to drop straight into a spreadsheet or database. Here's a representative result:

```json
{
    "listingId": "59026595",
    "url": "https://www.zonaprop.com.ar/propiedades/clasificado/alclapin-departamento-en-nunez-venta-59026595.html",
    "title": "Departamento en Nuñez Venta",
    "description": "Departamento en el barrio de Nuñez, 2 ambientes...",
    "transactionType": "alquiler",
    "propertyType": "Apartment",
    "priceArs": null,
    "priceUsd": 790.0,
    "priceDisplayCurrency": "USD",
    "expensesArs": 150000.0,
    "address": "Amenabar al 3200",
    "neighborhood": "Núñez",
    "city": "Capital Federal",
    "province": "Buenos Aires",
    "latitude": -34.553517,
    "longitude": -58.4673992,
    "totalAreaM2": 45,
    "coveredAreaM2": 35,
    "rooms": 2,
    "bedrooms": 1,
    "bathrooms": 1.0,
    "parkingSpaces": null,
    "age": "18",
    "condition": "usado",
    "amenities": [],
    "photos": [
        "https://imgar.zonapropcdn.com/avisos/1/00/59/02/65/95/720x532/2050540556.jpg",
        "https://imgar.zonapropcdn.com/avisos/1/00/59/02/65/95/720x532/2050540578.jpg"
    ],
    "videos": [],
    "publisherName": "Diego Pablo Novello Bienes Raíces",
    "publisherType": "agency",
    "publisherPhone": null,
    "publisherWhatsapp": "541126885078",
    "publisherWebsite": null,
    "publisherUrl": "https://www.zonaprop.com.ar/inmobiliarias/diego-pablo-novello-bienes-raices_30040503-inmuebles.html",
    "publishedAt": "2018-05-28T03:00:00+00:00",
    "lastUpdatedAt": "2026-05-05T00:00:00-0400",
    "scrapedAt": "2026-05-09T13:51:42.572897+00:00"
}
```

A note on nulls: every field below marked **Yes** under "Nullable?" can be `null` or empty when Zonaprop omits the data on a particular listing. Always defensive-check these on the consumer side. Always-present fields are marked **No**.

#### Core Fields

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `listingId` | string | No | Zonaprop posting ID — stable across runs, use for deduplication. |
| `url` | string | No | Public listing URL on zonaprop.com.ar. |
| `title` | string | Yes | Listing title as displayed on Zonaprop (rare cases use `generatedTitle`). |
| `description` | string | Yes | Full posting description in Spanish. Some listings have only a title. |
| `transactionType` | string | No | `venta` / `alquiler` / `alquiler-temporal`. |
| `propertyType` | string | No | Apartment, House, PH, Land, Office, Commercial, Garage, Warehouse, Country, Hotel, Building. |

#### Pricing

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `priceArs` | number | Yes | Price in Argentine pesos. `null` when the listing is posted only in USD. |
| `priceUsd` | number | Yes | Price in US dollars. `null` when the listing is posted only in ARS. |
| `priceDisplayCurrency` | string | No | The currency the listing actually advertises in (`ARS` or `USD`). |
| `expensesArs` | number | Yes | Monthly building expenses (expensas), in ARS. `null` when not advertised. |

#### Location

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `address` | string | Yes | Street and number when published; many listings only expose neighborhood-level. |
| `neighborhood` | string | Yes | Barrio (e.g. Palermo, Recoleta, Núñez). |
| `city` | string | Yes | City (e.g. Capital Federal, Tigre, Rosario). |
| `province` | string | Yes | Province (e.g. Buenos Aires, Córdoba, Mendoza). |
| `latitude` | number | Yes | Listing latitude. Effectively always present in CABA / GBA, sparser elsewhere. |
| `longitude` | number | Yes | Listing longitude. Paired with `latitude` (both or neither). |

#### Property Specs

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `totalAreaM2` | number | Yes | Total area in square meters. |
| `coveredAreaM2` | number | Yes | Covered area in square meters. |
| `rooms` | integer | Yes | Number of rooms (ambientes). |
| `bedrooms` | integer | Yes | Number of bedrooms (dormitorios). |
| `bathrooms` | number | Yes | Number of bathrooms — float to support 1.5, 2.5. |
| `parkingSpaces` | integer | Yes | Number of garage / parking spaces. `null` for units without parking. |
| `age` | string | Yes | "A estrenar" / "1 año" / "5 a 10 años" — Zonaprop's antigüedad bucket. |
| `condition` | string | Yes | Listing condition (`a estrenar`, `usado`, `en construcción`). |
| `amenities` | string\[] | No | Always returned. Empty list (`[]`) when the search payload doesn't carry amenities. |

#### Publisher Contact

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `publisherName` | string | Yes | Inmobiliaria or particular's display name. |
| `publisherType` | string | Yes | `agency` or `particular`. |
| `publisherPhone` | string | Yes | Publisher phone number. Often `null` — most agencies route through WhatsApp. |
| `publisherWhatsapp` | string | Yes | WhatsApp number, digits-only, ready for `wa.me/` links. `null` for "particular" listings without WhatsApp. |
| `publisherWebsite` | string | Yes | Publisher's external website URL. Generally `null` — search payload doesn't expose it. |
| `publisherUrl` | string | Yes | Publisher's profile page on zonaprop.com.ar. `null` for FSBO. |

#### Media & Timestamps

| Field | Type | Nullable? | Description |
|-------|------|-----------|-------------|
| `photos` | string\[] | No | Photo URLs (high-resolution, up to 8 per listing). Empty list when none uploaded. |
| `videos` | string\[] | No | Always returned. Empty list (`[]`) — search payload doesn't expose videos. |
| `publishedAt` | string | Yes | Original publish time as ISO 8601 UTC. `null` when Zonaprop didn't ship a timestamp. |
| `lastUpdatedAt` | string | Yes | Last update timestamp from Zonaprop. |
| `scrapedAt` | string | No | ISO 8601 timestamp of when this row was captured. |

### Tips for Best Results

- **Pick the currency that matches your filter** — set `currency: "USD"` for sale listings (most CABA sales are dollar-denominated) and `currency: "ARS"` for long-term rents (almost always in pesos). The dataset always returns both `priceArs` and `priceUsd` when posted, regardless of which currency you filtered on.
- **`country` means rural estate, not nationality** — the `country` property type is Zonaprop's term for gated communities and rural ranches (quintas), not a country-of-residence filter.
- **Paste a Zonaprop URL to inherit every filter** — copy a search URL from your browser address bar after applying filters in the UI. Every slug filter (price ranges, rooms, type) carries over and you skip the input-form work entirely.
- **Use `bedroomsMin: 5` for "5 or more"** — Zonaprop's slug grammar caps exact bedroom matching at 4 and switches to "más de 5" beyond that. The actor handles this automatically.
- **Combine `propertyTypes` for multi-category sweeps** — picking `["departamento", "casa", "ph"]` returns all three home categories (apartment, house, PH) in one run, deduplicated.
- **Multi-type + price/area filters: run separate searches per type** — when `priceMin`, `priceMax`, `coveredAreaMin`, or `coveredAreaMax` is set together with two or more `propertyTypes`, the result is limited to the first type (Zonaprop's filter API only accepts one type at a time when prices are involved). Run one search per property type for full coverage.
- **Start small, then scale** — set `maxResults` to 30–100 on your first run to verify the data matches your needs, then bump to thousands.
- **`expensas` are almost always ARS** — the `expensesArs` field captures monthly building fees in pesos. There is no `expensesUsd` field because Zonaprop publishers virtually never post expenses in dollars.

### Pricing

**$0.90 per 1,000 listings** — pay-per-result, 10% under the next-cheapest Zonaprop actor on Apify.

| Listings | Cost |
|----------|------|
| 100 | $0.09 |
| 1,000 | $0.90 |
| 10,000 | $9.00 |
| 100,000 | $90.00 |

**No compute charges — you only pay per listing returned.** A "listing" is any property row in the output dataset. Platform storage fees are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate real estate research, market analysis, and lead generation. Users are responsible for complying with applicable laws and Zonaprop's Terms of Service. Do not use extracted data for spam, harassment, or any illegal purpose. Be mindful of personal data and consumer protection regulations (Ley 25.326 in Argentina, GDPR for EU residents) when processing publisher contact information.

# Actor input Schema

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

Paste one or more Zonaprop search URLs directly (e.g. https://www.zonaprop.com.ar/departamentos-venta-palermo.html). Filters built into the URL (price, rooms, type) are honored automatically. When provided, these override the Location and filter fields below.

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

Free-text location: a barrio, city, or province in Argentina — e.g. 'Palermo', 'Capital Federal', 'Mar del Plata', 'Córdoba'. Ignored when Start URLs are provided.

## `transactionType` (type: `string`):

What you want — properties for sale, long-term rent, or temporary rent (Zonaprop calls these venta, alquiler, and alquiler temporal).

## `propertyTypes` (type: `array`):

Property types to include. Leave empty for all types.

## `currency` (type: `string`):

Currency for the price-range filter below. Zonaprop publishes most listings in both ARS and USD — pick the one your filter range is in.

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

Only include listings at or above this price (in the currency you picked above). Leave empty for no minimum.

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

Only include listings at or below this price (in the currency you picked above). Leave empty for no maximum.

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

Only include listings with at least this many bedrooms (dormitorios). Zonaprop groups 5+ bedrooms into a single bucket — selecting 5 or higher returns the same set. Leave empty for any.

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

Only include listings with at least this many bathrooms. Zonaprop groups 1+ bathrooms ('mas-de-1-bano') and 2+, 3+, etc. — values above 10 are not supported. Leave empty for any.

## `coveredAreaMin` (type: `integer`):

Only include listings with at least this much covered area, in square meters. Leave empty for no minimum.

## `coveredAreaMax` (type: `integer`):

Only include listings with at most this much covered area, in square meters. Leave empty for no maximum.

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

Maximum total listings to return across all searches and URLs. Set to 0 to collect every available result. Tip: start with 50–200 to test, then increase.

## Actor input object example

```json
{
  "startUrls": [],
  "location": "Capital Federal",
  "transactionType": "venta",
  "propertyTypes": [],
  "currency": "ARS",
  "maxResults": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped listings with key columns — price, location, rooms, area.

## `details` (type: `string`):

Full details of each listing including amenities, publisher contact, photos, and coordinates.

# 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 = {
    "startUrls": [],
    "location": "Capital Federal",
    "transactionType": "venta",
    "propertyTypes": [],
    "currency": "ARS",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/zonaprop-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 = {
    "startUrls": [],
    "location": "Capital Federal",
    "transactionType": "venta",
    "propertyTypes": [],
    "currency": "ARS",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/zonaprop-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 '{
  "startUrls": [],
  "location": "Capital Federal",
  "transactionType": "venta",
  "propertyTypes": [],
  "currency": "ARS",
  "maxResults": 10
}' |
apify call solidcode/zonaprop-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zonaprop Scraper",
        "description": "[💰 $0.9 / 1K] Extract real estate listings from Zonaprop, Argentina's largest property marketplace. Search by location, transaction type, property type, price range, bedrooms, and more. Returns listings with prices in ARS and USD, photos, amenities, and contact info.",
        "version": "1.0",
        "x-build-id": "vnoLzxrA791rOujPd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~zonaprop-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-zonaprop-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/solidcode~zonaprop-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-zonaprop-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/solidcode~zonaprop-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-zonaprop-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Paste one or more Zonaprop search URLs directly (e.g. https://www.zonaprop.com.ar/departamentos-venta-palermo.html). Filters built into the URL (price, rooms, type) are honored automatically. When provided, these override the Location and filter fields below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Free-text location: a barrio, city, or province in Argentina — e.g. 'Palermo', 'Capital Federal', 'Mar del Plata', 'Córdoba'. Ignored when Start URLs are provided.",
                        "default": "Capital Federal"
                    },
                    "transactionType": {
                        "title": "Transaction Type",
                        "enum": [
                            "venta",
                            "alquiler",
                            "alquiler-temporal"
                        ],
                        "type": "string",
                        "description": "What you want — properties for sale, long-term rent, or temporary rent (Zonaprop calls these venta, alquiler, and alquiler temporal).",
                        "default": "venta"
                    },
                    "propertyTypes": {
                        "title": "Property Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Property types to include. Leave empty for all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "departamento",
                                "casa",
                                "ph",
                                "terreno",
                                "oficina",
                                "local",
                                "cochera",
                                "galpon",
                                "country",
                                "hotel",
                                "edificio"
                            ],
                            "enumTitles": [
                                "Apartment (Departamento)",
                                "House (Casa)",
                                "PH",
                                "Land (Terreno)",
                                "Office (Oficina)",
                                "Commercial (Local)",
                                "Garage (Cochera)",
                                "Warehouse (Galpón)",
                                "Country / Gated Community",
                                "Hotel",
                                "Building (Edificio)"
                            ]
                        },
                        "default": []
                    },
                    "currency": {
                        "title": "Price Currency",
                        "enum": [
                            "ARS",
                            "USD"
                        ],
                        "type": "string",
                        "description": "Currency for the price-range filter below. Zonaprop publishes most listings in both ARS and USD — pick the one your filter range is in.",
                        "default": "ARS"
                    },
                    "priceMin": {
                        "title": "Minimum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or above this price (in the currency you picked above). Leave empty for no minimum."
                    },
                    "priceMax": {
                        "title": "Maximum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or below this price (in the currency you picked above). Leave empty for no maximum."
                    },
                    "bedroomsMin": {
                        "title": "Minimum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include listings with at least this many bedrooms (dormitorios). Zonaprop groups 5+ bedrooms into a single bucket — selecting 5 or higher returns the same set. Leave empty for any."
                    },
                    "bathroomsMin": {
                        "title": "Minimum Bathrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include listings with at least this many bathrooms. Zonaprop groups 1+ bathrooms ('mas-de-1-bano') and 2+, 3+, etc. — values above 10 are not supported. Leave empty for any."
                    },
                    "coveredAreaMin": {
                        "title": "Minimum Covered Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with at least this much covered area, in square meters. Leave empty for no minimum."
                    },
                    "coveredAreaMax": {
                        "title": "Maximum Covered Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with at most this much covered area, in square meters. Leave empty for no maximum."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total listings to return across all searches and URLs. Set to 0 to collect every available result. Tip: start with 50–200 to test, then increase.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
