99co Singapore Property Scraper
Pricing
Pay per event
99co Singapore Property Scraper
Scrape property listings from 99.co — Singapore's #2 property portal. Extracts sale, rent, new launch, and commercial listings with pricing, location, agent details, and CCR/RCR/OCR region classification. Bypass Cloudflare via residential proxy.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape property listings from 99.co — Singapore's #2 property portal. Extracts sale, rent, new launch, and commercial listings with pricing, location, agent details, and region classification (CCR / RCR / OCR).
What it does
For each listing type you request (sale, rent, new launch, or commercial), the actor:
- Loads the 99.co search page using a real browser with residential Singapore proxy to clear Cloudflare protection
- Calls the internal search API (
/api/v10/web/search/listings) using the browser's authenticated session - Extracts listing details directly from the API response — no separate detail-page visits
- Paginates automatically until
maxItemsis reached
Input
| Field | Type | Required | Description |
|---|---|---|---|
maxItems | Integer | Yes | Maximum number of listings to return (min: 1) |
listingTypes | Array | No | Listing types to include. Options: sale, rent, new-launch, commercial. Defaults to ["sale", "rent"] |
Example input
{"maxItems": 100,"listingTypes": ["sale", "rent"]}
Output
Each record contains:
| Field | Description |
|---|---|
listing_id | Unique listing identifier |
listing_type | sale, rent, etc. |
title | Listing title or address |
description | Listing description |
property_type | Property type (Condo, HDB, Landed, etc.) |
tenure | Freehold / Leasehold |
district | District number (1–28) |
district_code | District code (e.g. D10) |
region | CCR / RCR / OCR classification |
project_name | Development or project name |
address | Street address |
postal_code | Singapore postal code |
latitude / longitude | GPS coordinates |
price_sgd | Asking price or monthly rent in SGD |
price_psf_sgd | Price per square foot in SGD |
bedrooms | Number of bedrooms |
bathrooms | Number of bathrooms |
floor_area_sqft | Floor area in square feet |
land_area_sqft | Land area in square feet (landed properties) |
completion_year | Year of completion |
school_within_1km | Nearby schools within 1 km |
amenities | Property amenities and features |
agent_name | Listing agent name |
agent_cea_no | Agent CEA registration number |
agent_phone | Agent contact number |
agency | Agency name |
listing_url | Direct URL to the listing |
image_urls | Array of property photo URLs (up to 20) |
posted_at | Date the listing was posted |
scraped_at | ISO timestamp of when the record was scraped |
Notes
- Cloudflare bypass: The actor uses a real Chromium browser with residential Singapore proxies to pass Cloudflare's JS challenge. This is why it requires more compute than a simple HTTP crawler.
- Rate limits: Run with
maxItemsat 500 or fewer per run to stay within reasonable query limits. For large extracts, split by listing type. - Data freshness: The search API returns live listings — data is current at scrape time.
- Memory: Requires 2048 MB due to the browser-based extraction.