# NoBroker Property Scraper — Rent, Buy, PG & Commercial, India (`memo23/nobroker-property-scraper`) Actor

Scrape NoBroker.in owner property listings — rent, buy, PG & commercial. 40+ fields per property: rent/price, deposit, BHK, area, floor, furnishing, parking, amenities, owner name, GPS, photos. Build from city + filters, or paste a NoBroker search URL. Broker-free listings.

- **URL**: https://apify.com/memo23/nobroker-property-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## NoBroker Property Scraper — Rent, Buy, PG & Commercial 🏠🇮🇳

Scrape **owner-direct** property listings from **NoBroker.in**, India's largest broker-free property platform, across **rent, buy, PG and commercial** — with 40+ structured fields per property including rent/price, deposit, maintenance, BHK, area, floor, furnishing, parking, amenities, owner name, GPS coordinates and photos. Build a search from a city + filters, or paste a NoBroker search URL. Powered by NoBroker's own JSON API — clean data, no brittle HTML.

![How the NoBroker Property Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-nobroker.png)

### Why use this NoBroker scraper?

- **Owner-direct listings** — NoBroker is broker-free, so you get properties posted by owners, with owner name and direct details — no agent middle-layer.
- **All four modes** — rent, buy, PG and commercial (rent & buy) from one actor.
- **Real filters that work** — city, BHK, price range (rent or sale) and search radius are applied server-side, so you scrape exactly the segment you want.
- **40+ fields per property** — rent, deposit, maintenance, carpet size, bathrooms, balconies, floor, furnishing, parking, facing, amenities, water supply, owner, coordinates, availability date and photos.
- **Clean JSON, not scraped HTML** — reads NoBroker's own `/api/v3/multi/property` API, so it's fast and stays stable across site redesigns.
- **Built-in India residential proxy** — no proxy setup, no captcha, no browser.
- **Any export** — JSON, CSV, Excel, or straight from the API. Billed per result.

### What it does

The NoBroker Property Scraper turns any NoBroker search into clean, structured data. Name a city with filters, or paste the exact URL you care about, and it returns one row per property — ready for lead generation, price research, rental-market analysis, or feeding a downstream app.

### Supported inputs

| Input | What it does |
|-------|--------------|
| **City + Search mode** | `Bangalore` + `rent` / `buy` / `pg` / `commercial-rent` / `commercial-buy` → the scraper builds the search. |
| **Filters** | BHK, min/max price (INR), search radius (km) — applied server-side. |
| **Custom location** | Any city via `latitude` + `longitude` (13 major metros are built-in by name). |
| **Search URLs** | Paste NoBroker search-result URLs from your browser; each is paginated automatically. |

### Use cases

- **Owner-lead generation** — pull owner-posted listings by city and locality for outreach.
- **Rental-market analysis** — track rent, deposit and availability by BHK and locality.
- **Price research** — monitor sale prices and price-per-segment across neighbourhoods.
- **PG / co-living intelligence** — scrape paying-guest inventory and pricing.
- **Commercial real estate** — capture office/shop/showroom rent and sale listings.
- **Property portals & apps** — seed a comparison site or CRM with normalized data.

### How it works

1. **Resolve** — your city (or lat/lon) becomes a NoBroker geo search token.
2. **Call the API** — the actor requests `/api/v3/multi/property/{MODE}/filter` with your filters, over an India residential IP with a browser fingerprint.
3. **Read JSON** — each property comes back fully structured; the actor maps it to a flat row.
4. **Paginate** — it walks `pageNo=1,2,3…` (~26 results/page) until your limit or the results run out.

### Input configuration

| Field | Type | Description |
|-------|------|-------------|
| `city` | string | City name (13 metros built-in; others need lat/lon). |
| `mode` | select | `rent` · `buy` · `pg` · `commercial-rent` · `commercial-buy`. |
| `bedrooms` | array | BHK filter, e.g. `["2","3"]`. |
| `minPrice` / `maxPrice` | integer | INR — monthly rent (rent/PG) or total price (buy). |
| `radiusKm` | integer | Search radius around the centre (default 3). |
| `latitude` / `longitude` | number | Custom search centre (overrides the city table). |
| `startUrls` | array | NoBroker search URLs, paginated automatically. |
| `maxItems` | integer | Hard cap on rows for the whole run. |
| `enrichEmails` | boolean | Best-effort contact email for builder/society listings (experimental). |

