Housing.com Scraper - Indian Property Listings avatar

Housing.com Scraper - Indian Property Listings

Pricing

from $5.00 / 1,000 property listing returneds

Go to Apify Store
Housing.com Scraper - Indian Property Listings

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

1

Monthly active users

9 days ago

Last modified

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.

FieldTypePurposeDefault
startUrlsarrayPublic Housing.com search or listing URLs to scrapeRequired
maxResultsintegerMaximum validated listing records saved to the dataset and used as the event-charge cap25
maxPagesintegerMaximum pages to process per search URL1
includeDetailsbooleanInclude the public description shown in Google's indexed Housing.com resultfalse
responseFormatstringChoose concise or detailed recordsconcise
proxyCountrystringLegacy proxy-country setting retained for compatibilitySG

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.

FieldTypeMeaning
idstringStable public Housing.com listing identifier
urlstringCanonical public Housing.com listing URL
titlestring or nullPublic listing heading
projectNamestring or nullPublic project or building name
listingTypestring or nullPublic tag such as New Booking or Resale
propertyTypestring or nullProperty category inferred from the public title
priceTextstring or nullOriginal public INR price text
priceInrnumber or nullFirst normalized INR value shown in the price
priceMaxInrnumber or nullSecond normalized INR value when a range is shown
averagePriceTextstring or nullPublic average-price label
averagePricePerSqftnumber or nullPublic average price per square foot when shown
bedroomsnumber or nullBedroom or BHK count parsed from the title
areaSqftnumber or nullAdvertised built-up area in square feet
areaTextstring or nullOriginal public built-up area text
possessionStatusstring or nullPublic possession or construction status
locationstring or nullLocality label parsed from the public listing title
citystring or nullTrailing city or area segment from the public location label
sellerNamestring or nullPublic seller, broker, or developer name
sellerTypestring or nullDeveloper when that badge is shown; otherwise null
isRerabooleanWhether the public card displays a RERA badge
isVerifiedbooleanWhether the public card displays a verified label
highlightsarrayPublic property highlights
imageUrlsarrayPublic image URLs from the listing card or detail page
descriptionstring or nullPublic listing description when detail enrichment is enabled
detailFetchedbooleanWhether the record was enriched from its public detail page
sourceUrlstringSearch or direct listing URL used to collect the record
scrapedAtstringISO 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:

  • id and url identify the listing in Housing.com terms.
  • priceInr, bedrooms, areaSqft, and averagePricePerSqft support comparison and ranking.
  • sellerName, isRera, and isVerified capture visible public signals.
  • sourceUrl shows the search or direct page that produced the record.
  • scrapedAt marks the normalization time.

Provenance and scope:

  • Records are built from public Housing.com pages and Google's indexed Housing.com results.
  • detailFetched indicates 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:

  • maxPages bounds search pagination per supplied URL.
  • maxResults caps persisted listings and the event charge exposure.
  • A focused input with one URL and a small maxResults value 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 os
from apify_client import ApifyClient
client = 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

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.