# MagicBricks Scraper — India Rent & Sale Property Listings (`yugenox/magicbricks-scraper`) Actor

Scrape MagicBricks property listings for rent or sale in any Indian city: price, deposit, maintenance, BHK, area, floor, furnishing, locality and coordinates, project, developer, RERA, amenities, photos and agent or builder details. Filter by locality, BHK, price, area and who posted. No login.

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

## Pricing

from $1.20 / 1,000 listings

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/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

## MagicBricks Scraper: India rent and sale property listings

Scrape **MagicBricks.com** property listings for **rent or sale in any Indian city**. Search by **city, locality, property type and BHK**, filter by **price, area, furnishing and who posted it** (owner, agent or builder), or paste MagicBricks listing links you opened in your browser. Every listing comes back with its **price, security deposit or booking amount, maintenance**, BHK, bathrooms, **super built-up and carpet area**, floor, furnishing, facing, possession status, **locality and coordinates**, the **project, developer and RERA numbers**, amenities, photos, the full description, and the **agent's or builder's business details**. No login, no cookies, no account.

### What you get

| | |
|---|---|
| **Listing** | ID, URL, title, rent or sale, property type (Apartment, Independent House, Villa, Builder Floor, Penthouse, Plot, Office, Shop), Resale / New Property, posted and expiry dates |
| **Price** | Price in rupees plus MagicBricks' own text ("₹1.26 Cr", "₹45,000"), price per sq ft, security deposit (rent), booking amount (sale), maintenance and how often it's charged |
| **Size & layout** | Bedrooms, bathrooms, balconies, super built-up area, carpet area, area in sq ft, floor and total floors, extra rooms (puja room, study, servant room) |
| **Condition** | Furnishing, facing, overlooking, parking, flooring, possession status, available-from date, age of construction, power backup, water supply, preferred tenants |
| **Location** | City, locality, landmark, project address, latitude and longitude |
| **Project** | Project / society name and link, developer, RERA registration numbers, amenities, project video |
| **Advertiser** | Owner, agent or builder; for agents and builders: firm name, contact person, RERA ID, MagicBricks profile link, track record ("500+ Buyers Served") |
| **Photos** | Main photo, all photo URLs, photo count |

### How to use it

1. Choose **Rent** or **Buy** and type a **city**: Mumbai, Bangalore, New Delhi, Gurgaon, Noida, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad, Thane, Navi Mumbai… (Bengaluru, Gurugram, Delhi and Bombay work too).
2. Optionally add **localities** such as `Andheri West`, `Whitefield`, `Baner` or `Sector 62`, pick **property types** and **bedrooms (BHK)**.
3. Optionally set **filters**: minimum/maximum price in rupees, area in sq ft, furnishing, and whether you want listings by owners, agents or builders.
4. Set **Max listings** and run.

Or paste **MagicBricks listing links** (they end in `-pppfr` for rent or `-pppfs` for sale). A link to `/page-3` starts from page 3.

#### Input examples

2 BHK flats for sale in Andheri West, Mumbai:

```json
{
  "purpose": "buy",
  "city": "Mumbai",
  "localities": ["Andheri West"],
  "propertyTypes": ["flats"],
  "bedrooms": ["2"],
  "maxItems": 30
}
```

Furnished or semi-furnished 2 and 3 BHK rentals under ₹60,000 in two Bangalore localities, agents only:

```json
{
  "purpose": "rent",
  "city": "Bangalore",
  "localities": ["Whitefield", "Koramangala"],
  "bedrooms": ["2", "3"],
  "maxPrice": 60000,
  "furnishing": ["furnished", "semi-furnished"],
  "postedBy": ["agent"],
  "maxItems": 200
}
```

Villas and builder floors for sale in Gurgaon:

```json
{
  "purpose": "buy",
  "city": "Gurugram",
  "propertyTypes": ["villas", "builder-floors"],
  "maxItems": 100
}
```

