Dot Property + Lamudi PH Scraper | Philippines Property avatar

Dot Property + Lamudi PH Scraper | Philippines Property

Pricing

from $1.00 / 1,000 listing results

Go to Apify Store
Dot Property + Lamudi PH Scraper | Philippines Property

Dot Property + Lamudi PH Scraper | Philippines Property

Scrape Philippines property listings from dotproperty.com.ph and lamudi.com.ph with exact map-pin coordinates, price, beds, baths, areas, facilities, full photo galleries, and agent contact details. Covers houses, condos, apartments, townhouses, villas, land, offices and commercial units, for.

Pricing

from $1.00 / 1,000 listing results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Dot Property + Lamudi Philippines Scraper

Scrape Philippines property listings from dotproperty.com.ph and lamudi.com.ph (the country's two largest property portals) in one actor, with the exact map-pin latitude/longitude for every listing, price, beds, baths, usable and land areas, facilities, full photo galleries, and agent contact details. Houses, condos, apartments, townhouses, villas, land, offices, for rent or for sale. Every row carries a source field so you can tell the two portals apart.

Key Features

FeatureDescription
Two portals, one datasetDot Property and Lamudi in the same run; every row carries a source field
Exact map-pin coordinateslatitude / longitude for every listing: the exact pin the portal shows on its map, not a vague "Makati" label
Complete listing dataPrice with currency and rent period, property type, bedrooms, bathrooms, usable + land area, floor, facilities, full description, complete photo gallery
Agent contact detailsAgent/publisher name, phone number, profile URL, listing count, verified status
Nearby amenitiesPoints of interest with coordinates around Lamudi listings
Three ways to startSearch builder (location + rent/sale + property types + price/beds/area filters), pasted search URLs, or direct listing URLs, all auto-classified
Incremental monitoringRun on a schedule, receive only what changed (NEW / UPDATED / REAPPEARED / EXPIRED)
Resume supportContinue one interrupted run from a pasted run/dataset ID
FastLightweight and fast; covers every listing in the results

Quick Start

Search for condos for sale in Makati, Metro Manila:

{
"mode": "search",
"sites": ["dotproperty", "lamudi"],
"operation": "sale",
"propertyTypes": ["condos"],
"locations": ["Metro Manila"],
"maxItems": 20
}

How to Use

Step 1: Search by location

{
"mode": "search",
"sites": ["dotproperty", "lamudi"],
"operation": "rent",
"propertyTypes": ["houses"],
"locations": ["Metro Manila", "Cebu"],
"maxItems": 100
}

Locations are slugified automatically: "Metro Manila", "Makati", "Cebu", or "metro-manila/makati" all work. A city name is matched against the portal's own location list first, so "Makati" is expanded to its region (metro-manila/makati) before the first page is requested, so you never pay for a wrong-shaped search URL. One search is built per (portal × property type × location).

Step 2: Filter by price, beds and area

{
"mode": "search",
"sites": ["dotproperty"],
"operation": "sale",
"propertyTypes": ["condos", "townhouses"],
"locations": ["Metro Manila"],
"minPrice": 5000000,
"maxPrice": 15000000,
"minBedrooms": 2,
"minSqm": 60,
"maxItems": 100
}

Step 3: Scrape specific URLs

{
"mode": "url",
"urls": [
"https://www.dotproperty.com.ph/properties-for-sale/metro-manila/makati",
"https://www.lamudi.com.ph/rent/metro-manila/makati/house/",
"https://www.dotproperty.com.ph/ads/1-bedroom-condo-for-sale-in-the-linear-san-antonio-metro-manila_5971c811f880-1371-3792-81d0-a8181089"
],
"maxItems": 100
}

Search URLs and direct listing URLs from both portals can be mixed in the same array; they are auto-classified. For search URLs the scraper continues through all available results pages (starting from any ?page=N you provide); a direct listing URL is collected once.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (build URLs from filters) or url (use pasted URLs)
sitesarray["dotproperty","lamudi"]Portals to search
operationstringsalesale or rent
propertyTypesarray["properties"]properties, houses, condos, apartments, townhouses, villas, land, offices
locationsarray[]Location names or slugs (search mode)
minPriceinteger-Minimum price in PHP
maxPriceinteger-Maximum price in PHP
minBedroomsinteger-Minimum bedrooms
minSqminteger-Minimum usable floor area (sqm)
sortstringnewestDot Property sort: newest, min_price, max_price, relevance
urlsarray[]dotproperty.com.ph / lamudi.com.ph URLs (url mode)
maxItemsinteger20The run's volume limit. Hard cap on listings collected
maxPagesinteger-Optional per-search page cap. Leave empty for no page limit; the run stops at Max listings
fetchDetailsbooleantrueEnrich results with exact coordinates, facilities, full gallery, description, and agent contacts. Adds a per-listing detail-enrichment charge
resumeFromRunIdstring-Resume one interrupted run (skips already-collected listings)
incrementalModebooleanfalseRecurring monitoring: remembers the previous run of this search and returns only what changed
stateKeystring-Optional manual key to control which runs share incremental state
emitUnchangedbooleanfalseIncremental mode: also return listings with no detected change
emitExpiredbooleanfalseIncremental mode: also return listings no longer found (after a complete scan)
proxyobject-Proxy configuration. Works on every Apify plan. If a run gets blocked, select RESIDENTIAL proxies with a PH country pin
mcpConnectorsarray[]MCP connectors to also deliver results into (Notion, Linear, Airtable, Apify). Leave empty to skip; see Send results into your apps
notionParentPageUrlstring-Notion connector only: URL or id of the page under which item pages are created. Required to enable the Notion export; ignored by other connectors
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset

Resume an interrupted run

Paste a previous run ID or dataset ID into resumeFromRunId to continue that ONE crawl; listings it already collected are skipped instead of re-scraped. This is a one-off continuation, unrelated to Incremental mode below.

Incremental mode (recurring monitoring)

Turn on incrementalMode to schedule this actor against the same search repeatedly and get only what changed. The actor remembers the previous run of this search itself (a saved state, keyed on your filters or on stateKey) and tags every listing returned with a changeType:

changeTypeMeaning
NEWFirst time this listing has ever been tracked under this state key
UPDATEDTracked before; at least one comparable field changed (see changedFields)
UNCHANGEDTracked before, nothing changed; suppressed (not returned) unless emitUnchanged is ON
REAPPEAREDWas previously marked EXPIRED, now back
EXPIREDWas tracked and present before, no longer found; only emitted when emitExpired is ON, and only after a run that scanned its search to a genuine natural end (no maxItems cap hit, no Resume)

Additional fields in incremental mode: changedFields (which field names differ from the last tracked scrape), firstSeenAt, lastSeenAt (UTC timestamps).

stateKey is optional: leave it blank to auto-derive the tracked scope from your search filters (portals, operation, property types, locations, price/bedroom/area filters, sort, URLs, and whether detail pages are enabled). Two different filter setups never share a baseline unless you set the same stateKey on both.

emitUnchanged and emitExpired default OFF. Turning either on returns (and bills, at the standard per-result rate) extra rows beyond what actually changed.

Output

Each listing is returned as a JSON object. Field availability varies slightly by portal (source distinguishes them):

Field groupFields
Identityid, listing_id, source, url, title, operation, property_type, listing_id_text
Priceprice, currency, price_period, price_per_sqm
Locationlatitude, longitude, location_source, region, city, area, address, breadcrumbs
Specsbedrooms, bathrooms, usable_area_sqm, land_area_sqm, floor, car_parks, contract_duration
Facilitiesfacilities[] (swimming pool, gym, security, …)
Nearbynearby_pois[] (points of interest with coordinates, Lamudi)
Contentdescription, images[], image_count, og_image
Agentagent_name, agent_phone, agent_url, agent_listing_count, agent_verified
Datesposted_ago (relative posting age)
IncrementalchangeType, changedFields, firstSeenAt, lastSeenAt

Connection & reliability

Both portals are scraped over your Apify proxy connection and work on every Apify plan. If a run gets blocked, switch to RESIDENTIAL proxies with a PH country pin for the most consistent results.

If a portal stops serving detail pages part-way through a run, the actor stops asking for them instead of retrying every remaining listing. You still get every listing with its search-result fields (price, beds, baths, area, URL), and the listings that were not enriched are not charged the detail-enrichment fee.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape; the Apify dataset is never changed.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field.
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.