# Ikman.lk Scraper - Sri Lanka Property Listings & Prices (`sian.agency/ikman-property-scraper`) Actor

Scrape ikman.lk property ads: LKR prices, beds, baths, land in perches, house size, photos, phones and GPS. Houses, land, apartments, sale and rent.

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

## Pricing

from $1.43 / 1,000 property listings

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

## Ikman.lk Scraper - Sri Lanka Property Listings & Prices

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-0F766E)](https://apify.com/sian.agency?fpr=sian) [![Zameen.com](https://img.shields.io/badge/Store-Zameen-1B4F72)](https://apify.com/sian.agency/zameen-property-scraper?fpr=sian) [![OLX Property](https://img.shields.io/badge/Store-OLX%20Property-002F34)](https://apify.com/sian.agency/olx-property-scraper?fpr=sian) [![PropertyGuru](https://img.shields.io/badge/Store-PropertyGuru-E31C3D)](https://apify.com/sian.agency/propertyguru-property-scraper?fpr=sian)

#### Sri Lanka's largest classifieds board, as a table of houses, land and apartments

##### Built for analysts, agencies and investors who need Colombo and the districts as rows, not as browser tabs

### 🔎 What is the Ikman.lk Sri Lanka Property Scraper — and when should you use it?

The **Ikman.lk Sri Lanka Property Scraper** turns public ikman.lk property adverts from anywhere in Sri Lanka 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:** Sri Lankan sale and rental adverts as rows. The asking price comes back as a rupee number plus the text the site prints, including per-perch and monthly rent. House size is in square feet and land size is in perches. Every search row carries bedrooms, bathrooms, district, category, a thumbnail and the advert address. Open each advert in full and you also get the seller's published phone number, the full description, GPS, view count and every photo.

**Use something else when:** the property is not in Sri Lanka. Use [Zameen.com Scraper](https://apify.com/sian.agency/zameen-property-scraper?fpr=sian) for Pakistan property listings, PKR prices, beds and GPS. Use [OLX Property Scraper](https://apify.com/sian.agency/olx-property-scraper?fpr=sian) for Poland, Romania, Portugal and more from one classifieds actor. Use [PropertyGuru Property Scraper](https://apify.com/sian.agency/propertyguru-property-scraper?fpr=sian) for Singapore, Malaysia and Thailand listings with agent phones. This actor covers the property vertical ikman.lk publishes: houses, apartments, land, commercial, rooms, holiday lets and new projects, for sale and for rent. Cars, phones and jobs are different products on the same site and are not read. The site publishes only what is currently advertised, so there is no sold-price history to return.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/ikman-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 property listings and asking prices from ikman.lk using the Apify Actor `sian.agency/ikman-property-scraper`.

Use it when I need: Sri Lankan sale and rental adverts as rows. The asking price comes back as a rupee number plus the text the site prints, including per-perch and monthly rent. House size is in square feet and land size is in perches. Every search row carries bedrooms, bathrooms, district, category, a thumbnail and the advert address. Open each advert in full and you also get the seller's published phone number, the full description, GPS, view count and every photo.

Don't use it when: the property is not in Sri Lanka — use zameen-property-scraper or olx-property-scraper or propertyguru-property-scraper instead.

How to call it: set `propertyCategory` to one of `houses-for-sale`, `house-rentals`, `apartments-for-sale`, `apartment-rentals`, `land-for-sale`, `land-for-rent`, `commercial-properties-for-sale`, `commercial-property-rentals`, `room-annex-rentals`, `holiday-short-term-rental`, `new-projects` or `property`, and `location` to `sri-lanka` or one of the 25 districts. `bedrooms` uses the site's own 3-bedroom (etc.) search. Narrow further with `minPrice`/`maxPrice` in rupees. `includeDetails` opens each advert for the phone, GPS and full description, for an extra charge per advert. To expand adverts you already have, set `operation` to `detail` and pass `listingUrls`; to reuse a search you built on the site, paste the address into `searchUrls`.

Start with this input:
{
  "operation": "search",
  "propertyCategory": "houses-for-sale",
  "location": "colombo",
  "bedrooms": "any",
  "maxResults": 25
}

Ask me which Sri Lankan district to cover, whether they want houses, land or apartments, sale or rent, and whether seller phones are worth the extra per-advert charge, then run the Actor and summarise the results as a table.
```

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

- *Pull Colombo houses for sale under 40 million rupees and rank neighbourhoods by median asking price.*
- *Find land for sale in Gampaha with the per-perch price and advertised size.*
- *List 3-bedroom houses for rent in Colombo with the seller phone on each row.*

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

### 📋 Overview

**ikman.lk is Sri Lanka's default classifieds board, and the property vertical is a real marketplace.** About 64,000 live ads: houses, apartments, land, commercial, rooms, holiday lets and new projects, for sale and for rent. This actor reads that vertical.

**Why it exists:**

- ✅ **No login, no API key, no proxy to configure.** Pick a district and press Start.
- ⚡ **25 ads per page**, with the asking price, beds, baths, district and a thumbnail on every search row.
- 🎯 **Phones on the advert page.** Open each listing in full for the seller's published number, GPS and the complete description.
- 💰 **$1.62 per 1,000 ads** at BRONZE, plus a $0.005 run start.
- 💎 **Sri Lankan geography as the site uses it**: 25 districts, land in perches, house size in sqft, prices in rupees.

### ✨ Features

- 🏠 **Twelve property sections**: houses, apartments, land, commercial, rooms, holiday lets, new projects, sale and rent.
- 📍 **25 districts**, plus a nationwide sweep.
- 🛏️ **Bedroom filter** on the site's own 3-bedroom (etc.) search, so a 3-bedroom run only returns 3-bedroom ads.
- 💰 **Rupee prices as a number**, plus the printed line (per perch, per month).
- 🌳 **Land in perches**, house size in square feet.
- 📞 **Seller phone** on the detail row, plus shop name and email where the advert has a shop.
- 🖼️ **Lead photo on the search row**, full gallery on the detail row.
- 🔗 **Paste a search address** from ikman.lk and that search is used.

### 🎬 Quick Start

Pick Houses for sale, pick Colombo, press Start. The form opens with both already selected. Results land in a dataset you can download as JSON, CSV or Excel.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~ikman-property-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"operation":"search","propertyCategory":"houses-for-sale","location":"colombo","maxResults":25}'
```

### 🚀 Getting Started

#### Step 1: Choose the section

Houses for sale, houses for rent, apartments, land, commercial, rooms, holiday lets or new projects.

#### Step 2: Choose the district

Colombo is pre-selected in the form. Gampaha is the next densest. All of Sri Lanka is a nationwide sweep.

#### Step 3: Press Start

Raise Max listings if you want more than the first 25. Turn on Open each advert in full when you need phones or GPS.

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` sweeps a section; `detail` opens specific adverts |
| `propertyCategory` | string | No | Leave it out to get every section. houses-for-sale, house-rentals, apartments-for-sale, apartment-rentals, land-for-sale, land-for-rent, commercial-properties-for-sale, commercial-property-rentals, room-annex-rentals, holiday-short-term-rental, new-projects, property |
| `location` | string | Yes, unless you paste links | sri-lanka or one of the 25 districts. An API call without it is rejected before anything is billed |
| `bedrooms` | string | No | any, 1-10 or 10+. Only for houses, apartments, rooms and holiday lets |
| `maxResults` | integer | No | How many ads to return. Defaults to 25. Free accounts stop at 20 |
| `minPrice` / `maxPrice` | integer | No | Optional rupee band |
| `includeDetails` | boolean | No | Open each advert for phone, GPS and the full description |
| `searchUrls` | array | No | Paste ikman.lk search addresses |
| `listingUrls` | array | No | Paste ikman.lk advert addresses for Property Detail |

### 📊 Output

| Field | What it is |
|---|---|
| `propertyTitle` | Advert title |
| `priceLkr` | Asking price as a number in rupees |
| `priceText` | The line the site prints, including per perch or /month |
| `bedrooms` / `bathrooms` | Counts, when the advert has them |
| `landSizePerches` | Land size in perches (1 perch ≈ 25.29 m²) |
| `houseSizeSqft` | House size in square feet |
| `district` / `areaName` | District and town |
| `url` | Advert address |
| `sellerPhone` | Published phone, on the detail row |
| `thumbnail` | Lead photo |

Every row is flat JSON, exportable as CSV, JSON, Excel or via the API. A run report is saved to the key-value store.

### 🎯 Use Cases

#### Colombo house-price screen

Take Colombo houses for sale, keep the asking price in rupees next to bedrooms, bathrooms and land size in perches, and you have a working asking-price index for the densest Sri Lankan residential market.

#### Agency and member lead lists

Member shops publish a shop name and, on the advert page, a phone number. Filter to member ads, group by shop, and you have the agencies holding stock in a district.

#### Private-owner sourcing

Non-member ads are private owners. Open those in full for the phone number and the street address the seller typed.

#### Land-bank and perch pricing

Land for sale is priced per perch. A district sweep gives you the per-perch ask, the land type and the advertised size.

#### Rental yield screen

Run houses for sale and house rentals for the same district in two jobs, match on bedrooms, and you get a gross-yield picture per neighbourhood.

#### New-listing watch

Schedule the same Colombo search every morning, keep the advert IDs you have already seen, and pay only for what appeared since yesterday.

### 🔌 Integration Examples

**JavaScript**

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('sian.agency/ikman-property-scraper').call({
  operation: 'search',
  propertyCategory: 'houses-for-sale',
  location: 'colombo',
  maxResults: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].propertyTitle, items[0].priceLkr);
```

**Python**

```python
from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor('sian.agency/ikman-property-scraper').call(run_input={
    'operation': 'search',
    'propertyCategory': 'houses-for-sale',
    'location': 'colombo',
    'maxResults': 25,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['propertyTitle'], item['priceLkr'])
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~ikman-property-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"operation":"search","propertyCategory":"houses-for-sale","location":"colombo","maxResults":25}'
```

### FAQ

**Do I need an API key, a login or a proxy?**
No. Pick a district and a section and press run.

**Which districts does it cover?**
All 25 districts of Sri Lanka, plus a nationwide sweep. Colombo, Gampaha and Kalutara hold most of the ads.

**How many ads can one search return?**
As many as match, up to the max you set. A search page holds 25 ads. Nationwide houses for sale is about 18,000 ads; the whole property vertical is about 64,000.

**What does opening each advert add?**
The seller's phone number, the full description, GPS coordinates, land size in perches, house size in sqft, the view count and every photo. The search row already has price, beds, baths, district and a thumbnail.

**Are prices in rupees?**
Yes. Every row carries the asking price as a number in Sri Lankan rupees, plus the text the site prints.

**Can I paste an ikman.lk search address?**
Yes. Copy the address bar from a search you built on the site into Search page URLs.

**Does it cover cars or phones?**
No. This actor only reads the property sections.

### 🛠️ Troubleshooting

**The run returned no ads.**
Widen the district, set Bedrooms to Any, or switch the section. Land and new projects have no bedroom field.

**A pasted address was skipped.**
Use an ikman.lk search page (`/en/ads/colombo/houses-for-sale`) or an advert page (`/en/ad/...`). Other hosts are rejected.

**I need phones.**
Turn on Open each advert in full. That opens each listing and bills one Property Detail on top of the search row.

**The run stopped at 20 rows.**
That is the free-account cap. Add a payment method to lift it.

### ⚖️ Legal

Ikman is a trademark of Saltside Technologies. This actor is not affiliated with, endorsed by, or sponsored by Ikman or Saltside. Data is read from public listing pages at run time. Prices, photos and text are the seller's own.

### 💬 Support

- Issues: https://apify.com/sian.agency/ikman-property-scraper/issues
- Reviews: https://apify.com/sian.agency/ikman-property-scraper/reviews
- Store: https://apify.com/sian.agency?fpr=sian

# Changelog

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

# Actor input Schema

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

Pick one per run. Property Search returns the ads that match a district, a property section and optional bedroom count. Property Detail takes ikman.lk advert addresses and opens each one for the seller's phone, the full description, GPS and every photo.

## `propertyCategory` (type: `string`):

Which ikman.lk property section to read. Houses for sale is the largest residential section. All property mixes sale and rent across every section.

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

One of Sri Lanka's 25 districts, or the whole country. Colombo is the densest market. A nationwide houses-for-sale search is about 18,000 ads.

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

Applied on the search the site itself uses, so a 3-bedroom run only returns 3-bedroom ads. Leave on Any bedrooms when the section has no bedroom field (land, commercial, new projects).

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

How many ads to return. Free accounts stop at 20. Paid accounts can take a whole district; 25 is one search page.

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

Drop ads cheaper than this, in Sri Lankan rupees. Applied after the page is read, so a tight band still walks the pages until max listings is reached. Leave empty for no floor.

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

Drop ads dearer than this, in Sri Lankan rupees. Leave empty for no ceiling.

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

Opens every matching advert for the seller's phone, the full description, GPS, land size, house size and every photo. Billed as one Property Detail on top of the search row. Off by default: the search row already has price, beds, baths, district and a thumbnail.

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

Paste ikman.lk search pages instead of using the dropdowns, for example https://ikman.lk/en/ads/colombo/houses-for-sale. One URL per line. Ignored when the operation is Property Detail.

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

Paste ikman.lk advert addresses for Property Detail, for example https://ikman.lk/en/ad/valuable-two-story-house-for-sale-talawathugoda-for-sale-colombo-3. One URL per line.

## Actor input object example

```json
{
  "operation": "search",
  "propertyCategory": "houses-for-sale",
  "location": "colombo",
  "bedrooms": "any",
  "maxResults": 25,
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}
```

# Actor output Schema

## `ikmanListings` (type: `string`):

Every listing 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",
    "propertyCategory": "houses-for-sale",
    "location": "colombo",
    "bedrooms": "any",
    "maxResults": 25,
    "includeDetails": false,
    "searchUrls": [],
    "listingUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/ikman-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",
    "propertyCategory": "houses-for-sale",
    "location": "colombo",
    "bedrooms": "any",
    "maxResults": 25,
    "includeDetails": False,
    "searchUrls": [],
    "listingUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/ikman-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",
  "propertyCategory": "houses-for-sale",
  "location": "colombo",
  "bedrooms": "any",
  "maxResults": 25,
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}' |
apify call sian.agency/ikman-property-scraper --silent --output-dataset

```

## MCP server setup

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