# Inmuebles24 Scraper \[Only $0.9💰] | Mexico Property + Leads (`ahmed_jasarevic/inmuebles24-scraper`) Actor

Scrape Inmuebles24.com — Mexico's largest real estate marketplace. Get property listings with prices, area, bedrooms, location and publisher WhatsApp/phone leads for Mexico real estate market research and lead generation.

- **URL**: https://apify.com/ahmed\_jasarevic/inmuebles24-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.87 / 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 Data & Property Leads

Extract property listings and publisher contact data from Inmuebles24.com, Mexico's largest real estate marketplace, for Mexico property market research, CDMX rental price monitoring, and real estate lead generation with WhatsApp and phone contacts.

### Main Use Cases

- **Mexico real estate market research** — build datasets of sale and rental listings with prices, area, bedrooms and location
- **CDMX rental price monitoring** — track apartment rents in Mexico City by delegation and neighborhood
- **Real estate lead generation** — collect publisher WhatsApp, phone and email contacts for agencies and brokers
- **Property investment scouting** — find apartments, houses, land and commercial property across Mexico
- **Competitor & market analysis** — compare asking prices (per m²) between cities, states and property types

### How It Works

Paste one or more Inmuebles24 search-result URLs. The actor reads the listing data embedded in the page's Next.js state (PRELOADED\_STATE, flight data, ld+json) — no browser needed, no auth-gated API. It paginates through the search and emits one clean JSON row per listing, deduplicated by `postingId`.

### Extract Mexico Property Listings For Market Research

Search URLs follow a simple pattern and any filter works — try sale, rent, commercial, price ranges or city pages directly:

- `https://www.inmuebles24.com/inmuebles-en-venta.html` — all properties for sale nationwide (verified)
- `https://www.inmuebles24.com/departamentos-en-renta-en-ciudad-de-mexico.html` — apartments for rent in CDMX (verified, ~7,500 listings)
- `https://www.inmuebles24.com/departamentos-en-renta-en-ciudad-de-mexico-hasta-10000-pesos.html` — CDMX apartments under MXN 10,000 (verified)
- `https://www.inmuebles24.com/inmuebles-en-venta-desde-6000000-pesos.html` — luxury property from MXN 6M (verified)
- `https://www.inmuebles24.com/inmuebles-ordenado-por-precio-ascendente.html` — every listing sorted by price (verified, ~413,000 listings)

The same pattern works for cities like Guadalajara, Monterrey, Cancún, Querétaro and Tijuana (e.g. `casas-en-venta-en-guadalajara.html`).

### Build Real Estate Lead Lists With WhatsApp And Phone Contacts

Enable `enrichContacts` to add each listing's publisher contact data: the publisher's WhatsApp number (carried in the search-page data itself, resolves even on the fast DATACENTER proxy), plus phone and email parsed from the detail page or mobile API where reachable. Each listing with a resolved contact charges the `contact` event ($0.0005).

### Input

All input fields with their types, defaults and notes:

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `startUrls` | Array\<String> (stringList) | ✅ Yes | `inmuebles-en-venta.html` | Any Inmuebles24 search-result URL (sale, rent, commercial, any filter). The embedded Next.js state that powers the page is what gets extracted. |
| `maxItems` | Integer | No | 100 | Maximum number of listings to scrape in total. |
| `proxy` | Object (proxy editor) | No | `DATACENTER` | DATACENTER (fast, default) is enough for search pages and WhatsApp from search-page data. RESIDENTIAL (sticky, country-MX) reads Cloudflare-challenged detail pages. UNBLOCKER (managed anti-bot) is the most reliable past Cloudflare on `/propiedades/` pages — only on plans with UNBLOCKER units. |
| `enrichContacts` | Boolean | No | `false` | Add publisher WhatsApp/phone/email to each listing. Each listing with a resolved contact charges the `contact` event. |
| `verbose` | Boolean | No | `false` | Detailed per-request logging for diagnosing problems. |

### Output

