99.co Singapore Properties Scraper
Pricing
from $1.26 / 1,000 results
99.co Singapore Properties Scraper
Singapore property listings from 99.co (rent + sale): price, price-per-sqft, beds/baths, floor area, built year, furnishing, coordinates and neighbourhood — by listing type and bedroom count.
Pricing
from $1.26 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Scrapes property listings from 99.co, a major Singapore property portal, for rent and for sale: price, price-per-sqft, bedrooms/bathrooms, floor area, build year, furnishing, exact coordinates and neighbourhood.
What you get
One PROPERTY row per listing, plus a SEARCH_SUMMARY row per query.
listing_id · url · formatted_address · main_category /
formatted_sub_category (e.g. "HDB 3 Rooms") · price · psf
(price per square foot) · beds · bathrooms · floorarea_sqft ·
top (build year, e.g. "Built: 2004") · furnishing ·
neighbourhood_name · region_name · lat / lng ·
listing_status · posted_at_formatted · photo_counts /
video_count / floor_plan_count
price, psf, beds, bathrooms and floorarea_sqft are each an
object ({"value": ..., "unit": ..., "formatted_string": ...}), passed
through exactly as the site's own data layer shapes them.
Input
{"queries": [{ "listingType": "rent", "bedrooms": "2" }]}
Each entry needs listingType ("rent" or "sale"); bedrooms is
optional.
bedrooms is a validated list (1-5), not free text
Unlike most filters shipped by this portfolio, bedrooms is gated to the
5 values 99.co's own site actually links to (1, 2, 3, 4, 5).
That's a deliberate difference from, say, a location filter elsewhere:
those were proven honest on an unrecognised value (a clean empty
result or 404); this specific URL segment was only verified for those 5
values, and sending something else risks landing on some other,
unverified page rather than a guaranteed miss — so it's refused up front
instead of guessed at.
Read this before assuming you can page through more results
There is no working pagination on this site. ?page=2 (and every
other value tried) returns the exact same listings as ?page=1 — not a
policy restriction, a real check: full id-set comparison, not just a
glance at counts. Each query in queries therefore returns one fixed
batch (consistently ~36 listings in testing), never more, however many
listings actually exist for that combination. To cover more ground, add
more queries entries — e.g. one per bedroom count, or both rent and
sale — rather than expecting depth from a single query.
Known limits
1. No total-count field exists anywhere on this target. The
SEARCH_SUMMARY row reports propertiesReturned (what actually came
back) and a fixedBatchNote explaining the pagination situation above —
there is nothing upstream to report a true total from.
2. Only Singapore is covered. 99.co also operates an Indonesia
market (/id/ paths) with different URL conventions not explored this
session.
3. Filtering by neighbourhood, price range, property type or sort order
is not offered. robots.txt disallows the query-string parameters
99.co's own filter UI uses for all of these (?price_min=, ?bathrooms=,
?condo_sub_type=, ?sort_field=, and many more) — this actor only uses
the clean PATH-segment forms the site links to itself (/singapore/rent,
/singapore/rent/2-bedrooms), which cover listing type and bedroom count
only.
Anti-bot posture
Cloudflare — and the exit IP's geography matters more than you'd
expect. Local testing needed only pacing: a burst of unpaced recon
requests drew a genuine Cloudflare managed challenge
(cf-mitigated: challenge, HTTP 429, "Just a moment...") that cleared on
its own after a cooldown. Real cloud runs were a different story —
Apify's unpinned Residential proxy pool, and even a direct connection
with no proxy at all, both failed every retry against this same
challenge for several minutes straight. Pinning the proxy to Singapore
fixed it immediately. This actor's default proxy configuration is
Residential pinned to SG — Cloudflare here appears to score exit-IP
geography against the market this site serves, the same diagnosis
already on record for this portfolio's Indonesia real-estate actor.
Removing the country pin is likely to make cloud runs fail outright, not
just run slower.
Policy
robots.txt (User-agent: *) names no ClaudeBot/anthropic-ai/
GPTBot group, but disallows dozens of query-string parameters covering
essentially all of 99.co's own rich-filter UI (price, beds, baths,
property sub-type, sort, map bounds, keywords, and more), plus the whole
/singapore/s/* map-search surface. This actor never touches any
disallowed path — only the clean, site-linked PATH-segment forms
(/singapore/{rent|sale}, optionally /{N}-bedroom(s)).