Housing.com Scraper - Indian Property Listings
Pricing
from $5.00 / 1,000 property listing returneds
Housing.com Scraper - Indian Property Listings
Extract public Housing.com sale and rental listings, including INR prices, BHK, area, locality, RERA, seller and media, for Indian property research.
Pricing
from $5.00 / 1,000 property listing returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Housing.com Scraper - Indian Property Listings is an Apify Actor for public Housing.com search results and direct listing pages. It accepts Housing.com URLs as input, returns one validated public property record per dataset item, and preserves the fields that matter for property research: listing ID, canonical URL, title, price text, normalized INR price, BHK, area, locality, seller name, RERA badge, verified badge, highlights, images, description when available, source URL, and scrape time. The actor is usable through Apify MCP and is designed for Indian property research workflows built from public listing data.
Best fit and connected workflows
This Actor fits workflows that start from a public Housing.com search URL or listing page and need structured property data for comparison, monitoring, or export.
Good routing patterns include:
- Locality comparison workflows, where a search URL already contains the exact sale, rental, project, or resale filters you want to preserve.
- Inventory monitoring workflows, where the same public search URL is reused over time to track fresh listings and price changes.
- Proptech and analyst workflows, where fields such as BHK, area, price per sq ft, seller attribution, and RERA badges are needed in a table-ready dataset.
- AI-agent workflows, where concise or detailed records can be passed into downstream reasoning, matching, or enrichment steps.
Practical scenario
A property analyst named Priya has a public Housing.com search URL for a Mumbai locality and wants a short comparable set for review. She provides the URL in startUrls, sets maxResults to 10, and leaves includeDetails off for a concise run. The dataset returns each listing with fields like title, priceInr, bedrooms, areaSqft, location, sellerName, isRera, and isVerified. Priya uses those fields to shortlist listings, then opens the canonical url values for a manual review in her own process.
Input
The actor requires startUrls. Each entry should be a public Housing.com search, sale, rental, project, resale, or property URL. The actor accepts at most 10 URLs and follows only Housing.com pages.
| Field | Type | Purpose | Default |
|---|---|---|---|
startUrls | array | Public Housing.com search or listing URLs to scrape | Required |
maxResults | integer | Maximum validated listing records saved to the dataset and used as the event-charge cap | 25 |
maxPages | integer | Maximum pages to process per search URL | 1 |
includeDetails | boolean | Include the public description shown in Google's indexed Housing.com result | false |
responseFormat | string | Choose concise or detailed records | concise |
proxyCountry | string | Legacy proxy-country setting retained for compatibility | SG |
Valid focused input example
{"startUrls": [{"url": "https://housing.com/in/buy/mumbai/mira-road-east-mira-bhayandar-gid/"}],"maxResults": 10,"maxPages": 1,"includeDetails": false,"responseFormat": "concise","proxyCountry": "IN"}
Output
Each dataset item is one validated public Housing.com listing. Required fields are id, url, sourceUrl, and scrapedAt. Other fields are populated when Housing.com shows them in public listing cards, indexed results, or supported detail enrichment.
| Field | Type | Meaning |
|---|---|---|
id | string | Stable public Housing.com listing identifier |
url | string | Canonical public Housing.com listing URL |
title | string or null | Public listing heading |
projectName | string or null | Public project or building name |
listingType | string or null | Public tag such as New Booking or Resale |
propertyType | string or null | Property category inferred from the public title |
priceText | string or null | Original public INR price text |
priceInr | number or null | First normalized INR value shown in the price |
priceMaxInr | number or null | Second normalized INR value when a range is shown |
averagePriceText | string or null | Public average-price label |
averagePricePerSqft | number or null | Public average price per square foot when shown |
bedrooms | number or null | Bedroom or BHK count parsed from the title |
areaSqft | number or null | Advertised built-up area in square feet |
areaText | string or null | Original public built-up area text |
possessionStatus | string or null | Public possession or construction status |
location | string or null | Locality label parsed from the public listing title |
city | string or null | Trailing city or area segment from the public location label |
sellerName | string or null | Public seller, broker, or developer name |
sellerType | string or null | Developer when that badge is shown; otherwise null |
isRera | boolean | Whether the public card displays a RERA badge |
isVerified | boolean | Whether the public card displays a verified label |
highlights | array | Public property highlights |
imageUrls | array | Public image URLs from the listing card or detail page |
description | string or null | Public listing description when detail enrichment is enabled |
detailFetched | boolean | Whether the record was enriched from its public detail page |
sourceUrl | string | Search or direct listing URL used to collect the record |
scrapedAt | string | ISO 8601 time when the listing was normalized |
Illustrative output record
{"id": "19388476","url": "https://housing.com/in/buy/resale/page/19388476-2-bhk-apartment","title": "2 BHK Flat in Kashimira, Mira Road East","projectName": "JP North Barcelona Wing D","listingType": "Resale","propertyType": "Apartment","priceText": "Rs. 1.1 Cr","priceInr": 11000000,"priceMaxInr": null,"averagePriceText": null,"averagePricePerSqft": 10880,"bedrooms": 2,"areaSqft": 1010,"areaText": "1010 sq.ft.","possessionStatus": null,"location": "Kashimira, Mira Road East","city": "Mira Road East","sellerName": "AS Realty","sellerType": null,"isRera": true,"isVerified": true,"highlights": ["2 BHK","1010 sq.ft."],"imageUrls": [],"description": null,"detailFetched": false,"sourceUrl": "https://housing.com/in/buy/mumbai/mira-road-east-mira-bhayandar-gid/","scrapedAt": "2026-07-27T00:00:00.000Z"}
How it works
This Actor discovers public Housing.com listing data through Google's live search index and normalizes the public fields into a dataset record. The current build uses Apify's Google SERP proxy for discovery by the supplied public URL. The includeDetails option adds the public description shown in Google's indexed Housing.com result. The actor returns one validated listing per dataset item and writes terminal state data to the key-value store as OUTPUT and RUN_SUMMARY.
Pricing
This Actor uses Pay per event plus Apify platform usage.
The event model is straightforward:
- one actor start event when the run begins
- one property listing returned event for each validated listing saved to the default dataset
A run that returns ten listings charges the start event once and the listing event ten times. For current event pricing and platform usage details, check the live Pricing tab in Apify. maxResults is the practical event-charge cap for the run.
Use with AI agents (MCP)
This Actor can be called by AI agents through Apify MCP as a structured tool for public Housing.com listing extraction. The tool returns normalized listing records that an agent can interpret for comparison, clustering, or downstream enrichment.
Actor identity: khadinakbar/housing-com-scraper
Please extract public Housing.com listings from this search URL, return the core comparison fields, and keep the provenance fields so I can trace each record back to the source page.
Output interpretation:
idandurlidentify the listing in Housing.com terms.priceInr,bedrooms,areaSqft, andaveragePricePerSqftsupport comparison and ranking.sellerName,isRera, andisVerifiedcapture visible public signals.sourceUrlshows the search or direct page that produced the record.scrapedAtmarks the normalization time.
Provenance and scope:
- Records are built from public Housing.com pages and Google's indexed Housing.com results.
detailFetchedindicates whether the public indexed description was added.- The actor keeps listing collection centered on public property data and preserves the source URL for traceability.
Pagination and cost guidance:
maxPagesbounds search pagination per supplied URL.maxResultscaps persisted listings and the event charge exposure.- A focused input with one URL and a small
maxResultsvalue is a practical starting point for agent-driven runs.
API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/housing-com-scraper').call({startUrls: [{url: 'https://housing.com/in/buy/mumbai/mira-road-east-mira-bhayandar-gid/'}],maxResults: 10,maxPages: 1,includeDetails: false,responseFormat: 'concise'});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);for (const item of dataset.items) {console.log(item.title, item.priceInr);}
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/housing-com-scraper").call(run_input={"startUrls": [{"url": "https://housing.com/in/buy/mumbai/mira-road-east-mira-bhayandar-gid/"}],"maxResults": 10,"maxPages": 1,"includeDetails": False,"responseFormat": "concise"})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(items)for item in items:print(item.get("title"), item.get("priceInr"))
Best results and outcome guidance
Start with the exact public Housing.com URL that already contains the filters you need. That preserves the site's own search context in the output. Use maxResults to size the dataset for review or billing control, and use maxPages to bound search pagination. For comparison workflows, concise records keep the core market fields in a compact shape. For AI workflows that benefit from additional public text, detailed adds the indexed description when available. When a direct listing page is your source, expect a single record tied to that page's public identifier and URL.
Continue the workflow
- Then use Idealista Scraper — Spain, Italy & Portugal Property Listings to extend Housing.com Scraper - Indian Property Listings with a neighboring property research source when the brief calls for Idealista data.
- Then use Funda.nl Scraper — Authorized Dutch Property Data API to extend Housing.com Scraper - Indian Property Listings with a neighboring property research source when the brief calls for Funda data.
Design note
I found that the dataset contract always requires id, url, sourceUrl, and scrapedAt, which makes provenance and traceability part of every saved listing.
FAQ
Can I send a Housing.com search URL with my exact filters?
Yes. This Actor is built around public Housing.com search or listing URLs, so the site's own filters remain part of the input context.
Does one dataset row correspond to one listing?
Yes. The output contract states that the actor returns one validated public Housing.com listing per dataset item.
Which fields are most useful for comparison work?
priceInr, priceMaxInr, bedrooms, areaSqft, averagePricePerSqft, location, sellerName, isRera, and isVerified are the main comparison fields in the dataset view.
How should I route an agent workflow around this Actor?
Use this Actor first for public Housing.com listing extraction, then pass the dataset into your own comparison, scoring, or enrichment step.
How do I keep runs bounded?
Set maxResults for the number of records and maxPages for search pagination per URL.
Responsible use
This Actor collects public Housing.com listing data for research and workflow automation. Use the output in line with applicable laws, platform rules, and your own compliance obligations. Treat the data as public listing information at scrape time, with provenance anchored by sourceUrl and scrapedAt.