Each dataset row is one property listing, deduplicated by `postingId`. Fields returned:

| Field | Description |
|---|---|
| `postingId` | Stable Inmuebles24 posting identifier (dedup key) |
| `url` | Direct link to the property page |
| `title` / `description` | Listing headline and free-text description |
| `postingType` | Ad type: development / used / new |
| `propertyType` | Departamento, Casa, Terreno, Oficina, Local, Bodega… |
| `operation` | `Venta` (sale) or `Renta` (rent) |
| `price` / `currency` / `priceFormatted` | Numeric price, currency code (MN/MXN or USD), displayed price |
| `expenses` | Monthly maintenance / expenses when published |
| `bedrooms` / `bathrooms` / `parking` | Room and parking counts |
| `totalArea` / `coveredArea` | Property area in m² |
| `antiquity` | Property age when published |
| `address` / `neighborhood` / `city` / `province` / `country` | Location hierarchy |
| `latitude` / `longitude` | GPS coordinates when published |
| `publisherId` / `publisherName` / `publisherUrl` | Agency or owner profile on Inmuebles24 |
| `whatsApp` | Publisher WhatsApp (contact enrichment enabled) |
| `phone` / `phones` / `agencyEmail` / `agencyEmails` | Contact data from enrichment |
| `contactName` / `contactEnriched` | Contact person and enrichment flag |
| `mainImage` | URL of the primary listing photo |
| `scrapedAt` | ISO timestamp of collection |

### Example Input

```json
{
  "startUrls": [
    "https://www.inmuebles24.com/departamentos-en-renta-en-ciudad-de-mexico.html"
  ],
  "maxItems": 100,
  "enrichContacts": true
}
```

### Example Output

```json
{
  "postingId": "150660207",
  "url": "https://www.inmuebles24.com/propiedades/departamento-en-renta-en-cuauhtemoc-150660207.html",
  "title": "Departamento en renta en Cuauhtémoc",
  "propertyType": "Departamento",
  "operation": "Renta",
  "price": 18500,
  "currency": "MN",
  "priceFormatted": "18,500",
  "bedrooms": 2,
  "bathrooms": 1,
  "parking": 1,
  "totalArea": 85,
  "neighborhood": "Cuauhtémoc",
  "city": "Ciudad de México",
  "province": "Distrito Federal",
  "country": "Mexico",
  "latitude": 19.42,
  "longitude": -99.16,
  "publisherName": "Agencia Ejemplo",
  "whatsApp": "52 55 1234 5678",
  "contactEnriched": true,
  "scrapedAt": "2026-09-15T10:00:00.000Z"
}
```

### Integrations & Automation

