# Zonaprop Scraper - Argentina Real Estate Listings & Leads (`haketa/zonaprop-scraper`) Actor

Scrape Zonaprop Argentina real estate listings. Extract price (USD/ARS), expenses, surface m2, rooms, bedrooms, bathrooms, address and neighborhood, property type, agency name, WhatsApp/phone contact and photos by search URL. Export JSON, CSV, Excel.

- **URL**: https://apify.com/haketa/zonaprop-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Real estate, Lead generation
- **Features:** Limited permissions
- **Stats:** 5 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zonaprop Scraper — Argentina Real Estate Listings, Prices & Agency Leads

> **The definitive Zonaprop data extractor on Apify.** This high-performance **Zonaprop scraper** extracts real-time property listings from [**Zonaprop**](https://www.zonaprop.com.ar/) — Argentina's premier real estate marketplace. Seamlessly extract property prices in **USD or ARS**, monthly maintenance fees (expensas), total and covered surface area ($m^2$), room layouts, bedroom and bathroom counts, full neighborhood addresses, property classifications, listing real estate agencies, direct **WhatsApp/phone contact leads**, and high-resolution photos.
>
> Export structured property datasets instantly to **JSON, CSV, Excel, or API**.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?style=flat-square\&logo=apify)](https://apify.com/haketa/zonaprop-scraper)
[![Live Data](https://img.shields.io/badge/Data-Live%20at%20Run%20Time-orange?style=flat-square)]()
[![Region](https://img.shields.io/badge/Region-Argentina%20%F0%9F%87%A6%F0%9F%87%B7-red?style=flat-square)]()
[![Leads](https://img.shields.io/badge/Includes-Agency%20%26%20WhatsApp%20Leads-success?style=flat-square)]()
[![Operations](https://img.shields.io/badge/Venta%20%26%20Alquiler-USD%20%2F%20ARS-brightgreen?style=flat-square)]()
[![Pagination](https://img.shields.io/badge/Pagination-1%2C000%2B%20Unlocked-purple?style=flat-square)]()
[![Export Formats](https://img.shields.io/badge/Export-JSON%20%C2%B7%20CSV%20%C2%B7%20Excel-lightgrey?style=flat-square)]()

***

### ⚡ At a glance

| Feature | Specification |
|---|---|
| **Target Platform** | [Zonaprop Argentina](https://www.zonaprop.com.ar/) (Navent Group) |
| **Market Scope** | Buenos Aires (CABA), GBA (Norte, Oeste, Sur), Córdoba, Rosario, Mendoza & nationwide |
| **Operations Supported** | Sale (`Venta`), Rent (`Alquiler`), Temporary Rent (`Alquiler temporal`) |
| **Property Types** | Departamentos, Casas, PH, Oficinas, Locales comerciales, Terrenos, Desarrollos |
| **Contact Data** | Real estate agency name, agency profile URL, agency ID, verified WhatsApp phone |
| **Currency Handling** | Native USD and ARS extraction with monthly maintenance fees (`expensas`) |
| **Pagination & Depth** | Unlocked 1,000+ listings via multi-search and automated district expansion |
| **Proxy Architecture** | Argentina residential IP rotation configured automatically |
| **Execution Speed** | ~30–45 seconds per 60 listings; ~90 seconds for 250+ properties |
| **Export Formats** | Clean tabular datasets: JSON, CSV, XLSX, HTML Table, XML, Apify Webhooks |

***

### 🔎 Why scrape Zonaprop?

**Zonaprop** (zonaprop.com.ar), operated by Navent and QuintoAndar, is the undisputed leader in Argentina's real estate ecosystem. The portal lists hundreds of thousands of residential and commercial properties across Capital Federal (Palermo, Belgrano, Recoleta, Caballito, Puerto Madero), Greater Buenos Aires, and provincial urban centers. Each listing is packed with actionable market intelligence that real estate investors, hedge funds, proptech startups, and brokers rely on:

- 💰 **Dual Currency Benchmarking**: Real estate transactions in Argentina operate in both US Dollars ($USD$) and Argentine Pesos ($ARS$). Tracking live asking prices and fluctuations gives an instant macro pulse of property valuation across inflation cycles.
- 📞 **High-Intent B2B Lead Generation**: Over 85% of Zonaprop listings feature direct agency contacts and WhatsApp phone numbers, providing an unmatched database of active real estate brokers and property managers for B2B outreach.
- 📐 **Granular Physical Attributes**: Compare asking price-per-square-meter ($/m^2$), room layouts (ambientes), covered versus total surface areas, building age, and parking garage inclusions across micro-neighborhoods.
- 🏢 **Proptech Data Ingestion**: Feed proprietary valuation algorithms, automated listing portals, real estate aggregators, and appraisal engines with normalized property feeds.

Manual data collection is tedious, inefficient, and prone to formatting inconsistencies. This automated **Zonaprop data extractor** transforms complex real estate search pages into clean, analysis-ready tabular data within seconds.

***

### ✨ Key features

- 🏙️ **Comprehensive Property Coverage**: Scrape any Zonaprop search URL across apartments, family houses, PH units, commercial premises, warehouses, and land developments.
- 💵 **Dual-Currency & Expense Parsing**: Extracts both sale/rent prices (`priceAmount` + `priceCurrency` in USD or ARS) and monthly building maintenance expenses (`expensesAmount` + `expensesCurrency`).
- 📱 **Direct Broker WhatsApp Leads**: Extracts the publishing agency (`publisherName`, `publisherId`, `publisherUrl`) and direct WhatsApp contact numbers for targeted marketing and partnership campaigns.
- 🗺️ **Multi-Tier Geographic Normalization**: Automatically structures address hierarchies down to street name, neighborhood (barrio), municipality (partido/ciudad), and province.
- 🔄 **Unlocked 1,000+ Deep Pagination**: Effortlessly scrape beyond single-search limits. Set `maxItems: 1000` or higher; the scraper iterates through search pagination and automatically branches into neighboring districts when broad runs require high volume.
- ⚡ **Lightning Fast Prefill Runs**: Lightweight HTTP network pipeline completes standard prefill runs (60 listings) in 30–45 seconds with 0 duplicates.
- 🛡️ **Built-in Session Resilience**: Automatic residential proxy rotation ensures seamless data harvesting without manual IP provisioning.
- 📊 **Multi-Format Export Ready**: Download your scraped real estate leads and inventory in JSON, CSV, Excel, XML, or connect directly via webhooks.

***

### 🎯 Use cases & applications

#### 1. Proptech & Real Estate Portals

Populate local real estate search portals, aggregator platforms, and mobile apps with clean, structured Argentine property inventory. Synchronize price changes, new development releases, and new listings on an automated daily schedule.

#### 2. Broker & Agency B2B Lead Generation

Real estate tech providers, staging services, photographers, mortgage brokers, and insurance providers can extract thousands of agency profiles and WhatsApp phone numbers to scale direct B2B sales pipelines and CRM outreach.

#### 3. Investment Fund & Yield Analysis

Analyze gross rental yields across specific Buenos Aires sub-markets by comparing median sales prices against monthly rental rates in neighborhoods like Palermo Hollywood, Recoleta, Belgrano Chico, and Nuñez.

#### 4. Automated Property Valuation Models (AVM)

Train machine learning regression models on price-per-$m^2$, building age, covered surface ratio, bathroom-to-bedroom ratios, and location coefficients to produce accurate automated home valuations.

#### 5. Competitive Brokerage Intelligence

Monitor which property agencies dominate specific neighborhoods, identify top listing agents, track market share shifts, and analyze exclusive inventory trends across commercial and residential sectors.

#### 6. Appraisers & Real Estate Valuers

Pull comparable sales and rentals (comprables) within a specific geographic radius in seconds. Filter by property type, surface area, and room count to generate defensible appraisal reports for mortgage lenders and buyers.

***

### 🧭 How to construct search URLs

Zonaprop URLs follow a predictable, intuitive structure that maps directly to the platform's filtering engine:

1. **Operation + Property Type + Location**:
   - `https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html`
   - `https://www.zonaprop.com.ar/departamentos-alquiler-palermo.html`
   - `https://www.zonaprop.com.ar/casas-venta-zona-norte-gba.html`
   - `https://www.zonaprop.com.ar/ph-venta-belgrano.html`
2. **Applied Filters (Rooms, Price, Features)**:
   - Perform your search on [zonaprop.com.ar](https://www.zonaprop.com.ar) using your desired checkboxes (e.g., 2 dormitorios, con cochera, pileta).
   - Copy the resulting URL from your browser address bar.
   - Paste the URL directly into the `startUrls` array in the actor input.
3. **Multi-URL Campaigns**:
   - Provide multiple distinct search URLs across different neighborhoods or operations in a single run.
   - The actor visits each search URL sequentially, extracting properties while automatically filtering out duplicates.

***

### 📥 Input parameters

The actor features simple, intuitive configuration options. You can supply targeted search URLs or run an empty input to scrape popular listings by default.

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrls` | Array of strings | No | Capital Federal Venta URL | Zonaprop listing or search filter URLs (e.g., `https://www.zonaprop.com.ar/departamentos-venta-palermo.html`). |
| `maxItems` | Integer | No | `200` | Maximum number of listings to collect. Set to `0` for unlimited scraping governed by search depth. Prefill is set to `60` for fast execution. |
| `includeDescription` | Boolean | No | `true` | When enabled, scrapes full text descriptions and remarks. Disable for faster, lightweight dataset generation. |
| `proxyConfiguration` | Object | No | Residential (AR) | Proxy settings. Defaults to high-reputation Argentina residential proxies for reliable access. |

#### Example Input (`input.json`)

```json
{
  "startUrls": [
    "https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html",
    "https://www.zonaprop.com.ar/departamentos-alquiler-palermo.html"
  ],
  "maxItems": 150,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "AR"
  }
}
```

***

### 📤 Output dataset schema

Every collected listing is normalized into a comprehensive JSON object with structured fields and high data coverage:

#### 🏷️ Core listing attributes

| Field | Type | Coverage | Description |
|---|---|---|---|
| `postingId` | `string` | 🟢 High | Unique Zonaprop listing identifier |
| `title` | `string` | 🟢 High | Clean listing headline |
| `operationType` | `string` | 🟢 High | Operation classification (`Venta`, `Alquiler`, `Alquiler temporal`) |
| `propertyType` | `string` | 🟢 High | Property category (`Departamento`, `Casa`, `PH`, `Oficina`, etc.) |
| `url` | `string` | 🟢 High | Canonical listing URL on Zonaprop |
| `scrapedAt` | `string` | 🟢 High | ISO 8601 extraction timestamp |

#### 💵 Pricing & financial metrics

| Field | Type | Coverage | Description |
|---|---|---|---|
| `priceAmount` | `string` | 🟢 High | Numerical asking price |
| `priceCurrency` | `string` | 🟢 High | Currency code normalized to `USD` or `ARS` |
| `expensesAmount` | `string` | 🟡 Conditional | Monthly building maintenance fees (expensas) |
| `expensesCurrency` | `string` | 🟡 Conditional | Currency code for monthly expenses |

#### 📐 Property specifications & features

| Field | Type | Coverage | Description |
|---|---|---|---|
| `surfaceTotal` | `string` | 🟢 High | Total surface area in square meters ($m^2$) |
| `surfaceCovered` | `string` | 🟢 High | Covered/built surface area in square meters ($m^2$) |
| `rooms` | `string` | 🟢 High | Total room count (ambientes) |
| `bedrooms` | `string` | 🟢 High | Number of private bedrooms (dormitorios) |
| `bathrooms` | `string` | 🟢 High | Number of bathrooms (baños) |
| `garages` | `string` | 🟡 Conditional | Number of dedicated parking spots (cocheras) |
| `age` | `string` | 🟡 Conditional | Property age in years (antigüedad) |

#### 📍 Location details

| Field | Type | Coverage | Description |
|---|---|---|---|
| `address` | `string` | 🟢 High | Street name and building number |
| `neighborhood` | `string` | 🟢 High | Neighborhood name (Barrio e.g., Palermo, Recoleta, Caballito) |
| `city` | `string` | 🟢 High | City or municipal partido |
| `province` | `string` | 🟢 High | Province or federal district (Capital Federal, Buenos Aires, etc.) |

#### 🏢 Real estate agency & lead information

| Field | Type | Coverage | Description |
|---|---|---|---|
| `publisherName` | `string` | 🟢 High | Publishing real estate agency or broker name |
| `publisherId` | `string` | 🟢 High | Zonaprop internal agency identifier |
| `publisherUrl` | `string` | 🟢 High | Full URL to agency's Zonaprop storefront |
| `whatsApp` | `string` | 🟢 High (~85%) | Direct contact telephone / WhatsApp number |
| `imageCount` | `string` | 🟢 High | Total number of high-resolution images available |
| `images` | `string` | 🟢 High | Pipe-delimited list of high-resolution photo URLs |
| `description` | `string` | 🟢 High | Full property narrative and agent remarks |

***

### 📊 Sample output record

```json
{
  "postingId": "53412894",
  "title": "Excelente Departamento 3 Ambientes Con Balcón En Palermo Hollywood",
  "operationType": "Venta",
  "propertyType": "Departamento",
  "priceAmount": "185000",
  "priceCurrency": "USD",
  "expensesAmount": "42000",
  "expensesCurrency": "ARS",
  "surfaceTotal": "72",
  "surfaceCovered": "65",
  "rooms": "3",
  "bedrooms": "2",
  "bathrooms": "1",
  "garages": "1",
  "age": "8",
  "address": "Humboldt 1900",
  "neighborhood": "Palermo",
  "city": "Capital Federal",
  "province": "Capital Federal",
  "publisherName": "Torres & Asociados Propiedades",
  "publisherId": "148291",
  "publisherUrl": "https://www.zonaprop.com.ar/inmobiliarias/torres-y-asociados-propiedades.html",
  "whatsApp": "+5491145892211",
  "imageCount": "14",
  "images": "https://imgar.zonapropcdn.com/avisos/1/00/53/41/28/94/1200x1200/1892837162.jpg | https://imgar.zonapropcdn.com/avisos/1/00/53/41/28/94/1200x1200/1892837163.jpg",
  "description": "Hermoso semi-piso con orientación este, super luminoso. Gran living comedor con salida a balcón aterrazado...",
  "url": "https://www.zonaprop.com.ar/propiedades/clasificado-alclapin-excelente-departamento-3-ambientes-53412894.html",
  "scrapedAt": "2026-11-10T12:40:00.000Z"
}
```

***

### 🚀 How to use & integrate

#### Python Integration via Apify Client

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "startUrls": [
        "https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html"
    ],
    "maxItems": 300,
    "includeDescription": True
}

run = client.actor("haketa/zonaprop-scraper").call(run_input=run_input)

dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Extracted {len(dataset_items)} listings.")
```

#### Node.js / JavaScript Integration

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({
    token: 'YOUR_APIFY_TOKEN',
});

const run = await client.actor('haketa/zonaprop-scraper').call({
    startUrls: ['https://www.zonaprop.com.ar/departamentos-venta-palermo.html'],
    maxItems: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Successfully scraped ${items.length} Zonaprop listings.`);
```

#### Direct REST API Export

You can fetch results programmatically using Apify's REST endpoint without installing external SDKs:

```bash
curl -X GET "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&clean=true" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -o zonaprop_listings.csv
```

***

### ⚖️ Comparison: Manual Collection vs. Zonaprop Scraper

| Feature | Manual Copy-Paste | Custom In-House Crawler | Zonaprop Scraper (Actor) |
|---|---|---|---|
| **Speed** | 1–2 properties / minute | Depends on maintenance | 60+ properties / 30 seconds |
| **Completeness** | Prone to human omission | High risk of parser drift | 100% normalized schema |
| **Lead Capture** | Manual parsing of contacts | Complex DOM extraction | Automated WhatsApp & Agency extraction |
| **Proxy & Rotation** | High risk of IP bans | Manual proxy setup & cost | Built-in residential IP rotation |
| **Scalability** | Not scalable | Heavy developer upkeep | Effortlessly scales to 1,000+ items |
| **Cost Efficiency** | Extremely labor intensive | High engineering hours | Pay-per-usage on demand |

***

### 🔒 Data Quality & Integrity Assurance

Every listing undergoes rigorous field-level normalization before being emitted to the dataset:

- **Currency Cleanliness**: Native symbols (such as `$`) are resolved to ISO standard codes (`ARS` or `USD`) to eliminate confusion with American dollar values.
- **Deduplication Engine**: Internal ID caching prevents duplicate entries when paginating through broad or overlapping neighborhood queries.
- **Granular Feature Parsing**: Custom numerical parsers break unstructured descriptive strings into clean, integer-based metrics for total surface, covered surface, rooms, bedrooms, and bathrooms.
- **High-Resolution Media**: Image links are normalized directly to original CDN assets (1200x1200px) instead of blurry mobile thumbnails.

***

### 💡 Best practices for high-volume scraping

1. **Multi-URL Partitioning**: For large-scale data extraction across entire metropolitan regions, split queries into targeted sub-searches (e.g., individual neighborhoods such as Palermo, Recoleta, Belgrano, and Caballito). Add each URL to `startUrls`; the actor aggregates and deduplicates all listings automatically.
2. **Optimizing Run Cost**: If you do not require long property narratives or marketing descriptions, uncheck `includeDescription`. This minimizes network payload sizes and speeds up processing time.
3. **Currency Conversion Post-Processing**: Argentine real estate values are frequently quoted in both USD and ARS. Always filter or normalize by `priceCurrency` before calculating aggregate price-per-square-meter metrics.
4. **Automated Scheduling**: Use Apify Schedules to trigger weekly runs to identify newly listed properties and track historical price drops.
5. **Storage & Webhook Pipelines**: Connect Apify Integrations to immediately push completed datasets to Amazon S3, Google BigQuery, PostgreSQL, or Zapier when runs finish.

***

### ❓ Frequently Asked Questions (FAQ)

##### How many listings can I scrape in a single run?

There is no hard ceiling. By setting `maxItems` to `1000` or higher, the scraper extracts across multiple pages and automatically expands into adjoining neighborhoods to reach your desired volume.

##### Why does the scraper require Argentina residential proxies?

Zonaprop employs strict regional bot mitigation that blocks standard datacenter IPs. The scraper includes pre-configured Argentina residential proxy routing to ensure consistent, reliable HTTP 200 responses.

##### Can I extract both rental and sale listings in the same run?

Yes. You can supply any combination of `Venta` and `Alquiler` URLs in `startUrls`. Each dataset record explicitly denotes its operation in the `operationType` field.

##### Does the scraper extract real estate agent WhatsApp numbers?

Yes. In the majority of listings (~85%), Zonaprop embeds direct WhatsApp phone numbers for broker communication, which this actor extracts directly into the `whatsApp` column.

##### What happens if a property listing has multiple currencies?

Argentine properties list prices either in United States Dollars (`USD`) or Argentine Pesos (`ARS`). The scraper preserves the original currency and amount without lossy conversions so your downstream pipeline retains source accuracy.

##### Can I export directly to Google Sheets or Excel?

Yes. From the Apify Console dataset tab, you can instantly export data to CSV, Microsoft Excel (XLSX), or connect an automated webhook to sync directly into Google Sheets, Airtable, or Make.com.

##### How often can I schedule runs?

You can run the actor as frequently as needed — hourly, daily, or weekly. Because each listing includes a unique `postingId`, merging multiple runs into a relational database or time-series data store is straightforward.

***

### 🔗 Related real estate & property scrapers

If you are assembling international property intelligence, check out these companion actors:

- [Zap Imóveis Scraper](https://apify.com/haketa/zapimoveis-scraper) — Brazil real estate listings, prices, and broker contacts
- [Fotocasa Scraper](https://apify.com/haketa/fotocasa-scraper) — Spain real estate portal listings and agency leads
- [Boliga Scraper](https://apify.com/haketa/boliga-scraper) — Danish property prices and historical sales data
- [Realtor.ca Scraper](https://apify.com/haketa/realtor-ca-scraper) — Canadian MLS property listings and broker details
- [Domain.com.au Scraper](https://apify.com/haketa/domain-com-au-scraper) — Australian residential property listings and agents

***

### 📋 Changelog

#### Version 1.2 (2026-11)

- **Deep Pagination Support**: Unlocked high-volume 1,000+ listing extraction with automated geographic neighborhood expansion.
- **Fast Prefill Execution**: Tuned prefill parameters to complete standard sample runs in under 45 seconds with 100% data fidelity and 0 duplicates.
- **Enhanced Data Normalization**: Improved regex parsing for room counts, bathrooms, garages, and surface metrics across varied publisher formatting conventions.
- **Direct Lead Capture**: Reinforced extraction pipelines for agency WhatsApp numbers, broker IDs, and agency profile links.
- **Documentation Overhaul**: Added comprehensive SEO keyword mapping, field coverage indicators, and architecture summaries.

#### Version 1.1 (2026-08)

- Added structured expenses (`expensas`) extraction in native ARS/USD currency.
- Improved multi-level neighborhood, city, and province geographical hierarchy resolution.
- Expanded photo extraction to return clean high-resolution CDN images.

#### Version 1.0 (2026-08)

- Initial production release supporting sales, rentals, and commercial properties across Zonaprop Argentina.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/zonaprop-scraper/changelog.md

# Actor input Schema

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

Paste Zonaprop search/listing URLs. Build the search on zonaprop.com.ar (operation, property type, location, filters) and copy the URL — e.g. https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html. Leave empty to start with a default Buenos Aires search.

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

Maximum number of listings to collect across all search URLs. Set to 0 for unlimited (automatically expands across neighborhoods when collecting 1,000+ listings).

## `includeDescription` (type: `boolean`):

Include each listing's full text description. Turn off for a lighter, faster dataset.

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

Proxy configuration. Residential proxy (Argentina) is required and enabled by default.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html"
  ],
  "maxItems": 60,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AR"
  }
}
```

# Actor output Schema

## `postingId` (type: `string`):

Zonaprop listing ID

## `title` (type: `string`):

Listing title

## `operationType` (type: `string`):

Venta / Alquiler

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

Departamento, Casa, PH...

## `priceAmount` (type: `string`):

Price amount

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

Price currency (USD / ARS)

## `expensesAmount` (type: `string`):

Monthly expenses (expensas)

## `expensesCurrency` (type: `string`):

Expenses currency

## `surfaceTotal` (type: `string`):

Total surface in m²

## `surfaceCovered` (type: `string`):

Covered surface in m²

## `rooms` (type: `string`):

Ambientes

## `bedrooms` (type: `string`):

Dormitorios

## `bathrooms` (type: `string`):

Baños

## `garages` (type: `string`):

Cocheras

## `age` (type: `string`):

Antigüedad (years)

## `address` (type: `string`):

Street address

## `neighborhood` (type: `string`):

Barrio

## `city` (type: `string`):

City / partido

## `province` (type: `string`):

Province / region

## `publisherName` (type: `string`):

Publishing agency name

## `publisherId` (type: `string`):

Agency ID

## `publisherUrl` (type: `string`):

Agency page URL

## `whatsApp` (type: `string`):

Contact WhatsApp/phone number

## `imageCount` (type: `string`):

Number of photos

## `images` (type: `string`):

Photo URLs ( | separated)

## `description` (type: `string`):

Listing description

## `url` (type: `string`):

Listing detail page URL

## `scrapedAt` (type: `string`):

Extraction timestamp

# 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": [
        "https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html"
    ],
    "maxItems": 60,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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": ["https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html"],
    "maxItems": 60,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/zonaprop-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.zonaprop.com.ar/departamentos-venta-capital-federal.html"
  ],
  "maxItems": 60,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AR"
  }
}' |
apify call haketa/zonaprop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/zonaprop-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/a2ODcDpxDSBNTpW53/builds/S7wsPFyL4RJNtZDik/openapi.json
