Housing.com $0.7💰 avatar

Housing.com $0.7💰

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Housing.com $0.7💰

Housing.com $0.7💰

From $0.7/1K. Scrape residential property listings from housing.com. Supports buy and rent across 750+ cities.

Pricing

from $0.70 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

33

Total users

10

Monthly active users

6 days ago

Last modified

Share

Housing.com India Property Scraper

Scrape residential property listings from housing.com, India's leading property platform. Supports buy and rent across 750+ cities.

Features

  • 750+ Indian cities - Mumbai, Delhi, Bangalore, Pune, Chennai, Kolkata, and more
  • Buy & Rent - new projects, resale, and rental listings
  • Rich data - BHK configurations with individual pricing, coordinates, amenities, images, seller info, RERA tags, EMI
  • Post-filters - filter by BHK, price range, and property type (client-side)
  • City aliases - "Delhi", "Bangalore", "Bombay", "Calcutta", "Madras" all resolve correctly
  • Fast & cheap - ~700-1000 listings/min

Quick Start

Buy properties in Mumbai

{
"mode": "search",
"service": "buy",
"city": "Mumbai",
"max_properties": 30
}

3 BHK apartments in Andheri West under 5 Cr

{
"mode": "search",
"service": "buy",
"city": "Mumbai",
"locality": "andheri_west",
"min_bhk": 3,
"max_bhk": 3,
"max_price": 50000000,
"max_properties": 50
}

Rentals in Bangalore Koramangala

{
"mode": "search",
"service": "rent",
"city": "Bangalore",
"locality": "koramangala",
"max_properties": 30
}

2-3 BHK in Delhi Dwarka

{
"mode": "search",
"service": "buy",
"city": "Delhi",
"locality": "dwarka",
"min_bhk": 2,
"max_bhk": 3,
"max_properties": 100,
"max_pages": 5
}

Daily monitoring of a search (incremental mode)

{
"mode": "search",
"service": "buy",
"city": "Mumbai",
"locality": "andheri_west",
"max_properties": 200,
"incrementalMode": true,
"emitExpired": true
}

Schedule this to run daily. The first run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED/EXPIRED properties.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (build query from city/locality)
servicestringbuybuy or rent
citystringMumbaiCity name. Aliases supported: Delhi, Bangalore, Bombay, Calcutta, Madras, Gurugram
localitystring-Locality within city (e.g. andheri_west, bandra_west, koramangala). Leave empty for entire city
min_priceinteger-Minimum price in INR (post-filter). Buy: e.g. 5000000 = 50L. Rent: e.g. 30000
max_priceinteger-Maximum price in INR (post-filter)
min_bhknumber-Minimum BHK, e.g. 2 (post-filter)
max_bhknumber-Maximum BHK, e.g. 3 (post-filter)
property_typestring-project, resale, or rent (post-filter)
max_propertiesinteger30Max properties to scrape (0=unlimited). Counts properties that passed the filters above (same properties push_data would emit with Incremental mode off) — in Incremental mode a subset of that count may still be suppressed as UNCHANGED rather than actually pushed/billed.
max_pagesinteger5Max pages (30 listings/page)
resumeFromRunIdstring-Paste a previous run ID or dataset ID to continue a large pull without returning or charging for properties already collected there. See Resume & recurring updates below.
incrementalModebooleanfalseTurn on for daily/recurring monitoring of the same search — see Resume & recurring updates below.
stateKeystring-Optional. Name a monitoring campaign, or share state across differently-configured runs. Incremental mode only.
emitUnchangedbooleanfalseAlso return (and bill) properties unchanged since the last run. Incremental mode only.
emitExpiredbooleanfalseAlso return (and bill) properties no longer found, once a run fully scanned the tracked search. Incremental mode only.
proxyobject-Optional proxy configuration

Resume & recurring updates

Two distinct features:

  • Resume (resumeFromRunId) continues one interrupted pull. Paste a previous run ID or dataset ID and this run skips every listingId already collected there — no re-scraping, no re-billing.
  • Incremental mode (incrementalMode) is for scheduling this actor daily/weekly against the same city/locality/service (or URL set) and filters, and getting only what changed. The actor remembers its own state in a key-value store — no run ID to paste.
    • The first run returns every matching property as NEW.
    • Later runs return NEW, UPDATED, and REAPPEARED properties by default. UNCHANGED properties are suppressed (not returned, not billed) unless emitUnchanged is on.
    • EXPIRED properties (tracked previously, no longer found) are only ever produced when emitExpired is on and the run fully scanned the tracked search to its natural end — not when max_properties/max_pages capped it, and not when resumeFromRunId was used, since a partial scan cannot tell "gone" from "not reached yet".
    • State is tracked per city/locality/service (or URL set) + every post-filter (min_price, max_price, min_bhk, max_bhk, property_type) — max_properties/max_pages are caps, not part of the tracked scope, so raising them never starts a new monitoring campaign. Set stateKey to name a campaign explicitly or to deliberately share state across differently-configured runs.
    • Each returned property gets changeType, changedFields, firstSeenAt, lastSeenAt. These four fields are absent entirely when incrementalMode is off — the default output shape is unchanged.
    • UPDATED means the property's own listed details changed (price, title, area, amenities, images, ...). It ignores scraped_at, which is just a timestamp of when this actor happened to fetch the page — that field always differs run to run and is excluded from comparison for that reason alone, not because housing.com's own data is unreliable. scraped_at still appears with its live, current value on every returned row.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape — the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record — not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output Fields

FieldTypeDescription
listingIdstringUnique listing ID
titlestringProperty or project name
subtitlestringBHK summary (e.g. "2, 3 BHK Flats")
addressstringLocality and city
propertyTypestringproject, resale, or rent
price_displaystringFormatted price (e.g. "₹9.8 Cr")
price_valuesarrayRaw price in INR [min, max]
currencystringAlways "INR"
area_valuenumberBuilt-up area
area_unitstringArea unit (sq.ft)
latitudenumberProperty latitude
longitudenumberProperty longitude
featuresarrayConfigurations, possession date, avg price
bhk_configsarrayIndividual BHK options with pricing
amenitiesarraySociety amenities
sellersarraySeller/agent names
seller_firmsarrayAgency/firm names
highlightsarrayProperty highlights (parking, gym, etc.)
emistringEstimated monthly EMI
tagsarrayTags (e.g. rera_verified)
imagesarrayImage URLs (up to 15)
image_countintegerTotal images available
urlstringFull URL on housing.com
changeTypestringIncremental mode only: NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED vs. the previous run for this state key. Absent when Incremental mode is off.
changedFieldsarrayIncremental mode only: field names that changed since the previous run. Never includes scraped_at (see Resume & recurring updates above).
firstSeenAtstringIncremental mode only: ISO timestamp this property was first seen under this state key.
lastSeenAtstringIncremental mode only: ISO timestamp this property was last seen present under this state key.