Skip to Content

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.

CountrySingapore
TypePortal
Owner99 Group
Listing typesresale, rental, new-build, commercial, industrial
Monthly visits~2.2M / mo (SG); ~0.68M / mo (ID)
Active listings
API accessNo public API (parse-only)
Parse priority★★★★☆
Official sitewww.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"

Frequently asked questions