Office space and shops for rent:

```json
{
  "purpose": "rent",
  "city": "Hyderabad",
  "propertyTypes": ["office-spaces", "shops"],
  "minAreaSqft": 1000,
  "maxItems": 50
}
```

### Output example

```json
{
  "id": "86683667",
  "url": "https://www.magicbricks.com/propertyDetails/2-BHK-1277-Sq-ft-Multistorey-Apartment-FOR-Rent-whitefield-in-Bangalore&id=4d423836363833363637",
  "title": "2BHK Multistorey Apartment for Rent in Assetz Marq at Whitefield",
  "purpose": "rent",
  "propertyType": "Apartment",
  "transactionType": "Rent",
  "price": 59000,
  "priceText": "₹59,000",
  "currency": "INR",
  "pricePerSqft": 46,
  "depositAmount": 240000,
  "maintenanceCharges": 6000,
  "maintenanceFrequency": "Monthly",
  "bedrooms": 2,
  "bathrooms": 2,
  "balconies": 1,
  "coveredArea": 1277,
  "carpetArea": 950,
  "areaSqft": 1277,
  "floorText": "7 of 19 Floor",
  "furnishing": "Furnished",
  "facing": "North",
  "possessionStatus": "Immediately",
  "ageOfConstruction": "5 to 10 years",
  "tenantsPreferred": "Bachelors/Family",
  "city": "Bangalore",
  "locality": "Whitefield",
  "latitude": 13.024725,
  "longitude": 77.7618,
  "projectName": "Assetz Marq",
  "developerName": "Assetz Property Group",
  "reraNumbers": ["PRM/KA/RERA/1251/446/PR/091122/005433", "PRM/KA/RERA/1251/446/PR/171016/000973"],
  "amenities": ["Jogging and Strolling Track", "Power Back Up", "Lift", "Swimming Pool"],
  "imageCount": 11,
  "postedBy": "agent",
  "advertiserName": "…",
  "buyersServed": "500+ Buyers Served",
  "postedAt": "2026-09-29T05:27:59.000Z",
  "page": 1,
  "position": 1,
  "scrapedAt": "2026-10-01T21:12:40.000Z"
}
```

Every row has every field (71 in total); fields MagicBricks doesn't show for a listing are `null`.

### Use cases

- **Rent and price research**: rent, deposit and price per sq ft by locality, BHK and furnishing.
- **Investment screening**: new resale and builder listings in a locality, RERA numbers and possession status.
- **Lead generation for service businesses**: the agencies and builders active in each locality, with their published business details.
- **Market monitoring**: schedule daily runs to follow asking prices and listing counts over time.
- **Relocation and corporate housing**: furnished rentals with preferred tenants and available-from dates.

### FAQ

**Do I need a MagicBricks account, cookies or an API key?** No. The scraper reads the same public listing pages any visitor sees without logging in. There is nothing to set up.

**How many listings can I get?** MagicBricks shows up to 50 pages of 30 listings (1,500) per search. For more, split a city by localities or bedrooms; each locality × BHK is its own search. **Max listings** counts all your searches together; 0 means no limit.

**My locality wasn't found.** Write it the way MagicBricks does (open the locality on magicbricks.com and copy its name, e.g. `Andheri West`, `Sector 62`), or paste the listing link itself. Searches MagicBricks has no page for are skipped and not charged.

**Some searches say MagicBricks shows a "We'll be back soon" page.** MagicBricks shows its maintenance page for a few of its own listing pages (we saw it on the all-property and plot pages of some cities). Those searches are skipped and not charged; try another property type or a locality.

**What about listings by private owners?** They are included, but the owner's name and contact details are never part of the output: the advertiser fields stay empty, the owner's name is removed from the text, phone numbers and e-mails in titles and descriptions are hidden on every listing, and the map position is rounded to about 1 km. Agency and builder listings keep the firm's published business details.

