# Lamudi Mexico Real Estate Scraper - Listings & Leads (`scrapers_lat/lamudi-scraper`) Actor

Scrape Lamudi Mexico real estate listings: property prices, type, bedrooms, bathrooms, area, address, geo coordinates, amenities, photos, description and agent phone contacts. Filter by price, beds, baths and area. Export inmuebles en venta o renta to JSON, CSV, Excel.

- **URL**: https://apify.com/scrapers_lat/lamudi-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 25 total users, 11 monthly users, 99.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

[![Lamudi Mexico Real Estate Scraper](https://scrapers.lat/banners/lamudi-scraper.png)](https://console.apify.com/actors/4dYPweCvl4kPTQdi0/input)

## Lamudi Mexico Real Estate Scraper: Listings, Prices, Leads

The most complete **Lamudi Mexico scraper** for **real estate listings data**. Turn any Lamudi search into a clean dataset of **inmuebles y propiedades en venta o renta**: casas, departamentos, terrenos and offices, with prices, full location, geo coordinates, amenities, photos, descriptions and agent phone contacts. Built as an HTTP **Lamudi API** alternative, priced pay per result, exporting to JSON, CSV or Excel.

Here is one real result, with every field the actor returns (the `imageUrl` and `photos` URLs are trimmed here for length):

```json
{
  "imageUrl": "https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQtbGlmdWxsY29ubmVjdC1i...",
  "title": "Departamento en Venta en Potrero de San Bernardino",
  "url": "https://www.lamudi.com.mx/detalle/41032-73-afb09ef4bdfb-6404-1a063b6-a922-7fe8",
  "listingId": "01a0636d-63bb-7f9f-a8d9-afb09ef4bdb2",
  "operation": "sale",
  "price": 2500000,
  "currency": "MXN",
  "pricePerM2": 41666.67,
  "propertyType": "Departamento",
  "bedrooms": 2,
  "bathrooms": 1,
  "halfBathrooms": 1,
  "areaM2": 60,
  "builtAreaM2": 60,
  "floor": 1,
  "yearBuilt": 2006,
  "parkingSpaces": 2,
  "condition": "Segunda mano",
  "amenities": ["Estacionamiento", "Cocina equipada", "Cisterna", "Gas natural", "Seguridad", "Wifi", "Permite mascotas"],
  "location": "Potrero de San Bernardino, Xochimilco, Ciudad de México",
  "neighborhood": "Potrero de San Bernardino",
  "municipality": "Xochimilco",
  "city": "Ciudad de México",
  "region": "Ciudad de México",
  "country": "MX",
  "coordinates": { "lat": 19.268751, "lng": -99.1177326 },
  "agencyName": "Mireya Flores Gama",
  "publishedBy": "Mireya Flores Gama",
  "agentPhone": "+525524994447",
  "description": "Precioso departamento en el primer piso sumamente iluminado ...",
  "photos": ["https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQ...", "https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQ..."],
  "postedAgo": "Hace 1 día, 9 horas",
  "observedAt": "2026-09-04T14:17:57.350Z",
  "error": null
}
```

**📥 [Input](https://apify.com/scrapers_lat/lamudi-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/lamudi-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/lamudi-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/lamudi-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Mexico-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Why this scraper](#why-this-scraper)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [How it compares](#how-it-compares)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

This is a **property listings scraper** for **Lamudi Mexico** (`lamudi.com.mx`). Paste one or more Lamudi search or results URLs, and the actor paginates through every matching property and writes one clean, normalized record per listing to the run's dataset. Each record carries the title, operation (sale or rent), price and currency, property type, bedrooms, bathrooms, area, full location, geo coordinates, the listing agency name and the agent phone as a usable lead.

With `withDetails` on, the actor opens each listing's detail page to add the full description, condition, plot and built area, floor, year built, parking spaces, half bathrooms, the amenities list and the complete photo gallery. A derived `pricePerM2` is computed from price and area so you can benchmark **datos inmobiliarios** without extra parsing. Missing source values are returned as `null`, never invented.

Typical uses: real estate market analysis, price and inventory monitoring, comparable (comps) research, lead generation from agent phone contacts, investment and development research, and feeding property data into your own app, model or dashboard.

### Why this scraper

- **Most fields on the market.** Prices, property type, beds, baths, half baths, built and plot area, floor, year built, parking, condition, amenities, geo coordinates, full address, photos, description, agent phone and a derived price per square meter.
- **Agent phone contacts included.** Every listing that publishes a WhatsApp contact returns the `agentPhone` as a lead.
- **Exact map coordinates.** Latitude and longitude come straight from the structured data on each result.
- **Powerful filtering.** Filter by price, bedrooms, bathrooms and area on top of whatever is already encoded in your Lamudi search URL.
- **Multiple search URLs per run.** Merge and de-duplicate several searches in a single run.
- **Honest and reliable.** Pay per result, no charge on failure, empty runs cost nothing, and a spend cap you control.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 for-sale listings in Mexico City with full detail.

```json
{
  "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
  "withDetails": true,
  "maxListings": 10
}
```

Build the `startUrl` by applying filters (location, operation, property type) on Lamudi in your browser, then copy the results URL. Optional input filters further narrow the results.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrl` | string | yes\* | (a Mexico City for-sale URL) | A Lamudi search or results URL, for example `https://www.lamudi.com.mx/distrito-federal/for-sale/`. |
| `startUrls` | array | no | (empty) | One or more Lamudi search URLs to scrape in a single run. Results are merged and de-duplicated. Accepts plain URLs or `{ "url": "..." }` objects. |
| `withDetails` | boolean | no | `true` | Open each listing's detail page for the description, amenities, plot and built area, coordinates and full photo gallery. Paid add-on, available on paid plans. |
| `minPrice` | integer | no | (any) | Only return listings priced at or above this amount (listing currency). |
| `maxPrice` | integer | no | (any) | Only return listings priced at or below this amount. |
| `minBedrooms` | integer | no | (any) | Only return listings with at least this many bedrooms. |
| `maxBedrooms` | integer | no | (any) | Only return listings with at most this many bedrooms. |
| `minBathrooms` | integer | no | (any) | Only return listings with at least this many bathrooms. |
| `minArea` | integer | no | (any) | Only return listings with at least this much area in square meters. |
| `maxArea` | integer | no | (any) | Only return listings with at most this much area in square meters. |
| `maxListings` | integer | no | `10` | Maximum listings to collect across all search URLs. |

\*Provide either `startUrl` or `startUrls`. Optional filters combine with logical AND and are applied on top of whatever is already encoded in the search URL.

### Output reference

One dataset item per listing. Types: `string`, `number`, `integer`, `object`, `string[]`, or `null` when the source value is absent. Fields marked (detail) populate when `withDetails` is on.

| Field | Type | Description |
|---|---|---|
| `imageUrl` | string | Main listing image. |
| `title` | string | Listing title. |
| `url` | string | Direct link to the listing. |
| `listingId` | string | Lamudi listing id. |
| `operation` | string | `sale` or `rent`. |
| `price` | number | Asking or rental price. |
| `currency` | string | Currency code, usually `MXN`. |
| `pricePerM2` | number | Derived price per square meter (price divided by area). |
| `propertyType` | string | Property type, for example `Casa`, `Departamento`, `Terreno`. |
| `bedrooms` | integer | Number of bedrooms. |
| `bathrooms` | integer | Number of full bathrooms. |
| `halfBathrooms` | integer | Number of half bathrooms (detail). |
| `areaM2` | integer | Advertised area in square meters. |
| `builtAreaM2` | integer | Built (construction) area in square meters (detail). |
| `plotAreaM2` | integer | Plot (land) area in square meters (detail). |
| `floor` | integer | Floor the unit is on (detail). |
| `yearBuilt` | integer | Year the property was built (detail). |
| `parkingSpaces` | integer | Number of parking spaces (detail). |
| `condition` | string | Property condition, for example `Segunda mano` (detail). |
| `amenities` | string\[] | Amenities and features, for example parking, security, pool (detail). |
| `location` | string | Full location string (neighborhood, municipality, state). |
| `neighborhood` | string | Neighborhood or colonia. |
| `municipality` | string | Municipality or locality. |
| `city` | string | City or federal entity. |
| `region` | string | Region or state. |
| `country` | string | Country code, for example `MX`. |
| `coordinates` | object | `{ lat, lng }` map coordinates. |
| `agencyName` | string | Listing agency name (the contact). |
| `publishedBy` | string | Publisher or agent name (detail). |
| `agentPhone` | string | Agent phone number (the lead). |
| `description` | string | Full property description (detail). |
| `photos` | string\[] | Full photo gallery URLs (detail). |
| `postedAgo` | string | How long ago the listing was published (detail). |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `error` | string | `null` on success. On a failed run with zero results, a single item with a populated `error` field is written instead. |

### How it compares

Ours is the only scraper on the store dedicated to **Lamudi Mexico**. It also accepts every input the popular Philippines and Indonesia Lamudi actors accept, and returns a strict superset of their fields.

| Capability | This actor | Typical Lamudi PH/ID actors |
|---|---|---|
| Lamudi Mexico coverage | Yes | No (Philippines or Indonesia only) |
| Search URL input | Yes | Yes |
| Multiple search URLs per run | Yes | Some |
| Filter price, beds, baths, area | Yes | Some |
| Price and currency | Yes | Yes |
| Bedrooms and bathrooms | Yes | Yes |
| Built area and plot area | Yes | Some |
| Amenities and features | Yes | Some |
| Full address and municipality | Yes | Some |
| Exact geo coordinates | Yes | Some |
| Photo gallery | Yes | Yes |
| Agent phone contact | Yes | Some |
| Derived price per m2 | Yes | Rare |
| Floor, year built, condition, parking | Yes | Rare |
| Pay per result, no charge on failure | Yes | Varies |

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~lamudi-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.lamudi.com.mx/distrito-federal/for-sale/","minBedrooms":3,"maxListings":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~lamudi-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.lamudi.com.mx/nuevo-leon/for-rent/","maxPrice":30000,"maxListings":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/lamudi-scraper \
  --input '{"startUrl":"https://www.lamudi.com.mx/jalisco/for-sale/","minArea":120,"maxListings":50}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per listing returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/lamudi-scraper/pricing) for the current per-result price.
- **Detail add-on.** With `withDetails` on, each listing's detail page is opened for the description, amenities, coordinates and photos, billed as the `details` add-on on paid plans.
- **No charge on failure.** If a run cannot fetch any listings, the actor writes a single item with a populated `error` field and does not charge for it. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 listings per run and receive listing-level records. Upgrade for higher `maxListings` and the detail add-on.

### FAQ and troubleshooting

**The run says Lamudi is showing a "Security verification" captcha. What now?**
Since November 2026 Lamudi sometimes answers search and listing pages with a captcha. This actor does not solve captchas, so when that happens the run stops quickly with a clear message and charges nothing. Try again later.

**A run returned 0 listings. Why?**
The search URL matched nothing, or the filters excluded every result. Open the URL in a browser to confirm it shows listings, and loosen `minPrice`, `minBedrooms`, `minArea` or the other filters. Zero-result runs are not charged.

**How do I get the description, amenities and photos?**
Turn `withDetails` on. The actor then opens each listing page and adds `description`, `amenities`, `plotAreaM2`, `builtAreaM2`, `coordinates`, `condition`, `floor` and the full `photos` gallery. The detail add-on is available on paid Apify plans.

**How do I target a specific city or property type?**
Apply the filters on Lamudi in your browser, then copy the resulting URL into `startUrl`. The actor respects whatever is encoded in the URL. You can also pass several URLs in `startUrls`.

**Why is `coordinates` or `yearBuilt` null?**
The listing did not publish that value. Missing values are returned as `null`, never invented.

**Does it cover countries other than Mexico?**
This actor is tuned for Lamudi Mexico (`lamudi.com.mx`). Provide a `lamudi.com.mx` URL for full, verified results.

**Is this an official Lamudi tool?**
No. This actor is independent and has no affiliation with Lamudi. It reads only publicly listed data. Use it in accordance with Lamudi's terms.

### Related scrapers

- [Inmuebles24 Scraper](https://apify.com/scrapers_lat/inmuebles24-scraper): Inmuebles24 Mexico property listings.
- [Vivanuncios Mexico Scraper](https://apify.com/scrapers_lat/vivanuncios-mexico-scraper): Vivanuncios classified property listings.
- [Metrocuadrado Scraper](https://apify.com/scrapers_lat/metrocuadrado-scraper): Metrocuadrado Colombia real estate listings.
- [Fincaraiz Scraper](https://apify.com/scrapers_lat/fincaraiz-scraper): Fincaraiz Colombia property listings.
- [Properati Scraper](https://apify.com/scrapers_lat/properati-scraper): Properati LATAM property listings.
- [Vivareal Scraper](https://apify.com/scrapers_lat/vivareal-scraper): VivaReal Brazil property listings.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

## Lamudi Scraper de Bienes Raíces en México: Anuncios, Precios, Contactos

El scraper más completo de **Lamudi México** para obtener **datos de bienes raíces**. Convierte cualquier búsqueda de Lamudi en un conjunto de datos limpio de **inmuebles y propiedades en venta o renta**: casas, departamentos, terrenos y oficinas, con precios, ubicación completa, coordenadas geográficas, amenidades, fotos, descripciones y teléfonos de contacto de los asesores. Funciona como alternativa tipo **API de Lamudi** por HTTP, con precio por resultado y exportación a JSON, CSV o Excel.

Aquí tienes un resultado real, con todos los campos que devuelve el actor (las URL de `imageUrl` y `photos` se recortan por espacio):

```json
{
  "imageUrl": "https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQtbGlmdWxsY29ubmVjdC1i...",
  "title": "Departamento en Venta en Potrero de San Bernardino",
  "url": "https://www.lamudi.com.mx/detalle/41032-73-afb09ef4bdfb-6404-1a063b6-a922-7fe8",
  "listingId": "01a0636d-63bb-7f9f-a8d9-afb09ef4bdb2",
  "operation": "sale",
  "price": 2500000,
  "currency": "MXN",
  "pricePerM2": 41666.67,
  "propertyType": "Departamento",
  "bedrooms": 2,
  "bathrooms": 1,
  "halfBathrooms": 1,
  "areaM2": 60,
  "builtAreaM2": 60,
  "floor": 1,
  "yearBuilt": 2006,
  "parkingSpaces": 2,
  "condition": "Segunda mano",
  "amenities": ["Estacionamiento", "Cocina equipada", "Cisterna", "Gas natural", "Seguridad", "Wifi", "Permite mascotas"],
  "location": "Potrero de San Bernardino, Xochimilco, Ciudad de México",
  "neighborhood": "Potrero de San Bernardino",
  "municipality": "Xochimilco",
  "city": "Ciudad de México",
  "region": "Ciudad de México",
  "country": "MX",
  "coordinates": { "lat": 19.268751, "lng": -99.1177326 },
  "agencyName": "Mireya Flores Gama",
  "publishedBy": "Mireya Flores Gama",
  "agentPhone": "+525524994447",
  "description": "Precioso departamento en el primer piso sumamente iluminado ...",
  "photos": ["https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQ...", "https://img.lamudi.com.mx/eyJidWNrZXQiOiJwcmQ..."],
  "postedAgo": "Hace 1 día, 9 horas",
  "observedAt": "2026-09-04T14:17:57.350Z",
  "error": null
}
```

**📥 [Entrada](https://apify.com/scrapers_lat/lamudi-scraper/input-schema) · 📤 [Salida](https://apify.com/scrapers_lat/lamudi-scraper/output-schema) · 💰 [Precios](https://apify.com/scrapers_lat/lamudi-scraper/pricing) · ▶️ [Ejemplos](https://apify.com/scrapers_lat/lamudi-scraper/examples)**

### Contenido

- [Qué hace](#que-hace)
- [Por qué este scraper](#por-que-este-scraper)
- [Inicio rápido](#inicio-rapido)
- [Referencia de entrada](#referencia-de-entrada)
- [Referencia de salida](#referencia-de-salida)
- [Cómo se compara](#como-se-compara)
- [Uso vía API y CLI](#uso-via-api-y-cli)
- [Obtener resultados](#obtener-resultados)
- [Cobro y límites](#cobro-y-limites)
- [Preguntas frecuentes](#preguntas-frecuentes)

### Qué hace

Este es un **scraper de anuncios inmobiliarios** para **Lamudi México** (`lamudi.com.mx`). Pega una o varias URL de búsqueda o resultados de Lamudi y el actor recorre todas las propiedades que coinciden y escribe un registro limpio y normalizado por anuncio en el dataset de la ejecución. Cada registro incluye el título, la operación (venta o renta), precio y moneda, tipo de propiedad, recámaras, baños, superficie, ubicación completa, coordenadas geográficas, el nombre de la inmobiliaria y el teléfono del asesor como contacto útil.

Con `withDetails` activado, el actor abre la página de detalle de cada anuncio para agregar la descripción completa, la condición, la superficie de terreno y construida, el piso, el año de construcción, los cajones de estacionamiento, los medios baños, la lista de amenidades y la galería de fotos completa. Se calcula un `pricePerM2` a partir del precio y la superficie para comparar **datos inmobiliarios** sin trabajo extra. Los valores ausentes se devuelven como `null`, nunca inventados.

Usos típicos: análisis del mercado inmobiliario, monitoreo de precios e inventario, estudio de comparables (comps), generación de prospectos a partir de los teléfonos de los asesores, investigación de inversión y desarrollo, y alimentar tus propias apps, modelos o tableros con datos de propiedades.

### Por qué este scraper

- **La mayor cantidad de campos del mercado.** Precios, tipo de propiedad, recámaras, baños, medios baños, superficie construida y de terreno, piso, año de construcción, estacionamiento, condición, amenidades, coordenadas, dirección completa, fotos, descripción, teléfono del asesor y precio por metro cuadrado.
- **Incluye teléfonos de contacto.** Cada anuncio que publica un contacto de WhatsApp devuelve el `agentPhone` como prospecto.
- **Coordenadas exactas en el mapa.** La latitud y longitud provienen de los datos estructurados de cada resultado.
- **Filtros potentes.** Filtra por precio, recámaras, baños y superficie además de lo que ya viene en tu URL de búsqueda de Lamudi.
- **Varias URL de búsqueda por ejecución.** Combina y elimina duplicados de varias búsquedas en una sola ejecución.
- **Honesto y confiable.** Pago por resultado, sin cobro en caso de fallo, las ejecuciones vacías no cuestan nada y un límite de gasto que tú controlas.

### Inicio rápido

Abre el actor, pega esto en la entrada y presiona Ejecutar. Devuelve hasta 10 anuncios en venta en la Ciudad de México con detalle completo.

```json
{
  "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
  "withDetails": true,
  "maxListings": 10
}
```

Arma el `startUrl` aplicando filtros (ubicación, operación, tipo de propiedad) en Lamudi desde tu navegador y luego copia la URL de resultados. Los filtros opcionales de entrada acotan aún más los resultados.

### Referencia de entrada

| Campo | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
| `startUrl` | string | sí\* | (URL de venta en CDMX) | Una URL de búsqueda o resultados de Lamudi, por ejemplo `https://www.lamudi.com.mx/distrito-federal/for-sale/`. |
| `startUrls` | array | no | (vacío) | Una o varias URL de búsqueda de Lamudi para procesar en una sola ejecución. Los resultados se combinan y se eliminan duplicados. Acepta URL simples u objetos `{ "url": "..." }`. |
| `withDetails` | boolean | no | `true` | Abre la página de detalle de cada anuncio para la descripción, amenidades, superficie de terreno y construida, coordenadas y galería completa de fotos. Complemento de pago, disponible en planes de pago. |
| `minPrice` | integer | no | (cualquiera) | Solo anuncios con precio igual o mayor a este monto (moneda del anuncio). |
| `maxPrice` | integer | no | (cualquiera) | Solo anuncios con precio igual o menor a este monto. |
| `minBedrooms` | integer | no | (cualquiera) | Solo anuncios con al menos esta cantidad de recámaras. |
| `maxBedrooms` | integer | no | (cualquiera) | Solo anuncios con como máximo esta cantidad de recámaras. |
| `minBathrooms` | integer | no | (cualquiera) | Solo anuncios con al menos esta cantidad de baños. |
| `minArea` | integer | no | (cualquiera) | Solo anuncios con al menos esta superficie en metros cuadrados. |
| `maxArea` | integer | no | (cualquiera) | Solo anuncios con como máximo esta superficie en metros cuadrados. |
| `maxListings` | integer | no | `10` | Máximo de anuncios a recolectar entre todas las URL de búsqueda. |

\*Proporciona `startUrl` o `startUrls`. Los filtros opcionales se combinan con Y lógico y se aplican sobre lo que ya venga en la URL de búsqueda.

### Referencia de salida

Un elemento del dataset por anuncio. Tipos: `string`, `number`, `integer`, `object`, `string[]`, o `null` cuando el valor de origen no existe. Los campos marcados (detalle) se llenan cuando `withDetails` está activado.

| Campo | Tipo | Descripción |
|---|---|---|
| `imageUrl` | string | Imagen principal del anuncio. |
| `title` | string | Título del anuncio. |
| `url` | string | Enlace directo al anuncio. |
| `listingId` | string | Id del anuncio en Lamudi. |
| `operation` | string | `sale` (venta) o `rent` (renta). |
| `price` | number | Precio de venta o renta. |
| `currency` | string | Código de moneda, normalmente `MXN`. |
| `pricePerM2` | number | Precio por metro cuadrado (precio entre superficie). |
| `propertyType` | string | Tipo de propiedad, por ejemplo `Casa`, `Departamento`, `Terreno`. |
| `bedrooms` | integer | Número de recámaras. |
| `bathrooms` | integer | Número de baños completos. |
| `halfBathrooms` | integer | Número de medios baños (detalle). |
| `areaM2` | integer | Superficie anunciada en metros cuadrados. |
| `builtAreaM2` | integer | Superficie construida en metros cuadrados (detalle). |
| `plotAreaM2` | integer | Superficie de terreno en metros cuadrados (detalle). |
| `floor` | integer | Piso en el que está la unidad (detalle). |
| `yearBuilt` | integer | Año de construcción (detalle). |
| `parkingSpaces` | integer | Cajones de estacionamiento (detalle). |
| `condition` | string | Condición, por ejemplo `Segunda mano` (detalle). |
| `amenities` | string\[] | Amenidades y características, por ejemplo estacionamiento, seguridad, alberca (detalle). |
| `location` | string | Cadena de ubicación completa (colonia, municipio, estado). |
| `neighborhood` | string | Colonia o barrio. |
| `municipality` | string | Municipio o delegación. |
| `city` | string | Ciudad o entidad federativa. |
| `region` | string | Región o estado. |
| `country` | string | Código de país, por ejemplo `MX`. |
| `coordinates` | object | Coordenadas `{ lat, lng }` en el mapa. |
| `agencyName` | string | Nombre de la inmobiliaria (el contacto). |
| `publishedBy` | string | Nombre de quien publica o del asesor (detalle). |
| `agentPhone` | string | Teléfono del asesor (el prospecto). |
| `description` | string | Descripción completa de la propiedad (detalle). |
| `photos` | string\[] | URL de la galería de fotos completa (detalle). |
| `postedAgo` | string | Hace cuánto se publicó el anuncio (detalle). |
| `observedAt` | string | Marca de tiempo ISO 8601 de cuándo se recolectó el registro. |
| `error` | string | `null` en caso de éxito. En una ejecución fallida sin resultados, se escribe un solo elemento con el campo `error`. |

### Cómo se compara

Este es el único scraper de la tienda dedicado a **Lamudi México**. Además acepta todas las entradas que aceptan los populares actores de Lamudi para Filipinas e Indonesia, y devuelve un superconjunto estricto de sus campos.

| Capacidad | Este actor | Actores típicos de Lamudi PH/ID |
|---|---|---|
| Cobertura de Lamudi México | Sí | No (solo Filipinas o Indonesia) |
| Entrada por URL de búsqueda | Sí | Sí |
| Varias URL de búsqueda por ejecución | Sí | Algunos |
| Filtro por precio, recámaras, baños, superficie | Sí | Algunos |
| Precio y moneda | Sí | Sí |
| Recámaras y baños | Sí | Sí |
| Superficie construida y de terreno | Sí | Algunos |
| Amenidades y características | Sí | Algunos |
| Dirección completa y municipio | Sí | Algunos |
| Coordenadas geográficas exactas | Sí | Algunos |
| Galería de fotos | Sí | Sí |
| Teléfono de contacto del asesor | Sí | Algunos |
| Precio por m2 calculado | Sí | Raro |
| Piso, año, condición, estacionamiento | Sí | Raro |
| Pago por resultado, sin cobro en fallo | Sí | Varía |

### Uso vía API y CLI

Inicia una ejecución, espera a que termine y lee el dataset. Reemplaza `<TOKEN>` con tu token de API de Apify.

Ejecuta de forma síncrona y obtén los elementos del dataset en una sola llamada:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~lamudi-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.lamudi.com.mx/distrito-federal/for-sale/","minBedrooms":3,"maxListings":25}'
```

Inicia una ejecución de forma asíncrona:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~lamudi-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.lamudi.com.mx/nuevo-leon/for-rent/","maxPrice":30000,"maxListings":100}'
```

CLI de Apify:

```bash
apify call scrapers_lat/lamudi-scraper \
  --input '{"startUrl":"https://www.lamudi.com.mx/jalisco/for-sale/","minArea":120,"maxListings":50}'
```

### Obtener resultados

Cada ejecución escribe en un dataset. Obtén los elementos como JSON, CSV o Excel cambiando `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginar datasets grandes
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` se devuelve como `defaultDatasetId` en el objeto de la ejecución. Usa `offset` y `limit` para paginar grandes conjuntos de resultados. `clean=true` elimina campos vacíos e internos.

### Cobro y límites

- **Pago por resultado.** Se cobra por anuncio devuelto (evento `result`). Consulta la [pestaña de precios](https://apify.com/scrapers_lat/lamudi-scraper/pricing) para el precio actual por resultado.
- **Complemento de detalle.** Con `withDetails` activado, se abre la página de detalle de cada anuncio para la descripción, amenidades, coordenadas y fotos, cobrado como el complemento `details` en planes de pago.
- **Sin cobro en caso de fallo.** Si una ejecución no puede obtener anuncios, el actor escribe un solo elemento con el campo `error` y no cobra por él. Las ejecuciones vacías no cuestan nada.
- **Se respeta el límite de gasto.** Configura `maxTotalChargeUsd` en la ejecución; al alcanzarlo, el actor deja de emitir y cobrar más resultados facturables.
- **Los planes gratuitos de Apify** están limitados a 10 anuncios por ejecución y reciben registros a nivel de anuncio. Mejora tu plan para un `maxListings` mayor y el complemento de detalle.

### Preguntas frecuentes

**La ejecución dice que Lamudi muestra un captcha de "Security verification". ¿Qué hago?**
Desde noviembre de 2026 Lamudi a veces responde las páginas de búsqueda y de avisos con un captcha. Este actor no resuelve captchas, así que en ese caso la ejecución termina rápido con un mensaje claro y no cobra nada. Vuelve a intentarlo más tarde.

**Una ejecución devolvió 0 anuncios. ¿Por qué?**
La URL de búsqueda no coincidió con nada, o los filtros excluyeron todos los resultados. Abre la URL en un navegador para confirmar que muestra anuncios y relaja `minPrice`, `minBedrooms`, `minArea` u otros filtros. Las ejecuciones con cero resultados no se cobran.

**¿Cómo obtengo la descripción, las amenidades y las fotos?**
Activa `withDetails`. El actor abre la página de cada anuncio y agrega `description`, `amenities`, `plotAreaM2`, `builtAreaM2`, `coordinates`, `condition`, `floor` y la galería completa `photos`. El complemento de detalle está disponible en planes de pago de Apify.

**¿Cómo apunto a una ciudad o tipo de propiedad específicos?**
Aplica los filtros en Lamudi desde tu navegador y copia la URL resultante en `startUrl`. El actor respeta lo que venga codificado en la URL. También puedes pasar varias URL en `startUrls`.

**¿Por qué `coordinates` o `yearBuilt` son null?**
El anuncio no publicó ese valor. Los valores ausentes se devuelven como `null`, nunca inventados.

**¿Cubre países además de México?**
Este actor está afinado para Lamudi México (`lamudi.com.mx`). Proporciona una URL de `lamudi.com.mx` para resultados completos y verificados.

**¿Es una herramienta oficial de Lamudi?**
No. Este actor es independiente y no tiene afiliación con Lamudi. Solo lee datos publicados públicamente. Úsalo conforme a los términos de Lamudi.

### Otros scrapers

- [Inmuebles24 Scraper](https://apify.com/scrapers_lat/inmuebles24-scraper): anuncios inmobiliarios de Inmuebles24 México.
- [Vivanuncios Mexico Scraper](https://apify.com/scrapers_lat/vivanuncios-mexico-scraper): anuncios clasificados de Vivanuncios.
- [Metrocuadrado Scraper](https://apify.com/scrapers_lat/metrocuadrado-scraper): bienes raíces de Metrocuadrado Colombia.
- [Fincaraiz Scraper](https://apify.com/scrapers_lat/fincaraiz-scraper): anuncios de propiedades de Fincaraiz Colombia.
- [Properati Scraper](https://apify.com/scrapers_lat/properati-scraper): anuncios de propiedades de Properati LATAM.
- [Vivareal Scraper](https://apify.com/scrapers_lat/vivareal-scraper): anuncios de propiedades de VivaReal Brasil.

### Más scrapers en scrapers.lat

Creado y mantenido por [scrapers.lat](https://scrapers.lat), donde publicamos scrapers para plataformas públicas de Estados Unidos y América Latina: registros mercantiles, datos gubernamentales, finanzas, comercio electrónico y más. Explora el catálogo o solicita un scraper a medida en [scrapers.lat](https://scrapers.lat).

***

> Herramienta independiente, sin afiliación con Lamudi. Accede solo a datos disponibles públicamente. Úsala conforme a los términos de servicio de Lamudi.

# Actor input Schema

## `startUrl` (type: `string`):

A Lamudi search/results URL to scrape, e.g. https://www.lamudi.com.mx/distrito-federal/for-sale/ . Copy it from your browser after applying filters (location, operation, property type) on Lamudi.

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

Optional. One or more Lamudi search/results URLs to scrape in a single run. Results are merged and de-duplicated. Accepts plain URLs or Apify request objects. Use this instead of, or together with, Search URL.

## `maxListings` (type: `integer`):

Maximum number of property listings to collect across all search URLs. Free Apify plans are capped at 10 per run.

## `withDetails` (type: `boolean`):

When enabled, the scraper opens each listing's detail page to collect the full description, exact coordinates, plot/built area, amenities and the complete photo gallery. Slower and billed as the paid details add-on. Available on paid Apify plans.

## `minPrice` (type: `integer`):

Optional. Only return listings priced at or above this amount (listing currency). Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Optional. Only return listings priced at or below this amount. Leave empty for no maximum.

## `minBedrooms` (type: `integer`):

Optional. Only return listings with at least this many bedrooms.

## `maxBedrooms` (type: `integer`):

Optional. Only return listings with at most this many bedrooms.

## `minBathrooms` (type: `integer`):

Optional. Only return listings with at least this many bathrooms.

## `minArea` (type: `integer`):

Optional. Only return listings with at least this much area in square meters.

## `maxArea` (type: `integer`):

Optional. Only return listings with at most this much area in square meters.

## Actor input object example

```json
{
  "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
  "maxListings": 10,
  "withDetails": true
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
    "maxListings": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/lamudi-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 = {
    "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
    "maxListings": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/lamudi-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 '{
  "startUrl": "https://www.lamudi.com.mx/distrito-federal/for-sale/",
  "maxListings": 10
}' |
apify call scrapers_lat/lamudi-scraper --silent --output-dataset

```

## MCP server setup

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