- **Apify API** — trigger runs via HTTP, MCP, or any LLM agent framework
- **Webhooks** — get notified when a scheduled run finishes
- **Zapier / Make / n8n** — push listings to CRM, Sheets, or Slack
- **Scheduling** — run weekly for rent/price monitoring or lead-list refresh (scheduled runs also improve the actor's recommendation ranking in the Apify Store)

### Related Actors

- [scrapers\_lat/inmuebles24-scraper](https://apify.com/scrapers_lat/inmuebles24-scraper) — Inmuebles24 property listing extraction
- [azzouzana/inmuebles24-details-scraper-by-listings-urls](https://apify.com/azzouzana/inmuebles24-details-scraper-by-listings-urls) — Inmuebles24 detail-page scraping by listing URLs
- [benthepythondev/inmuebles24-scraper](https://apify.com/benthepythondev/inmuebles24-scraper) — Inmuebles24 scraper (community)
- [memo23/inmuebles24-scraper](https://apify.com/memo23/inmuebles24-scraper) — reference implementation this actor's contract mirrors in parts
- [ahmed\_jasarevic/suumo-jp-scraper](https://apify.com/ahmed_jasarevic/suumo-jp-scraper) — Japan real estate listings
- [ahmed\_jasarevic/rightmove-scraper](https://apify.com/ahmed_jasarevic/rightmove-scraper) — UK property listings

### FAQ

#### Is there an Inmuebles24 API?

Inmuebles24 does not offer a public API for listing data. The property data is served through an internal rplis JSON API and the page's embedded Next.js state. This actor reads both public surfaces — an effective Inmuebles24 API alternative for Mexico real estate data.

#### How much does it cost to rent in Mexico City?

CDMX apartment rents vary widely by delegation — the actor's verified searches show thousands of apartments from under MXN 10,000/month up to luxury brackets. Run it on `departamentos-en-renta-en-ciudad-de-mexico.html` to compute actual market medians by neighborhood instead of relying on averages.

#### How can I find real estate leads in Mexico?

Enable `enrichContacts`. Each listing then includes the publisher's WhatsApp number (and phone/email where reachable) plus the publisher profile URL on Inmuebles24 — a ready-made contact list for agencies, brokers and property managers.

#### What are alternatives to this actor / to Inmuebles24 data?

- [scrapers\_lat/inmuebles24-scraper](https://apify.com/scrapers_lat/inmuebles24-scraper) — alternative Inmuebles24 actor
- [azzouzana/inmuebles24-details-scraper-by-listings-urls](https://apify.com/azzouzana/inmuebles24-details-scraper-by-listings-urls) — enrich a list of listing URLs with full details
- Vivanuncios and Lamudi are other major Mexican portals; this actor's embedded-state approach can be pointed at similar search pages
- For other markets: [ahmed\_jasarevic/suumo-jp-scraper](https://apify.com/ahmed_jasarevic/suumo-jp-scraper) (Japan) or [ahmed\_jasarevic/rightmove-scraper](https://apify.com/ahmed_jasarevic/rightmove-scraper) (UK)

#### Are Mexican property prices rising?

Inmuebles24 publishes a quarterly price index (Índice Inmuebles24) tracking sale and rent prices per m² across Mexico. Run this actor on city or state search URLs over time to build your own price-trend dataset from asking prices.

#### Can I scrape Inmuebles24 without getting blocked?

Yes. The actor uses Apify proxy by default (DATACENTER for search pages; RESIDENTIAL or UNBLOCKER if detail pages are challenged by Cloudflare). Direct access to inmuebles24.com from datacenter IPs is often blocked — that's why the actor reads the search-page state and runs through the proxy rather than fetching the page raw.

#### How do I scrape all Inmuebles24 listings?

Use `https://www.inmuebles24.com/inmuebles-ordenado-por-precio-ascendente.html` (verified ~413,000 listings sorted by price) or a category page like `inmuebles-en-venta.html`, and raise `maxItems` accordingly.

### For AI Agents & LLM Apps

**Purpose:** Returns Inmuebles24 property listings as flat JSON rows (price, operation, property type, bedrooms, area, location, publisher, WhatsApp/phone/email when enrichment is enabled, listing URL).

**Minimal working input:**

```json
{
  "startUrls": [
    "https://www.inmuebles24.com/inmuebles-en-venta.html"
  ],
  "maxItems": 20
}
```

**Variant input (rental listings with contacts):**

```json
{
  "startUrls": [
    "https://www.inmuebles24.com/departamentos-en-renta-en-ciudad-de-mexico.html"
  ],
  "maxItems": 50,
  "enrichContacts": true
}
```

**Output fields:** `postingId`, `url`, `title`, `description`, `postingType`, `propertyType`, `operation`, `price`, `currency`, `priceFormatted`, `expenses`, `bedrooms`, `bathrooms`, `parking`, `totalArea`, `coveredArea`, `antiquity`, `address`, `neighborhood`, `city`, `province`, `country`, `latitude`, `longitude`, `publisherId`, `publisherName`, `publisherUrl`, `whatsApp`, `mainImage`, `scrapedAt`, plus enrichment-only fields `phone`, `phones`, `agencyEmail`, `agencyEmails`, `contactName`, `contactEnriched`.

**Behaviors an agent should know:**

- `startUrls` is required. Each URL must be an Inmuebles24 **search-result** page (`/inmuebles-en-venta.html`, `/departamentos-en-renta-en-{ciudad}.html`, or a filtered page) — not a single `/propiedades/...` detail page.
- `maxItems` caps total listings (default 100). Without `enrichContacts`, runs are list-only and cheap.
- Default proxy is DATACENTER — enough for search pages and the WhatsApp number. If `contactEnriched` rows are missing phone/email, switch the proxy group to `RESIDENTIAL` (sticky, country-MX) or `UNBLOCKER`.
- `whatsApp` resolves on DATACENTER; `phone`/`agencyEmail` resolution may require a stronger proxy group.
- Each listing with a resolved contact charges the `contact` event ($0.0005) — budget accordingly when `enrichContacts` is on.

**Billing:** Pay-per-event: $0.0009 per result (tiered down to $0.00087 on higher plans) + $0.00005 per actor start; +$0.0005 per listing when contact enrichment resolves a contact.

### Legal & Compliance Disclaimer

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Inmuebles24, Navent, or their parent companies. It reads only publicly available Inmuebles24 search pages and public detail pages — it does not bypass logins or CAPTCHAs. Users are responsible for complying with Inmuebles24's Terms of Service and applicable law, including Mexican data protection rules (LFPDPPP) and, where EU or California personal data is involved, GDPR/CCPA. Contact data returned by enrichment (phone numbers, WhatsApp, emails) must not be used for unsolicited commercial outreach that violates applicable law (e.g. CAN-SPAM, TCPA, LFPDPPP). This is not legal advice.

### SEO Keywords

inmuebles24 scraper, inmuebles24 api, mexico real estate data, departamentos en renta cdmx, departamentos en venta cdmx, casas en venta mexico, renta de departamentos cdmx, bienes raices mexico, mexico city apartments for rent, mexico real estate for sale, property prices mexico, guadalajara real estate, monterrey properties for sale, cancun real estate, tulum real estate, index inmuebles24, precio por m2 cdmx, mexico real estate leads, whatsapp real estate mexico, inmuebles24 vs vivanuncios, mexico property market research, apartments cdmx rent, casas en renta, venta de inmuebles, lamudi data

# Actor input Schema

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

Inmuebles24.com search-result URLs (sale, rent, commercial, with any filter). Paste any listing search URL — the scraper extracts the embedded Next.js state that powers the page.

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

Maximum number of listings to scrape in total.

## `proxy` (type: `object`):

The actor reaches Inmuebles24 through the Apify proxy. DATACENTER (fast, default) is enough for search pages, the rplis JSON API, and the whatsApp contact from the search-page data. RESIDENTIAL (sticky, country-MX) additionally reads detail pages (phone/email) on networks where they are challenged. UNBLOCKER (managed anti-bot proxy) is the most reliable way past Cloudflare on the /propiedades/ detail pages — only on plans with UNBLOCKER units.

## `enrichContacts` (type: `boolean`):

Add publisher contact info to each listing. The publisher's WhatsApp number is carried in the search-page data itself, so it resolves even on the plain DATACENTER proxy (no Cloudflare/detail access needed); publisher phone and email are additionally parsed from the detail page or mobile API where reachable. Each listing with a resolved contact charges the `contact` event.

## `verbose` (type: `boolean`):

Show detailed logs for each request (host alias used, status, challenge state). Useful for diagnosing problems.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.inmuebles24.com/inmuebles-en-venta.html"
  ],
  "maxItems": 10,
  "proxy": {
    "useApifyProxy": true
  },
  "enrichContacts": false,
  "verbose": false
}
```

# Actor output Schema

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

Dataset rows, one property listing per row.

## `resultsOverview` (type: `string`):

Table view with the most relevant listing fields.

# 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/inmuebles-en-venta.html"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/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/inmuebles-en-venta.html"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/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/inmuebles-en-venta.html"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call ahmed_jasarevic/inmuebles24-scraper --silent --output-dataset

```

## MCP server setup

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