# MagicBricks Scraper: Rent & Sale, 16 Fields, No Browser (`themineworks/magicbricks-scraper`) Actor

Scrape MagicBricks property listings across Indian cities: price, BHK, area, project, locality, poster and listing date. Rent or sale. Parses the site's structured schema.org data: no login, no browser, pay per property. Use it as an MCP server in Claude, ChatGPT & AI agents.

- **URL**: https://apify.com/themineworks/magicbricks-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Features:** Limited permissions
- **Stats:** 14 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 property 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/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: Rent & Sale, 16 Fields, No Browser

[![25 Bangalore rentals in 10 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/magicbricks-scraper-hero-fix0930.png)](https://console.apify.com/actors/emn6Ei4jwTGAQFNAL/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 290,000 runs across 310+ public actors.

Pick an Indian city, rent or sale, and the BHK sizes you want, and get MagicBricks listings back as clean rows: price as a number, BHK, property type, area in square feet, the project or society, locality, city, who posted it, when it was listed and when the listing expires, and the listing URL. The data comes from the schema.org data MagicBricks publishes on its own search pages, read over plain HTTP: no login and no browser.

**No proxy setup needed.** Leave the Proxy field as the form fills it. MagicBricks refuses most of Apify's datacenter IPs (12 of our 13 datacenter requests on 2 October got HTTP 403), so when it refuses a search page the actor fetches that page once more on an Indian residential IP. That works the same from the Console form and from the API, and the proxy cost is ours, not yours. Details are under "Which proxy should I use?" below.

### Why choose this actor?

- **Numbers you can sort, not display strings.** `price` and `area_sqft` come back as numbers and `listed_at` as a timestamp. Our scheduled run on 30 September returned 25 two BHK rentals in Bangalore in under 10 seconds, from ₹21,000 to ₹200,000 a month, each with its area, locality and poster.
- **Project and poster on almost every row.** 72 of 75 rows across our last three runs named the project or society (such as Prestige Falcon City or L\&T Raintree Boulevard), and every row named who posted it, so you can group supply by development and by poster.
- **Pay only for listings delivered, from $0.60 per 1,000.** A listing that appears twice in a run is delivered and charged once, and a search that returns nothing costs only the $0.005 start fee.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/emn6Ei4jwTGAQFNAL/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Real estate family:** [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Zillow Property Scraper](https://apify.com/themineworks/zillow-property-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [99acres Scraper](https://apify.com/themineworks/99acres-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Run this through the API, or paste it into the JSON tab of the input page:

```json
{
  "city": "Bangalore",
  "listingType": "RENT",
  "bedrooms": ["2"],
  "maxResults": 10
}
```

You get 10 two BHK rentals in Bangalore in 10 to 20 seconds. Our test of this input on 2 October took 17 seconds, most of it the residential retry after MagicBricks refused the datacenter request.

`city` is the city name as MagicBricks uses it in its own search, for example Bangalore, Mumbai, Pune, Hyderabad, Chennai or Aurangabad. `listingType` is `RENT` or `BUY`. `bedrooms` lists the BHK counts, each searched as its own MagicBricks results page of up to 30 listings. `maxResults` caps the total across all of them.

Apify's free plan includes $5 of credit every month, which covers about 4,800 listings at this actor's Free plan price ($0.001 a listing plus the $0.005 start fee, in runs of 150 listings).

#### Copy to your AI assistant

```
themineworks/magicbricks-scraper on Apify. Returns MagicBricks property listings (India) for one city, rent or sale, and chosen BHK sizes: price as a number, BHK, property type, area in sqft, project, locality, city, poster, listed and expiry dates, URL. Call ApifyClient("TOKEN").actor("themineworks/magicbricks-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: none. Optional: city (default "Bangalore"), listingType ("RENT" or "BUY", default "RENT"), bedrooms (string[] of BHK counts, default ["2"], first 5 used, one results page of up to 30 listings each), maxResults (default 25; at most 30 per BHK value). Leave proxyConfiguration out, or pass the plain {"useApifyProxy": true}, and keep allowResidentialFallback true (the default): a search page refused on datacenter is then fetched once more on residential India. A run with nothing delivered returns one row with status "no_results" (not billed). Full spec: GET https://api.apify.com/v2/acts/themineworks~magicbricks-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **16 fields per listing.** `property_id`, `title`, `listing_type`, `price`, `price_currency`, `bhk`, `property_type`, `area_sqft`, `project`, `locality`, `city`, `posted_by`, `listed_at`, `expires_at`, `url` and `scraped_at`.
- **Rent or sale, up to 5 BHK sizes per run.** Each BHK value is one MagicBricks results page of up to 30 listings, so one run returns at most 150 listings (30 for each of 5 BHK values).
- **Read from MagicBricks' structured data.** Every MagicBricks search page carries schema.org JSON-LD: a list of the listings and one priced rent or sale record per listing. The actor reads that instead of the page layout, so a design change on the site does not break the fields.
- **Locality and city from two sources.** MagicBricks words its titles differently for different visitors, so the actor combines the listing title with the priced record and falls back to the city you searched.
- **No browser, no proxy setup.** One plain HTTP request per BHK value, plus one residential retry when MagicBricks refuses the datacenter request, which is why a run takes seconds.

### How to use it

#### Basic: 2 BHK rentals in one city (API)

```json
{
  "city": "Bangalore",
  "listingType": "RENT",
  "bedrooms": ["2"],
  "maxResults": 30
}
```

30 is the most one BHK value can return, because the actor reads one MagicBricks results page per BHK value.

#### Flats for sale in several sizes

```json
{
  "city": "Pune",
  "listingType": "BUY",
  "bedrooms": ["2", "3", "4"],
  "maxResults": 90
}
```

Three results pages, up to 30 listings each. Sale rows carry `listing_type: "SALE"`.

#### From the Console form, as it opens

```json
{
  "city": "Hyderabad",
  "listingType": "RENT",
  "bedrooms": ["1", "2", "3"],
  "maxResults": 90,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

This is what the form sends when you leave the Proxy field as it is. The actor treats it exactly like an input with no proxy setting: datacenter first, then one residential India attempt for each page datacenter refuses.

#### Weekly asking rent tracker

Save one of the inputs above as a task and schedule it weekly (for example `0 7 * * 1`). Each run returns the listings on MagicBricks' first results page for each BHK size that week, so store `property_id`, `price`, `area_sqft` and `locality` and compute rent per square foot by locality over time. Consecutive weeks overlap: our three scheduled runs from 23 to 30 September returned 75 rows covering 38 different properties. With `monitorMode` off the actor does not remember earlier runs, so repeated listings are charged again in each run; turn it on to get only listings you have not received before.

#### Rental yield by project

Run the same city with `RENT` and with `BUY` for the same BHK sizes, then match rows on `project` and compare annual rent with asking price. Most rows name the project, so the join is usually possible for larger societies.

### Input parameters

| Parameter | Type | Default | What it does |
| --- | --- | --- | --- |
| `city` | string | `Bangalore` (also the form prefill) | City name as MagicBricks uses it. Passed to MagicBricks' own search as is. |
| `listingType` | string | `RENT` | `RENT` for rentals or `BUY` for properties for sale. |
| `bedrooms` | array of strings | `["2"]` (also the form prefill) | BHK counts, such as `1`, `2`, `3`. Each is one results page of up to 30 listings. Only the first 5 are used. |
| `maxResults` | integer (1 or more) | `25` (form prefill: `10`) | Most listings to return across all BHK values. The real ceiling is 30 per BHK value. |
| `proxyConfiguration` | object | none (form prefill: Apify Proxy, automatic) | Leave it out or at the prefill: datacenter first, then the residential retry below. If you choose proxy groups, a country or your own proxy URLs, the actor uses exactly that and skips the residential retry. |
| `allowResidentialFallback` | boolean | `true` | Applies with the default proxy setting (left out, or the prefill): a search page that datacenter refuses is fetched once more on residential India. Turn it off to use datacenter only, and expect empty runs while MagicBricks refuses datacenter IPs. |

"Form prefill" values fill the Console form for you but are not defaults. You can leave the prefilled Proxy setting as it is.

**Run options.** The default timeout of 300 seconds and memory of 512 MB are plenty: a run makes one page request per BHK value, plus a few retries.

### What data do you get?

One row per listing. Fields MagicBricks does not give for a listing are left out of that row.

**The listing**: `property_id` (MagicBricks' listing ID, from the URL), `title` (as MagicBricks words it), `listing_type` (`RENT` or `SALE`), `url`, `posted_by` (the name on the listing, an owner, agent or builder), `listed_at` and `expires_at` (ISO timestamps), `scraped_at`.

**The property**: `bhk`, `property_type` (such as `Apartment` or `Fully Furnished Flat`, as MagicBricks words it), `area_sqft` (the area MagicBricks shows, normally built up area; MagicBricks does not label the basis consistently), `project` (the named project or society, when there is one).

**Price and place**: `price` (a number, monthly rent for rentals and asking price for sales), `price_currency` (`INR`), `locality`, `city`.

`city` is normally the city you searched. When MagicBricks words a title with an extra comma, it can carry the locality too, as in one 30 September row where `city` was `Richmond Town Bangalore`; filter on the searched city name contained in `city` if that matters.

If a run delivers nothing, the dataset holds one row with `status: "no_results"`, the city, the listing type, a note, `refused_pages` (how many search pages MagicBricks refused with HTTP 403 or 429 on every transport tried) and the actor's own cost counters. It is never charged. The note tells you whether MagicBricks refused the pages or simply had no listings for the search.

#### Stable fields for automations

These 15 fields were present in all 75 rows of our three latest scheduled runs on the live build (23 to 30 September). `project` was in 72 of the 75.

| Field | What it holds |
| --- | --- |
| `property_id` | MagicBricks listing ID; the deduplication key |
| `title` | Listing title as MagicBricks words it |
| `listing_type` | `RENT` or `SALE` |
| `price` | Rent per month or asking price, number |
| `price_currency` | `INR` |
| `bhk` | Bedrooms, number |
| `property_type` | Such as `Apartment` or `Fully Furnished Flat` |
| `area_sqft` | Area in square feet, number |
| `locality` | Locality or neighbourhood |
| `city` | City |
| `posted_by` | Name of the owner, agent or builder on the listing |
| `listed_at` | When the listing went live, ISO timestamp |
| `expires_at` | When the listing expires, ISO timestamp |
| `url` | MagicBricks listing URL |
| `scraped_at` | ISO timestamp when the row was captured |

We will not rename these fields. New fields may be added over time; existing ones keep their names.

#### Output examples

Real rows from our scheduled run of the live build on 30 September 2026 (Bangalore, `RENT`, 2 BHK).

A rental in a named project:

```json
{
  "property_id": "4d423835363436343435",
  "title": "2 BHK Apartment for Rent in Hebbal Bangalore",
  "listing_type": "RENT",
  "price": 80000,
  "price_currency": "INR",
  "bhk": 2,
  "property_type": "Apartment",
  "area_sqft": 1355,
  "project": "L&T Raintree Boulevard",
  "locality": "Hebbal",
  "city": "Bangalore",
  "posted_by": "Santosh",
  "listed_at": "2026-09-27T23:45:22.000Z",
  "expires_at": "2026-11-26T23:45:22.000Z",
  "url": "https://www.magicbricks.com/propertyDetails/2-BHK-1355-Sq-ft-Multistorey-Apartment-FOR-Rent-Hebbal-in-Bangalore&id=4d423835363436343435",
  "scraped_at": "2026-09-30T11:03:33.065Z"
}
```

A listing with no named project, where `project` is left out (and `city` carries the locality, as described above):

```json
{
  "property_id": "4d423836373033393733",
  "title": "2 BHK Apartment for Rent in Richmond Town, Richmond Town Bangalore",
  "listing_type": "RENT",
  "price": 150000,
  "price_currency": "INR",
  "bhk": 2,
  "property_type": "Apartment",
  "area_sqft": 1500,
  "locality": "Richmond Town",
  "city": "Richmond Town Bangalore",
  "posted_by": "Syed  Rabbani",
  "listed_at": "2026-09-30T08:55:14.000Z",
  "expires_at": "2026-11-29T18:30:00.000Z",
  "url": "https://www.magicbricks.com/propertyDetails/2-BHK-1500-Sq-ft-Multistorey-Apartment-FOR-Rent-Richmond-Town-in-Bangalore&id=4d423836373033393733",
  "scraped_at": "2026-09-30T11:03:33.534Z"
}
```

The row a run returns when nothing is delivered (our 2 October test of the current code with a city name MagicBricks does not know, `Xyzpur`; MagicBricks answered with an error page on both transports; never charged; cost counters trimmed):

```json
{
  "status": "no_results",
  "city": "Xyzpur",
  "listing_type": "RENT",
  "note": "MagicBricks returned no JSON-LD listings for this search. Try another city or bedroom count.",
  "refused_pages": 0,
  "requests": 2,
  "delivered": 0,
  "scraped_at": "2026-10-02T08:36:45.609Z"
}
```

When MagicBricks refuses the pages instead (for example with `allowResidentialFallback` turned off), `refused_pages` counts them and the note says so.

### Pricing

Pay per event: you pay for each listing delivered to your dataset, plus a small start fee per run.

| Event | Free | Bronze | Silver | Gold and above |
| --- | --- | --- | --- | --- |
| `property-scraped`, per listing | $0.001 | $0.0009 | $0.00075 | $0.0006 |
| `property-scraped`, per 1,000 listings | $1.00 | $0.90 | $0.75 | $0.60 |
| `apify-actor-start`, per run | $0.005 per GB of run memory, minimum one event | same | same | same |

**The start fee, exactly.** Apify's `apify-actor-start` event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 512 MB by default, so a default run pays one event: $0.005, including a run that finds nothing.

**Worked examples.** 30 listings on the Free plan cost $0.03 plus $0.005. A full 150 listing run (5 BHK sizes) costs $0.15 plus $0.005 on Free, or $0.09 plus $0.005 on Gold. A weekly tracker of 90 listings costs about $0.40 a month on Free, start fees included.

**Never charged:** a listing seen twice in the same run, a search that returns nothing, a refused or failed request and its retry, and the `no_results` row.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

### Run it on a schedule

Turn on `monitorMode` and each run delivers only the listings you have not received before, so a daily run costs you only for what is new.

1. Enter your input, switch on **Monitor mode** and click **Save as a task**.
2. In Apify Console open **Schedules**, click **Add schedule** and pick **Daily** (or any time and timezone you like).
3. Under **Actors or tasks to run**, add the task you saved and save the schedule.

```json
{
  "city": "Bangalore",
  "listingType": "RENT",
  "bedrooms": [
    "2",
    "3"
  ],
  "maxResults": 60,
  "monitorMode": true
}
```

The first run delivers everything it finds. After that, each run delivers only listings that were not in an earlier run with the same input, and listings it skips are never charged. The summary row at the end shows `new_this_run` and `skipped_duplicates`. Changing the input starts a fresh history; changing only the result limit does not. Each run still reads MagicBricks' first results page for each BHK size, so a daily schedule catches listings as they arrive on that page.

### FAQ

**What is MagicBricks?**
MagicBricks is one of India's largest property portals, with rental and sale listings from owners, agents and builders across Indian cities. This actor reads its public search results pages, the same ones any visitor sees without signing in.

**Which proxy should I use?**
The default. Leave the Proxy field as the form fills it (Apify Proxy, automatic), or leave `proxyConfiguration` out of an API call. The actor tries datacenter first and, when MagicBricks refuses a search page, fetches that page once more on an Indian residential IP. MagicBricks refuses most datacenter IPs: HTTP 403 in 4 of our 5 scheduled runs from 9 to 30 September, and on 12 of our 13 datacenter requests on 2 October. In each of those scheduled runs the residential retry delivered the listings, and in our 2 October test of a run started with the form's defaults it fetched the full page of 30 listings. If you pick proxy groups, a country or your own proxies, the actor uses exactly that and does not retry on residential. To use datacenter only, turn off `allowResidentialFallback`. The proxy cost is included in the price per listing either way.

**How many listings can I get?**
Up to 30 per BHK value and up to 5 BHK values per run, so 150 at most. The actor reads the first MagicBricks results page for each search and does not page further. For more coverage, run several cities, or rent and sale separately.

**Which cities work?**
Any city MagicBricks' own search accepts by name. The name is passed to MagicBricks as is, so use the spelling MagicBricks uses (Bangalore rather than Bengaluru worked in our runs). An unknown name returns the `no_results` row and costs only the start fee.

**Is `area_sqft` carpet area or built up area?**
It is the area MagicBricks shows on the listing, which is normally built up area. MagicBricks does not consistently say which basis a lister used, so the value is passed through unchanged.

**How fresh is the data?**
Every run reads MagicBricks live. `listed_at` and `expires_at` come from MagicBricks itself, so you can drop listings older than you care about.

**Do I need a MagicBricks account or cookies?**
No. You need only an Apify account.

**Can I schedule it and track prices?**
Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression. Each run returns the current first results page for each BHK value; deduplicate on `property_id` when you store rows. Repeated listings are charged again in each run unless you turn on `monitorMode`, which delivers only listings you have not received before.

**Why did my run return only one row with `status: "no_results"`?**
Read its `note`. If MagicBricks refused the pages (`refused_pages` above 0), the residential retry was off (you turned off `allowResidentialFallback` or chose your own proxy setting) or MagicBricks refused that too; run again with the default proxy setting. Otherwise the city name was not recognised (MagicBricks answers an unknown city with an error page) or it had no listings for that search. Nothing is charged for that row.

**How do I export the data?**
From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API.

**Can I use it from Claude, ChatGPT or another AI assistant?**

- Connector URL: `https://mcp.apify.com/?tools=themineworks/magicbricks-scraper`.
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http magicbricks-scraper "https://mcp.apify.com/?tools=themineworks/magicbricks-scraper"`.

It is also one of the tools inside our [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) server.

**Is it legal to scrape MagicBricks?**
The actor reads only public listings that anyone can see on MagicBricks without logging in, and it does not get past any login or paywall. `posted_by` can be a private owner's name, so you are responsible for how you use it, including MagicBricks' terms, India's DPDP Act, GDPR and CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets:** export a run to a sheet, or use Apify's Google Sheets integration to append each weekly run.
- **Make, Zapier and n8n:** use the Apify app or node to start a run on a schedule and send new listings in a price band to Slack, email or a CRM.
- **Webhooks:** have Apify call your URL when a run succeeds, then read the dataset.
- **API and client libraries:** start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
- **MCP clients:** Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through `https://mcp.apify.com`.

For other Indian portals with the same kind of data, see [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [99acres Scraper](https://apify.com/themineworks/99acres-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### More from The Mine Works

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Property Scraper](https://apify.com/themineworks/zillow-property-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [99acres Scraper](https://apify.com/themineworks/99acres-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Photos Scraper](https://apify.com/themineworks/zillow-photos?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Real Estate MCP](https://apify.com/themineworks/real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Airbnb Scraper](https://apify.com/themineworks/airbnb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Domain.com.au Property Scraper](https://apify.com/themineworks/domain-property-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [realestate.com.au Scraper](https://apify.com/themineworks/realestate-com-au-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow ZIP Code Bulk Search Scraper](https://apify.com/themineworks/zillow-zip-bulk-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [JustDial Scraper](https://apify.com/themineworks/justdial-business?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [data.gov.in Scraper](https://apify.com/themineworks/india-data-gov-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [World Bank Trade Scraper](https://apify.com/themineworks/global-trade-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [Tennis Match & Player Data Scraper](https://apify.com/themineworks/tennis-match-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Hotels Prices Scraper](https://apify.com/themineworks/google-hotels-prices-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LandWatch Scraper](https://apify.com/themineworks/landwatch-land-for-sale-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a city that does not work, or a field you need? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new property portal, email dmineworks@gmail.com. A guide for this actor also lives at [themineworks.com](https://themineworks.com/actors/magicbricks-scraper/).

*MagicBricks Scraper turns a city, rent or sale, and BHK sizes into clean listing rows with numeric prices and areas, at up to 30 listings per BHK size and from $0.60 per 1,000.*

# Actor input Schema

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

Indian city name, e.g. Bangalore, Mumbai, Pune.

## `listingType` (type: `string`):

Whether to search rental or for-sale property listings on MagicBricks, e.g. RENT for flats to let or BUY for flats for sale.

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

BHK counts to search, e.g. 2 and 3. Each is a separate search page.

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

Maximum number of properties to return across all searched BHK counts. Higher values cost more runtime.

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

Leave this at its default (Apify Proxy, automatic): the actor tries datacenter first and, when MagicBricks refuses a page (it refuses most datacenter IPs), fetches that page once more on Indian residential, as long as Allow residential fallback is on. If you choose proxy groups, a country or your own proxies, they are used exactly as given and the fallback is off. Proxy costs are included in the price per property.

## `allowResidentialFallback` (type: `boolean`):

With the default proxy setting, a search page that datacenter refuses is fetched once more on Indian residential. On by default. Turn it off to use datacenter only; MagicBricks refuses most datacenter IPs, so such runs often return nothing.

## `monitorMode` (type: `boolean`):

Run on a schedule and deliver ONLY listings not seen in a previous run. You are charged per new listing, not for the whole feed each time. Ideal for daily monitoring. Requires the same input across runs.

## Actor input object example

```json
{
  "city": "Bangalore",
  "listingType": "RENT",
  "bedrooms": [
    "2"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "allowResidentialFallback": true,
  "monitorMode": 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 = {
    "city": "Bangalore",
    "listingType": "RENT",
    "bedrooms": [
        "2"
    ],
    "maxResults": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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 = {
    "city": "Bangalore",
    "listingType": "RENT",
    "bedrooms": ["2"],
    "maxResults": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/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 '{
  "city": "Bangalore",
  "listingType": "RENT",
  "bedrooms": [
    "2"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call themineworks/magicbricks-scraper --silent --output-dataset

```

## MCP server setup

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