99.co Scraper – Singapore Property for Sale & Rent
Pricing
from $2.00 / 1,000 property results
99.co Scraper – Singapore Property for Sale & Rent
Scrape 99.co (Singapore property) listings for sale and rent without an API: price, floor area, bedrooms, bathrooms, district, region and property type. Bulk input; export JSON/CSV/Excel. Great for property market research and price comparison.
Pricing
from $2.00 / 1,000 property results
Rating
0.0
(0)
Developer
Chad
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
99.co Scraper | Singapore Property Search, HDB, Condo & Landed Property Listings for Sale & Rent (No API, No Login)
One actor to scrape 99.co Singapore property search: keyword search (scrape HDB, condo, and landed property listings for sale or rent, filtered by your criteria). No login required, no API token, and bulk-pastes of multiple search queries are handled natively. It hits 99.co's public JSON endpoints directly — no browser, fast and cheap.
Built for: people tracking Singapore property prices, market analysts covering specific districts, anyone comparing rental rates across neighborhoods, property market researchers, students needing a dataset for a thesis, and engineers building their own side projects.
Planned for v1.1: listing detail mode (fetch full details of a single listing by ID/URL) — not yet available in this version.
What you get
Every listing includes the fields below (missing values are always returned as null — fields are never dropped):
| Field | Description | Example |
|---|---|---|
listing_id | 99.co listing ID | PkhHsqk7hrY7DPXGtPVr6L |
title | Listing name (project name or address) | Commonwealth HDB Estate |
listing_type | Transaction type | sale, rent |
main_category | Property type | hdb, condo, landed |
property_segment | Property sub-category | hdb, non-landed, landed |
price | Sale price or monthly rent (SGD) | 850000 |
currency | Currency (always SGD) | SGD |
price_per_sqft | Price per square foot (SGD) | 589.24 |
bedrooms | Number of bedrooms | 5 |
bathrooms | Number of bathrooms | 2 |
floor_area_sqft | Floor area (square feet) | 1442 |
address | Address | 123 Commonwealth Avenue |
district | District number (D1–D28) | 3 |
region | Region name | Central Region |
latitude | Latitude | 1.2985 |
longitude | Longitude | 103.8027 |
tenure | Tenure type | 99-year leasehold, freehold |
agent_name | Agent name | Tan Wei Ming |
agent_id | Agent ID | user_abc123 |
agency | Agency name | PropNex Realty Pte Ltd |
posted_at | Listing posted time (ISO 8601) | 2026-06-15T10:30:00.000Z |
image_urls | Array of listing image URLs | ["https://cdn.99.co/photos/abc123_main.jpg"] |
listing_url | Full listing URL | https://www.99.co/singapore/sale/map/hdb/... |
source_mode | Which mode this record came from | search |
source_query | The query used to fetch this record | hdb queenstown sale |
scraped_at | Time of scraping (ISO 8601) | 2026-07-04T05:23:28.617Z |
Modes
| Mode | What it does | Billing event | Price | Status |
|---|---|---|---|---|
| 🔎 search | Keyword search, scrape a listing list by criteria | search-listing (per item) | $0.002 | v1.0 |
| 📦 detail | Fetch full details of a single listing by ID/URL | product-detail (per item) | $0.008 | v1.1 |
Regardless of which mode you run, every run start incurs a one-time apify-actor-start fee of $0.005. All charges are only applied after data has been successfully written to the dataset — the run log prints total_items / charged / skipped at the end so you can reconcile.
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | enum | recommended | search | Only search (search listing) is available currently; detail is planned for v1.1. |
queries | string[] | required for search | — | Search queries, one per line, e.g. hdb queenstown sale, condo orchard rent. Up to 50 per run. |
listingType | enum | optional | sale | sale or rent. |
mainCategory | enum | optional | — | hdb / condo / landed. Leave empty to scrape all types. |
bedrooms | integer | optional | — | Specify number of bedrooms (1+). Leave empty for no limit. |
priceMin | integer | optional | — | Only keep listings priced (sale/rent) at or above this amount (SGD). Leave empty for no limit. |
priceMax | integer | optional | — | Only keep listings priced (sale/rent) at or below this amount (SGD). Leave empty for no limit. |
bulkInput | string | optional | — | One entry per line, press Enter to add a new line, no quotes or commas. Used as search queries in search mode — merged automatically into queries at run time. Fastest way is to paste a whole column copied from Google Sheets / Excel. |
maxItems | integer | optional | 50 | Maximum number of listings to scrape per search query (1-500). Higher values cost more. |
proxyConfiguration | object | optional | — | 99.co restricts non-Singapore IPs. We recommend enabling Apify Proxy (Residential or RESIDENTIAL_SG) to avoid 429 blocks. |
Examples
🔎 Basic search: Queenstown HDB
{"mode": "search","queries": ["hdb queenstown sale"],"maxItems": 20}
🏠 Price range + bedroom count
{"mode": "search","queries": ["condo orchard rent"],"listingType": "rent","mainCategory": "condo","bedrooms": 2,"priceMin": 3000,"priceMax": 8000,"maxItems": 50}
📋 Bulk search across multiple neighborhoods
{"mode": "search","bulkInput": "hdb toa payoh sale\nhdb bishan sale\nhdb ang mo kio sale","maxItems": 100}
Notes
- Public data only. No login required, no 99.co account needed, and no content requiring authentication is accessed.
- No login / no API token needed. Fill in the input and run — there are no credentials to configure.
- The same listing hit by multiple queries produces one row per
source_query(billed per query). For example, if bothhdb queenstown saleandhdb central salematch the same listing, it will appear as two rows, each billed as a separatesearch-listing. - Cross-page deduplication: within the same search query, if the same listing appears on multiple pages, it's only counted once (built-in deduplication).
- Polite to the site. Concurrency per domain is capped at 5, failed requests are retried up to 3 times with exponential backoff — the actor won't hammer 99.co's servers.
- Listing detail mode (detail mode) is planned for v1.1. Only search mode is supported currently.
FAQ
Q: How do I write search queries?
One per line, formatted as closely as possible to what a user would type into 99.co's search box, e.g. hdb queenstown sale, condo river valley rent, landed serangoon. You can omit sale/rent (use the listingType field to control it instead), or include it — the scraper passes it through as a query tag either way.
Q: Why is price_per_sqft null?
Some 99.co listings don't list a price-per-square-foot figure, or the API doesn't return an area_ppsf field for them. In that case we always return null rather than estimating a value.
Q: How is billing calculated?
Each run start incurs a one-time apify-actor-start charge ($0.005); search mode charges search-listing ($0.002) per listing returned. Both are only charged after data is successfully written to the dataset — the run log prints the actual number of billed items.
Q: What if I don't get any data? First check your search query spelling, or try a more common neighborhood name or property type. The scraper stops itself and logs the reason after 5 consecutive requests return no new data, so it won't burn compute for nothing. If you're hitting 429 blocks, we recommend enabling the proxy setting.
Q: When will detail mode (full listing details) be available? Planned for v1.1. At that point you'll be able to bulk-fetch full listing details by listing ID or 99.co listing URL.
Deployment
apify login # first time only: paste your Apify token (never committed to the repo)apify push # build and upload to Apify Store
After publishing, configure PPE event prices in the Apify Console under Monetization:
apify-actor-start $0.005, search-listing $0.002.
Disclaimer
This scraper only collects publicly visible property listing data from 99.co. Data is intended for research and personal use only, not for any unauthorized commercial resale. Please confirm compliance with 99.co's terms of service and applicable local regulations before use. This actor makes no guarantees regarding the accuracy, timeliness, or completeness of the data — refer to 99.co's official site for current property prices and listing status.
99.co scraper, Singapore property, SG real estate, property for sale Singapore, property for rent SG, HDB condo listings, Singapore housing data