99.co Property Scraper — Singapore Listings & Agent Leads avatar

99.co Property Scraper — Singapore Listings & Agent Leads

Pricing

$4.00 / 1,000 property listing scrapeds

Go to Apify Store
99.co Property Scraper — Singapore Listings & Agent Leads

99.co Property Scraper — Singapore Listings & Agent Leads

Scrape Singapore property from 99.co — HDB, condos, landed & commercial, for sale or rent. Get prices, PSF, beds, floor area, tenure, MRT distance, geo-coordinates, photos plus the listing agent name, phone & WhatsApp. Monitoring mode returns only new listings. Export to JSON, CSV, Excel.

Pricing

$4.00 / 1,000 property listing scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

14

Total users

1

Monthly active users

19 days ago

Last modified

Share

99.co Property Scraper — Singapore Listings, Prices & Agent Leads

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by 99 Group or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "99.co" is referenced only to describe the publicly available website this Actor collects data from.

Extract complete Singapore property data from 99.co — sale & rent listings across HDB, condos, apartments, landed houses, executive condominiums, rooms and commercial units. Get the fields that actually matter: real asking prices, price-per-sqft, bedrooms/bathrooms, floor & land area, tenure, TOP/built year, exact geo-coordinates, nearest-MRT distance and walk time, photos — plus the listing agent's name, phone and WhatsApp, so every result doubles as a ready-to-contact lead.

No login, no cookies, no browser automation — fast direct-from-API extraction with the richest dataset in the category.

Why this 99.co scraper?

Most property scrapers return a thin row — price, beds, a URL — and leave the rest empty. This actor pulls 99.co's own internal listings API and ships every field on the card, including agent contacts and MRT connectivity:

DataTypical scrapersThis actor
Asking price + price/sqft
Beds, baths, floor area, land areapartial✅ all
Tenure (freehold / 99-yr) + TOP/built year
Geo-coordinates (lat/lng)partial
Nearest MRT — line, walk time, distance
All listing photospartial
USP / highlight tags
Listing agent name
Agent phone + WhatsApp
Premium / corporate agent flags
Monitoring mode (only new listings)

Use cases

  • Real-estate agent lead generation — every listing carries the agent's name, phone and WhatsApp. Filter by area, price band or property type and build a contact list of active Singapore agents in minutes.
  • Property market & price intelligence — track asking prices, price-per-sqft and new-launch supply by district, MRT line, HDB town or condo project.
  • Investor & buyer deal-hunting — monitor just-listed units that match your criteria (e.g. freehold 3-bedders near an MRT under a price cap) and act before the market.
  • Portals, apps & valuation models — feed structured, geo-tagged listing data with full specs into your own search app, CMA tool or pricing model.
  • Competitor & agency monitoring — watch which agencies and agents dominate a neighbourhood and how fast their inventory turns over.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the 99.co Property Scraper, paste one or more 99.co search URLs (or use the simple sale/rent + property-type builder), and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Tip: any 99.co filter works

Open 99.co, set any filters in the UI — location, district, MRT, price range, bedrooms, property type, freehold, floor level, and so on — then copy the URL from your browser and paste it into searchUrls. The scraper reproduces that exact search and paginates through every page. No need to learn parameters.

Input

{
"searchUrls": [
"https://www.99.co/singapore/sale/condos-apartments?price_max=2000000&num_beds=3",
"https://www.99.co/singapore/rent/hdb"
],
"sortBy": "recency",
"maxResults": 500,
"monitoringMode": false,
"includeAgentContacts": true
}
  • searchUrls — one or more 99.co search/listing pages with whatever filters you want. Leave empty to use the simple builder.
  • listingType / propertyType — the simple search builder (sale/rent × hdb/condo/landed/ec/room/commercial), used only when no URLs are provided.
  • sortByrelevance (default), recency (newest first — best for monitoring), price_low, price_high.
  • maxResults (default 200) — listings per search; 0 = no limit (scrapes every available page).
  • monitoringMode (default false) — remember listings from previous runs (per search) and output only the new ones. See below.
  • includeAgentContacts (default true) — include agent name, phone and WhatsApp. Turn off to exclude all agent personal data.
  • proxyConfiguration (default Singapore residential) — required; 99.co is served from Singapore behind Cloudflare. Keep the default.

Output

One record per listing:

