Ikman.lk Scraper: Sri Lanka Houses, Land, Apartments & Rentals
Pricing
from $22.00 / 1,000 property ads
Ikman.lk Scraper: Sri Lanka Houses, Land, Apartments & Rentals
Scrape ikman.lk property ads in Sri Lanka: houses, apartments, land, commercial property and rentals with LKR price, district, town, bedrooms, area in square meters, photos, dates and agencies. Splits searches past the 10,000 ad cap. No login. Export CSV, Excel, JSON or XML.
Pricing
from $22.00 / 1,000 property ads
Rating
0.0
(0)
Developer
RecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare

🏠 Ikman.lk Scraper: Sri Lanka Houses, Land, Apartments & Rentals
Ikman.lk Scraper exports the real estate ads of ikman.lk, Sri Lanka's largest classifieds portal, as structured data: houses, apartments, land, commercial property and rooms for sale or rent, with price in LKR, district and town, coordinates, bedrooms, bathrooms, area in square meters, all photos, posting and expiry dates, and the business that posts the ad. It also reads the agency pages. Export CSV, Excel, JSON or XML. No login, no API key, no proxy needed.
The Ikman.lk Scraper turns the property section of ikman.lk into a dataset you can filter, sort and join. On 2026-10-29 the live site listed 67,379 property ads in 10 categories, from 31,577 plots of land for sale to 194 plots of land for rent. The site lets a visitor page through only the first 10,000 ads of a search; the Actor splits a big search by district, town and price range so you can still collect all of it.
🎯 What does the ikman.lk scraper do?
- Scrapes ikman.lk property ads in all 10 categories: land, houses, apartments and commercial property for sale, and the rental categories, rooms and holiday homes.
- Returns the price in LKR as a number, the price text as the ad shows it, the price unit (
total,perchormonth), whether the price is negotiable, andpricePerM2computed for you. - Gives the district, town, address text and latitude and longitude of every ad (coordinates need Fetch full ad details). The coordinates are the centre of the town, and
coordinatesPrecisionsays so. - Returns bedrooms, bathrooms, built area and land area in square meters, furnishing and condition when the ad states them.
- Returns all photos at 1200 px, the full description in the language the seller wrote, posting date, expiry date and views when Fetch full ad details is on (the default).
- Tells private sellers from agencies and returns the agency name, link, logo, membership level, verification and authorized dealer badges. Private sellers are flagged and never named.
- Filters by category, district, town, price range, bedrooms, bathrooms and seller type, or starts from URLs and ad ids you paste.
- Reads agency pages: tagline, address, opening hours, member since, membership expiry, main category, number of ads and views.
- Has an only-new mode for scheduled runs.
📊 Ikman.lk property data: which fields do you get?
Every row is one record with recordType set to listing or agency. A listing row carries about 44 of the 61 columns, depending on what the ad states.
| Field | Columns |
|---|---|
| Identity | recordType, listingId, url, title, sourceSite, scrapedAt |
| Classification | operation, propertyType, propertySubtype, category, condition |
| Price | price, currency, priceUnit, priceText, priceNegotiable, pricePerM2 |
| Location | address, city, district, region, country, latitude, longitude, coordinatesPrecision |
| Property | bedrooms, bathrooms, areaBuilt, areaLand, areaBuiltText, areaLandText, furnished, buildingName, amenities |
| Seller | isPrivateSeller, agencyId, agencyName, agencyUrl, agencyLogoUrl, membershipLevel, isVerified, isAuthorizedDealer |
| Business contact (optional) | agencyPhone, agencyEmail |
| Ad status | isPromoted, isUrgent, publishedAt, updatedAt, expiresAt, views |
| Agency profile | tagline, openingHours, memberSince, membershipExpiresAt, mainCategory, listingCount |
| Media and text | imageUrl, images, imageCount, description, raw |
Worth knowing: price is a plain number in LKR, and land is usually priced per perch (25.2929 square meters), so priceUnit is perch and pricePerM2 converts it. areaBuilt and areaLand are always in square meters, with the original text in areaBuiltText and areaLandText. The coordinates are the town centre (coordinatesPrecision is town-centroid). publishedAt and expiresAt need Fetch full ad details. A missing value means the ad does not state it.
🧾 Ikman.lk listing example: what does a real result look like?
A real listing row (cloud run, 2026-10-27, description and photo list shortened):
{"recordType": "listing","listingId": "6ad89f6ab947644182e7ac80","url": "https://ikman.lk/en/ad/luna-tower-furnished-apartment-for-sale-a40996-for-sale-colombo","title": "Luna Tower - Furnished Apartment for Sale A40996","operation": "sale","propertyType": "apartment","category": "Apartments For Sale","price": 135000000,"currency": "LKR","priceUnit": "total","priceNegotiable": true,"pricePerM2": 1438772.25,"address": "Union Place, Colombo 02","city": "Colombo 2","district": "Colombo","latitude": 6.92172,"longitude": 79.8536,"coordinatesPrecision": "town-centroid","bedrooms": 2,"bathrooms": 2,"areaBuilt": 93.83,"areaBuiltText": "1,010 sqft","furnished": "furnished","isPrivateSeller": false,"agencyName": "AKARA APARTMENTS","membershipLevel": "premium","isVerified": true,"isAuthorizedDealer": true,"imageCount": 9,"publishedAt": "2026-10-23T10:55:30.000Z","expiresAt": "2026-12-20T11:18:03.000Z","views": 127,"sourceSite": "ikman.lk","scrapedAt": "2026-10-27T06:46:22.631Z"}
Prices are plain numbers in rupees, coordinates are decimal degrees and text stays in the language the seller wrote it.
🚀 How to scrape ikman.lk in 4 steps
- Create a free account at console.apify.com and open this Actor.
- Pick the categories and the filters you need (district, town, price range, bedrooms, seller type). Leave them empty to get a mix of all 10 property categories across Sri Lanka.
- Set Max Items and press Start. A 3-ad run with full details finishes in a few seconds.
- Download the dataset as CSV, Excel, JSON or XML, or read it through the Apify API.
To read one ad, paste its ikman.lk URL in Start URLs or its 24-character id in Ad ids or slugs. To reuse a search built on ikman.lk, paste the list page URL, for example ikman.lk/en/ads/colombo/houses-for-sale. For agencies, choose Agencies in Record types or paste an agency page.
⚙️ Input: which settings does the Actor take?
| Field | Type | Default | Meaning |
|---|---|---|---|
startUrls | array | empty | List page, ad or agency page URLs to read |
listingIds | array | empty | Ad ids (24 characters) or slugs |
maxItems | integer | none | Maximum rows, all record types together |
recordTypes | array | listings | listings, agencies or both |
fetchDetails | boolean | true | Open each ad page for description, photos, dates, coordinates and views |
categories | array | all 10 | Land, houses, apartments, commercial property, rooms, holiday homes, rentals |
districts / towns | array | empty | Place filters |
minPrice / maxPrice | integer | none | Range in LKR |
bedrooms / minBathrooms | array / integer | empty / none | Bedrooms from 1 to 10+, minimum bathrooms |
sellerType | string | any | any, agency or private |
maxRunSeconds | integer | 3600 | Longest run time |
onlyNew / stateKey / resetSeen | boolean / string / boolean | false / empty / false | Monitor mode, its name, and a reset |
includeContactDetails | boolean | false | Business phone and e-mail of agencies |
Input for 3 bedroom houses for sale in Colombo up to 60,000,000 LKR:
{"categories": ["houses-for-sale"],"districts": ["colombo"],"bedrooms": ["3"],"maxPrice": 60000000,"fetchDetails": true,"maxItems": 100}
⏱️ How fast is it, and does it need a proxy?
No proxy is needed. ikman.lk answers plain requests from the Apify cloud with no challenge and no login, and the Actor keeps a polite pace of four requests at a time. A 3-ad run with full details took about 6 seconds and used about 40 MB of memory.
A search stops at 10,000 ads (400 pages of 25), so a bigger search is split by district, town and price range. Paid featured ads from other places that the site mixes into a search are left out, so every row matches the place you asked for. If the site never answers and no row could be read, the run fails and nothing is charged.
📈 How does it compare with other ikman.lk scrapers? (read on 2026-11-03)
Three other Apify actors read ikman.lk. Their store pages were read for the figures below.
| This Actor | Ikman.lk Classifieds Scraper (fmntec) | Ikman.lk Scraper (logiover) | Ikman.lk Property Scraper (sian.agency) | |
|---|---|---|---|---|
| Output columns | 61 | 2 stated (title, link) | 18 | 49 |
| Rates | $0.022 per ad, $0.03331 per detail | $0.003 per result plus $0.01 start | $0.015 per result | From $0.00162 to $0.00648 per listing, plus detail and start events |
| Area in square meters, price per m2, town coordinates | Yes | Not stated | Not stated | Perches and square feet only, GPS |
| Agency pages | Yes | No | No | Shop name and e-mail on the ad |
| Private sellers | Flagged, never named or called | Not stated | Not stated | Name and phone returned |
All of these read the same site, so the difference is in coverage, fields and how personal data is treated. This Actor does not return the names or phone numbers of private sellers. Rates change, so check each page before you decide.
🏢 Ikman.lk agency record: which fields do you get?
With agencies in Record types, each agency page becomes one row with recordType set to agency.
| Field | Type | Example |
|---|---|---|
recordType | string | agency |
agencyName | string | AKARA APARTMENTS |
agencyUrl | string | https://ikman.lk/en/shops/akara-suites |
membershipLevel | string | premium |
isVerified | boolean | true |
listingCount | integer | 120 |
mainCategory | string | Apartments For Sale |
💰 How much does the Ikman.lk Scraper cost?
Pay per result, no monthly fee. Rates are USD per event on the Free tier.
| Event | Charged for | Per result | Per 1,000 |
|---|---|---|---|
| Listing record | One ad read from the list pages | $0.022 | $22.00 |
| Listing detail record | One ad opened on its own page (fetchDetails, on by default) | $0.03331 | $33.31 |
| Agency record | One agency page | $0.03331 | $33.31 |
Worked examples: 1,000 ads with card fields only (fetchDetails off) cost $22.00. The same 1,000 ads with full details cost $22.00 + $33.31 = $55.31. 100 agency pages cost 100 x $0.03331 = $3.33. Error rows and ads skipped by monitor mode are not charged.
💼 Ikman.lk scraper use cases
- Investors and land buyers: compare
pricePerM2across districts and towns. - Agents and brokers: watch new ads in a district with the only-new mode and send them to a CRM.
- Market researchers: track asking prices, rents and ad counts per town with scheduled runs.
🔌 Ikman.lk scraper API, MCP and integrations
Run it from any language through the Apify API:
curl -X POST "https://api.apify.com/v2/acts/RecordsData~ikman-lk-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"categories":["houses-for-sale"],"districts":["colombo"],"bedrooms":["3"],"maxItems":100}'
From JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('RecordsData/ikman-lk-scraper').call({ categories: ['houses-for-sale'], districts: ['colombo'], maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0].title, items[0].price);
The Python client, Make, Zapier, n8n, Google Sheets, Slack and Apify schedules also work.
Use it from an AI agent (MCP)
Add the Actor to any MCP client (Claude, Cursor, VS Code) through the Apify MCP server: https://mcp.apify.com?tools=RecordsData/ikman-lk-scraper.
Example agent prompt: "Use the ikman scraper to list the 3 bedroom houses for sale in Gampaha under 40,000,000 LKR, return the 20 cheapest with town, price, area in square meters and the ad link, and tell me the average price per square meter."
⚖️ Is it legal to scrape ikman.lk? Limits and responsible use
The Actor reads the public pages that ikman.lk shows to every visitor, without logging in, at a slow and steady pace. It sends only the address forms that robots.txt of the site leaves open. Images come back as links to the site's own files, not copies. The names and phone numbers of private sellers are never returned, and phone numbers and e-mail addresses written inside descriptions are removed. The business phone and e-mail of an agency are returned only when you turn on Include agency contact data. Check the site terms before republishing commercially. This is not legal advice, and you remain responsible for how you use the data.
Frequently Asked Questions
Does the ikman.lk scraper need a proxy or an ikman.lk account?
No. It uses plain HTTP requests to public pages, needs no login, no API key and no captcha solving. The Apify proxy field exists but is off by default. A 3-ad run with full details took about 6 seconds on 2026-10-29. You only need an Apify account, and the free plan can run the Actor with small limits.
How do I get more than 10,000 ads from one search?
Leave Max Items high and the Actor splits the search by itself: first by district, then by town, then by price range, so each part fits in the 10,000 ads the site allows per search. A run over the whole country is slow because it opens thousands of pages, so narrow it by category or district when you can.
Does it return the phone numbers of the sellers?
Not for private sellers. Their names and numbers are personal data and are never returned, and numbers written inside descriptions are removed from the text. For agencies, the business phone and e-mail come back only when you turn on Include agency contact data. Leave that option off if you do not need them.
How exact are the coordinates?
They are the centre of the town of the ad, not the building, because ikman.lk does not publish the exact pin. The field coordinatesPrecision is town-centroid on every row, so you can map ads by town but not by street. Coordinates need Fetch full ad details to be turned on.
How do I only get new ads on a schedule?
Turn on Only new rows (monitor mode) and give the search a name in Monitor name. The first run delivers the ads it finds and remembers their ids. The next runs deliver only ads that were not seen before and do not charge for the rest. Turn on Forget previously seen rows to start over.
Why are some columns empty in my export?
Either the ad does not state the value, or Fetch full ad details was off. The list pages carry the card fields only: price, place, bedrooms, bathrooms, seller and one photo. The description, all photos, posting and expiry dates, coordinates, views, furnishing and building details need the ad page. The Actor never pads a column with a guess.
What is the difference between a listing row and an agency row?
A listing row is one ad with price, place, size, photos and seller. An agency row is the business profile of an agency: tagline, address, opening hours, member since, membership expiry, main category and number of ads. Choose both in Record types to get them in the same dataset, told apart by recordType.
How much does a run cost?
The Actor is billed per result. An ad read from the list pages costs $0.022, so 1,000 ads cost $22.00. Opening each ad page adds $0.03331, so 1,000 ads with full details cost $55.31. An agency page costs $0.03331. Error rows and ads skipped by monitor mode are not charged.
Support
Questions, a missing field or a feature request: contact.punkrecordsdata@gmail.com. Reviews on the Actor page help other people find it.
This Actor is an independent tool and is not affiliated with ikman.lk.
Last updated: 2026-11-03