Rumah123 Scraper — Indonesia Property & Agent Data
Pricing
from $2.00 / 1,000 results
Rumah123 Scraper — Indonesia Property & Agent Data
Scrape Rumah123, Indonesia's largest property portal: rupiah price parsed from Miliar/Juta wording, land and building area, bedrooms, bathrooms, carports, agent name and role, price drops and coordinates. Sale and rent. Keyless. JSON, CSV or Excel.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
6
Monthly active users
6 days ago
Last modified
Categories
Security
Limited permissionsShare
Export listings from Rumah123, Indonesia's largest property portal — price in rupiah, land and building area, bedrooms, agent details and price drops — to JSON, CSV or Excel. Keyless, no login.
What does Rumah123 Scraper do?
Rumah123 renders its results server-side, so this Actor reads them without a browser and stays cheap at volume. Two details of the site are handled explicitly, because both are where a careless export goes wrong.
Rupiah prices are written in words. "Rp 2,89 Miliar" means 2,890,000,000 — and a scraper that strips non-digits, which is the normal approach on European sites, returns 289. This Actor reads the magnitude word (Miliar, Juta, Ribu) and the Indonesian decimal comma, so priceAmount is a real number you can sort and filter on. The original label is kept alongside it.
The attribute strip is icon-driven. Bedrooms, bathrooms and carports sit in identically-classed spans that differ only by the icon they reference, and land area (LT) and building area (LB) are labelled inline. Reading them by position breaks the moment a listing omits carports. Here each value is matched to its own icon or label, so land area never lands in the bathroom column.
Price reductions are captured too: where a listing has been cut, you get the previous price, the new price and the site's own reduction label — a direct signal of which sellers are moving.
Who is it for?
- Property agencies tracking competitor stock and pricing across Indonesian regions.
- Investors comparing price per m² of land versus building across sub-districts.
- Portal and app builders who need a structured Indonesian feed.
- Analysts measuring supply, price movement and discounting by area.
- Lead generation teams building lists of active listing agents.
Use cases
- Pull every house for sale in Jakarta Selatan with land and building area.
- Find listings whose price has dropped and rank sellers by discount size.
- Compare rental yields by running sale and rent in the same region.
- Build an agent activity list — who is listing the most in a district.
- Track new supply weekly by sorting newest first on a schedule.
Why use this Actor?
- Correct rupiah parsing — "Miliar" and "Juta" become real numbers.
- Land and building area separately, the two figures Indonesian buyers compare.
- Price-drop data — previous price, current price and the reduction label.
- Agent name and role on every row.
- Coordinates where the site publishes them in its structured data.
- Keyless and browserless — no login, no headless Chrome, low cost per row.
What data can you extract?
Every row carries the listing ID, title and URL, location, price as label and number with currency and rental period, previous price and price-drop label where present, bedrooms, bathrooms and carports, land and building area in m², latitude and longitude where published, agent name and role, the freshness label, listing badges, cover image, and the country and source.
How to use it
- Choose jual (for sale) or sewa (for rent).
- Enter a region slug from a Rumah123 search URL —
dki-jakarta,bali,jawa-barat,jakarta-selatan. - Pick a property type, and optionally a price band and minimum bedrooms.
- Set Maximum results and run, then export JSON, CSV or Excel.
Input example
{"listingType": "jual","region": "jakarta-selatan","propertyType": "rumah","minPrice": 1000000000,"maxPrice": 5000000000,"minBedrooms": 3,"maxResults": 1000}
Additional input fields
These optional fields are also available in the input form and API:
| Field | Type | Default | Description |
|---|---|---|---|
sortBy | string | "default" | Result order. Newest first is best when monitoring a market. |
proxyConfiguration | proxy | {"useApifyProxy": true, "apifyProxyGr... | Rumah123 blocks datacenter traffic, so residential Indonesian proxy is required and is preselected. Changing it away from residential will return no results. |
Notes and limits
- Rumah123 refuses datacenter traffic, so the Actor defaults to residential Indonesian proxy. Leave that setting alone; switching to datacenter returns nothing.
- Prices are asking prices set by agents and owners, not transaction prices.
- Coordinates come from the page's structured data, which covers part of each page rather than every card — the column is populated where the site publishes it.
- Agent phone numbers are masked on the search page by Rumah123 itself, so they are deliberately not exported; the agent name and the listing URL are.
- Rental listings quote a period ("/bulan" = per month); that period is its own column so monthly and yearly rents never mix.
- This Actor exports search results, not full property pages — open the listing URL for the complete description and photos.
FAQ
Do I need a Rumah123 account? No. Search results are public and the Actor needs nothing from you.
Where do I get the region slug?
Run a search on Rumah123 and copy the area segment from the URL, e.g. .../jual/jakarta-selatan/rumah/.
Why is priceAmount so large?
Indonesian property is priced in rupiah — a billion-rupiah house is roughly USD 60,000. The number is correct.
Does it cover rentals?
Yes — set the listing type to sewa. The rental period appears in its own column.
How am I charged? Pay per result — you pay for the listings delivered.
*Maintained: last verified 2026-11-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Output example
One row from a real run of this Actor:
{"listingId": "hos41615407","title": "Rumah Siap Huni Cempaka Putih","listingUrl": "https://www.rumah123.com/properti/jakarta-pusat-cempaka-putih/rumah-bisa-kpr-cempaka-putih…","location": "Cempaka Putih, Jakarta Pusat","priceLabel": "Rp 1,65 Miliar","priceAmount": 1650000000,"currency": "IDR","pricePeriod": null,"previousPriceLabel": "Rp 1.8 M","previousPriceAmount": 18000000000,"priceDropLabel": "Turun Rp 100 Jutaan","bedrooms": 3,"bathrooms": 3,"carportsLabel": "1 + 1","landAreaSqm": 61,"buildingAreaSqm": 120,"latitude": null,"longitude": null,"agentName": "Syahrul","agentRole": "Independen","updatedLabel": "Diperbarui 1 jam yang lalu","badges": "Premier","imageUrl": "https://picture.rumah123.com/r123-images/720x420-crop/customer/1964441/b50a4398b09f726bd80…","country": "Indonesia"}
Output fields
| Field | Type | Filled in sample |
|---|---|---|
listingId | string | 100% |
title | string | 100% |
listingUrl | string | 100% |
location | string | 100% |
priceLabel | string | 100% |
priceAmount | number | 100% |
currency | string | 100% |
pricePeriod | string | 0% |
previousPriceLabel | string | 33% |
previousPriceAmount | number | 33% |
priceDropLabel | string | 33% |
bedrooms | number | 100% |
bathrooms | number | 100% |
carportsLabel | string | 86% |
landAreaSqm | number | 100% |
buildingAreaSqm | number | 100% |
latitude | string | 0% |
longitude | string | 0% |
agentName | string | 100% |
agentRole | string | 20% |
updatedLabel | string | 100% |
badges | string | 96% |
imageUrl | string | 100% |
country | string | 100% |
source | string | 100% |
scrapedAt | string | 100% |
Is it legal?
This Actor collects only publicly available data — the same content any visitor to Rumah123 can see without logging in. It does not bypass authentication and does not gather private information. How you use the output is your responsibility: respect the source's terms, applicable copyright, and data-protection law such as GDPR where personal data is involved.
This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Rumah123; Rumah123 and all other trademarks mentioned here are the property of their respective owners.
Related scrapers
Other Actors from the same collection:
How much Rumah123 data can you extract in one run?
A single run returned 510 listings in 169 seconds on the example input. That is roughly 181 listings a minute. Widen the search — more queries, more pages, a broader location — and the same run goes deeper.
There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much Rumah123 itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.
Rumah123 scraping — frequently asked questions
Do I need a Rumah123 API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export Rumah123 data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this Rumah123 scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the listings you care about really do change that fast.
How many listings can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping Rumah123 legal?
This Actor collects only information that Rumah123 publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if Rumah123 blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
📝 Changelog
2026-11-01
- Monthly health check (2026-11-01): a live run on the current build completed successfully and returned data. Input options, output fields and pricing are unchanged.
- README refreshed: 1 link to retired Actors removed; independence disclaimer added; documented 2 additional input fields.
2026-10-15
- Every request now has a hard time limit, so a proxy connection that stalls can no longer hold up the run or push it past its timeout.
- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.
- Runs with a short timeout (API and AI-agent calls) now finish inside it with what they collected, instead of being cut off.
- Memory is managed within the run's own limit, which removes a rare out-of-memory crash on large pages.
2026-09-23
- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Output verified on a live run: 26 columns returned, 77.1% of cells populated.
- Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
- Noted that 3 column(s) came back empty in this sample (
pricePeriod,latitude,longitude); these are under review.
2026-09-01
- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.
2026-08-13
- Fixed an intermittent run failure: a page whose schema.org ItemList carried a single entry as an object rather than an array threw while coordinates were being merged, and the throw killed the whole run.
- Card parsing is now isolated per page — one unparseable page is logged and skipped instead of discarding everything already collected.
- Tightened the wall-clock budget to 3.5 minutes so container start-up plus proxy retries still finish inside the platform's 5-minute window.
- First-try input now collects 100 listings so a trial run returns quickly; the 500 default is unchanged.
2026-08-11
- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.