EdgeProp.sg Scraper — Singapore Property & Agent Leads avatar

EdgeProp.sg Scraper — Singapore Property & Agent Leads

Pricing

$4.00 / 1,000 property listing scrapeds

Go to Apify Store
EdgeProp.sg Scraper — Singapore Property & Agent Leads

EdgeProp.sg Scraper — Singapore Property & Agent Leads

Scrape Singapore property listings from EdgeProp.sg — price, PSF, beds, baths, size, project, district, tenure, rental yield and photos, plus the agent's name, CEA reg no, agency and mobile for lead generation. Sale & rent across condo, HDB & landed. Monitor price drops. No login or API key.

Pricing

$4.00 / 1,000 property listing scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

EdgeProp.sg Scraper — Singapore Property Listings & Agent Leads

Extract complete property data from EdgeProp.sg — one of Singapore's leading property portals. Get every field that matters: asking price, price-per-sqft (PSF), bedrooms, bathrooms, floor/land area, project, postal district, market segment (CCR/RCR/OCR), tenure, year completed, rental yield and the full photo gallery — plus, for lead generation, the listing agent's name, CEA registration number, agency and mobile number on every listing.

No login, no cookies, no browser, no API key — fast extraction straight from EdgeProp's structured listing data, with monitor mode to capture only new listings and price drops on a schedule.

Why this EdgeProp scraper?

Most property scrapers grab the listing card and stop, returning prices without the agent contact or the investment signals that make the data actionable. This actor reads EdgeProp's structured listing data directly and ships the richest EdgeProp.sg dataset in the category — every agent turned into a contactable lead, plus EdgeProp's own analytics.

DataTypical property scrapersThis actor
Asking price + PSF + raw price
Beds, baths, floor & land area (sqft + sqm)partial
Project, street, postal code, districtpartial
Market segment (CCR / RCR / OCR)
Tenure + year completed
Agent name + CEA reg no + agency + mobile✅ on every listing
Rental yield, sales/rental volume, vs-fair-value✅ when published
EdgeProp insights (MRT, malls, lease left, profitability)
Full photo gallery (all images, full-size)❌ first photo
Sale and rent, condo / HDB / landed / commercialpartial
Monitor mode — new listings + price drops
No start fee

Use cases

  • Property agent & brokerage lead generation — every listing carries the agent's name, CEA registration number, agency and mobile number. Filter by district, price band or property type and build targeted outreach lists of Singapore property agents.
  • Pricing & market intelligence — track asking prices, PSF and inventory across districts and CCR / RCR / OCR; spot under/over-priced units and segment trends.
  • Rental yield & investment screening — compare PSF, rental yield and EdgeProp's below-fair-value signal to shortlist deals; filter condo / HDB / landed by tenure, size and price.
  • Listing & price-drop monitoring — watch a district, project or the whole market for new listings and price reductions with monitor mode.
  • Portals & dashboards — power a Singapore property feed or BI dashboard from scheduled runs.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the EdgeProp.sg Scraper, pick the property types and listing type (or paste EdgeProp category URLs), set any filters, and click Start.
  3. Watch results stream into the dataset table — one clean row per property.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"propertyTypes": ["condo", "hdb"],