#### Example input

```json
{
  "city": "Bangalore",
  "mode": "rent",
  "bedrooms": ["2", "3"],
  "minPrice": 15000,
  "maxPrice": 40000,
  "radiusKm": 4,
  "maxItems": 500
}
```

### Output overview

One row per property. Rentals carry `rent` + `deposit`; sales carry `price`.

#### Output sample

```json
{
  "id": "8aa993f39f5a6509019f5b7417b8439f",
  "mode": "RENT",
  "title": "2 BHK Flat In Siddhi for Rent In Rs Gardens",
  "bhk": "2 BHK",
  "rent": 26000,
  "deposit": 110000,
  "maintenanceAmount": 1000,
  "propertySize": 1250,
  "bathroom": 2,
  "balconies": 1,
  "floor": 1,
  "totalFloor": 4,
  "furnishing": "Semi",
  "parking": "Bike and Car",
  "facing": "North",
  "locality": "B Narayanapura",
  "city": "bangalore",
  "latitude": 12.9345,
  "longitude": 77.6721,
  "buildingName": "Dreamz Siddhi Apartment",
  "society": "SIDDHI",
  "ownerName": "Hemant",
  "amenities": ["Lift", "Club House", "Swimming Pool"],
  "waterSupply": "CORP_BORE",
  "availableFrom": "2026-07-23T18:30:00.000Z",
  "leaseType": "FAMILY",
  "images": ["https://assets.nobroker.in/…"],
  "detailUrl": "https://www.nobroker.in/property/…"
}
```

#### Key output fields

| Field | Description |
|-------|-------------|
| `id`, `propertyCode`, `mode` | NoBroker property id + section |
| `title`, `bhk`, `bhkCode` | Headline + configuration |
| `rent`, `price`, `deposit`, `maintenanceAmount`, `negotiable` | Money (INR) |
| `propertySize`, `bathroom`, `balconies`, `floor`, `totalFloor` | Size & layout |
| `furnishing`, `parking`, `facing`, `propertyAge` | Unit attributes |
| `availableFrom`, `leaseType`, `tenantType` | Availability & tenancy |
| `locality`, `nbLocality`, `address`, `city`, `latitude`, `longitude` | Location + GPS |
| `buildingName`, `society`, `builderName` | Building / society |
| `ownerName`, `ownerId`, `ownerDescription` | Owner details |
| `amenities`, `swimmingPool`, `gym`, `lift`, `waterSupply` | Amenities |
| `images`, `thumbnailImage`, `photoCount` | Media |
| `detailUrl`, `shortUrl`, `active`, `state`, `creationDate`, `lastUpdateDate` | Links & meta |

### FAQ

**Does it work for every Indian city?**
13 major metros (Bangalore, Mumbai, Pune, Delhi, Gurgaon, Noida, Hyderabad, Chennai, Kolkata, Ahmedabad, Thane, Navi Mumbai, Coimbatore) work by name. For any other city, add `latitude` + `longitude`, or paste a NoBroker search URL.

**Are these really owner listings?**
Yes — NoBroker's model is broker-free, so listings are posted by owners, and each row includes the owner's name.

**Do I need my own proxies?**
No. India residential proxies are built in at no extra cost. You can override with the optional `proxy` field.

**How is price filtered?**
`minPrice`/`maxPrice` are monthly rent for rent/PG modes and total sale price for buy — applied server-side by NoBroker.

**Is scraping NoBroker legal?**
The actor collects only publicly available data. You are responsible for using the output in line with NoBroker's terms and applicable laws (see Disclaimer).

### Support

Found a bug or need a field added? Open an issue on the actor's **Issues** tab.

### Additional services

Need contact emails for builders/societies? Toggle `enrichEmails` for best-effort discovery (NoBroker is owner-first, so this rarely applies).

### Explore more scrapers

- **99acres Property Scraper** and **MagicBricks Property Scraper** — the other big Indian property portals.
- Ask for any Indian real-estate, jobs, or business-directory site — we build fast.