**Are filters charged?** No. Price, area, furnishing and posted-by filters are applied to each page, and listings they remove are never saved or charged. If 8 pages in a row have nothing that matches, that search stops so you don't wait for nothing.

**Why does `priceText` say "Lac" or "Cr"?** That's how MagicBricks writes prices (1 Lac = ₹1,00,000; 1 Cr = ₹1,00,00,000). `price` is always the plain number in rupees.

**Which proxy should I use?** Keep the default (Apify datacenter proxy, included in every plan). If MagicBricks starts refusing datacenter connections, the run switches to residential proxies by itself when your account has them.

**Is it legal to scrape MagicBricks?** This Actor only collects publicly available data: property listings that anyone can view on MagicBricks without an account. Collecting publicly available data is generally legal, but you're responsible for how you use it. Results can include agents' and builders' names and business details, and that counts as personal data in some cases; private owners' names and contacts are never included. You must follow privacy laws such as GDPR, PIPEDA and CCPA (and India's Digital Personal Data Protection Act), as well as MagicBricks' terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages MagicBricks shows to any visitor without logging in. It never uses a login, never touches private accounts, and never reaches password-protected areas.

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by MagicBricks or Magicbricks Realty Services Limited.

# Actor input Schema

## `purpose` (type: `string`):

Listings for rent or for sale.

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

An Indian city as MagicBricks writes it, e.g. "Mumbai", "Bangalore", "New Delhi", "Gurgaon", "Pune", "Hyderabad". Bengaluru, Gurugram, Delhi and Bombay work too.

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

Run the same search in several cities.

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

Optional. Areas inside the city, e.g. "Andheri West", "Whitefield", "Sector 62". Each locality is a separate search. Leave empty for the whole city.

## `propertyTypes` (type: `array`):

Empty = flats. Penthouses and plots are listed for sale only.

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

Empty = any. "5" means 5 or more.

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

Maximum number of listings for the whole run, shared fairly between your searches. 0 = everything (MagicBricks shows up to 1,500 listings per search).

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

Optional: MagicBricks listing pages you opened in your browser, e.g. https://www.magicbricks.com/flats-for-rent-in-whitefield-bangalore-pppfr (they end in -pppfr for rent or -pppfs for sale; a /page-3 link starts from page 3).

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

In rupees: monthly rent for rentals, total price for sales. 1 lakh = 100000, 1 crore = 10000000.

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

In rupees: monthly rent for rentals, total price for sales.

## `minAreaSqft` (type: `integer`):

Only listings whose area (sq ft) is at least this value. Leave empty for no limit.

## `maxAreaSqft` (type: `integer`):

Only listings whose area (sq ft) is at most this value. Leave empty for no limit.

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

Empty = any.

## `postedBy` (type: `array`):

Empty = everyone. Listings by private owners never include the owner's name or contact details.

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

Apify Proxy (datacenter) is the default and comes with every Apify plan. If MagicBricks refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "purpose": "buy",
  "city": "Mumbai",
  "localities": [
    "Andheri West"
  ],
  "propertyTypes": [
    "flats"
  ],
  "bedrooms": [
    "2"
  ],
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped listings.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, searches, counts, requests and proxy use.

# 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 = {
    "purpose": "buy",
    "city": "Mumbai",
    "localities": [
        "Andheri West"
    ],
    "propertyTypes": [
        "flats"
    ],
    "bedrooms": [
        "2"
    ],
    "maxItems": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/magicbricks-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 = {
    "purpose": "buy",
    "city": "Mumbai",
    "localities": ["Andheri West"],
    "propertyTypes": ["flats"],
    "bedrooms": ["2"],
    "maxItems": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/magicbricks-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 '{
  "purpose": "buy",
  "city": "Mumbai",
  "localities": [
    "Andheri West"
  ],
  "propertyTypes": [
    "flats"
  ],
  "bedrooms": [
    "2"
  ],
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/magicbricks-scraper --silent --output-dataset

```

## MCP server setup

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