# Housing.com Property Scraper - India Buy, Rent, PG & Commercial (`sian.agency/housing-com-property-scraper`) Actor

Scrape Housing.com listings in any Indian city: exact rupee price, carpet and built-up area, deposit, brokerage, lock-in, GPS, PG beds and the posting agent.

- **URL**: https://apify.com/sian.agency/housing-com-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.06 / 1,000 property searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Housing.com Property Scraper - India Buy, Rent, PG & Commercial 🏠

[![Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store](https://img.shields.io/badge/Store-MagicBricks%20Property-1AE392)](https://apify.com/sian.agency/magicbricks-property-scraper?fpr=sian) [![Store](https://img.shields.io/badge/Store-99.co%20Singapore-1AE392)](https://apify.com/sian.agency/99co-property-scraper?fpr=sian) [![Store](https://img.shields.io/badge/Store-Property%20Finder%20UAE-1AE392)](https://apify.com/sian.agency/propertyfinder-property-scraper?fpr=sian)

#### 🎉 The whole rent bill, not the headline rent. 115 columns per listing, from $1.20 per 1,000

##### For analysts, brokers, relocation teams and co-living operators working Indian sale, rental, paying-guest and commercial stock

***

### 🔎 What is the Housing.com Property Scraper — and when should you use it?

The **Housing.com Property Scraper** turns any Housing.com search across India's five property markets into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** asking prices in exact rupees, with a price per square foot derived from built-up area and carpet area as its own separate column. Rent rows carry the whole cost of the tenancy rather than just the rent: the security deposit in rupees and how many months it equals, the brokerage, the monthly maintenance or the note that it is included, the lock-in period and the total move-in figure. Paying-guest rows price per bed and say who the property takes. Commercial rows add the expected annual return, whether the title is freehold or leasehold, and the location hub. Every row also carries bedrooms, bathrooms, balconies, parking, floor out of total floors, facing, furnishing, age and possession. So do GPS coordinates, the seven-level locality hierarchy with stable ids, the posting agent with their firm and masked number, and how many listings the whole search holds.

**Use something else when:** the property is outside India. Use [Property Finder Scraper](https://apify.com/sian.agency/propertyfinder-property-scraper?fpr=sian) for the UAE, Saudi Arabia and Qatar. Use [99.co Property Scraper](https://apify.com/sian.agency/99co-property-scraper?fpr=sian) for Singapore. Use [Smart Idealista Scraper](https://apify.com/sian.agency/smart-idealista-scraper?fpr=sian) for Spain, Italy and Portugal. For the same Indian cities read off a second portal, use [MagicBricks Property Scraper](https://apify.com/sian.agency/magicbricks-property-scraper?fpr=sian); running both and comparing the overlap is often the point. This actor reads live Housing.com listings only. The site masks the poster's number on the page itself, so a row carries the name, firm, badge, profile link and a partial number such as 98708...., never a full one. Budget and area bands are not fields, because Housing.com publishes its filters one page at a time and a budget band is not one of them; build that search on the site and paste the result URL into `searchUrls` instead.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/housing-com-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want to research the Indian property market, including its rental cost structure and its paying-guest supply using the Apify Actor `sian.agency/housing-com-property-scraper`.

Use it when I need: asking prices in exact rupees, with a price per square foot derived from built-up area and carpet area as its own separate column. Rent rows carry the whole cost of the tenancy rather than just the rent: the security deposit in rupees and how many months it equals, the brokerage, the monthly maintenance or the note that it is included, the lock-in period and the total move-in figure. Paying-guest rows price per bed and say who the property takes. Commercial rows add the expected annual return, whether the title is freehold or leasehold, and the location hub. Every row also carries bedrooms, bathrooms, balconies, parking, floor out of total floors, facing, furnishing, age and possession. So do GPS coordinates, the seven-level locality hierarchy with stable ids, the posting agent with their firm and masked number, and how many listings the whole search holds.

Don't use it when: the property is outside India — use propertyfinder-property-scraper or 99co-property-scraper or smart-idealista-scraper instead.

How to call it: give `cities` a list of Indian cities the way Housing.com writes them (`Mumbai`, `Delhi`, `Bangalore`, `Pune`, `Hyderabad`, `Chennai`, `Kolkata`), tier-2 towns included. Then set `market` to `buy`, `rent`, `paying-guest`, `commercial-buy` or `commercial-rent`. Narrow with `propertyType` (ten values from `flats` to `plots` and `agricultural-land`), `bedrooms` (`1rk` through `4`) or `refine` (eleven values from `resale` to `owner-listings`). Housing.com publishes one filter at a time, so a BHK and a `refine` value cannot be combined - the run says so and names what is available rather than dropping one silently. On a sale search set `refine` to `resale`, or the first page comes back as new-launch project adverts carrying a price range rather than individual listings. `includeDetails` opens each listing's own page and adds the site's own fair-price band for the unit, the locality's average rate per square foot, the full amenity matrix, the nearby landmarks and the written description, at one extra request and one extra charge per listing..

Start with this input:
{
  "operation": "search",
  "cities": [
    "Bangalore"
  ],
  "market": "rent",
  "bedrooms": "2",
  "maxResults": 120
}

Ask me which cities they want, which of the five markets they mean, and whether they need the rental cost stack or just the asking price, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull 2 BHK rentals in Bangalore and Pune and rank them by total move-in cost - rent plus deposit plus brokerage - rather than by rent.*
- *Map paying-guest supply in Bangalore: price per bed, sharing type and who each property takes, then group by locality.*
- *Find resale flats in Mumbai over 1,500 sqft, then open each property page and flag the ones asking below Housing.com's own fair-price estimate.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/housing-com-property-scraper.md](https://apify.com/sian.agency/housing-com-property-scraper.md).

### 📋 Overview

**Indian property data with the money columns attached.** This Actor reads any city search on housing.com and hands back flat rows. Analysts use it for comparables, brokers to find inventory, relocation and co-living teams to budget a tenancy properly.

**Why thousands of professionals choose us:**

- ✅ **The rent cost stack, in full**: deposit in rupees and in months, brokerage in rupees and in months, maintenance, lock-in and the total move-in figure. Fifteen actors on the Store are specific to Housing.com. None carries maintenance, lock-in, move-in total or brokerage as an amount, and one carries the deposit.
- 🛏️ **Paying guest and co-living as a first-class market**: priced per bed, with the sharing arrangement and whether the listing takes women, men or both. No other Housing.com dataset covers this market at all.
- 📊 **The whole market on every row**: `marketTotalListings` tells you the search holds 61,127 Mumbai sale listings; `marketResaleCount` and `marketNewProjectCount` split that 37,175 resale to 23,952 new-launch. Pull 50 rows and you still have the supply-side number.
- 💰 **$1.20 per 1,000 listings**: Housing.com actors on the Store run from $0.80 to $9.00 per 1,000. This one sits with the cheap cluster and carries the field set the expensive cluster does not.
- 📐 **An area column you can divide by**: built-up area is a number with its unit kept in `areaUnitAsReported`, and price divided by it reproduced the site's own published rate on all 110 rows measured. Carpet area is a separate column.
- ✨ **NEW**: full property pages add Housing.com's own fair-price band for the unit and the locality's average rate per square foot, which turns a listing dump into a valuation input.

***

### ✨ Features

- 🏙️ **Any Indian city**: Mumbai, Delhi, Bangalore, Pune, Hyderabad, Chennai, Kolkata, Noida, Gurgaon and Thane, down to tier-2 and tier-3 towns like Ahmednagar, Bardoli and Zirakpur. The city index runs past 900 entries.
- 🏷️ **Five markets**: for sale, for rent, paying guest and shared, commercial for sale, commercial for rent.
- 🔁 **Resale or new launch, your choice**: set the extra filter to resale for individual listings, or to new projects for developer inventory. Both are labelled in `saleTag` and `recordType`.
- 💸 **Rent economics**: `depositInr`, `depositDuration`, `brokerageInr`, `brokerageDuration`, `maintenanceInr`, `lockInPeriodMonths` and `totalMoveInText` on every rental row.
- 🏢 **Commercial economics**: `annualReturn`, `ownershipType` (freehold or leasehold), `locationHub` and `constructionStatus`.
- 📈 **Demand and trust signals**: `demandSignal` carries lines such as "168 people viewed in last 24 hours", alongside `satisfactionScore`, `isAuctionFlat`, `isLocalityChampion`, `isCertifiedProAgent` and `verificationStatus`.
- 📍 **Location to seven levels**: `sublocality`, `locality`, `housingRegion`, `city`, `metroRegion` and `state`, with `latitude` and `longitude` and stable ids for locality and city.
- 🧑‍💼 **Poster profile**: name, firm, type, designation, badge, profile URL and the masked number Housing.com shows.
- 📄 **Optional full pages**: fair-price band, locality average rate, price-trends link, flat and society amenity lists, nearby schools, hospitals and metro stations with distances, and the written description.
- 🔗 **Paste your own search**: build any filter combination on the site and hand the URL over.
- 📊 **Export anywhere**: JSON, CSV or Excel, straight from the dataset.

***

### 🎬 Quick Start

Pick a city, pick a market, press run. On a sale search set the extra filter to resale first. The first page returns in a few seconds and the run keeps paging until it hits your row limit.

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~housing-com-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"cities": ["Mumbai"], "market": "buy", "refine": "resale", "maxResults": 60}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Name your cities

Write them the way Housing.com does: Bangalore rather than Bengaluru, Delhi rather than New Delhi. Add as many as you like; each one runs as its own search.

#### Step 2: Pick the market

For sale, for rent, paying guest, commercial for sale or commercial for rent. On a sale search, set the extra filter to resale unless you actually want new-launch project adverts.

#### Step 3: Set a row limit and run

Leave everything else alone. Turn on full property pages when you want the fair-price band and the locality rate.

**That's it! In under a minute, you'll have:**

- Live listings with prices, both area figures, BHK, floor and coordinates
- The deposit, brokerage, maintenance and lock-in on every rental row
- The size of the whole market that search sits in, stamped on each row

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` (default) or `detail` |
| `cities` | array | No | Indian cities to search, e.g. Mumbai, Bangalore, Pune |
| `market` | string | No | `buy`, `rent`, `paying-guest`, `commercial-buy` or `commercial-rent` |
| `propertyType` | string | No | `any`, `flats`, `independent-house`, `villa`, `builder-floor`, `penthouse`, `studio-apartment`, `duplex`, `plots`, `agricultural-land` |
| `bedrooms` | string | No | `any`, `1rk`, `1`, `2`, `3` or `4` |
| `refine` | string | No | One extra filter: `resale`, `new-projects`, `ready-to-move`, `under-construction`, `rera-certified`, `no-brokerage`, `gated-community`, `furnished`, `semi-furnished`, `unfurnished`, `owner-listings` |
| `maxResults` | integer | No | Stop after this many listings across all cities |
| `includeDetails` | boolean | No | Open each property page for the fair-price band, locality rate, amenities and landmarks |
| `propertyUrls` | array | No | Property URLs for the `detail` operation |
| `searchUrls` | array | No | Paste Housing.com result-page URLs instead of using the fields above |

**Example - resale flats for sale:**

```json
{
  "operation": "search",
  "cities": ["Mumbai"],
  "market": "buy",
  "refine": "resale",
  "maxResults": 60
}
```

**Rentals with the full cost stack:**

```json
{
  "operation": "search",
  "cities": ["Bangalore", "Pune"],
  "market": "rent",
  "propertyType": "flats",
  "bedrooms": "2",
  "maxResults": 200
}
```

**Paying guest and shared accommodation:**

```json
{
  "operation": "search",
  "cities": ["Bangalore"],
  "market": "paying-guest",
  "maxResults": 100
}
```

**Your own search URL:**

```json
{
  "operation": "search",
  "searchUrls": [
    { "url": "https://housing.com/in/buy/mumbai/resale-fid/" }
  ],
  "maxResults": 100
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **115 fields** including:

| Field | Type | Description |
|-------|------|-------------|
| `propertyId` | string | Housing.com listing id |
| `propertyUrl` | string | Link to the listing |
| `price` | number | Asking price, or monthly rent, in exact rupees |
| `pricePerSqft` | number | Rupees per square foot, from the built-up figure |
| `builtUpAreaSqft` | number | Built-up area, with `areaUnitAsReported` alongside |
| `carpetAreaSqft` | number | Carpet area, as its own column |
| `depositInr` | number | Rent: security deposit in rupees, with `depositDuration` in months |
| `brokerageInr` | number | Rent: brokerage in rupees, with `brokerageDuration` |
| `maintenanceInr` | number | Rent: monthly maintenance, 0 when included in the rent |
| `lockInPeriodMonths` | number | Rent: lock-in period |
| `totalMoveInText` | string | Rent: what it costs to walk through the door |
| `annualReturn` | string | Commercial: the return the listing quotes |
| `ownershipType` | string | Commercial: freehold or leasehold |
| `sharingType` | string | Paying guest: single, double, triple sharing |
| `demandSignal` | string | e.g. "168 people viewed in last 24 hours" |
| `marketTotalListings` | number | How many listings the whole search holds |
| `marketResaleCount` / `marketNewProjectCount` | number | Sale searches: the resale and new-launch split |
| `valuationEstimateInr` | number | Full pages: the site's own value estimate, with low and high |
| `localityAvgRateInr` | number | Full pages: the locality's average rate per square foot |
| `listerName` / `listerType` | string | Who posted it, and in what capacity |

**Example - a Mumbai rental row:**

```json
{
  "propertyId": "18673892",
  "propertyTitle": "3 BHK Flat",
  "propertyUrl": "https://housing.com/rent/18673892-1150-sqft-3-bhk-apartment-on-rent-in-dadar-east-mumbai",
  "market": "rent",
  "price": 190000,
  "priceText": "₹1,90,000",
  "pricePerSqft": 165.22,
  "depositInr": 380000,
  "depositDuration": "2 months",
  "brokerageInr": 190000,
  "brokerageDuration": "1 month",
  "maintenanceInr": 0,
  "maintenanceText": "Included in rent",
  "lockInPeriodMonths": 6,
  "totalMoveInText": "₹7,60,000",
  "builtUpAreaSqft": 1150,
  "areaUnitAsReported": "sq.ft",
  "bedrooms": 3,
  "bathrooms": 2,
  "parkingInfo": "0 open, 2 closed",
  "furnishing": "Unfurnished",
  "ageOfConstruction": "2 years",
  "latitude": 19.02209,
  "longitude": 72.8496,
  "sublocality": "Hindu Colony",
  "locality": "Dadar East",
  "housingRegion": "Dadar",
  "city": "Mumbai",
  "state": "Maharashtra",
  "listerName": "MATRIX REALTY SOLUTIONS",
  "listerFirm": "Matrix Realty Solutions",
  "listerPhonePartial": "98200.....",
  "isCertifiedProAgent": true,
  "demandSignal": "51 people viewed in last 24 hours",
  "marketTotalListings": 32957
}
```

***

### 💼 Use Cases & Examples

#### 1. The True Cost of an Indian Tenancy

**A relocation manager or co-living operator budgeting what a flat actually costs to take.**

**Input:** A city, `market` set to `rent`
**Output:** Rent, deposit in rupees and in months, brokerage in rupees and in months, maintenance, lock-in and the move-in total
**Use:** The Dadar East row above asks ₹1,90,000 a month. It also wants ₹3,80,000 down and ₹1,90,000 to the broker, maintenance included, six months locked: ₹7,60,000 to walk through the door

#### 2. Paying Guest and Co-Living Supply Mapping

**A student-housing or co-living investor sizing the shared-accommodation stock in a city.**

**Input:** `market` set to `paying-guest`, one or more cities
**Output:** Price per bed, sharing type, tenant preference, coordinates and the operator behind each property
**Use:** "PG in Bangalore" is searched over 20,000 times a month in India. Bengaluru's paying-guest search held 493 listings when last read, and this is the only Housing.com dataset that returns them

#### 3. Locality Price Benchmarking

**A valuation team building comparables for a micro-market.**

**Input:** Two localities, same BHK, full property pages on
**Output:** Built-up and carpet area apart, price per square foot, the site's own fair-price band and the locality's average rate
**Use:** Compare an asking price against what the portal itself thinks the unit is worth, per row, rather than eyeballing it

#### 4. Whole-Market Sizing Without Paying to Page

**An analyst who needs supply counts across ten cities, not ten full datasets.**

**Input:** Ten cities, `maxResults` 50
**Output:** Every row stamped with `marketTotalListings`, plus the resale and new-launch split on sale searches
**Use:** Mumbai sale is 61,127 listings, 37,175 resale against 23,952 new-launch. You have that from the first page of each city

#### 5. Commercial Yield Screening

**A commercial investor screening office, shop and warehouse stock on economics rather than asking price.**

**Input:** `market` set to `commercial-buy` or `commercial-rent`
**Output:** Price, area, quoted annual return, freehold or leasehold, the location hub and the construction state
**Use:** Mumbai's commercial rental search held 14,315 listings. Rank them by quoted return, then filter to freehold

#### 6. Agent and Developer Lead Generation

**A broker deciding which agents in a micro-market are worth a call.**

**Input:** A city, any market
**Output:** Lister name, firm, type, designation, badge, profile URL, certified-agent and certified-pro flags, plus the masked number
**Use:** Rank a city's agents by live inventory and verification status instead of guessing which ones are active

#### 7. Proptech Search and Pricing Feeds

**A product team keeping an Indian property search or pricing model fed.**

**Input:** Several cities and markets on a schedule
**Output:** Coordinates, two area figures, the seven-level locality hierarchy with ids, amenities, photos and posting dates
**Use:** A comparables feed that refreshes itself, with stable locality and city ids to join on

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/housing-com-property-scraper').call({
  cities: ['Mumbai', 'Pune'],
  market: 'rent',
  maxResults: 200
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].totalMoveInText, items[0].lockInPeriodMonths);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/housing-com-property-scraper').call(
    run_input={
        'cities': ['Bangalore'],
        'market': 'paying-guest',
        'maxResults': 100,
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['price'], item['sharingType'], item['locality'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~housing-com-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"cities": ["Mumbai"], "market": "buy", "refine": "resale", "maxResults": 60}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule, nightly or weekly
2. **HTTP Request**: Call the actor API with your cities and market
3. **Process**: Filter the JSON on price per square foot, lock-in period or quoted return
4. **Action**: Append to a sheet, write to a database, or alert on new inventory

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run, every field, same quality
- No credit card required
- Enough to check the columns before you commit

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Deep paging across as many cities and markets as you list
- Pay-per-result: charged for listings returned, never for a search that matched nothing

| Event | Price | When it applies |
|---|---:|---|
| Property Search | $0.0012 per listing | Every listing a search returns |
| Property Detail | $0.003 per property | Only when full property pages are on |
| Actor Start | $0.005 per run | Once per run |

💰 **$1.20 per 1,000 listings.** Housing.com actors on the Store run from $0.80 to $9.00 per 1,000. This one sits with the cheap cluster, and it carries the deposit, brokerage, maintenance, lock-in and move-in columns that the expensive cluster does not carry either.

🔗 [View current pricing](https://apify.com/sian.agency/housing-com-property-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Why is my sale search full of projects instead of properties?**
A: Because Housing.com's default city sale page leads with new-launch project cards, which are developer adverts carrying a price range and a configuration list rather than one property at one price. Measured on Bangalore, page one of the plain city page was 30 project cards out of 30. Set the extra filter to resale and you get individual listings. Both cost the same, so this is about what you want, not what you pay.

**Q: Why can I not combine a BHK with an extra filter?**
A: Housing.com publishes one filter at a time, as separate pages. There is no page for "2 BHK and ready to move", so asking for both would mean silently dropping one. The run stops instead and names the filters that city does publish for that market, so you can pick a combination that exists.

**Q: How many listings can one search return?**
A: Pagination was verified clean to page 200 on a single search, which is roughly 6,000 listings at 30 rows a page. To go wider, add cities, markets and property types rather than paging deeper.

**Q: How many rows come back per page?**
A: 30 for sale and rent, 20 for paying guest and commercial. The run stops at the first page that crosses your limit.

**Q: Which cities work?**
A: Every city Housing.com covers, and the index runs past 900 entries, from the metros down to tier-2 and tier-3 towns. Write the city the way the site does: Bangalore rather than Bengaluru, Delhi rather than New Delhi. If a city is not recognised, or does not stock the market you asked for, the run says so and names what it does stock.

**Q: Do I get phone numbers?**
A: Only the masked form Housing.com prints on the page, such as 98708...., together with the poster's name, firm, type, badge and profile link. The site does not publish a full number without a logged-in enquiry, so this does not pretend to have one.

**Q: What is different about the paying guest rows?**
A: They are priced per bed rather than per property, they carry the sharing arrangement, and their tags say whether the listing takes women, men or both. Area, BHK and furnishing are usually empty, because a bed in a shared flat does not have them.

**Q: What is different about the commercial rows?**
A: They carry the expected annual return, the ownership basis of freehold or leasehold, the location hub such as a business park, and the construction state of the unit. Those columns are empty on residential rows.

**Q: What is the fair-price band?**
A: Housing.com computes its own low, high and estimated value for a unit and shows the asking price against it. Turn on full property pages and those three rupee figures come back as `valuationLowInr`, `valuationHighInr` and `valuationEstimateInr`, next to the locality's average rate per square foot. It is a useful second opinion for property valuation work, and it is the site's own number, not ours.

**Q: What does the full-property-page option cost?**
A: It fetches each listing's own page, so it bills one Property Detail event per enriched listing on top of the search row. Leave it off and you pay search rows only.

**Q: Can I filter by budget or by area range?**
A: Not as a field, for the same reason as the BHK answer above: the site publishes filters one page at a time and a whole-city budget band is not one of them. Build that search on Housing.com and paste the result URL into Search URLs. The page does the filtering, so every row honours it.

**Q: Why does price divided by area sometimes differ from the site's own rate?**
A: `pricePerSqft` is computed from `builtUpAreaSqft`, and it reproduced the site's published rate on all 110 rows measured across sale, rent and commercial. `pricePerSqftText` keeps the site's own displayed figure so you can check. `areaUnitAsReported` keeps the unit the listing stated, and an unrecognised unit leaves the square-foot column empty rather than guessing.

**Q: What output formats are available?**
A: JSON, CSV and Excel, exported directly from the Apify dataset.

**Q: Is this legal?**
A: Yes, only publicly available listings are read. See the legal section below.

***

### 🐛 Troubleshooting

**"Housing.com does not publish that combination"**

- The site serves one filter at a time. Clear either the BHK or the extra filter.
- The message names the property types, BHK values and filters that city publishes for that market. Pick from that list.

**"Housing.com has no such page in that city"**

- Not every type exists everywhere. A small town may list houses and plots but no penthouses.
- Widen the property type to "Any type", or try a larger city.

**A sale run came back as project cards**

- Set the extra filter to resale. The plain city page leads with new-launch adverts by design.

**The city was not recognised**

- Check the spelling the way Housing.com writes it: Bangalore rather than Bengaluru, Delhi rather than New Delhi. Common alternatives such as Bombay, Gurugram and Vizag are understood.

**A run returned fewer rows than the limit you set**

- The search ran out of inventory. Add cities, markets or property types rather than raising the limit.

**"Temporarily unavailable, please retry"**

- The site declined the request for a moment. Search fewer cities at a time, or space scheduled runs further apart.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

Housing.com is a trademark of Locon Solutions Private Limited (REA India). This actor is not affiliated with, endorsed by, or sponsored by Locon Solutions Private Limited or REA India.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

Pick one per run. Property Search returns listing rows for a city across five markets - resale and new-launch sale, rental, paying guest, and commercial for sale or for rent - with the whole-market listing count stamped on every row. Property Detail takes Housing.com property URLs and adds the site's own fair-price band for that unit, the locality's average rate per square foot, the complete amenity matrix, every nearby school, hospital and metro station with its distance, and the full listing…

## `cities` (type: `array`):

Cities to search, e.g. Mumbai, Delhi, Bangalore, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad, Noida, Gurgaon, Thane. One search runs per city, so three cities return roughly three times the rows. Tier-2 and tier-3 towns work too - Ahmednagar, Zirakpur, Bardoli - because the city is looked up on the site itself. Everyday names resolve: Delhi, Bangalore, Bombay, Calcutta, Gurugram and Vizag all work. An unrecognised city is reported, not silently dropped.

## `market` (type: `string`):

Which of Housing.com's five markets to search. Sale and rent are residential. Paying guest covers hostels and shared accommodation and prices per bed, not per flat. The two commercial markets carry office space, shops, showrooms and warehouses with their own economics attached. If the city you asked for does not stock the market you picked, the run says which markets it does stock rather than quietly handing back something else.

## `propertyType` (type: `string`):

Which kind of property to search. Applies to the sale and rent markets; paying guest and commercial have their own inventory and ignore it. Not every type exists in every city - a small town may list houses and plots but no penthouses - and when a combination has no page on the site the run names the types that city does publish instead of falling back to an unfiltered search you did not ask for.

## `bedrooms` (type: `string`):

Restrict to a bedroom count. 1 RK is a single room with a kitchen, the standard Indian listing below 1 BHK. Applies to residential flats and houses only - plots, land, paying guest beds and commercial space have no BHK, so it is ignored for those.

## `refine` (type: `string`):

One extra filter on top of the type and BHK. Housing.com publishes these as separate pages, one filter at a time, so only one applies per run. Resale listings only is the one to reach for first on a sale search: the default city page leads with new-launch project cards, which are developer adverts carrying a price range rather than individual properties. The furnishing and owner filters belong to the rent market; resale, projects, possession and RERA belong to sale.

## `maxResults` (type: `integer`):

Stop after this many listings across every city. Each page returns 30 for sale and rent and 20 for paying guest and commercial, so the run stops at the first page that crosses your limit.

## `includeDetails` (type: `boolean`):

Open each listing's own page for what the result card does not carry. You get Housing.com's own fair-price band for that unit - the low, high and estimate it benchmarks the asking price against - plus the locality's average rate per square foot, the complete amenity matrix for the flat and the society, every nearby school, hospital, metro station and restaurant with its distance, and the full written description. Costs one extra request per listing and bills the Property Detail event on top of…

## `propertyUrls` (type: `array`):

Used by the Property Detail operation: Housing.com property URLs to expand, in the housing.com/in/buy/resale/page/... or housing.com/rent/... form you get from a listing page or from the propertyUrl column of a search run.

## `searchUrls` (type: `array`):

Paste Housing.com result-page URLs instead of filling the fields above. Build the search you want on the site with any filters it offers - budget bands, area bands, amenities, possession date, posted-by - then paste the URL here and every one of those filters is honoured, because the page itself does the filtering.

## Actor input object example

```json
{
  "operation": "search",
  "cities": [
    "Mumbai",
    "Bangalore",
    "Pune"
  ],
  "market": "buy",
  "propertyType": "any",
  "bedrooms": "any",
  "refine": "any",
  "maxResults": 50,
  "includeDetails": false,
  "propertyUrls": [],
  "searchUrls": []
}
```

# Actor output Schema

## `housingComListing` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "search",
    "cities": [
        "Mumbai",
        "Bangalore",
        "Pune"
    ],
    "market": "buy",
    "propertyType": "any",
    "bedrooms": "any",
    "refine": "any",
    "maxResults": 50,
    "includeDetails": false,
    "propertyUrls": [],
    "searchUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/housing-com-property-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "search",
    "cities": [
        "Mumbai",
        "Bangalore",
        "Pune",
    ],
    "market": "buy",
    "propertyType": "any",
    "bedrooms": "any",
    "refine": "any",
    "maxResults": 50,
    "includeDetails": False,
    "propertyUrls": [],
    "searchUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/housing-com-property-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "search",
  "cities": [
    "Mumbai",
    "Bangalore",
    "Pune"
  ],
  "market": "buy",
  "propertyType": "any",
  "bedrooms": "any",
  "refine": "any",
  "maxResults": 50,
  "includeDetails": false,
  "propertyUrls": [],
  "searchUrls": []
}' |
apify call sian.agency/housing-com-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/housing-com-property-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cRWHS221b4aftLjHe/builds/1fvOUOltsnX7F9MfK/openapi.json
