# Lamudi Indoneshia Property Scraper (`shahidirfan/lamudi-indoneshia-property-scraper`) Actor

Extract Lamudi Indonesia property listings instantly. Scrape prices, locations, photos, specs & agent contacts. Perfect for real estate analysis, investment research & market intelligence in Indonesia's property sector.

- **URL**: https://apify.com/shahidirfan/lamudi-indoneshia-property-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Lamudi Indonesia Property Scraper

Collect property listings from Lamudi Indonesia in a clean, structured dataset for research, monitoring, and operational workflows. Capture sale listings with pricing, location, listing media, and listing attributes at scale.

### Features

- **Flexible URL support** — Works with Lamudi language paths such as `/en/for-sale/` and `/jual/`.
- **Paginated collection control** — Limit extraction with result and page caps.
- **Deep pagination fallback** — If Lamudi listings API repeats its first 100 summaries, actor auto-falls back to paginated HTML discovery and continues.
- **Detailed listing records** — Collect title, price, location, room counts, area, media, and agency metadata.
- **Clean dataset output** — Empty and null values are removed automatically.
- **Deduplicated results** — Listing IDs are used to prevent duplicate output.

### Use Cases

#### Property Market Monitoring
Track listing supply and price movement by area or category. Run recurring collections and compare snapshots over time.

#### Lead Research
Build listing datasets with URLs, agencies, and location context for acquisition or outreach pipelines.

#### Price Benchmarking
Analyze price patterns by bedrooms, bathrooms, and area to compare market segments.

#### Content and Trend Analysis
Use listing descriptions and tags to identify market themes, common property features, and demand signals.

#### Data Enrichment
Feed collected records into BI tools, spreadsheets, CRM systems, or internal analytics workflows.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | String | No | `https://www.lamudi.co.id/en/for-sale/` | Lamudi Indonesia listing URL to collect from. |
| `results_wanted` | Integer | No | `20` | Maximum number of records to save. |
| `max_pages` | Integer | No | `3` | Maximum number of pages to request. |
| `include_image_gallery` | Boolean | No | `false` | Fetch full gallery image URLs from property pages (slower and more block-prone). Keep `false` for fastest API mode. |
| `proxyConfiguration` | Object | No | `{"useApifyProxy": true}` | Proxy settings for reliable runs. |

---

### Output Data

Each dataset item can include:

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | Listing identifier. |
| `title` | String | Listing title. |
| `url` | String | Full listing URL. |
| `imageUrl` | String | Primary image URL. |
| `imageUrls` | Array | Available image URL list. |
| `numberOfImages` | Number | Image count. |
| `exactLocation` | Boolean | Whether exact location is available. |
| `description` | String | Listing description. |
| `price` | Number | Numeric listing price. |
| `priceText` | String | Raw price text. |
| `location` | String | Listing location text. |
| `bedrooms` | Number | Bedroom count. |
| `bathrooms` | Number | Bathroom count. |
| `area` | Number | Numeric area value. |
| `areaText` | String | Raw area text. |
| `carSpaces` | Number | Car space count. |
| `latitude` | Number | Latitude value. |
| `longitude` | Number | Longitude value. |
| `moreInfo` | String | Additional listing text. |
| `agencyData` | Object | Agency information object. |
| `tags` | Object | Listing tags object. |
| `tagLabels` | Array | Readable tag labels. |
| `sourceSearchUrl` | String | Source URL used for retrieval. |
| `sourcePage` | Number | Page number used in the run. |
Fields with empty values are omitted from the final output.

---

### Usage Examples

#### Default Collection

