Housing.com Scraper - Buy & Rent Property Listings avatar

Housing.com Scraper - Buy & Rent Property Listings

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Housing.com Scraper - Buy & Rent Property Listings

Housing.com Scraper - Buy & Rent Property Listings

From $0.70/1K. Scrape residential property listings from Housing.com across 750+ cities. Extract structured data for properties available to buy or rent, including prices, locations, property details, and more.

Pricing

from $0.70 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

60

Total users

8

Monthly active users

8 days ago

Last modified

Share

Housing.com Scraper: India Property Listings, Prices & BHK Configurations

Housing.com Scraper turns Housing.com into structured property data across 750+ Indian cities. Search by city and locality, or paste Housing.com search links, to get price, BHK configurations, area, coordinates, amenities, images, seller details, EMI estimates and RERA tags for buy and rent listings. Run it once for a snapshot, or schedule it to track only new and changed listings, then export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Two ways to find listings. Build a search from city, locality and service, or paste Housing.com search URLs directly.
  • 750+ Indian cities, with common aliases resolved automatically (Bangalore/Bengaluru, Bombay/Mumbai, Calcutta/Kolkata, Madras/Chennai, Gurgaon/Gurugram).
  • Rich property data. Price, individual BHK configurations with their own pricing and area, coordinates, amenities, images, seller and agency names, EMI estimates and tags such as RERA verification.
  • Buy and rent, new projects and resale, all through the same scraper.
  • Post-search filters for price range, BHK count and property type, so the dataset only contains what matches.
  • Built for schedules. Incremental mode returns only new and changed listings on recurring runs, and a run that stalls before completing fails loudly instead of returning an empty dataset.
  • Resume an interrupted pull without paying to recollect properties you already have.

Use Cases

  • Real estate investors and analysts: track prices per locality over time to spot undervalued areas or fast-moving markets.
  • Property portals and aggregators: enrich or cross-list Housing.com inventory inside your own site or app.
  • Agents and brokers: monitor competing listings, new projects and price changes in your service area.
  • Home buyers and renters: build a structured shortlist across multiple localities and cities instead of browsing page by page.
  • Market researchers: build historical datasets of listings, EMI estimates and amenities for analysis.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
listingId"P123ab4567cd"
title"Sunrise Heights"
subtitle"2, 3 BHK Flats"
address"Andheri West, Mumbai"
propertyType"resale" (also "project", "rent")
price_display"Rs 1.85 Cr"
price_values[16500000, 21000000]
currency"INR"
area_value / area_unit950 / "sq.ft"
latitude / longitude19.1197 / 72.8468
features["2, 3 BHK", "Possession: Dec 2026", "Avg. Price: Rs 19,500/sq.ft"]
bhk_configsindividual BHK options, each with its own price_display, area and label
amenities["Swimming Pool", "Gym", "Power Backup"]
sellers / seller_firms["Anita Sharma"] / ["Sharma Realty"]
highlights["Covered Parking", "24x7 Security"]
emi"Rs 1,28,450/mo"
tags["rera_verified"]
images / image_countup to 15 image URLs / 12
urlfull listing URL on Housing.com
scraped_at"2026-09-28T05:12:33"
changeType / changedFieldsincremental mode only: "UPDATED" / ["price_display"]
firstSeenAt / lastSeenAtincremental mode only: ISO timestamps for this state key

How to Use

  1. Pick a mode: search (build a query from city, locality and service) or url (paste Housing.com search links).
  2. Fill in the fields for that mode, and set any price, BHK or property type filters you want.
  3. Set Max Properties and Max Pages to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Buy properties in Mumbai:

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

3 BHK apartments in Andheri West under a price cap:

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

Paste a Housing.com search link:

{
"mode": "url",
"urls": ["https://housing.com/in/rent/bangalore/koramangala"]
}

Daily monitoring of a search (incremental mode):