"listingType": "sale",
"minPrice": 800000,
"maxPrice": 2500000,
"minBedrooms": 2,
"districts": ["9", "10", "15"],
"deepScrape": true,
"maxResults": 500,
"monitorMode": false
}
  • propertyTypes — any of condo, hdb, landed, commercial, industrial.
  • listingTypesale, rent, or room (room rental).
  • startUrls — optional: paste EdgeProp category URLs (e.g. https://www.edgeprop.sg/condo-apartment-for-sale); they override the selectors above.
  • minPrice / maxPrice — asking-price bounds (sale: total price; rent: monthly rent).
  • minBedrooms / districts — keep only listings meeting these criteria (districts 1–28).
  • deepScrape (default true) — EdgeProp renders only the top ~20 listings per bare category, so the actor slices each category into asking-price bands to pull thousands of unique listings (deduplicated by listing ID). Turn off for a fast, cheap top-20-per-category run.
  • maxResults / maxResultsPerCategory (default 200 / 0) — caps for test runs or budget control.
  • monitorMode (default false) — emit only new or price-changed listings since the last run (see below).
  • dedupStoreName (default edgeprop-sg-state) — named store holding the monitor state.
  • proxyConfiguration — proxy settings (default Apify datacenter proxy; residential is not needed).

Output

One clean record per listing:

{
"listingId": "m_2178154",
"url": "https://www.edgeprop.sg/listing/apartment-condo/condominium/kent-ridge-hill-residences/m_2178154",
"projectName": "KENT RIDGE HILL RESIDENCES",
"listingType": "sale",
"propertyType": "Apartment / Condo",
"propertySubType": "Condominium",
"askingPrice": 2288000,
"pricePsf": 2192,
"currency": "SGD",
"bedrooms": 3,
"bathrooms": 3,
"floorAreaSqft": 1044,
"floorAreaSqm": 96.99,
"tenure": "99 Years",
"yearCompleted": "2023",
"district": "5",
"districtCategory": "Private",
"marketSegment": "RCR",
"streetName": "South Buona Vista Road",
"postalCode": "117293",
"rentalYield": null,
"belowFairValuePct": null,
"rentalVolume": 34.9,
"insights": ["1 MRT/LRT Currently nearby", "2 Malls nearby", "91 Years of Lease left", "Only 3 Years Old"],
"imageCount": 9,
"images": ["https://img.tepcdn.com/.../photo_1.jpg", "..."],
"thumbnailUrl": "https://img.tepcdn.com/.../photo_1.jpg",
"hasVirtualTour": true,
"agentName": "Zola",
"agentCeaRegNo": "R029291I",
"agencyName": "PROPNEX REALTY PTE. LTD.",
"agentPhone": "89423355",
"agentProfileUrl": "https://www.edgeprop.sg/property-agents/Zola--89423355",
"updatedAt": "2026-06-12T13:01:33.937Z",
"sourceCategory": "condo-sale",
"scrapedAt": "2026-06-12T19:38:56.741Z"
}

What to expect (field coverage)

EdgeProp is agent-entered data, so some fields appear only when the agent or EdgeProp published them. All prices are in SGD.

Field groupAlways presentPresent when published
Identity & pricelistingId, url, projectName, askingPrice, pricePsf, propertyTypeaskingPriceType
Size & bedsbedrooms, bathrooms, floorAreaSqft/SqmlandArea (landed)
Locationdistrict, marketSegment, streetName, postalCodesubzone, planningRegion
AttributestenureyearCompleted, strataStatus
Agent leadagentName, agentCeaRegNo, agencyName, agentPhone, agentProfileUrlagentPhotoUrl
InvestmentrentalYield, belowFairValuePct, salesVolume, rentalVolume
MediaimageCount, images, thumbnailUrlfloorplanCount, videoCount, hasVirtualTour

A blank field means it wasn't published for that listing — never that scraping failed. Nothing is dropped, so you always get the richest record available.

Market segment (CCR / RCR / OCR) is derived from the postal district using the common URA-based mapping; treat it as an approximate classification.

Monitor only new listings & price drops

Turn on monitorMode and the actor saves the asking price of every listing it has seen in a named key-value store (dedupStoreName), then on each later run emits only listings that are new or whose price changed — tagged with monitorStatus:

  • new — a listing not seen before.
  • price_drop — the asking price fell (with previousPrice).
  • price_increase — the asking price rose (with previousPrice).

The first run emits everything (and seeds the state); subsequent runs emit only the delta. Combined with a daily Schedule, you get a clean feed of just the new listings and price reductions for your search — perfect for buyer alerts, agent prospecting and BI ingestion.

  • Monitor mode is the actor's own dedupe layer — it complements, and does not conflict with, Apify Schedules (a cron trigger) or the Console Monitoring tab (charts & alerts). The Schedule triggers the run; monitor mode decides what's worth saving.
  • Use a distinct dedupStoreName per independent monitor so their states don't mix.
  • If you schedule frequent runs, enable the Schedule's exclusive option so a new run doesn't start before the previous one finishes writing its state.
  • Heads-up: a quiet run legitimately returns 0 items, which can trip a Console Monitoring "results lower than N" alert — expected behaviour, not an error.

Automate & schedule

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

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it daily to track a district, project or the whole market; pair with monitorMode for new-listing and price-drop alerts.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/edgeprop-singapore-scraper').call({
propertyTypes: ['condo'],
listingType: 'sale',
districts: ['9', '10', '11'],
monitorMode: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} new / price-changed 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 district lists a property or drops a price.
  • 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. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find 3-bedroom condos in District 15 under $2.5M and list the agents with their phone numbers" and let it run the scraper for you.

More scrapers from scrapesage

Build a complete Singapore property, lead-gen & market-intelligence stack:

Tips

  • Deep scrape for volume: keep deepScrape on to pull thousands of listings per category via price-band sharding. Turn it off (and/or set a small maxResults) for a quick, cheap top-20-per-category sample.
  • Agent prospecting: every listing already includes the agent's name, CEA reg no, agency and mobile — no enrichment step needed. Filter by district or price band to build a focused outreach list, and dedupe by agentCeaRegNo.
  • Investment screening: sort the dataset by pricePsf, rentalYield or belowFairValuePct to surface value.
  • Recurring monitoring: combine monitorMode with Schedules and a webhook to push new listings and price drops into your CRM the moment they appear.

FAQ

How do I scrape a specific district or price range? Use districts, minPrice/maxPrice and minBedrooms, or paste a filtered EdgeProp category URL into startUrls.

Does it need an EdgeProp API key or login? No. This actor reads EdgeProp's public structured listing data — no key, cookie or login required.

Where does the agent's phone number come from? From the listing's own public agent reference on EdgeProp. Every listing includes the agent's name, CEA registration number, agency and mobile number.

Why do I only get ~20 listings per category with deep scrape off? EdgeProp renders only the top ~20 recommended listings for a bare category URL. Turn deepScrape on and the actor slices each category into asking-price bands to capture thousands of unique listings.

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.

How do I monitor new listings or price drops automatically? Turn on monitorMode and create a Schedule. Each run outputs only new/changed listings, tagged with monitorStatus and previousPrice.

A field is empty — why? Some agents don't publish every field (e.g. year completed, rental yield). Fields are blank only when the data wasn't published — never because the scraper skipped them.

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

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.