# Housing.com Property Scraper (`shahidirfan/housing-com-property-scraper`) Actor

Extract real estate listings, prices, locations, and property details from Housing.com at scale. Perfect for market research, investment analysis, and competitive intelligence. Fast, reliable automation for Indian property data.

- **URL**: https://apify.com/shahidirfan/housing-com-property-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

Extract Housing.com property listings from search result pages with pricing, seller details, sizes, tags, location data, and listing media. Collect structured datasets from buy or rent search pages for market research, inventory tracking, and downstream analysis.

### Features

- **Search page extraction** — Collect listings directly from Housing.com search result URLs.
- **Rich property data** — Capture pricing, area, sellers, tags, media, and key listing attributes.
- **Pagination support** — Continue through multiple result pages until the requested limit is reached.
- **Null-free dataset output** — Removes null fields from every dataset item to keep exports clean.
- **Search context included** — Preserves the search hash, page number, service, and city for each record.

### Use Cases

#### Market Intelligence
Track the live inventory available in a city or locality and compare how pricing, property types, and listing volume change over time. This is useful for analysts, agents, and proptech teams monitoring supply.

#### Project Research
Collect new launch and project listings together with pricing bands, configuration details, and seller information. Use the results to study project positioning and launch activity in target markets.

#### Lead Sourcing Preparation
Build structured datasets of listings and seller profiles before outreach or enrichment. Teams can use the exported results to prioritize hot listings and understand available inventory.

#### Pricing Analysis
Capture display price ranges, built-up area, and location details at scale. This helps compare pricing density across neighborhoods, projects, and cities.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | `https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5` | Housing.com search, city, locality, rent, or commercial results URL to extract. |
| `category` | String | No | `residential` | Housing category passed with the search request. |
| `results_wanted` | Integer | No | `20` | Maximum number of listings to save. |
| `max_pages` | Integer | No | `10` | Maximum number of result pages to request. |
| `proxyConfiguration` | Object | No | `{"useApifyProxy": false}` | Optional Apify proxy settings for larger or more sensitive runs. |

### Output Data

Each item in the dataset contains:

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | String | Housing.com listing identifier. |
| `title` | String | Listing title. |
| `subtitle` | String | Configuration or subheading shown for the listing. |
| `url` | String | Absolute Housing.com listing URL. |
| `propertyType` | String | Listing type such as project or resale property. |
| `price` | String | Display-friendly price range or value. |
| `area` | String | Human-readable area value. |
| `location` | String | Listing address text. |
| `city` | String | Resolved city name for the search. |
| `primarySellerName` | String | First seller attached to the listing. |
| `coverImageUrl` | String | Main listing image URL in a browser-valid Housing CDN format. |
| `imageUrls` | Array | Flat list of browser-valid gallery image URLs. |
| `imageGallery` | Array | Detailed gallery image records with captions, categories, and video URLs when available. |
| `postedDate` | String | Listing publish date when available. |
| `features` | Array | Listing feature cards such as configurations and sizes. |
| `sellers` | Array | Seller profiles with badge and partial phone details. |
| `propertyInformation` | Object | Area, price, bedroom, and similar listing information. |
| `searchHash` | String | Search hash associated with the listing run. |
| `searchPage` | Integer | Result page from which the listing was collected. |

### Usage Examples

#### Basic Extraction

Collect the first 20 listings from a Housing.com search page:

```json
{
	"startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
	"results_wanted": 20
}
````

You can also start from generic city or locality pages and the actor will resolve the underlying search automatically:

```json
{
	"startUrl": "https://housing.com/in/buy/bengaluru/electronic-city-gid/",
	"results_wanted": 20
}
```

#### Larger Collection With Proxy

Increase the collection size and use Apify Proxy:

```json
{
	"startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
	"results_wanted": 100,
	"max_pages": 5,
	"proxyConfiguration": {
		"useApifyProxy": true,
		"apifyProxyGroups": ["RESIDENTIAL"]
	}
}
```

### Sample Output

```json
{
	"listingId": "254083",
	"title": "Confiable Shastri Nagar Prerna CHSL",
	"subtitle": "1, 1.5, 2, 2.5, 3.5 BHK Flats",
	"url": "https://housing.com/in/buy/projects/page/254083-confiable-shastri-nagar-prerna-chsl-by-confiable-constructions-in-goregaon-west",
	"propertyType": "project",
	"price": "₹1.09 Cr - 1.89 Cr",
	"area": "444 sq.ft",
	"location": "Goregaon West, Mumbai",
	"city": "Mumbai",
	"primarySellerName": "BigBricks Realty",
	"coverImageUrl": "https://is1-2.housingcdn.com/4f2250e8/4232a3a5618a41dc42537e6b26fd204e/v0/fs/confiable_shastri_nagar_prerna_chsl-goregaon_west-mumbai-confiable_constructions.jpeg",
	"imageUrls": [
		"https://is1-2.housingcdn.com/4f2250e8/4232a3a5618a41dc42537e6b26fd204e/v0/fs/confiable_shastri_nagar_prerna_chsl-goregaon_west-mumbai-confiable_constructions.jpeg"
	],
	"postedDate": "2021-01-18T23:05:04Z",
	"tags": [
		"rera_verified"
	],
	"propertyInformation": {
		"bedrooms": 1,
		"area": "444 sq.ft",
		"price": "1.09 Cr"
	},
	"searchHash": "M8vPskwz0ocdh7q42r5",
	"searchPage": 1,
	"service": "buy",
	"category": "residential"
}
```

### Tips for Best Results

#### Use Real Search Pages

- Start from a valid Housing.com search results URL.
- Prefer stable search pages that already show multiple listings.
- Reuse saved search URLs when you want reproducible datasets.

#### Keep QA Runs Small

- Use `results_wanted: 20` for quick validation runs.
- Increase the limit only after confirming the output structure you need.
- Cap `max_pages` to control runtime on broader searches.

#### Use Proxy for Scale

- Residential proxies are recommended for larger or repeated runs.
- Start without proxy for small collections, then add proxy for production volume.
- Keep page sizes moderate to reduce retry pressure.

### Proxy Configuration

For higher-volume runs, residential proxies are recommended:

```json
{
	"proxyConfiguration": {
		"useApifyProxy": true,
		"apifyProxyGroups": ["RESIDENTIAL"]
	}
}
```

### Integrations

Connect your data with:

- **Google Sheets** — Review pricing and inventory in spreadsheets.
- **Airtable** — Build searchable property datasets.
- **Make** — Automate follow-up workflows and syncs.
- **Zapier** — Trigger downstream actions from new exports.
- **Webhooks** — Push listings into internal systems.

#### Export Formats

- **JSON** — Best for APIs and automation.
- **CSV** — Best for spreadsheet workflows.
- **Excel** — Best for operational reporting.
- **XML** — Best for legacy integrations.

### Frequently Asked Questions

#### How many listings can I collect?

You can collect as many listings as the search page exposes, subject to your `results_wanted` and `max_pages` limits.

#### Does the actor support specific localities or cities?

Yes. Use any valid Housing.com search page for the area you want to collect.

#### Why are some fields missing on certain listings?

Housing.com does not populate every field for every listing. The actor removes null values instead of returning empty placeholders.

# Actor input Schema

## `startUrl` (type: `string`):

Housing.com search results URL to extract.

## `category` (type: `string`):

Housing category used for the search request.

## `results_wanted` (type: `integer`):

Maximum number of listings to collect.

## `max_pages` (type: `integer`):

Safety cap on the number of result pages to request.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy settings for larger runs.

## Actor input object example

```json
{
  "startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
  "category": "residential",
  "results_wanted": 20,
  "max_pages": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
    "category": "residential",
    "results_wanted": 20,
    "max_pages": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/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 = {
    "startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
    "category": "residential",
    "results_wanted": 20,
    "max_pages": 10,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrl": "https://housing.com/in/buy/searches/M8vPskwz0ocdh7q42r5",
  "category": "residential",
  "results_wanted": 20,
  "max_pages": 10
}' |
apify call shahidirfan/housing-com-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/housing-com-property-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Housing.com Property Scraper",
        "description": "Extract real estate listings, prices, locations, and property details from Housing.com at scale. Perfect for market research, investment analysis, and competitive intelligence. Fast, reliable automation for Indian property data.",
        "version": "0.0",
        "x-build-id": "M9lQuFygqsEMCKpsm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~housing-com-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-housing-com-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/shahidirfan~housing-com-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-housing-com-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/shahidirfan~housing-com-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-housing-com-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrl": {
                        "title": "Search URL",
                        "type": "string",
                        "description": "Housing.com search results URL to extract."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "residential",
                            "commercial"
                        ],
                        "type": "string",
                        "description": "Housing category used for the search request.",
                        "default": "residential"
                    },
                    "results_wanted": {
                        "title": "Maximum number of listings",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to collect.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum number of pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Safety cap on the number of result pages to request.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy settings for larger runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
