# Inmuebles24 Scraper - Mexico Real Estate Listings & Leads (`haketa/inmuebles24-scraper`) Actor

Scrape Inmuebles24 Mexico real estate listings. Extract price (USD/MXN), 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/inmuebles24-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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

## Inmuebles24 Scraper — Mexico Real Estate Listings, Prices & Agency Leads

> **The most complete Inmuebles24 data extractor on Apify.** Pull live property listings from **Inmuebles24 — Mexico's #1 real estate marketplace** — with price in **USD or MXN**, expenses, surface m², rooms, bedrooms, bathrooms, full address and neighborhood, property type, the **listing agency**, its **WhatsApp/phone contact**, and every photo. Built for market analysis, price benchmarking, investment research and real-estate lead generation.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com/haketa/inmuebles24-scraper)
[![Live Data](https://img.shields.io/badge/Data-Live%20at%20Run%20Time-orange)]()
[![Pricing](https://img.shields.io/badge/Pricing-Pay%20Per%20Result-yellow)]()
[![Region](https://img.shields.io/badge/Region-Mexico%20%F0%9F%87%A6%F0%9F%87%B7-red)]()
[![Coverage](https://img.shields.io/badge/Coverage-70K%2B%20Listings%2FSearch-purple)]()
[![Leads](https://img.shields.io/badge/Includes-Agency%20%26%20WhatsApp-success)]()
[![Sale & Rent](https://img.shields.io/badge/Venta%20%26%20Alquiler-USD%20%2F%20MXN-brightgreen)]()
[![No Auth](https://img.shields.io/badge/Auth-None%20Required-success)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%C2%B7%20CSV%20%C2%B7%20Excel-lightgrey)]()

***

### 🎯 What this actor does

The **Inmuebles24 Scraper** extracts live real estate listings from **inmuebles24.com** — the largest property portal in Mexico, covering apartments, houses, PH, offices, land and more, for sale (**venta**) and rent (**alquiler**) across Buenos Aires (Capital Federal), Gran Buenos Aires and every province. Paste a Inmuebles24 search URL and it returns **every listing across all result pages**, one clean row per property.

Each listing arrives fully structured — including the **agency** that published it and its **WhatsApp/phone contact**, making this actor as useful for real-estate lead generation as it is for market and price analysis.

Each record can include:

- 💰 **Price** — amount and currency (**USD** or **MXN**) plus monthly **expenses** (expensas)
- 🏷️ **Operation & type** — Venta / Alquiler and Departamento / Casa / PH / etc.
- 📐 **Features** — total and covered m², ambientes (rooms), dormitorios, baños, cocheras, antigüedad
- 📍 **Location** — street address, neighborhood (barrio), city and province
- 🏢 **Agency lead** — publisher name, agency page URL and **WhatsApp/phone contact**
- 📸 **Media** — every listing photo, with count
- 📝 **Description** — full listing text (optional)
- 🕒 **Metadata** — listing URL and `scrapedAt` timestamp on every row

Whether you run a proptech product, an investment fund, a brokerage or a market-research team, this actor is the **fastest path from Inmuebles24 to a usable dataset** — no scraping code required.

***

### ✨ Why this actor

| ✅ This actor handles | ❌ What you'd fight doing it yourself |
|---|---|
| **All result pages** — every listing in a search | Searches have tens of thousands of listings across thousands of pages |
| **Agency + WhatsApp contact** extracted | Contact details are buried in the page state |
| **USD & MXN prices** + expenses | Mexican listings mix currencies and formats |
| **Structured m² / rooms / location** | Features are nested and inconsistently labeled |
| **Neighborhood → city → province** hierarchy | Location is a nested tree that needs walking |
| **Clean deduplicated rows** | Listings repeat across pages and need de-duping |
| **JSON / CSV / Excel export** | Raw data needs reshaping for analysis |

***

### 🚀 Quick start

#### One-click run

1. Open the actor on the [Apify Store](https://apify.com/haketa/inmuebles24-scraper) and click **Try for free**
2. On **inmuebles24.com**, build your search (operation, property type, location, filters) and copy the URL — e.g. `https://www.inmuebles24.com/casas-en-venta.html`
3. Paste it into **Search URLs**, set **Max listings** (`0` for unlimited)
4. Hit **Start** — listings stream into your dataset, ready to export as JSON, CSV, Excel, HTML or RSS

#### Run via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "startUrls": [
        "https://www.inmuebles24.com/casas-en-venta.html"
    ],
    "maxItems": 500,
    "includeDescription": True,
}

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

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["priceAmount"], item["priceCurrency"], item["neighborhood"], "|", item["publisherName"])
```

#### Run via API (JavaScript)

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

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

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

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

***

### ⚙️ Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `startUrls` | array | – | Inmuebles24 search/listing URLs. Every listing across all result pages is collected. |
| `maxItems` | integer | `200` | Max listings across all searches. `0` = unlimited. |
| `includeDescription` | boolean | `true` | Include each listing's full text description. |
| `proxyConfiguration` | object | Residential MX | Proxy settings — Mexico residential proxy required and enabled by default. |

#### 📋 How to build a search URL

1. Go to **inmuebles24.com** and choose operation (Venta / Alquiler), property type and location
2. Apply any filters (price, m², rooms…)
3. Copy the address-bar URL — e.g. `.../casas-alquiler-gran-buenos-aires.html`
4. Paste it into **Search URLs**. Add as many searches as you like.

***

### 📤 Output

One clean record per listing:

```json
{
  "postingId": "59719191",
  "title": "Venta Depto 1 Amb en Almagro a Estrenar Amenities",
  "operationType": "Venta",
  "propertyType": "Departamentos",
  "priceAmount": "89000",
  "priceCurrency": "USD",
  "expensesAmount": "0",
  "expensesCurrency": "MXN",
  "surfaceTotal": "35 m²",
  "surfaceCovered": "31 m²",
  "rooms": "1",
  "bedrooms": "",
  "bathrooms": "1",
  "garages": "",
  "age": "",
  "address": "Avenida Corrientes 3400",
  "neighborhood": "Almagro",
  "city": "Capital Federal",
  "province": "",
  "publisherName": "RE/MAX Premium",
  "publisherId": "17011992",
  "publisherUrl": "https://www.inmuebles24.com/inmobiliarias/re-max-premium_17011992-inmuebles.html",
  "whatsApp": "54 1123845522",
  "imageCount": "8",
  "images": "https://imgar.inmuebles24cdn.com/... | ...",
  "description": "...",
  "url": "https://www.inmuebles24.com/propiedades/clasificado/...-59719191.html",
  "scrapedAt": "2026-08-11T09:31:36.532Z"
}
```

#### 🏠 Fields

| Field | Description |
|-------|-------------|
| `postingId` · `title` · `url` | Listing ID, title and detail-page URL |
| `operationType` | 🏷️ Venta (sale) or Alquiler (rent) |
| `propertyType` | Departamento, Casa, PH, Oficina… |
| `priceAmount` · `priceCurrency` | 💰 Price and currency (USD / MXN) |
| `expensesAmount` · `expensesCurrency` | Monthly expenses (expensas) |
| `surfaceTotal` · `surfaceCovered` | 📐 Total and covered m² |
| `rooms` · `bedrooms` · `bathrooms` · `garages` | Ambientes, dormitorios, baños, cocheras |
| `age` | Antigüedad (years) |
| `address` · `neighborhood` · `city` · `province` | 📍 Full location hierarchy |
| `publisherName` · `publisherId` · `publisherUrl` | 🏢 Listing agency (lead) |
| `whatsApp` | 📱 Agency WhatsApp/phone contact |
| `imageCount` · `images` | 📸 Photo count and URLs ( `|` separated) |
| `description` | Full listing description |

Export everything to **JSON, CSV, Excel, HTML or RSS**, or pull it through the Apify API and integrations.

***

### 💡 Use cases

| Use case | How this actor helps |
|----------|----------------------|
| 📊 **Price & market analysis** | Track asking prices and expenses by neighborhood, m² and property type across Mexico. |
| 💼 **Real-estate lead generation** | Collect listing agencies with WhatsApp/phone contacts for outreach and CRM. |
| 🏦 **Investment research** | Spot undervalued areas, rental yields and inventory trends in USD and MXN. |
| 🏢 **Proptech & portals** | Enrich your own product with structured Inmuebles24 inventory. |
| 📈 **Competitive intelligence** | Monitor which agencies dominate which neighborhoods and how listings move. |
| 🤖 **ML / analytics pipelines** | Build clean datasets of prices, features and locations for models. |

***

### ❓ FAQ

**How many listings can I get?**
Every listing in a search. Set `maxItems` to `0` for unlimited — a single Inmuebles24 search can have tens of thousands of listings across thousands of pages.

**Does it include agency contact details?**
Yes. Each listing carries the publishing agency name, its Inmuebles24 page, and a WhatsApp/phone number where available.

**Are prices in USD or MXN?**
Both — the actor returns the exact `priceAmount` and `priceCurrency` (USD or MXN) as published, plus monthly expenses.

**Can I scrape both sale and rent?**
Yes. Paste a Venta URL, an Alquiler URL, or several of each — the actor handles all of them in one run.

**Do I need a proxy?**
Yes — an Mexico residential proxy is required and enabled by default.

**Which export formats are supported?**
JSON, CSV, Excel, HTML and RSS, plus programmatic access via the Apify API and integrations (Google Sheets, Zapier, Make, Airbyte and more).

***

### 🔗 Integrations

Send results wherever you work: **Google Sheets / Excel**, **Zapier · Make · n8n**, **Airbyte / databases / webhooks**, and the **Apify API** for any language.

***

### ⚖️ Legal & responsible use

This actor collects **publicly available** real estate listing information — the same content any visitor can see on a search page without logging in. It does not access private data and does not require any user account.

You are responsible for how you use the data. Please:

- Use the output for lawful purposes such as market research, analytics and lead generation.
- Respect the source platform's Terms of Service and robots directives.
- Comply with applicable data-protection laws (e.g. GDPR, Mexico's PDPA) when handling personal or contact data — and with marketing/anti-spam rules when contacting agencies.
- Do not republish scraped content in a way that infringes copyright or database rights.

*This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Inmuebles24 or Navent. All product names, logos and brands are property of their respective owners.*

***

### 🛟 Support

Need an extra field or hit a search that won't parse? Open an issue from the actor's **Issues** tab and we'll take a look.

# Actor input Schema

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

Paste Inmuebles24 search/listing URLs. Build the search on inmuebles24.com (operation, property type, location, filters) and copy the URL — e.g. https://www.inmuebles24.com/casas-en-venta.html. The scraper collects every listing across all result pages.

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

Maximum number of listings to collect across all search URLs. Set to 0 for unlimited (a search can have tens of thousands).

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

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

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

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

## Actor input object example

```json
{
  "startUrls": [
    "https://www.inmuebles24.com/casas-en-venta.html"
  ],
  "maxItems": 200,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "MX"
  }
}
```

# Actor output Schema

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

Inmuebles24 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 / MXN)

## `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.inmuebles24.com/casas-en-venta.html"
    ],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "MX"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/inmuebles24-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.inmuebles24.com/casas-en-venta.html"],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "MX",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/inmuebles24-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.inmuebles24.com/casas-en-venta.html"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "MX"
  }
}' |
apify call haketa/inmuebles24-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/inmuebles24-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/B5GIP78khgwMVeNlA/builds/nijjBxX5AJOzazHCc/openapi.json
