MagicBricks Scraper: Rent & Sale, 16 Fields, No Browser avatar

MagicBricks Scraper: Rent & Sale, 16 Fields, No Browser

Pricing

from $0.60 / 1,000 property scrapeds

Go to Apify Store
MagicBricks Scraper: Rent & Sale, 16 Fields, No Browser

MagicBricks Scraper: Rent & Sale, 16 Fields, No Browser

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.

Pricing

from $0.60 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

3

Monthly active users

8.1 hours

Issues response

2 days ago

Last modified

Share

25 Bangalore rentals in 10 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ 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

Part of The Mine Works Real estate family: Zillow Rentals Scraper, Zillow Sold Comps Scraper, Housing.com Scraper, India Real Estate MCP, Zillow Property Scraper, 99acres Scraper.

Try it in one minute

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

{
"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

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)

{
"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

{
"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

{
"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. The actor does not remember earlier runs, so repeated listings are charged again in each run.

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

ParameterTypeDefaultWhat it does
citystringBangalore (also the form prefill)City name as MagicBricks uses it. Passed to MagicBricks' own search as is.
listingTypestringRENTRENT for rentals or BUY for properties for sale.
bedroomsarray 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.
maxResultsinteger (1 or more)25 (form prefill: 10)Most listings to return across all BHK values. The real ceiling is 30 per BHK value.
proxyConfigurationobjectnone (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.
allowResidentialFallbackbooleantrueApplies 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.

FieldWhat it holds
property_idMagicBricks listing ID; the deduplication key
titleListing title as MagicBricks words it
listing_typeRENT or SALE
priceRent per month or asking price, number
price_currencyINR
bhkBedrooms, number
property_typeSuch as Apartment or Fully Furnished Flat
area_sqftArea in square feet, number
localityLocality or neighbourhood
cityCity
posted_byName of the owner, agent or builder on the listing
listed_atWhen the listing went live, ISO timestamp
expires_atWhen the listing expires, ISO timestamp
urlMagicBricks listing URL
scraped_atISO 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:

{
"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):

{
"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):

{
"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.

EventFreeBronzeSilverGold 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 eventsamesamesame

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.

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.

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 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, Housing.com Scraper and 99acres Scraper.

More from The Mine Works

Real estate

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Science, health and government data

Jobs and hiring

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

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.

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.