{
"mode": "search",
"service": "rent",
"city": "Bangalore",
"locality": "koramangala",
"max_properties": 200,
"incrementalMode": true,
"emitExpired": true
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/housing-com-scraper").call(run_input={"mode": "search", "service": "buy", "city": "Mumbai", "max_properties": 30})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price_display"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/housing-com-scraper').call({ mode: 'search', service: 'buy', city: 'Mumbai', max_properties: 30 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Filters and Max Properties

min_price, max_price, min_bhk, max_bhk and property_type are post-filters: the actor fetches full pages of results from Housing.com first, then keeps only the properties that match. max_properties counts properties that passed those filters, not raw pages fetched, so a narrow filter combined with a low max_pages can return fewer properties than max_properties asks for simply because the scan ran out of pages to filter from. Raise max_pages to give it more to filter from.

Resume and recurring updates

Two distinct features:

  • Resume (resumeFromRunId) continues one interrupted pull. Paste a previous run ID or dataset ID to pick up where it left off.
  • Incremental mode (incrementalMode) is for scheduling this actor daily or weekly against the same city/locality/service (or URL set) and filters, and getting only what changed. 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 produced when emitExpired is on and the run fully scanned the tracked search to its natural end, not when max_properties or max_pages capped it, and not when resumeFromRunId was used. stateKey names a monitoring campaign explicitly, or shares state across differently configured runs.

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.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch builds a query from city, locality and service; url extracts listings from Housing.com search URLs you paste.
urlsarray(none)Housing.com search URLs. Used only in url mode.
servicestringbuybuy or rent. Used only in search mode.
citystringMumbaiCity name (e.g. Mumbai, Delhi, Bangalore, Pune). Used only in search mode.
localitystring(none)Locality within the city (e.g. andheri_west, bandra_west). Leave empty for the entire city. Used only in search mode.
min_priceinteger(none)Minimum price in INR. Post-filter, applied after fetching results.
max_priceinteger(none)Maximum price in INR. Post-filter, applied after fetching results.
min_bhknumber(none)Minimum BHK, 1 to 6. Post-filter.
max_bhknumber(none)Maximum BHK, 1 to 6. Post-filter.
property_typestring(none)project, resale, or rent. Post-filter.
max_propertiesinteger30Maximum number of properties to scrape. 0 means unlimited.
max_pagesinteger1000Maximum number of result pages to fetch, 30 listings per page.
dataset_namestring(none)Custom dataset name. Leave empty for the default dataset.
clear_datasetbooleanfalseClear the dataset before scraping.
resumeFromRunIdstring(none)Paste a previous run ID or dataset ID to continue an interrupted pull, picking up where it left off.
incrementalModebooleanfalseTurn on for daily or recurring monitoring of the same search. Later runs return only new, updated and reappeared properties.
stateKeystring(none)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 scans the tracked search. Incremental mode only.
proxyobject(none)Optional proxy configuration. The scraper works without one.
mcpConnectorsarray(none)Optional: send a summary of each property to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which property pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"listingId": "P123ab4567cd",
"title": "Sunrise Heights",
"subtitle": "2, 3 BHK Flats",
"address": "Andheri West, Mumbai",
"propertyType": "resale",
"price_display": "Rs 1.85 Cr",
"price_values": [16500000, 21000000],
"currency": "INR",
"area_value": 950,
"area_unit": "sq.ft",
"latitude": 19.1197,
"longitude": 72.8468,
"features": ["2, 3 BHK", "Possession: Dec 2026", "Avg. Price: Rs 19,500/sq.ft"],
"bhk_configs": [
{ "id": "cfg1", "price_display": "Rs 1.65 Cr", "area": "750 sq.ft", "label": "2 BHK" },
{ "id": "cfg2", "price_display": "Rs 2.1 Cr", "area": "950 sq.ft", "label": "3 BHK" }
],
"amenities": ["Swimming Pool", "Gym", "Power Backup", "Covered Parking"],
"sellers": ["Anita Sharma"],
"seller_firms": ["Sharma Realty"],
"highlights": ["Covered Parking", "24x7 Security"],
"emi": "Rs 1,28,450/mo",
"tags": ["rera_verified"],
"images": ["https://img.housingcdn.com/sample1.jpg", "https://img.housingcdn.com/sample2.jpg"],
"image_count": 12,
"url": "https://housing.com/in/buy/resale/mumbai/andheri-west/sunrise-heights-p123ab4567cd",
"scraped_at": "2026-09-28T05:12:33.123456"
}

Plan Requirement

The scraper works without any proxy configured by default. For larger runs across many cities, or frequent incremental monitoring, add proxy configuration under Connection for more headroom.

FAQ

How much does it cost?

You pay per property returned. The Pricing tab on the actor page shows the current rates. Use Max Properties to cap the cost of any run.

This actor collects only publicly available property listings. You are responsible for how you use the data: follow Housing.com's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Seller and agent contact details may be personal data in some jurisdictions, handle them accordingly.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. The first scheduled run returns every matching property as NEW; later runs return only NEW, UPDATED and REAPPEARED properties, and unchanged ones are not billed unless you turn on emitUnchanged.

Why did I get fewer properties than Max Properties?

min_price, max_price, min_bhk, max_bhk and property_type are post-filters: the actor fetches full pages of results from Housing.com first, then keeps only the properties that match. If your filters are narrow, raise Max Pages so the actor has more listings to filter from; a low page cap can run out of pages before reaching your target count.

Why did my run fail instead of returning an empty dataset?

If a search stops before reaching Housing.com's own end of results, and nothing was collected, the run fails with a clear message instead of finishing as an empty success. Run it again in a few minutes. A search that genuinely has no matching properties, or whose results were all excluded by your filters, still finishes successfully with an empty or partial dataset.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more real estate data?

Pair this actor with these related scrapers from the same team:

🏠 Rightmove
From $1/1K. Fast, reliable Rightmove.co.uk scraper for sale, rent, and sold-price...
🏨 Hipflat Scraper [
Scrape hipflat.co.th property listings and new-project data across Thailand: price, price...
🏠 SeLoger Scraper
Scrape SeLoger.com properties for sale and rent. Search by location with price, room and...
🏠 Jitty UK AI Property Scraper
Scrape residential property listings from jitty.com, extract properties across the UK...
🏠 PropertyGuru SG Scraper
From $0.80/1K. Scrape PropertyGuru.com.sg sale and rental listings with 30+ structured...
🏠 Apartments.com Scraper
From $1.50/1K. Scrape Apartments.com rentals by city, ZIP, neighborhood, address or URL...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.