# Realestate.com.kh Scraper - Cambodia Property Listings (`sian.agency/realestate-kh-property-scraper`) Actor

Scrape realestate.com.kh, Cambodia's top property portal: USD price, rent, size, bedrooms, title type and GPS for Phnom Penh, Siem Reap and Sihanoukville.

- **URL**: https://apify.com/sian.agency/realestate-kh-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.32 / 1,000 property searches

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

## Realestate.com.kh Scraper - Cambodia Property Listings 🇰🇭

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![FazWaz Thailand](https://img.shields.io/badge/Store-FazWaz%20Thailand-1AE392)](https://apify.com/sian.agency/fazwaz-property-scraper?fpr=sian) [![PropertyGuru](https://img.shields.io/badge/Store-PropertyGuru-1AE392)](https://apify.com/sian.agency/propertyguru-property-scraper?fpr=sian) [![Batdongsan Vietnam](https://img.shields.io/badge/Store-Batdongsan%20Vietnam-1AE392)](https://apify.com/sian.agency/batdongsan-property-scraper?fpr=sian)

#### 🎉 About 46,000 live Cambodian property listings in US dollars, past the site's 1,000-result limit, from $1.50 per 1,000

##### Built for Phnom Penh agents, investors, developers, relocation firms and anyone pricing property in Cambodia

***

### 🔎 What is the Realestate.com.kh Property Scraper — and when should you use it?

The **Realestate.com.kh Property Scraper** turns public realestate.com.kh property listings from anywhere in Cambodia into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Cambodian rental and sale listings as rows: condos, apartments, serviced apartments, houses, villas, shophouses, land, offices and warehouses. Every search row carries the sale price and monthly rent in US dollars as numbers, price per m², bedrooms, bathrooms, floor and land area, the commune, district and province, a map point and the agency. Open each listing in full and you also get the advertiser's description, the title type, completion year, amenities, views and every photo.

**Use something else when:** you want property elsewhere in Southeast Asia. Use [FazWaz Thailand Scraper](https://apify.com/sian.agency/fazwaz-property-scraper?fpr=sian) for Thai sale and rent listings. Use [PropertyGuru Scraper](https://apify.com/sian.agency/propertyguru-property-scraper?fpr=sian) for Singapore, Malaysia and Thailand. Use [Batdongsan Scraper](https://apify.com/sian.agency/batdongsan-property-scraper?fpr=sian) for Vietnamese property listings. This actor reads realestate.com.kh only, for live listings. Sold prices are not returned, and private owners' names and phone numbers are never collected.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/realestate-kh-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Cambodian property listings with US-dollar prices and rents from realestate.com.kh using the Apify Actor `sian.agency/realestate-kh-property-scraper`.

Use it when I need: Cambodian rental and sale listings as rows: condos, apartments, serviced apartments, houses, villas, shophouses, land, offices and warehouses. Every search row carries the sale price and monthly rent in US dollars as numbers, price per m², bedrooms, bathrooms, floor and land area, the commune, district and province, a map point and the agency. Open each listing in full and you also get the advertiser's description, the title type, completion year, amenities, views and every photo.

Don't use it when: you want property elsewhere in Southeast Asia — use fazwaz-property-scraper or propertyguru-property-scraper or batdongsan-property-scraper instead.

How to call it: set `listingType` (`rent` or `sale`), `propertyType` (`residential`, `apartment`, `serviced-apartment`, `house`, `villa`, `shophouse`, `flat`, `land`, `commercial`, `offices`, `warehouse`, `building`, `business`) and `location` (a commune such as `bkk-1`, a Phnom Penh district such as `toul-kork`, a province such as `siem-reap`, or `all-cambodia`). `minPrice` and `maxPrice` set a range in US dollars, `minBedrooms` a floor. Set `maxResults` above 1000 to collect a whole district. `includeDetails` opens each listing for the description, title type, amenities and every photo, for an extra charge per listing. For a place not in the list, pass its results address in `searchUrls`. To expand listings you already have, set `operation` to `detail` and pass `listingUrls`.

Start with this input:
{
  "operation": "search",
  "listingType": "rent",
  "propertyType": "apartment",
  "location": "bkk-1",
  "maxPrice": 1500,
  "minBedrooms": "2",
  "maxResults": 200
}

Ask me which commune, district or province to cover, which property type, and whether it is for rent or for sale, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *List 2-bedroom condos for rent in BKK 1 under $1,500 a month and give me the median rent per m².*
- *Compare asking prices and monthly rents for condos in Toul Kork and Chroy Changvar and estimate the gross rental yield.*
- *Find hard-title land for sale in Siem Reap with its price per m² and land area.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/realestate-kh-property-scraper.md](https://apify.com/sian.agency/realestate-kh-property-scraper.md).

### 📋 Overview

**Realestate.com.kh is Cambodia's number-one property portal.** This Actor reads its public results and listing pages and returns every listing as a flat row: condos in BKK 1, villas in Chroy Changvar, shophouses in Sen Sok, land in Siem Reap.

**What you get:**

- ✅ **The numbers a Cambodian valuation needs**: sale price and monthly rent in US dollars, price per m², bedrooms, bathrooms, floor and land area, floor level, as typed numbers.
- ✂️ **Whole districts in one run.** The site stops every search at 1,000 results. This Actor splits a bigger search into price bands and merges them without duplicates, so all 6,000 BKK 1 rentals are within reach.
- 🎯 **Filters checked on every row.** Sale-only listings that slip into rent searches, and off-type featured cards, are skipped and never charged.
- 📍 **Commune, district and province** as separate columns, plus the site's own GPS point on every row.
- 💰 **$1.50 per 1,000 properties**, charged per delivered row and never for a row that failed.
- 📜 **Title type on the full listing**: hard, soft or strata title (or a long-term lease), which decides what a foreign buyer can own.

***

### ✨ Features

- 🏢 **Thirteen property types**: apartments and condos, serviced apartments, houses, villas, shophouses, flats, land, offices, warehouses, whole buildings, businesses, plus all residential or all commercial in one go.
- 🔑 **Rent or sale**: monthly rents and asking prices, both on one row when a listing is offered both ways.
- 📍 **31 places in the list**: Phnom Penh as a whole, its districts and the expat communes (BKK 1, Tonle Bassac, Toul Tum Poung, Phsar Chas), Siem Reap, Sihanoukville, Kampot, Kep, Kandal and Battambang.
- 💵 **Price and bedroom filters** that the site applies and the Actor checks again on each row.
- 🏗️ **Project and borey names** on units in new developments.
- 🏢 **Agency and agent contacts**: agency name, office phone and page on every agency row; the agent's name and phone when the listing names one.
- 📄 **Full listing option**: the advertiser's description, title type, agency reference, completion year, features, amenities, views and every photo.
- 🔗 **Paste any realestate.com.kh search link**, in English, Khmer, Chinese or any language the site offers. Fields come back in English.
- 📦 **About 50 flat fields**, ready for CSV, Excel, JSON or the API.

***

### 🎬 Quick Start

Pick rent or sale, a property type and a place, then press Start. Rows land in the dataset as they are found. A run report goes to the key-value store with the counts and what they cost.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~realestate-kh-property-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"operation":"search","listingType":"rent","propertyType":"apartment","location":"bkk-1","maxResults":100}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose what and where

Pick rent or sale, a property type and a place: Phnom Penh, a district like Toul Kork, a commune like BKK 1, or a province like Siem Reap.

#### Step 2: Narrow it

Add a price range in US dollars or a minimum number of bedrooms if you want one. Leave them empty to get everything.

#### Step 3: Press Start

Set how many properties to collect. Switch on "Open each listing in full" when you need the description, title type, amenities and every photo.

**That's it. Within a minute you'll have:**

- Every matching property as a spreadsheet row
- Price, size, bedrooms and commune on each one
- A run report showing what was found, what failed and what it cost

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | No | `search` (default) or `detail` |
| listingType | string | No | `rent` (default) or `sale` |
| propertyType | string | No | `residential`, `apartment` (default), `serviced-apartment`, `house`, `villa`, `shophouse`, `flat`, `land`, `commercial`, `offices`, `warehouse`, `building`, `business` |
| location | string | No | `phnom-penh` (default), a district or commune such as `bkk-1`, `toul-kork` or `sen-sok`, a province such as `siem-reap`, or `all-cambodia` |
| minPrice / maxPrice | integer | No | Price range in US dollars; monthly rent for rentals |
| minBedrooms | string | No | `1` to `5`: at least this many bedrooms |
| sortBy | string | No | `newest` (default), `relevance`, `price-asc`, `price-desc` |
| maxResults | integer | No | Properties to collect across the run (default 100, up to 20,000); Property Detail opens every listing you paste |
| includeDetails | boolean | No | Also open every listing page (billed as Property Detail) |
| searchUrls | array | No | realestate.com.kh results pages to use instead of the fields above |
| listingUrls | array | Detail mode | realestate.com.kh listing pages to open in full |

**Example: 2-bedroom condos for rent in BKK 1 between $500 and $1,500 a month**

```json
{
  "operation": "search",
  "listingType": "rent",
  "propertyType": "apartment",
  "location": "bkk-1",
  "minPrice": 500,
  "maxPrice": 1500,
  "minBedrooms": "2",
  "maxResults": 200
}
```

**Example: open listings you already have**

```json
{
  "operation": "detail",
  "listingUrls": [
    { "url": "https://www.realestate.com.kh/rent/bkk-1/1-bed-1-bath-condo-262621/" },
    { "url": "https://www.realestate.com.kh/new-developments/vue-aston/2-bed-1-bath-condo-264555/" }
  ]
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **about 50 fields**, including:

| Field | Type | Description |
|-------|------|-------------|
| propertyTitle | string | The advertiser's headline |
| listingType | string | `rent`, `sale` or `sale and rent` |
| propertyCategory | string | Condo, Apartment, Villa, Shophouse, Land, Office… |
| salePrice / rentPrice | number | Asking price and monthly rent in USD; empty when the price is on application |
| salePricePerSqm / rentPricePerSqm | number | Price per m² as the site shows it |
| bedrooms / bathrooms | integer | Room counts |
| floorAreaSqm / landAreaSqm | number | Floor and land area in m² |
| projectName | string | The new development or borey a unit belongs to |
| commune / district / province | string | Location split from the address |
| latitude / longitude | number | The site's map point |
| sellerType | string | `agency` or `private` |
| agencyName / agencyPhone | string | The agency behind the listing (agency rows only) |
| listedAt | string | When the listing was created |
| titleType | string | Hard, soft or strata title, or a long-term leasehold (full listing) |
| descriptionText / amenities / imageUrls | string / array | The advertiser's text, amenities and every photo (full listing) |

**Example (a real search row):**

```json
{
  "mainImageUrl": "https://images.realestate.com.kh/__sized__/listings/original/2024-07/img_7858-thumbnail-1040x780-70.jpeg",
  "listingId": 244635,
  "propertyTitle": "1bedroom for rent sale at De Castle Royal",
  "listingUrl": "https://www.realestate.com.kh/new-developments/de-castle-royal-condominium/1-bed-1-bath-condo-244635/",
  "listingType": "sale and rent",
  "propertyCategory": "Condo",
  "salePrice": 125000,
  "rentPrice": 700,
  "priceText": "Sale $125,000 · Rent $700",
  "currency": "USD",
  "bedrooms": 1,
  "bathrooms": 1,
  "floorAreaSqm": 76,
  "floorLevel": 8,
  "projectName": "De Castle Royal Condominium",
  "commune": "BKK 1",
  "district": "Boeng Keng Kang",
  "province": "Phnom Penh",
  "latitude": 11.538952035522229,
  "longitude": 104.92166256295803,
  "sellerType": "agency",
  "agencyName": "Elyza&Hellen-REAKH",
  "agencyPhone": "+855 99 343 811",
  "agentName": "Elyza Hen",
  "adTier": "premium",
  "badge": "Price Negotiable",
  "highlights": ["Brand Developer", "Project Complete"],
  "photoCount": 9,
  "listedAt": "2024-07-29T13:28:41.413281+07:00",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Rent per m² by Phnom Penh commune

**Relocation consultants and landlords compare rents across BKK 1, Toul Kork and Tonle Bassac.**
**Input:** apartments for rent in each commune, newest first.
**Output:** monthly rent, floor area and commune on every row.
**Use:** one pivot table gives the median rent per m² for each commune.

#### 2. Rental yield for investors

**Overseas buyers check whether a condo pays before they wire money.**
**Input:** the same district once for sale and once for rent.
**Output:** asking prices and monthly rents, with listings offered both ways carrying both on one row.
**Use:** gross yield by commune and bedroom count.

#### 3. Condo supply in new developments

**Developers and analysts track how many units each project is still trying to sell.**
**Input:** apartments for sale in Phnom Penh, up to several thousand rows.
**Output:** project names, bedrooms and asking prices per unit.
**Use:** spot projects where supply is piling up and prices are being cut.

#### 4. Agency lead lists

**Proptech and service companies find the agencies with the most live stock.**
**Input:** all residential listings in a district.
**Output:** agency name, office phone and page on every agency row.
**Use:** rank agencies by live listings per district.

#### 5. Expat rental market watch

**HR and relocation teams budget housing allowances for staff moving to Phnom Penh.**
**Input:** serviced apartments and condos in BKK 1, Daun Penh and Tonle Bassac, run weekly on a schedule.
**Output:** a dated feed of new listings with rents in US dollars.
**Use:** a housing allowance grounded in what is actually on the market.

#### 6. Land and title checks

**Land buyers in Siem Reap, Kampot and Sihanoukville screen plots before visiting.**
**Input:** land for sale with the full listing switched on.
**Output:** price, price per m², land area and title type.
**Use:** shortlist hard-title plots at the right price per m².

***

### 🔗 Integration Examples

#### JavaScript/Node.js

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

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/realestate-kh-property-scraper').call({
  listingType: 'rent',
  propertyType: 'apartment',
  location: 'bkk-1',
  maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/realestate-kh-property-scraper').call(
    run_input={'listingType': 'sale', 'propertyType': 'land', 'location': 'siem-reap', 'maxResults': 200}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['salePrice'], item.get('salePricePerSqm'), item['commune'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~realestate-kh-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"listingType":"rent","propertyType":"villa","location":"phnom-penh","maxResults":100}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: a schedule, for example every Monday morning
2. **HTTP Request**: call the Actor API with your search
3. **Process**: keep the rows newer than last week's run
4. **Action**: write them to Google Sheets, Airtable or a CRM, or post a summary to Slack

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 properties** per run, with every field and option
- No credit card required
- Enough to test a search before you scale it

#### PAID Tier (Production Ready)

- **Up to 20,000** properties per run, past the site's 1,000-result limit
- **$1.50 per 1,000 properties** on the Bronze plan, less on higher plans
- **$3.00 per 1,000 full listings** when you switch the full listing on
- A small start fee per run ($0.005 on paid plans)
- Only delivered rows are charged: cards that fail your filters, duplicates and errors cost nothing

A 100-property search finishes in well under a minute. Search rows arrive at roughly 300 a minute, so 5,000 rentals take about 15 minutes. Opening each listing in full is slower, about 30 a minute.

[View current pricing](https://apify.com/sian.agency/realestate-kh-property-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Does it cover all of Cambodia?**
A: Yes. Pick Phnom Penh, one of its districts or communes, Siem Reap, Sihanoukville, Kampot, Kep, Kandal, Battambang or All of Cambodia. For another commune, open it on realestate.com.kh and paste the results address into Search page URLs.

**Q: What currency are prices in?**
A: US dollars, exactly as the listing states. Rent is the monthly rent. A listing marked POA (price on application) returns an empty price, never a zero.

**Q: Why can a row have both a sale price and a rent?**
A: Many Cambodian listings are offered for sale and for rent at once. The row carries both prices and Rent or sale reads "sale and rent". It shows up in rent searches and in sale searches.

**Q: The site only shows 1,000 results. How do I get a whole district?**
A: Set Properties to collect above 1,000. The Actor splits the search into price bands, each under the site's limit, and merges them without duplicates.

**Q: Do I get phone numbers?**
A: Agency listings carry the agency's office phone, and the agent's name and phone when the listing names one. Listings posted by private owners come back without the owner's name, phone or email, and contact details typed into their description are removed.

**Q: What is the title type?**
A: A hard title is registered with the national cadastre and a soft title only with the local authority. A strata title covers a unit in a condo building, which is what foreigners can own. Some listings say long-term leasehold instead. The full listing carries it when the advertiser states it.

**Q: What output formats are available?**
A: JSON, CSV, Excel, XML or HTML, straight from the Apify dataset, or over the API.

***

### 🐛 Troubleshooting

**The run returned fewer properties than I asked for**

- The search may simply hold fewer listings. The run log prints how many the site has for your search.
- Cards that failed your filters are skipped and listed in the log, and you are not charged for them.

**"No listings match this search right now"**

- Widen the price range, clear the bedroom filter, or pick a larger place.

**"realestate.com.kh has no results page at that address"**

- A pasted address must be a results page, such as https://www.realestate.com.kh/rent/bkk-1/apartment/ . Open the search on the site and copy the address bar.

**"realestate.com.kh would not serve this page"**

- This is a temporary refusal. Run it again in a few minutes. Nothing is charged for it.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

Realestate.com.kh is a trademark of its respective owner. This Actor is not affiliated with, endorsed by, or sponsored by Realestate.com.kh.

***

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue on the [Issues tab](https://apify.com/sian.agency/realestate-kh-property-scraper/issues)
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/realestate-kh-property-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

Property Search reads realestate.com.kh results pages. Property Detail opens the listing addresses you paste in the Listing URLs field.

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

Which side of the market to read. Rentals are about three quarters of the site. For rentals every price is the monthly rent in US dollars.

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

Which kind of property. Apartments and condos for rent is the largest section, with about 24,500 live listings nationwide.

## `location` (type: `string`):

A province, a Phnom Penh district or a single commune such as BKK 1. Phnom Penh holds about 30,000 rentals. For another commune, open it on realestate.com.kh and paste the results address into Search page URLs.

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

Lowest price in US dollars; for rentals, the monthly rent. Applied by the site and checked again on every row, so a listing outside the range or with no price shown is skipped and not charged.

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

Highest price in US dollars; for rentals, the monthly rent. Leave empty for no ceiling.

## `minBedrooms` (type: `string`):

Only properties with at least this many bedrooms. Listings that state no bedroom count, such as land or offices, are skipped when this is set.

## `sortBy` (type: `string`):

The order the site returns results in. Newest first suits a daily or weekly feed of fresh listings. When a search is bigger than the site's 1,000-result limit it is read price band by price band: cheapest band first, or dearest first when you pick Most expensive first. Other orders then hold within each band.

## `maxResults` (type: `integer`):

How many properties to return across the whole run. The site shows at most 1,000 results for one search; past that the actor splits the search into price bands, so a large district can be collected in full. Property Detail ignores it and opens every listing you paste.

## `includeDetails` (type: `boolean`):

Also open every listing page for the advertiser's description, title type, agency reference, completion year, features, amenities, views, the agent's name and phone and every photo. A private owner's contact details are never included. Billed as one Property Detail on top of the search row.

## `searchUrls` (type: `array`):

Paste realestate.com.kh results pages instead of using the fields above, for example https://www.realestate.com.kh/rent/toul-tum-poung-2/apartment/?bedrooms__gte=2 . Filters in the address are kept and the page number is ignored. Khmer, Chinese and other language versions of an address work too and return English fields. Ignored in Property Detail mode.

## `listingUrls` (type: `array`):

Listing addresses for Property Detail, one per line, for example https://www.realestate.com.kh/rent/bkk-1/1-bed-1-bath-condo-262621/ . New development and borey listings work too.

## Actor input object example

```json
{
  "operation": "search",
  "listingType": "rent",
  "propertyType": "apartment",
  "location": "phnom-penh",
  "sortBy": "newest",
  "maxResults": 50,
  "includeDetails": false
}
```

# Actor output Schema

## `realestateComKhProperties` (type: `string`):

Every property this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "listingType": "rent",
    "propertyType": "apartment",
    "location": "phnom-penh",
    "sortBy": "newest",
    "maxResults": 50,
    "includeDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/realestate-kh-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 = {
    "operation": "search",
    "listingType": "rent",
    "propertyType": "apartment",
    "location": "phnom-penh",
    "sortBy": "newest",
    "maxResults": 50,
    "includeDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/realestate-kh-property-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 '{
  "operation": "search",
  "listingType": "rent",
  "propertyType": "apartment",
  "location": "phnom-penh",
  "sortBy": "newest",
  "maxResults": 50,
  "includeDetails": false
}' |
apify call sian.agency/realestate-kh-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/realestate-kh-property-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/GT0eDlv7wRgyl8aUS/builds/MA7fxkfwo9iNwU3Kc/openapi.json