{
"listingId": "iD6zEuiwhqX8AMzsxjgCUs",
"listingUrl": "https://www.99.co/singapore/sale/property/toh-drive-landed-iD6zEuiwhqX8AMzsxjgCUs",
"listingTitle": "5 Bed Bungalow (Landed) for Sale in Toh Estate",
"listingType": "sale",
"propertySegment": "residential",
"mainCategory": "landed",
"subCategory": "Bungalow",
"price": 8700000,
"priceFormatted": "S$ 8,700,000",
"currency": "SGD",
"isNegotiable": true,
"pricePerSqft": 1401,
"bedrooms": "5",
"bathrooms": 5,
"builtUpSqft": 4400,
"landAreaSqft": 6211,
"tenure": "Freehold",
"builtYear": 2013,
"furnishing": null,
"address": "Toh Drive",
"neighbourhood": "Loyang East",
"region": "East Region",
"latitude": 1.3646052524058343,
"longitude": 103.97297793694283,
"nearestMrtName": "Loyang MRT",
"nearestMrtLines": ["CR 3"],
"mrtWalkMinutes": 10,
"mrtDistanceMeters": 737,
"postedAt": "2026-06-12T06:36:09.182Z",
"photoCount": 8,
"coverPhotoUrl": "https://pic2.99.co/v3/bcYm9D96gMdF7wMsM9LNtn?...",
"photoUrls": ["https://pic2.99.co/v3/bcYm9D96gMdF7wMsM9LNtn?...", "..."],
"uspTags": ["Near MRT Station", "Spacious Layout", "Freehold Property"],
"agentName": "Julie Phua",
"agentPhone": "+6591500299",
"agentWhatsapp": "+6591500299",
"agentIsPremium": true,
"agentIsCorporate": false,
"isWhatsappEnquiryAllowed": true,
"searchUrl": "https://www.99.co/singapore/sale",
"scrapedAt": "2026-06-12T12:00:00.000Z"
}

Monitoring — get only new listings

Turn on monitoringMode and the actor remembers which listings it has already returned for each search (in a persistent key-value store) and, on the next run, outputs only listings that are new since last time.

This is a pure result filter — the actor still runs once and exits, so it works with, not against, the Apify scheduler:

  1. Set monitoringMode: true and sortBy: recency.
  2. Create an Apify Schedule (e.g. every hour) for the actor.
  3. Add a webhook or Zapier step to push each new listing into your CRM, Slack or a spreadsheet.

You now have a live feed of just-listed Singapore properties (and fresh agent leads) with zero duplicates.

How much does it cost to scrape 99.co?

This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

  • Property Listing Scraped - One 99.co property listing with full details: price, PSF, bed/baths, floor area, tenure, location, geo-coordinates, nearest MRT, photos and the listing agent's contact details.

The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/99-co-property-scraper').call({
searchUrls: ['https://www.99.co/singapore/sale/condos-apartments?num_beds=3'],
sortBy: 'recency',
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings & agent leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new agent leads straight into your CRM.
  • Slack — get notified when a monitored search finds new listings.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find 3-bedroom condos for sale near an MRT under S$2M on 99.co and list the agents" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete Singapore + lead-gen data stack:

Tips

  • Exhaust a big search: 99.co caps very deep pagination. To pull a large segment fully, split it into narrower searches (by district, price band, or property type) — each paginates independently.
  • Cheapest, freshest leads: combine sortBy: recency + monitoringMode + an hourly Schedule so each run scrapes only the handful of brand-new listings.
  • Keep the Singapore residential proxy: 99.co is geo-served and Cloudflare-protected; datacenter or non-SG IPs get blocked.
  • Map view: every record has latitude/longitude — drop the dataset straight onto a map or into a geospatial tool.

FAQ

Which property types does it cover? Everything on 99.co Singapore — HDB resale, condos & apartments, landed houses, executive condominiums (EC), rooms, and commercial — for both sale and rent.

Do I need to learn URL parameters? No. Apply filters on 99.co normally and paste the resulting URL. The scraper mirrors that exact search, including every filter you set.

Where do the agent phone numbers come from? They are the contact numbers each agent publishes on their own 99.co listing — the same details a buyer sees on the page. Set includeAgentContacts: false to exclude them.

How do I get only new listings? Turn on monitoringMode and sort by recency, then schedule the actor. Each run outputs only listings not seen on previous runs — no duplicates.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

Is scraping 99.co legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. Singapore's PDPA for personal data) and 99.co's terms.

A field is null — why? Some listings genuinely omit a value (e.g. no floor area for a landed home, or an agent who hides furnishing). Fields are null only when the data isn't published, never because the scraper skipped them.

Data & lawful use

This Actor reads business and professional listings that the professionals themselves published to be found: names, roles, firms, ratings and the contact details shown on the public listing. Because those details belong to identifiable people, treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for B2B prospecting or market research), keep any outreach relevant to the professional's line of work, honour opt-outs and deletion requests, and do not use the output for spam.

Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by 99 Group or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"99.co" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official 99.co product, is not authorised or certified by 99 Group, and does not distribute 99.co software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.