```json
{
  "url": "https://www.lamudi.co.id/en/for-sale/",
  "results_wanted": 20,
  "max_pages": 3,
  "include_image_gallery": false
}
````

#### Location URL Collection

```json
{
  "url": "https://www.lamudi.co.id/en/for-sale/jakarta/",
  "results_wanted": 60,
  "max_pages": 5,
  "include_image_gallery": true
}
```

### Sample Output

```json
{
  "id": "41032-73-2bd718958e85-a9d7-19e2295-a5f4-7ff3",
  "title": "New, Ready-to-Occupy House with SHM for 300 Million in Tajur Halang",
  "url": "https://www.lamudi.co.id/en/property/41032-73-2bd718958e85-a9d7-19e2295-a5f4-7ff3",
  "imageUrl": "https://img.lamudi.com/...",
  "numberOfImages": 11,
  "price": 360000000,
  "priceText": "Rp 360,000,000",
  "location": "Tajurhalang, Bogor Regency, West Java",
  "bedrooms": 2,
  "bathrooms": 1,
  "area": 38,
  "areaText": "38 m²",
  "sourceSearchUrl": "https://www.lamudi.co.id/en/for-sale/jakarta/",
  "sourcePage": 1
}
```

***

### Tips for Best Results

#### Use Valid Listing URLs

- Prefer tested Lamudi Indonesia listing pages.
- Use location-specific URLs for targeted data.

#### Start Small, Then Scale

- Run with `results_wanted: 20` first.
- Increase limits after output validation.

#### Keep Runs Reliable

- Use proxy settings for heavier or repeated runs.
- Split very large collections into multiple runs.

#### Work with Optional Fields

- Some listings include fewer attributes than others.
- Build downstream handling with optional field support.

***

### Integrations

Connect your dataset with:

- **Google Sheets** — Build shareable listing trackers.
- **Airtable** — Create searchable property databases.
- **Slack** — Send listing updates and run summaries.
- **Make** — Build no-code automation flows.
- **Zapier** — Connect to CRM and sales workflows.

#### Export Formats

- **JSON** — Developer-friendly data pipelines.
- **CSV** — Spreadsheet and tabular analysis.
- **Excel** — Business reporting workflows.
- **XML** — Legacy integration needs.

***

### Frequently Asked Questions

#### Can I use Indonesian path URLs such as `/jual/`?

Yes. The actor supports Lamudi language URL variants and applies URL auto-healing fallback internally.

#### Why are some fields missing in some records?

Some listings do not publish every field. Empty values are omitted intentionally.

#### Can I collect beyond one page?

Yes. Set `max_pages` above `1` to request additional pages.\
If Lamudi API starts repeating the first 100 summaries, the actor automatically switches to page HTML discovery for deeper pages and continues collecting new IDs.

#### How is duplicate data handled?

Duplicate listing IDs are skipped automatically.

***

### Support

For issues or feature requests, use the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [Apify API Reference](https://docs.apify.com/api/v2)
- [Apify Scheduling](https://docs.apify.com/platform/schedules)

***

### Legal Notice

This actor is intended for legitimate data collection and analysis workflows. Users are responsible for compliance with website terms and applicable laws.

# Actor input Schema

## `url` (type: `string`):

Lamudi Indonesia listing URL, such as https://www.lamudi.co.id/en/for-sale/ or a filtered location URL.

## `results_wanted` (type: `integer`):

Maximum number of properties to collect.

## `max_pages` (type: `integer`):

Maximum page count to request.

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

Use Apify Proxy for higher reliability.

## Actor input object example

```json
{
  "url": "https://www.lamudi.co.id/en/for-sale/",
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "url": "https://www.lamudi.co.id/en/for-sale/",
    "results_wanted": 20,
    "max_pages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/lamudi-indoneshia-property-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 = {
    "url": "https://www.lamudi.co.id/en/for-sale/",
    "results_wanted": 20,
    "max_pages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/lamudi-indoneshia-property-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "url": "https://www.lamudi.co.id/en/for-sale/",
  "results_wanted": 20,
  "max_pages": 3
}' |
apify call shahidirfan/lamudi-indoneshia-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/lamudi-indoneshia-property-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Lamudi Indoneshia Property Scraper",
        "description": "Extract Lamudi Indonesia property listings instantly. Scrape prices, locations, photos, specs & agent contacts. Perfect for real estate analysis, investment research & market intelligence in Indonesia's property sector.",
        "version": "0.0",
        "x-build-id": "SWOdpy4OPLYNnDeBx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~lamudi-indoneshia-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-lamudi-indoneshia-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/shahidirfan~lamudi-indoneshia-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-lamudi-indoneshia-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/shahidirfan~lamudi-indoneshia-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-lamudi-indoneshia-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "url": {
                        "title": "Property URL",
                        "type": "string",
                        "description": "Lamudi Indonesia listing URL, such as https://www.lamudi.co.id/en/for-sale/ or a filtered location URL.",
                        "default": "https://www.lamudi.co.id/en/for-sale/"
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of properties to collect.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum page count to request.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for higher reliability.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
