# NoBroker India Scraper - Rent, Buy & PG Listings (Owner Direct) (`thirdwatch/nobroker-scraper`) Actor

Scrape NoBroker.in India property listings. Owner-direct rent/buy/PG with BHK, locality, price, area filters. No brokerage listings. Bangalore, Mumbai, Delhi, Hyderabad, Pune, Chennai.

- **URL**: https://apify.com/thirdwatch/nobroker-scraper.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** Real estate
- **Stats:** 168 total users, 20 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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.
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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## NoBroker Scraper

> **Thirdwatch portfolio:** 8,800+ users across 140+ public Actors, 2M+ records delivered, >95% run success. [Explore all Thirdwatch Actors](https://apify.com/thirdwatch).

> Scrape owner-direct rent, buy, and PG property listings from NoBroker.in — India's largest no-brokerage real-estate platform. 40+ fields per listing.

### Quick start

Open the Actor in Apify Console, paste the input below, and click **Start**. This returns up to 15 owner-direct Bangalore rentals; results appear as structured rows in the default dataset and can be downloaded as JSON, CSV, or Excel.

```json
{
  "city": "Bangalore",
  "searchMode": "rent",
  "ownerOnly": true,
  "maxResults": 15
}
```

Set `ownerOnly` to `false` when you also want agent and broker listings.

### What you get

NoBroker is India's #1 no-brokerage property platform, dominant in Bangalore, Mumbai, Delhi NCR, Hyderabad, Pune, and Chennai. This scraper returns clean JSON for rent, buy, and PG modes across any Indian city. Every listing includes price, deposit, BHK, carpet area, coordinates, furnishing, amenities, owner name, and a direct detail URL. The `ownerOnly` flag keeps only direct-from-owner listings so you skip agent/broker inventory entirely.

### Output fields

| Field | Description |
|-------|-------------|
| `listing_id` | Unique NoBroker listing ID |
| `searchMode` | `rent`, `buy`, or `pg` |
| `title` | Listing headline |
| `propertyType` | Apartment, Villa, Builder Floor, etc. |
| `bhk` | Number of bedrooms (e.g., 2) |
| `bathrooms` | Number of bathrooms |
| `carpet_area_sqft` | Carpet area in sq ft |
| `price_inr` | Numeric price — monthly rent (rent/PG) or total (buy) |
| `deposit_inr` | Security deposit |
| `maintenance_inr` | Maintenance charges |
| `furnishing` | Furnished / Semi-Furnished / Unfurnished |
| `facing` | Direction the unit faces |
| `floor` | Floor number |
| `total_floors` | Total floors in building |
| `locality` | Neighborhood name |
| `city` | City |
| `latitude` | GPS latitude |
| `longitude` | GPS longitude |
| `project_name` | Project or society name |
| `owner_name` | Listed-by contact name |
| `listed_by` | `owner` or `agent` |
| `tenant_preferences` | Preferred tenant types (rent) |
| `amenities` | Array of amenity names |
| `images` | Array of image URLs |
| `description` | Full listing description |
| `url` | Direct NoBroker listing URL |
| `posted_at` | Date listing was posted |
| `scraped_at` | ISO 8601 timestamp of this run |

Fields are omitted when not populated.

### Example output

```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/..."],
    "url": "https://www.nobroker.in/property/8a9fc02f4d71b123",
    "posted_at": "2026-04-14",
    "scraped_at": "2026-04-20T12:31:02+00:00"
}
```

### Input parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `searchMode` | Yes | `rent`, `buy`, or `pg`. Default `rent`. |
| `city` | Yes | Indian city (e.g., `Bangalore`, `Mumbai`, `Delhi`, `Hyderabad`, `Pune`, `Chennai`). Default `Bangalore`. |
| `localities` | No | List of neighborhoods (e.g., `["Koramangala", "HSR Layout"]`). Empty means the whole city. |
| `bhk` | No | Number of bedrooms as integers (e.g., `[2, 3]`). |
| `propertyType` | No | One or more of `apartment`, `villa`, `independent-house`, `builder-floor`, `studio`. |
| `minPrice` | No | Minimum price in INR. |
| `maxPrice` | No | Maximum price in INR. |
| `minArea` | No | Minimum area in sq ft. |
| `maxArea` | No | Maximum area in sq ft. |
| `furnishing` | No | `furnished`, `semi-furnished`, or `unfurnished`. |
| `tenantType` | No | `family`, `bachelor`, or `company` (rent only). |
| `ownerOnly` | No | Keep only direct-owner listings (exclude agents). Default `true`. |
| `maxResults` | No | Maximum listings to return. Default `15`. |
| `proxyConfiguration` | No | Proxy settings. Defaults work out of the box for Indian cities. |

### Use cases

- **Renters and home buyers**: Find owner-direct listings and skip broker markups entirely.
- **Proptech builders**: Power no-brokerage rental and sale tools with fresh inventory.
- **Relocation services**: Filter by tenant type, furnishing, and locality for bulk matching.
- **Investors**: Track per-locality pricing and owner-listed supply trends.

### Limitations

- Owner phone numbers are gated behind NoBroker's in-app contact flow and are not returned.
- Coverage is strongest in Bangalore, Mumbai, Delhi NCR, Hyderabad, Pune, and Chennai; smaller cities have thinner inventory.
- RERA IDs appear only on a subset of listings (NoBroker does not enforce it for all owners).
- Commercial properties are out of scope — residential rent, buy, and PG only.

### Compared to alternatives

- **vs. NoBroker official API**: NoBroker does not offer a public data API; this actor is the structured-data alternative.
- **vs. other property scrapers**: Most Apify alternatives cover 99acres or MagicBricks only and miss NoBroker's owner-direct inventory entirely.

Pairs well with [MagicBricks Scraper](https://apify.com/thirdwatch/magicbricks-scraper?fpr=9m2cd6), [99acres Scraper](https://apify.com/thirdwatch/acres99-scraper?fpr=9m2cd6), and [CommonFloor Scraper](https://apify.com/thirdwatch/commonfloor-scraper?fpr=9m2cd6) for full India rental supply coverage.

### FAQ

**How is this different from other property scrapers?**
NoBroker specializes in direct-from-owner listings with zero brokerage. This is the only scraper in this family that surfaces that inventory.

**Does `ownerOnly` really exclude agents?**
Yes. With `ownerOnly: true` (default), listings flagged as `agent` are filtered out.

**Can I restrict to specific neighborhoods?**
Yes — pass an array like `"localities": ["Koramangala", "HSR Layout"]`.

**Does it include co-living / PG?**
Yes — set `searchMode` to `pg`.

**How fresh is the data?**
Pulled live from NoBroker on every run.

Last verified: 2026-10

More scrapers at [thirdwatch.dev](https://thirdwatch.dev).

# Actor input Schema

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

rent (rental listings), buy (for-sale listings), or pg (paying guest)

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

City name. Examples: Bangalore, Mumbai, Delhi, Hyderabad, Pune, Chennai.

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

Filter by neighborhood names (e.g. Koramangala, HSR Layout). Leave empty to search the whole city.

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

Number of bedrooms to filter by. Select one or more of 1, 2, 3, 4, 5.

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

Apartment, villa, independent-house, builder-floor or studio.

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

Minimum rent/sale price in INR.

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

Maximum rent/sale price in INR.

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

Minimum property size in square feet.

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

Maximum property size in square feet.

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

furnished, semi-furnished, unfurnished.

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

family, bachelor, company.

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

NoBroker's key value prop: keep only direct-owner listings (exclude agents).

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

Maximum number of listings to scrape. Default 20. Keep small for QA runs.

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

Proxy settings. Pre-configured defaults work 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

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

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

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

```

## MCP server setup

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