### 🤖 For AI agents & LLM apps

This actor returns clean, flat, typed JSON straight from NoBroker's API — ideal for RAG pipelines, real-estate agents and rental-analysis tools. Every row is self-describing (typed rent/price/area/geo fields), so an LLM can filter and reason over results with no post-processing. Call it via the Apify API or MCP and stream the dataset into your context.

### ⚠️ Disclaimer

This actor scrapes only publicly accessible information from NoBroker.in. It does not bypass logins or access private data. You are solely responsible for how you use the collected data, including compliance with NoBroker's Terms of Use, applicable data-protection laws and any local real-estate regulations. This actor is not affiliated with, endorsed by, or connected to NoBroker (NoBroker Technologies Solutions Pvt. Ltd.).

### SEO Keywords

NoBroker scraper, NoBroker api, NoBroker data extractor, scrape NoBroker, NoBroker property scraper, owner property listings India, broker-free property data, NoBroker rent scraper, NoBroker buy listings, NoBroker PG scraper, NoBroker commercial property, India real estate scraper, rental market data India, owner-direct listings, BHK rent data, property lead generation India, NoBroker crawler, real estate market research India.

# Actor input Schema

## `city` (type: `string`):

City to search. Built-in: Bangalore, Mumbai, Pune, Delhi, Gurgaon, Noida, Hyderabad, Chennai, Kolkata, Ahmedabad, Thane, Navi Mumbai, Coimbatore. For any other city, also fill Latitude + Longitude below.

## `mode` (type: `string`):

Which NoBroker section to search.

## `bedrooms` (type: `array`):

BHK filter, e.g. `2`, `3`. Multiple values are OR-combined. Leave empty for all. Ignored for PG / commercial.

## `minPrice` (type: `integer`):

Minimum price in rupees — monthly rent for Rent/PG, total price for Buy.

## `maxPrice` (type: `integer`):

Maximum price in rupees — monthly rent for Rent/PG, total price for Buy.

## `radiusKm` (type: `integer`):

Radius around the city/locality centre to search. Default 3 km. Larger = more results, wider area.

## `latitude` (type: `string`):

Search-centre latitude in decimal degrees, e.g. `12.9716`. Overrides the built-in city coordinates.

## `longitude` (type: `string`):

Search-centre longitude in decimal degrees, e.g. `77.5946`. Overrides the built-in city coordinates.

## `startUrls` (type: `array`):

Paste NoBroker search-result URLs (e.g. from your browser after applying filters on the site). Each is paginated automatically. Mixes with the city builder above.

## `maxItems` (type: `integer`):

Hard cap on rows across the entire run. Each row is one paid `result` event. Default 1000. Free-tier users are additionally capped at 100.

## `maxItemsPerSearch` (type: `integer`):

Cap per search URL / city build. NoBroker returns ~26 results per page. Default 1000.

## `maxConcurrency` (type: `integer`):

Parallel API requests. Keep moderate (4–8). Default 5.

## `maxRequestRetries` (type: `integer`):

Per-request retry budget on 403/429/network errors. Each retry rotates a fresh India residential IP. Default 12.

## `proxy` (type: `object`):

Leave empty — the actor already routes traffic through its own built-in India residential proxy at no extra cost. Only set this to use your own proxies.

## `enrichEmails` (type: `boolean`):

Best-effort contact email for listings with a builder/society business name. NoBroker is owner-first, so this rarely applies. Adds contactEmail + contactWebsite columns.

## Actor input object example

```json
{
  "city": "Bangalore",
  "mode": "rent",
  "bedrooms": [],
  "radiusKm": 3,
  "startUrls": [],
  "maxItems": 1000,
  "maxItemsPerSearch": 1000,
  "maxConcurrency": 5,
  "maxRequestRetries": 12,
  "enrichEmails": false
}
```

# Actor output Schema

## `results` (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 = {
    "bedrooms": [],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/nobroker-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 = {
    "bedrooms": [],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/nobroker-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 '{
  "bedrooms": [],
  "startUrls": []
}' |
apify call memo23/nobroker-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/nobroker-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/C8JvzmiRzma89C96y/builds/PyX2eP2cWgclTdIaJ/openapi.json
