# NoBroker.in Scraper (`parsebird/nobroker-scraper`) Actor

Scrape rent, buy, and PG property listings from NoBroker.in — prices, deposits, amenities, owner contact names, and full descriptions across Indian cities.

- **URL**: https://apify.com/parsebird/nobroker-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 listing scrapeds

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/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.in Scraper

Extract rent, buy, and PG property listings from [NoBroker.in](https://www.nobroker.in), India's largest no-brokerage property platform. The **NoBroker.in Scraper** searches any Indian city or specific locality and returns structured listing data — prices, deposits, amenities, owner names, images, and full descriptions.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search by city or specific localities, filter by BHK, property type, price, area, furnishing, and tenant type, and get 25+ structured fields per listing including full descriptions and images.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/nobroker-scraper. Scrapes rent, buy, and PG property listings from NoBroker.in across Indian cities. Call via ApifyClient: client.actor("parsebird/nobroker-scraper").call(run_input={"searchMode": "rent", "city": "Bangalore", "localities": ["Koramangala"], "bhk": ["2"], "maxResults": 15}). Returns per listing: listing_id, searchMode, title, propertyType, bhk, bathrooms, carpet_area_sqft, price_inr, deposit_inr, maintenance_inr, furnishing, facing, floor, total_floors, locality, city, latitude, longitude, project_name, owner_name, listed_by, tenant_preferences, amenities, images, description, url, posted_at, scraped_at. Full API spec: https://apify.com/parsebird/nobroker-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What does NoBroker.in Scraper do?

This actor drives a real, India-based browser session against [NoBroker.in](https://www.nobroker.in) — the site's own search and property-detail data are not exposed through a documented public API, so the actor resolves your city/locality the same way the site's own search bar does, then queries the underlying search and detail endpoints directly for speed.

- 🏙️ **City-wide or locality-level search** — search an entire city, or target specific neighborhoods.
- 🛏️ **Rent, buy, or PG** — all three NoBroker listing modes in one actor.
- 🎚️ **Rich filtering** — BHK, property type, price range, area range, furnishing, and tenant type (rent).
- 📝 **Full listing enrichment** — every result includes the complete description, amenity list, and image URLs, not just search-result summaries.
- 🌐 **Built-in India residential proxy** — the default proxy configuration works out of the box; no manual proxy setup needed.

### What data can you extract from NoBroker.in?

| Field | Description |
|-------|-------------|
| `title` / `description` | Listing headline and full description |
| `propertyType` / `bhk` / `bathrooms` | Apartment/Villa/Independent House, bedroom and bathroom count |
| `carpet_area_sqft` | Carpet area in square feet |
| `price_inr` / `deposit_inr` / `maintenance_inr` | Monthly rent or sale price, security deposit, maintenance charges |
| `furnishing` / `facing` / `floor` / `total_floors` | Furnishing status, unit facing direction, floor details |
| `locality` / `city` / `latitude` / `longitude` | Location details |
| `project_name` / `owner_name` | Society/project name and the listing contact's name |
| `amenities` / `images` | Amenity list and image URLs |
| `url` / `posted_at` | Direct listing URL and posting date |

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchMode` | string | Yes | `rent` | `rent`, `buy`, or `pg` |
| `city` | string | Yes | `Bangalore` | Indian city (e.g. Bangalore, Mumbai, Delhi, Hyderabad, Pune, Chennai, or any other Indian city) |
| `localities` | string\[] | No | `[]` | Neighborhoods (e.g. `["Koramangala", "HSR Layout"]`). Empty = whole city |
| `bhk` | string\[] | No | `[]` | Bedroom count. Empty = any |
| `propertyType` | string\[] | No | `[]` | `apartment`, `villa`, `independent-house`, `builder-floor`, `studio` |
| `minPrice` / `maxPrice` | integer | No | — | Price range in INR |
| `minArea` / `maxArea` | integer | No | — | Carpet area range in sq ft |
| `furnishing` | string\[] | No | `[]` | `furnished`, `semi-furnished`, `unfurnished` |
| `tenantType` | string\[] | No | `[]` | `family`, `bachelor`, `company` (rent only) |
| `ownerOnly` | boolean | No | `true` | Accepted for compatibility — see FAQ for what this actually does |
| `maxResults` | integer | No | `15` | Maximum listings to return |
| `proxyConfiguration` | object | No | Residential, India | Defaults work out of the box for Indian cities |

### Output example

```json
{
  "listing_id": "8a9fc02f4d71b123",
  "searchMode": "rent",
  "title": "Semi-furnished 2 BHK in Koramangala",
  "propertyType": "Apartment",
  "bhk": 2,
  "bathrooms": 2,
  "carpet_area_sqft": 1050,
  "price_inr": 40000,
  "deposit_inr": 160000,
  "maintenance_inr": 3000,
  "furnishing": "Semi-Furnished",
  "facing": "East",
  "floor": 3,
  "total_floors": 5,
  "locality": "Koramangala",
  "city": "Bangalore",
  "latitude": 12.9352,
  "longitude": 77.6245,
  "project_name": "Prestige South Ridge",
  "owner_name": "Ravi K.",
  "listed_by": "owner",
  "tenant_preferences": "Family",
  "amenities": ["Gym", "Swimming Pool", "Covered Parking"],
  "images": ["https://assets.nobroker.in/images/8a9fc02f4d71b123/..."],
  "description": "This 2 BHK apartment in Koramangala is semi-furnished...",
  "url": "https://www.nobroker.in/property/2-bhk-apartment-for-rent-in-koramangala-bangalore-for-rs-40000/8a9fc02f4d71b123/detail",
  "posted_at": "2026-04-14",
  "scraped_at": "2026-04-20T12:31:02+00:00"
}
```

Download results as **JSON, CSV, Excel, HTML, or XML** directly from the Apify Console, or fetch them via the [Apify API](https://docs.apify.com/api/v2) / [dataset endpoint](https://apify.com/parsebird/nobroker-scraper/api).

### Use cases

- **Rental market research** — compare rent, deposit, and amenity trends across localities in a city.
- **Property investment analysis** — pull buy-mode listings with price and area data for a target neighborhood.
- **Relocation planning** — filter by BHK, furnishing, and tenant type to shortlist homes before moving cities.
- **PG/co-living aggregation** — collect paying-guest listings for a roommate-matching or listings app.
- **Competitive tracking** — monitor new listings in specific localities over time with scheduled runs.

### How it works

1. **Resolve your search area** — for a specific locality, the actor drives NoBroker's own search bar (the way a real visitor would) to resolve it to a precise location; for a whole-city search, it uses well-known city-center coordinates (or geocodes the city if it's outside the built-in list).
2. **Search** — queries NoBroker's listing search for the resolved area and search mode (rent/buy/PG), paginating until enough matching listings are collected.
3. **Filter** — applies your BHK, property type, price, area, furnishing, and tenant-type filters to the results.
4. **Enrich** — fetches the full detail record for each matching listing (complete description, amenities, images) rather than just the search-result summary.
5. **Output** — pushes the combined, structured dataset to Apify.

### How much does it cost to scrape NoBroker.in?

This actor uses [Pay-Per-Event (PPE)](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing) pricing — you're charged per listing extracted, not per compute unit.

| Event | Price per event | Price per 1,000 |
|-------|----------------|-----------------|
| `listing-scraped` (Free plan) | $0.00299 | **$2.99** |
| `listing-scraped` (Bronze plan) | $0.00249 | **$2.49** |
| `listing-scraped` (Silver plan) | $0.00199 | **$1.99** |
| `listing-scraped` (Gold plan) | $0.00149 | **$1.49** |

A run collecting 15 listings costs roughly $0.02–$0.04 depending on your Apify plan. All Apify accounts include a [free trial](https://apify.com/pricing) with credits to try the actor before committing to a paid plan.

### FAQ

**What does `ownerOnly` actually filter?**
NoBroker's platform policy already prohibits third-party brokers from listing at all — that's the site's core differentiator — and its public listing data doesn't expose a separate owner/agent flag to verify further. The field is accepted for input compatibility, but every result is reported as `listed_by: "owner"` since that's what NoBroker's own policy guarantees.

**Why do `latitude`/`longitude` sometimes look identical across listings in the same run?**
For whole-city searches (no `localities` specified), NoBroker's search API returns the query's city-center coordinates on each listing rather than the property's exact coordinates. Searching with specific `localities` returns each listing's own precise coordinates instead.

**Why are `propertyType` or `description` sometimes empty?**
NoBroker's own listing data is user-submitted and not every field is filled in for every listing — this reflects gaps in the source data itself, not a scraping error.

**Can I search a city that isn't in the examples?**
Yes. `city` accepts any Indian city name. A small set of major cities resolve instantly; any other city is geocoded automatically.

**Why does this actor need a residential India proxy?**
NoBroker's own location-resolution logic requires an Indian IP to work correctly — this isn't just about avoiding blocks, searches fail outright without one. The default `proxyConfiguration` handles this automatically.

**What are the limitations of this actor?**
⚠️

- NoBroker.in has no documented public API — this actor relies on the same internal endpoints the website itself uses, which may change without notice
- Detail enrichment for PG listings uses the same endpoint as rent listings, since PG is a rental-style listing type on NoBroker
- Large `maxResults` values across many localities increase run time, since each listing is enriched with a separate detail request

### Is it legal to scrape NoBroker.in?

This actor only accesses publicly available property listings that NoBroker and its users have made visible to site visitors. It does not bypass login walls, access private accounts, or collect personal data beyond what NoBroker itself displays publicly on a listing (e.g. a first name). Scraping publicly available data is generally considered legal — see [Apify's overview of web scraping legality](https://www.apify.com/is-web-scraping-legal) for more detail. Users are responsible for ensuring their use of the collected data complies with applicable laws and [NoBroker's Terms of Service](https://www.nobroker.in/terms-condition).

### Python and JavaScript usage

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "searchMode": "rent",
    "city": "Bangalore",
    "localities": ["Koramangala"],
    "bhk": ["2"],
    "maxResults": 15,
}

run = client.actor("parsebird/nobroker-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], "-", item["price_inr"], "INR")
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const input = {
    searchMode: 'rent',
    city: 'Bangalore',
    localities: ['Koramangala'],
    bhk: ['2'],
    maxResults: 15,
};

const run = await client.actor('parsebird/nobroker-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Related Actors

- [Propertyfinder Scraper - MENA Real Estate](https://apify.com/parsebird/propertyfinder-scraper) — real estate listings across the Middle East
- [Naukri Jobs Scraper](https://apify.com/parsebird/naukri-jobs-scraper) — India's largest job portal
- [Hirist.tech IT Jobs Scraper](https://apify.com/parsebird/hirist-jobs-scraper) — IT jobs in India

Browse the full catalog on the [ParseBird Apify Store page](https://apify.com/parsebird).

# Actor input Schema

## `searchMode` (type: `string`):

Rent, buy, or PG (paying guest) listings.

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

Indian city to search (e.g. Bangalore, Mumbai, Delhi, Hyderabad, Pune, Chennai).

## `localities` (type: `array`):

Neighborhoods to search (e.g. "Koramangala", "HSR Layout"). Leave empty to search the whole city.

## `bhk` (type: `array`):

Number of bedrooms. Leave empty for any.

## `propertyType` (type: `array`):

Leave empty for any type.

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

Minimum monthly rent (rent/PG) or total price (buy), in INR.

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

Maximum monthly rent (rent/PG) or total price (buy), in INR.

## `minArea` (type: `integer`):

Minimum carpet area in square feet.

## `maxArea` (type: `integer`):

Maximum carpet area in square feet.

## `furnishing` (type: `array`):

Leave empty for any.

## `tenantType` (type: `array`):

Rent only. Leave empty for any.

## `ownerOnly` (type: `boolean`):

Keep only listings posted directly by individual owners; excludes builder/developer-marketed projects.

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

Maximum listings to return.

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

Residential proxies are required for NoBroker.in to resolve search locations correctly. The default works out of the box for Indian cities.

## Actor input object example

```json
{
  "searchMode": "rent",
  "city": "Bangalore",
  "localities": [],
  "bhk": [],
  "propertyType": [],
  "furnishing": [],
  "tenantType": [],
  "ownerOnly": true,
  "maxResults": 15,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchMode": "rent",
    "city": "Bangalore",
    "maxResults": 15,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/nobroker-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 = {
    "searchMode": "rent",
    "city": "Bangalore",
    "maxResults": 15,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/nobroker-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 '{
  "searchMode": "rent",
  "city": "Bangalore",
  "maxResults": 15,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call parsebird/nobroker-scraper --silent --output-dataset

```

## MCP server setup

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