# Lamudi.com.ph Scraper | Philippines Real Estate Listings (`haketa/lamudi-scraper`) Actor

Lamudi scraper & API for Philippines real estate: search property for sale and rent and export address, price, beds, baths, floor area, type, agent, amenities, photos and coordinates. Philippines property market data and lead generation — fast, no login.

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

## Pricing

from $2.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

## Lamudi.com.ph Scraper — Philippines Real Estate Data for Condos, Houses, Land & Commercial Listings

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com/haketa/lamudi-scraper)
[![Country](https://img.shields.io/badge/Country-Philippines-red)](https://www.lamudi.com.ph/)
[![Currency](https://img.shields.io/badge/Currency-PHP%20\(%E2%82%B1\)-blueviolet)]()
[![Scale](https://img.shields.io/badge/Pagination-1%2C000%2B%20Listings-purple)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel%20%7C%20API-orange)]()

> **The fast, reliable [Lamudi.com.ph](https://www.lamudi.com.ph/) real estate scraper on Apify.** Extract structured Philippine property listings — condominiums in Makati and BGC (Taguig), house-and-lot packages in Quezon City and Alabang, residential and beachfront land in Cebu and Davao, and commercial/warehouse spaces across Metro Manila — complete with **PHP asking prices**, **bedrooms & bathrooms**, **floor area (sqm)**, **full street address & barangay**, **city & region**, **GPS coordinates (`latitude` / `longitude`)**, **title status** (`Clean Title`, `TCT`, `CCT`), and optional **agent contact phone** and **building amenities**. **No login, no API key, and no coding required.**

Export every listing to **JSON, CSV, Excel, or API**.

> Built for OFW property investors, Philippine prop-tech platforms, real estate valuation and CMA analysts, BPO corporate relocation teams, mortgage brokers, and broker/agent lead-generation teams who need structured **Lamudi data** on demand.

***

### ⚡ At a glance

| Feature | Details |
|---|---|
| **Target portal** | [Lamudi.com.ph](https://www.lamudi.com.ph/) (Philippines #1 real estate marketplace) |
| **Listing & property types** | For Sale (`buy`), For Rent (`rent`), or Both (`all`) · Condos, Houses, Land/Lots, Commercial, Apartments, Warehouses |
| **Location coverage** | 44 pre-built Philippine cities/provinces in dropdown + `customCities` slug support + custom `startUrls` |
| **Core list-page fields** | `listingId`, `title`, `listingType`, `propertyType`, `price` (PHP), `priceUnit`, `bedrooms`, `bathrooms`, `floorArea` (sqm), `streetAddress`, `city`, `region`, `latitude`, `longitude`, `titleStatus`, `image`, `description`, `listingUrl` |
| **Optional detail fields** | `agentPhone` (+63 mobile/landline), `amenities` (comma-separated list), `agentName` (when `scrapeDetails: true`) |
| **Pagination & scale** | ~30 listings per page via `?page=N` with `maxPages: 0` (auto/unlimited) + multi-city auto-expansion for **1,000+ unique listings** |
| **Proxy requirement** | Apify Proxy (`RESIDENTIAL` enabled by default for reliable session warming) |
| **Export formats** | JSON, CSV, Excel (XLSX), HTML, XML, RSS, and Apify REST API |

***

### 🔎 Why scrape Lamudi.com.ph?

[Lamudi.com.ph](https://www.lamudi.com.ph/) is the **Philippines' largest property portal**, aggregating tens of thousands of active For-Sale and For-Rent listings from licensed brokers, real estate agencies, and major Philippine developers — including Ayala Land, Megaworld, SMDC, DMCI Homes, Robinsons Land, Vista Land, Filinvest, and Shang Properties — across Metro Manila (NCR), Calabarzon, Central Visayas (Cebu), Davao, Iloilo, Baguio, and Pampanga.

For real estate professionals, Lamudi is the primary pulse of **Philippine property market pricing**: live PHP asking prices, monthly condo rental rates, floor areas in square meters, exact map coordinates, and broker contact phones. However, there is **no public Lamudi API**, and manually copying hundreds of paginated search pages into Excel is slow, error-prone, and outdated within days.

This **Lamudi scraper** automates the entire extraction pipeline over lightweight HTTP requests (no slow headless browser required). It walks page after page of search results (`?page=N`), extracts normalized schema fields, de-duplicates listings across overlapping city searches by `listingUrl`, and outputs a clean dataset ready for Excel, SQL, Power BI, or your CRM.

**Common reasons teams scrape Lamudi.com.ph:**

- **Price-per-sqm valuation & CMA benchmarking** — calculate median PHP/sqm asking prices and rental yields across Makati, BGC (Taguig), Ortigas, Quezon City, and Cebu IT Park.
- **Real estate agent & broker lead generation** — enable `scrapeDetails: true` to extract verified Philippine broker phone numbers (`agentPhone`, e.g. `+63917...`) for B2B partnerships, recruiting, or mortgage/insurance outreach.
- **OFW & institutional investment scouting** — filter `Clean Title`, `CCT`, or `TCT` listings (`titleStatus`) and spot under-market condominiums or residential lots.
- **Prop-tech catalog & AVM training** — feed automated valuation models (AVMs) and property portals with clean coordinates (`latitude`, `longitude`), floor areas, and room counts.
- **Corporate & BPO relocation sourcing** — aggregate 1BR/2BR rental inventory (`listingType: "rent"`) near business districts in Metro Manila, Cebu, and Iloilo.

***

### ✨ What this Lamudi scraper does

- ✅ **No-code search builder** — select **For Sale (`buy`)**, **For Rent (`rent`)**, or **Both (`all`)**, choose a **Property Type** (`condominium`, `house`, `land`, `commercial`, `apartment`, `warehouse`, or `all`), and pick from **44 Philippine cities & provinces** in the dropdown (`makati`, `taguig`, `quezon-city`, `pasig`, `cebu-city`, `davao-city`, `tagaytay`, `boracay`, etc.).
- ✅ **Unlocked 1,000+ deep pagination (`maxPages: 0`)** — by default, `maxPages` is `0` (auto/unlimited, governed by `maxRecords`). The scraper walks `?page=1`, `?page=2`, `?page=3`… (~30 listings per page) and automatically expands across major Philippine cities when `maxRecords >= 300`, enabling **1,000+ unique listings** in a single run without stopping early.
- ✅ **Sale + Rent price normalization** — handles both For-Sale (`offers.price`) and For-Rent (`offers.priceSpecification.price` + `priceUnit: "MONTH"`) structures so rental prices are never missed.
- ✅ **Rich list-page extraction (fast mode)** — captures `listingId`, `title`, `listingType`, `propertyType`, `price`, `priceCurrency` (`PHP`), `priceUnit`, `bedrooms`, `bathrooms`, `floorArea` (m²), `streetAddress`, `city`, `region`, `latitude`, `longitude`, `titleStatus`, `image`, `description`, and `listingUrl` directly from search pages without extra detail requests.
- ✅ **Optional detail-page enrichment (`scrapeDetails: true`)** — visits each individual property page using a warmed cookie session to extract the **agent phone number (`agentPhone`)** and full **building/unit amenities (`amenities`)**.
- ✅ **Automatic Philippine title-status detection** — parses listing descriptions to tag `Clean Title`, `CCT` (Condominium Certificate of Title), `TCT` (Transfer Certificate of Title), `Tax Declaration`, or `Mother Title`.
- ✅ **Smart cold-session warming** — automatically handles Lamudi's HTTP 202 session warm-up on the same cookie jar so multi-page runs complete smoothly with **0% duplicates**.

***

### 🎯 Use cases

| Persona / Team | How they use Lamudi data |
|---|---|
| **Real Estate Developers & Analysts** | Benchmark competing condo presale and resale PHP/sqm pricing and unit sizes (`floorArea`) across Metro Manila, Cebu, and Davao. |
| **Brokerages, Mortgage & Insurance Teams** | Run with `scrapeDetails: true` to build targeted lead lists of active Philippine property listings complete with `agentPhone` and `city`. |
| **OFW Investors & Buyer Agents** | Filter For-Sale houses and condos with `titleStatus: "Clean Title"` or `"CCT"` and compare asking prices across neighborhoods. |
| **Prop-Tech & GIS Data Engineers** | Map Philippine housing supply and price heatmaps using `latitude`, `longitude`, `floorArea`, `bedrooms`, and `price`. |
| **BPO & Expat Relocation Managers** | Pull live monthly rental inventory (`listingType: "rent"`, `priceUnit: "MONTH"`) in Makati, BGC, Ortigas, and Cebu City. |

***

### 📥 Input

All fields are optional. Leave `cities` and `startUrls` empty to collect a fast nationwide Philippines sample (`prefill: 60` records so test runs finish in ~30 seconds).

| Field | Type | Default / Prefill | Description |
|---|---|---|---|
| `listingType` | string (select) | `"buy"` | `"buy"` (For Sale), `"rent"` (For Rent), or `"all"` (Both Sale + Rent). |
| `propertyType` | string (select) | `"all"` | `"all"`, `"house"`, `"condominium"`, `"land"`, `"commercial"`, `"apartment"`, or `"warehouse"`. |
| `cities` | array (select) | `[]` | Pick one or more of 44 Philippine cities/provinces (`metro-manila`, `makati`, `quezon-city`, `taguig`, `pasig`, `cebu-city`, `davao-city`, `cavite`, `laguna`, etc.). Empty = nationwide. |
| `customCities` | array\<string> | `[]` | Optional. Additional Lamudi location slugs not in the dropdown (e.g. `["subic", "general-santos", "dumaguete"]`). |
| `scrapeDetails` | boolean | `false` | Visit each property page to extract `agentPhone` (+63 phone) and full `amenities`. Keep `false` for fastest list-page runs. |
| `maxRecords` | integer | Default: `0` (Prefill: `60`) | Maximum total listings to collect across all searches (`0` = unlimited). Set `1000`+ for bulk multi-city extraction. |
| `maxPages` | integer | `0` | Maximum pages per location (~30 listings/page). `0` = auto/unlimited governed by `maxRecords`. |
| `requestDelay` | integer | `2500` | Delay in milliseconds between page requests (`1000`–`10000`). |
| `startUrls` | array | `[]` | Optional. Paste pre-filtered Lamudi search URLs directly (overrides `listingType`, `propertyType`, and `cities`). |
| `proxyConfiguration` | object | `RESIDENTIAL` | Apify Proxy configuration. Residential proxy is prefilled and required to clear Lamudi's session warm-up. |

#### Example input — fast Metro Manila condo scan

```json
{
  "listingType": "buy",
  "propertyType": "condominium",
  "cities": ["makati", "taguig", "pasig"],
  "scrapeDetails": false,
  "maxRecords": 120,
  "maxPages": 0,
  "requestDelay": 2000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Example input — 1,000+ listings deep nationwide extraction

```json
{
  "listingType": "all",
  "propertyType": "all",
  "cities": ["metro-manila", "cebu-city", "davao-city", "cavite", "laguna"],
  "scrapeDetails": false,
  "maxRecords": 1000,
  "maxPages": 0,
  "requestDelay": 2000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### 📤 Output

Every record uses a consistent, flat JSON schema (with both **Property Listings** overview and **Full detail** dataset views). Below is a real record from a verified Makati condominium run with `scrapeDetails: true`:

```json
{
  "listingId": "41032-73-84489c97c2d3-9d5a-1981868-9799-720d",
  "title": "Condo For Sale in San Antonio",
  "listingType": "Buy",
  "propertyType": "Condominium",
  "price": "7569100",
  "priceCurrency": "PHP",
  "priceUnit": null,
  "bedrooms": "1",
  "bathrooms": "1",
  "floorArea": "27",
  "streetAddress": "Tiara Oriental HOTEL, Mayapis, San Antonio, Makati City, Metro Manila, National Capital Region, PHL",
  "city": "Makati",
  "region": "Metro Manila",
  "latitude": "14.558908",
  "longitude": "121.007878",
  "titleStatus": "Clean Title",
  "amenities": "Badminton court, Basketball court, Cctv, Playground, Concierge, Deck, Entertainment room, Fire exits, Garden, Gym, Lift, Multipurpose room, Swimming pool, Tennis court, 24 hours security, Unfurnished",
  "agentName": null,
  "agentPhone": "+639175457788",
  "image": "https://img.lamudi.com/eyJidWNrZXQiOiJwcmQ...",
  "description": "The Linear is a master-planned mixed-use condominium at Mayapis St., San Antonio Village, Makati City...",
  "listingUrl": "https://www.lamudi.com.ph/property/41032-73-84489c97c2d3-9d5a-1981868-9799-720d",
  "searchUrl": "https://www.lamudi.com.ph/makati/buy/condominium/",
  "scrapedAt": "2026-11-02T00:14:12.606Z"
}
```

***

### 📋 Output fields & coverage reference

#### 🏠 Property Identity, Pricing & Specs

| Field | Type | Coverage | Description |
|---|---|---|---|
| `listingId` | string | 🟢 High (100%) | Unique Lamudi property identifier extracted from the listing URL. |
| `title` | string | 🟢 High (100%) | Property listing headline (e.g. `"Condo For Sale in San Antonio"`). |
| `listingType` | string | 🟢 High (100%) | Transaction type: `"Buy"` or `"Rent"`. |
| `propertyType` | string / null | 🟢 High (~89%) | Normalized category: `"Condominium"`, `"House"`, `"Land"`, `"Commercial"`, `"Apartment"`, or `"Warehouse"`. |
| `price` | string / null | 🟢 High (~100%) | Numeric asking price in PHP as a string (supports both Sale `offers.price` and Rent `priceSpecification.price`). |
| `priceCurrency` | string | 🟢 High (100%) | Currency ISO code (`"PHP"`). |
| `priceUnit` | string / null | 🟡 Conditional (Rent) | Billing period on rental listings (e.g. `"MONTH"`), `null` on For-Sale listings. |
| `bedrooms` | string / null | 🟢 High (~92% residential) | Number of bedrooms (`~78%` across all property types including bare land). |
| `bathrooms` | string / null | 🟢 High (~92% residential) | Number of bathrooms (`~81%` across all property types). |
| `floorArea` | string / null | 🟢 High (~97%) | Floor or lot size in square meters (sqm / `MTK`). |
| `titleStatus` | string / null | 🟡 Conditional (~26%) | Ownership document detected from description: `"Clean Title"`, `"CCT"`, `"TCT"`, `"Tax Declaration"`, or `"Mother Title"`. |

#### 📍 Location, Coordinates & Media

| Field | Type | Coverage | Description |
|---|---|---|---|
| `streetAddress` | string | 🟢 High (100%) | Full address string including building/subdivision, barangay, city, and region. |
| `city` | string | 🟢 High (100%) | Municipality or city name (e.g. `"Makati"`, `"Taguig"`, `"Quezon City"`, `"Cebu City"`). |
| `region` | string | 🟢 High (100%) | Philippine region or province (e.g. `"Metro Manila"`, `"Cebu"`, `"Cavite"`). |
| `latitude` | string / null | 🟢 High (~95%) | WGS84 GPS latitude coordinate. |
| `longitude` | string / null | 🟢 High (~95%) | WGS84 GPS longitude coordinate. |
| `image` | string | 🟢 High (100%) | Primary high-resolution property image URL. |
| `description` | string | 🟢 High (100%) | Full listing description text. |
| `listingUrl` | string | 🟢 High (100%) | Canonical URL of the property on `lamudi.com.ph` (de-duplication key). |
| `searchUrl` | string | 🟢 High (100%) | Search root URL that discovered this listing. |
| `scrapedAt` | string | 🟢 High (100%) | ISO 8601 extraction timestamp. |

#### 📞 Detail-Page Enrichment (`scrapeDetails: true`)

| Field | Type | Coverage | Description |
|---|---|---|---|
| `agentPhone` | string / null | 🟡 Conditional (~100% when `scrapeDetails: true`) | Broker/agent contact phone number (e.g. `"+639175457788"`), extracted from the detail page. |
| `amenities` | string / null | 🟡 Conditional (~75% when `scrapeDetails: true`) | Comma-separated building and unit amenities (`"Swimming pool, Gym, 24 hours security, ..."`). |
| `agentName` | string / null | 🟡 Conditional | Agent or seller name when present in detail-page markup. |

***

### 🔁 Pagination & 1,000+ listings scale

The **Lamudi scraper** is engineered for both quick 60-item samples and 1,000+ bulk market sweeps:

1. **Automatic `?page=N` pagination (`maxPages: 0`):** Each Lamudi search page embeds up to 30 listings. With `maxPages: 0` (the default), the scraper walks `?page=1`, `?page=2`, `?page=3`… until `maxRecords` is reached or the search runs out of pages.
2. **Multi-city auto-expansion for 1,000+ runs:** When `maxRecords >= 300` and `maxPages === 0` (unlimited), the actor automatically appends 20 major Philippine real estate markets (`metro-manila`, `makati`, `quezon-city`, `taguig`, `pasig`, `mandaluyong`, `manila`, `paranaque`, `cebu-city`, `davao-city`, `cavite`, `laguna`, etc.) behind your initial selection so that even a narrow query seamlessly scales to **1,000+ unique listings**.
3. **Cross-search URL de-duplication:** Every property URL is stored in a global `Set`, guaranteeing **0 duplicate records** even when a listing appears in both `"makati"` and `"metro-manila"` searches.

***

### ⚙️ How to use

1. **Open the actor** on Apify Console and select your **Listing Type** (`buy`, `rent`, or `all`) and **Property Type**.
2. **Select your locations:** Pick cities from the **Cities / Regions** dropdown, or leave it blank for a nationwide Philippines run.
3. **Choose speed vs. depth:** Keep `scrapeDetails: false` for fast list-page extraction (~30 listings per request), or enable `scrapeDetails: true` when you need `agentPhone` and `amenities`.
4. **Set `maxRecords`:** Use `60`–`100` for a quick test, or `1000`+ (with `maxPages: 0`) for a large dataset.
5. **Click Start** and export your results to **JSON, CSV, Excel**, or via the **Apify REST API**.

#### Calling via Python SDK

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "listingType": "buy",
    "propertyType": "condominium",
    "cities": ["makati", "taguig", "quezon-city"],
    "scrapeDetails": False,
    "maxRecords": 300,
    "maxPages": 0,
    "proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"]},
}

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

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"PHP {item['price']} | {item['floorArea']} sqm | {item['city']} | {item['listingUrl']}")
```

#### Calling via cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/haketa~lamudi-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "listingType": "rent",
    "propertyType": "condominium",
    "cities": ["makati", "taguig"],
    "scrapeDetails": true,
    "maxRecords": 100
  }'
```

#### Calling via JavaScript / Node.js SDK

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

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

const run = await client.actor('haketa/lamudi-scraper').call({
    listingType: 'buy',
    propertyType: 'house',
    cities: ['quezon-city', 'paranaque', 'muntinlupa', 'antipolo'],
    scrapeDetails: false,
    maxRecords: 400,
    maxPages: 0,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} Philippine real estate listings.`);
```

***

### 🗺️ Supported Philippine cities & provinces (`cities` dropdown)

All 44 high-demand Philippine locations below can be selected directly in the input UI (plus any additional Lamudi location slug via `customCities`):

| Region | Location Slugs Available in `cities` |
|---|---|
| **Metro Manila (NCR)** | `metro-manila`, `makati`, `quezon-city`, `taguig` (BGC), `pasig` (Ortigas), `mandaluyong`, `manila`, `paranaque`, `pasay`, `las-pinas`, `muntinlupa` (Alabang), `marikina`, `caloocan`, `valenzuela`, `san-juan` |
| **Calabarzon (Region IV-A)** | `cavite`, `bacoor`, `imus`, `dasmarinas`, `tagaytay`, `laguna`, `sta-rosa`, `calamba`, `rizal`, `antipolo`, `batangas` |
| **Central Luzon (Region III)** | `bulacan`, `pampanga`, `angeles` |
| **Visayas** | `cebu`, `cebu-city`, `mandaue`, `lapu-lapu`, `iloilo`, `iloilo-city`, `bacolod`, `boracay` |
| **Mindanao & North Luzon / MIMAROPA** | `davao`, `davao-city`, `cagayan-de-oro`, `baguio`, `pangasinan`, `palawan`, `puerto-princesa` |

#### Supported Property Types (`propertyType`)

| Slug | Property Category | Typical Fields Populated |
|---|---|---|
| `"all"` | All Property Types | Full mixed inventory across residential, commercial, and land |
| `"condominium"` | Condominium | `price`, `floorArea`, `bedrooms`, `bathrooms`, `latitude`/`longitude`, `titleStatus` (`CCT`) |
| `"house"` | House & Lot | `price`, `floorArea`, `bedrooms`, `bathrooms`, `streetAddress`, `titleStatus` (`Clean Title` / `TCT`) |
| `"land"` | Land / Lot | `price`, `floorArea` (lot sqm), `streetAddress`, `latitude`/`longitude`, `titleStatus` |
| `"commercial"` | Commercial / Office | `price`, `floorArea`, `streetAddress`, `city`, `region` |
| `"apartment"` | Apartment / Townhouse | `price`, `bedrooms`, `bathrooms`, `floorArea`, `city` |
| `"warehouse"` | Warehouse / Industrial | `price`, `floorArea`, `streetAddress`, `city`, `region` |

***

### 💡 Pro tips for best results

- **Fastest market pricing runs:** Leave `scrapeDetails: false` when you only need `price`, `floorArea`, `bedrooms`, `bathrooms`, `streetAddress`, `city`, `latitude`, `longitude`, and `description` — all of these are extracted directly from the list pages at 30 listings per request!
- **When using `scrapeDetails: true`:** Detail enrichment fetches each property page individually to extract `agentPhone` and `amenities`. Keep `maxRecords` between `30` and `150` per run (or increase run timeout) when detail enrichment is enabled.
- **Keep Residential proxy enabled:** Lamudi uses an HTTP 202 cold-session warm-up challenge that blocks datacenter IPs; the default Residential proxy + cookie jar warm-up clears it automatically on the second attempt.

***

### ⚠️ Honest limitations

- **Detail-only fields (`agentPhone`, `amenities`):** Lamudi does not include broker phone numbers or full amenity arrays in search result pages; they are populated only when `scrapeDetails: true` is enabled.
- **Land & commercial bedroom counts:** Bare land (`propertyType: "land"`) and some commercial warehouses naturally have `bedrooms: null` and `bathrooms: null`.
- **Title status depends on broker text:** `titleStatus` is parsed from the listing description when the broker explicitly mentions `"Clean Title"`, `"CCT"`, `"TCT"`, `"Tax Declaration"`, or `"Mother Title"` (~26% of listings).

***

### ❓ FAQ

**Do I need a Lamudi account or API key?**
No. All data is extracted from publicly accessible Lamudi.com.ph pages with no login required.

**Why is Residential proxy recommended?**
Lamudi.com.ph issues an HTTP 202 cold-session check that rejects standard datacenter IPs. Using Apify Residential proxy (prefilled by default) allows our cookie-jar warm-up logic to establish a valid session and scrape hundreds of pages reliably.

**Does this scraper capture monthly rental prices accurately?**
Yes. Lamudi structures For-Sale prices under `offers.price` and For-Rent prices under `offers.priceSpecification.price` with `unitText: "MONTH"`. This actor normalizes both into `price` and sets `priceUnit: "MONTH"` on rentals.

**How do I scrape 1,000+ Philippine property listings in one run?**
Set `maxRecords: 1000` (or `0` for unlimited) and keep `maxPages: 0` and `scrapeDetails: false`. The scraper will paginate through all pages of your selected cities and auto-expand across major Philippine cities until 1,000+ unique properties are saved.

**Can I scrape custom filtered URLs (e.g., properties under ₱5M)?**
Yes — apply any price, bedroom, or keyword filters on `lamudi.com.ph`, copy the URL from your browser, and paste it into `startUrls`.

**How do I compute price per square meter (PHP/sqm) from the output?**
Divide `Number(price)` by `Number(floorArea)` on any record where both fields are present (~97% of listings). Both values are normalized as clean numeric strings in PHP and square meters (`MTK`).

**What happens if I leave all inputs empty and click Start?**
The actor automatically runs a nationwide Philippines For-Sale search and caps the sample at 100 listings (`prefill: 60`) so you get a fast, representative dataset in under a minute.

***

### 🔗 Related real estate & classifieds scrapers

Explore our other property and classifieds scrapers:

- [SUUMO Scraper — Japan #1 Real Estate Rental & Sale Listings](https://apify.com/haketa/suumo-scraper)
- [Realestate.com.kh Scraper — Cambodia Property Portal Listings](https://apify.com/haketa/realestate-com-kh-scraper)
- [Redfin Scraper — US Real Estate Listings & Sold Homes](https://apify.com/haketa/redfin-scraper)
- [Funda Scraper — Netherlands Real Estate Listings](https://apify.com/haketa/funda-scraper)
- [Avito Real Estate Scraper — Property Listings & Prices](https://apify.com/haketa/avito-scraper)
- [Milanuncios Scraper — Spain Classifieds & Real Estate](https://apify.com/haketa/milanuncios-scraper)

***

### 📋 Changelog

- **v1.2 (2026-11)** — Unlocked **1,000+ listings deep pagination** with `maxPages: 0` (auto/unlimited governed by `maxRecords`) and automatic 20-city Philippine expansion on large runs; tuned prefill (`maxRecords: 60`, `scrapeDetails: false`) for fast `< 45s` verification runs; expanded README documentation.
- **v1.1 (2026-07)** — Improved HTTP 202 cold-session warm-up handling on the same cookie jar (no premature proxy rotation) and added `priceSpecification.price` support so For-Rent (`rent`) listings achieve 100% price fill rate.
- **v1.0 (2026-07)** — Rebuilt on fast, browserless HTTP + server-rendered JSON-LD (`SearchResultsPage` / `RealEstateListing`) architecture with optional detail enrichment for `agentPhone` and `amenities`.

# Changelog

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

# Actor input Schema

## `listingType` (type: `string`):

Show properties For Sale, For Rent, or both.

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

Which kind of property to collect.

## `cities` (type: `array`):

Pick one or more locations from the list. Leave empty to search the whole Philippines.

## `customCities` (type: `array`):

Optional. Add extra Lamudi location slugs not in the dropdown above, e.g. 'general-santos' or 'subic'. Most users can leave this empty.

## `scrapeDetails` (type: `boolean`):

Visit each listing for full description, amenities, coordinates, all images, agent phone and PRC license. Slower but much richer data.

## `maxRecords` (type: `integer`):

Maximum total listings to collect. Set 0 for unlimited.

## `maxPages` (type: `integer`):

Maximum pages to load per location (~30 listings per page). Set 0 for auto/unlimited governed by Max Records.

## `requestDelay` (type: `integer`):

Delay between page loads. 2000-4000ms recommended for smooth, complete runs.

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

Optional. Paste ready-made Lamudi search page URLs to scrape them directly. Overrides the filters above. Most users can leave this empty.

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

Residential proxy is recommended for reliable, complete results.

## Actor input object example

```json
{
  "listingType": "buy",
  "propertyType": "all",
  "cities": [],
  "customCities": [],
  "scrapeDetails": false,
  "maxRecords": 60,
  "maxPages": 0,
  "requestDelay": 2500,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All scraped Lamudi.com.ph property listings. Open, filter and export as JSON, CSV or Excel.

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

Table view of the most valuable fields for each listing.

## `listingId` (type: `string`):

No description

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

No description

## `listingType` (type: `string`):

No description

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

No description

## `price` (type: `string`):

No description

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

No description

## `floorArea` (type: `string`):

No description

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

No description

## `titleStatus` (type: `string`):

No description

## `agentName` (type: `string`):

No description

## `listingUrl` (type: `string`):

No description

## `scrapedAt` (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 = {
    "listingType": "buy",
    "propertyType": "all",
    "cities": [],
    "customCities": [],
    "scrapeDetails": false,
    "maxRecords": 60,
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "listingType": "buy",
    "propertyType": "all",
    "cities": [],
    "customCities": [],
    "scrapeDetails": False,
    "maxRecords": 60,
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/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 '{
  "listingType": "buy",
  "propertyType": "all",
  "cities": [],
  "customCities": [],
  "scrapeDetails": false,
  "maxRecords": 60,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call haketa/lamudi-scraper --silent --output-dataset

```

## MCP server setup

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