99.co Data Parser & API
99.co is a top-tier Singapore property portal — ~2.2M monthly visits in Singapore plus ~0.68M in Indonesia (East & SE Asia research report) — and PropAPIS extracts its resale, rental, new-launch, commercial and industrial listings through a single REST API. Cover both the Singapore and Indonesia 99.co markets without building or maintaining a scraper against its medium-grade bot defenses.
| Country | Singapore |
|---|---|
| Type | Portal |
| Owner | 99 Group |
| Listing types | resale, rental, new-build, commercial, industrial |
| Monthly visits | ~2.2M / mo (SG); ~0.68M / mo (ID) |
| Active listings | — |
| API access | No public API (parse-only) |
| Parse priority | ★★★★☆ |
| Official site | www.99.co |
Platform Overview
Market Position
- One of Singapore’s two leading portal groups — ~2.2M monthly visits in SG (per the East & SE Asia research report)
- Owned by 99 Group (REA Group / News Corp-backed), which also owns iProperty.com.sg and SRX (X-Value AVM)
- Operates 99.co ID (~0.68M monthly visits), making it the #2 portal in Indonesia
- Map-first search UX with district, MRT-proximity and project-level data
Market Coverage
Geographic Coverage:
- Singapore: all districts and planning areas
- Indonesia: Jakarta and major metros via 99.co ID
Property Types:
- Condominiums and apartments
- HDB flats (Singapore)
- Landed properties
- Commercial properties
- Industrial properties
Data Availability
99.co standardizes residential fields across its Singapore and Indonesia sites — district, MRT/station proximity, tenure and price-per-square-foot — giving consistent, structured listing data across two markets from one parser family.
Listing Categories:
- Buy: resale and ready properties
- Rent: long-term rentals
- New Launches: developer projects
- Commercial: offices and retail
- Industrial: warehouses and factories
Data Fields Available
PropAPIS extracts structured data from each 99.co listing:
Property Information
- Address: district, building and project
- Price: sale price or rent (SGD / IDR)
- Bedrooms and Bathrooms
- Property Type: condo, HDB, landed, commercial, industrial
- Area: floor area (sq ft / sq m)
- Tenure: freehold, leasehold, 99-year
Listing Details
- Description: full listing text
- PSF: price per square foot
- Photos: image URLs
- Project: development / project name
- Added Date
Agent Information
- Agency: agency name
- Agent: listing agent name
- Agent Contact: phone where published
Location Data
- District and Planning Area
- MRT / Station Proximity
- City / Region
- Coordinates: latitude and longitude
API Endpoints
Get Property Details
from propapis import PropAPIS
api = PropAPIS(api_key='your_api_key')
# Get a listing by URL or ID
property_data = api.platforms['99co'].get_property(
listing_id='12345678'
)
print(f"Title: {property_data.title}")
print(f"Price: S${property_data.price:,}")
print(f"Type: {property_data.property_type}")
print(f"District: {property_data.district}")
print(f"PSF: S${property_data.price_per_sqft:,.0f}")Search Listings
# Search 99.co listings
listings = api.platforms['99co'].search(
country='SG',
purpose='for-sale',
district='District 9',
min_price=1000000,
max_price=3000000,
property_type='Condo'
)
for listing in listings[:10]:
print(f"{listing.title} - S${listing.price:,}")
print(f" {listing.bedrooms} bed | {listing.district}")Search Indonesia Listings
# Search the 99.co Indonesia market
listings = api.platforms['99co'].search(
country='ID',
purpose='for-sale',
location='Jakarta'
)
for listing in listings[:5]:
print(f"{listing.title} - Rp {listing.price:,}")Quick Start
from propapis import PropAPIS
api = PropAPIS(api_key='your_api_key')
# Search 99.co listings in Singapore
listings = api.platforms['99co'].search(country='SG', purpose='for-sale')
for listing in listings[:5]:
print(f"{listing.title} - S${listing.price:,}")import { PropAPIS } from 'propapis';
const api = new PropAPIS({ apiKey: 'your_api_key' });
// Search 99.co listings in Singapore
const listings = await api.platforms['99co'].search({
country: 'SG',
purpose: 'for-sale',
});
listings.slice(0, 5).forEach((l) => {
console.log(`${l.title} - S$${l.price.toLocaleString()}`);
});curl "https://api.propapis.com/v1/platforms/99co/search?country=SG&purpose=for-sale" \
-H "Authorization: Bearer your_api_key"