99acres logoMagicBricks logo

Property & travel · Live on Apify

99acres and MagicBricks Property Scraper

Get rent and sale homes from MagicBricks and 99acres in one table. Pick a city, type, BHK and budget. Compare prices across both portals.

About $1.80 for 1,000 results$0.0018 per result + $0.001 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

site99acres
listingId93377100
urlhttps://www.99acres.com/2-bhk-bedroom-apartment-flat-for-rent-in-eden…

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: Bangalore in City. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

India Property Listings Scraper reads public rent and sale listings from MagicBricks and 99acres for one Indian city and returns one row per listing with price, area, BHK, locality, project, builder, amenities, photos and who listed it.

  • City (city): for example Bangalore, Mumbai, Pune, New Delhi, Gurgaon, Noida, Hyderabad, Chennai, Kolkata or Ahmedabad. Bengaluru and Gurugram work too.
  • Rent or buy (listingType): rental listings (price per month) or homes for sale (full price).
  • Portal (site): both portals (default), only MagicBricks or only 99acres.
  • Filters: property type, BHK and budget in INR.

Good for

  • Compare rents or sale prices in one city across MagicBricks and 99acres.
  • Build a list of 2–3 BHK flats under a budget with area, locality and amenities.
  • Track new projects and builders in a city with RERA numbers and price per sq ft.

Not a good fit

  • Residential homes only: apartments, builder floors, houses, villas, penthouses and studios. No plots, offices, shops or PG.
  • No phone numbers, e-mails or names of private owners. The Actor does not log in and does not open single listing pages.
  • One city per run and at most 1,000 listings per run. For more, run the Actor again with another city, BHK or budget.
  • Other portals (Housing.com, NoBroker, Square Yards) are not supported.

Who uses it

Home seekers

List 2 or 3 BHK flats under your budget.

Property analysts

Check price per sq ft by locality.

Builders and brokers

Track new projects and builders in a city.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.001Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Page read$0.005One portal page read: a search results page or the 99acres city page. Retries after a block are not charged.
Saved listing$0.0018 (from $0.0012 on paid Apify plans)One listing saved to the Dataset. Filtered-out and repeated listings are not charged.

Examples

  • One result: about $0.0028.
  • 1,000 results: about $1.80.
  • Every day 100 results, for 30 days: about $5.43 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 2,700 results.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need a portal account or proxy?

No. It reads public results. An Indian proxy is in the price.

Does it get plots or offices?

No. It covers homes only, like flats, houses and villas.

Can I get owner phone numbers?

No. Phones, emails and owner names are not collected.

Can I pick only one portal?

Yes. Choose both, only MagicBricks or only 99acres.

Do I need a MagicBricks or 99acres account?

No. The Actor reads public search results without login. Indian residential proxy is included in the price.

Why are some fields null?

The portal did not show this value on the search result. For example, MagicBricks often gives only the carpet area, and 99acres does not give the builder name. The Actor does not guess missing values.

Are the results complete and fresh?

Each row is what the portal showed at fetchedAt. The portals order and limit their own results; RUN_SUMMARY.sites[].totalOnSite shows how many listings the portal reported. Each listing is saved once per run.

Can I search several cities in one run?

No, one city per run. Start one run per city, or call the Actor from a schedule or the API for each city.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep City = Bangalore (prefill) or type your city.
  3. Keep Rent or buy = rent and Max listings = 20 (prefill) for a first test.
  4. Click Start.
  5. Open the Output tab → Listings and check title, price, areaSqft and locality.
Use cases
TaskInputYou getKey fieldsNext step
Rent price check by localitycity, listingType: rent, bhklistingprice, locality, areaSqft, furnishingGoogle Sheets or CSV
Sale price per sq ft in a citylistingType: buylistingprice, pricePerSqft, carpetAreaSqft, localityBI tool via API
New projects and builderslistingType: buy, site: magicbrickslistingprojectName, builderName, reraId, availabilityCRM or spreadsheet
Compare portalssite: bothlistingsite, price, locality, listedByDataset export
Owner vs agent listingsanylistinglistedBy, agencyName, depositfilter in a spreadsheet
Tips for better results
  • One run covers one city. Make one task per city.
  • Bengaluru and Gurugram work as city names too.
  • Some fields are empty when the portal does not show them. The tool does not guess.
Limits and good to know
  • At most 1,000 listings per run and 60 pages per portal. The test run with 1,000 listings finished in 142 s
  • The default timeout is 300 s. Before the timeout the Actor stops new requests and keeps saved rows (partial, TIME_LIMIT). For 1,000 listings with narrow filters or with site: 99acres only (about 40 pages at a slower pace), give the run more time, for example 600 s
  • With very narrow filters, a portal stops after 5 pages in a row with no matching listing, so a small number of matches can be missed deep in the results
  • Values come from the search result cards. Fields that appear only on the listing page (full description, phone numbers) are not collected
  • 99acres sometimes shows a check page to fast visitors. The Actor slows down and retries through another Indian IP; if a portal still does not answer, its status is error and the other portal's rows stay

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "id": "99acres:93377100",
  "site": "99acres",
  "listingId": "93377100",
  "url": "https://www.99acres.com/2-bhk-bedroom-apartment-flat-for-rent-in-eden-park-at-the-prestige-city-sarjapur-bangalore-east-979-sqft-spid-B93377100",
  "title": "2 BHK Flat for rent in Sarjapur, Bangalore",
  "listingType": "rent",
  "price": 40000,
  "priceText": "40,000",
  "pricePerSqft": 40,
  "areaSqft": 979,
  "areaType": "Super Built-up Area",
  "carpetAreaSqft": 645,
  "builtUpAreaSqft": null,
  "superAreaSqft": 979,
  "bhk": 2,
  "bathrooms": 2,
  "balconies": 1,
  "propertyType": "Residential Apartment",
  "furnishing": "Semi-Furnished",
  "floor": "10",
  "totalFloors": 28,
  "facing": "East",
  "locality": "Sarjapur",
  "city": "Bangalore",
  "latitude": 12.877670671473693,
  "longitude": 77.7737927936145,
  "projectName": "Eden Park at The Prestige City",
  "builderName": null,
  "amenities": ["Corner Property", "Power Backup", "Gated Society", "Gas Pipeline", "CCTV Surveillance", "Pet Friendly"],
  "images": ["https://imagecdn.99acres.com/media1/40671/14/813434867M-1786265241016.jpg"],
  "listedBy": "agent",
  "agencyName": "G R Enterprises",
  "availability": "2026-08-09",
  "tenantPreference": "Single Women, Single Men, Family",
  "deposit": 150000,
  "maintenance": null,
  "maintenancePeriod": null,
  "reraId": null,
  "description": "Additionally, this property is in vicinity to important points of interest and is close to school, close to hospital…",
  "postedAt": "2026-08-09T08:40:01.000Z",
  "updatedAt": "2026-08-09T09:34:23.000Z",
  "position": 1,
  "searchUrl": "https://www.99acres.com/search/property/rent/residential/bangalore?city=20&preference=R&area_unit=1&res_com=R&property_type=1,2,4,90",
  "fetchedAt": "2026-10-14T15:01:56.707Z"
}

Use it from code

Actor ID: cliqtomedia/india-property-listings. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/india-property-listings").call(run_input={
    "city": "Bangalore",
    "listingType": "rent"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~india-property-listings/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"city": "Bangalore", "listingType": "rent"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/india-property-listings")
result = tool.invoke({"run_input": {"city": "Bangalore", "listingType": "rent"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldTypeMeaning
idstringUnique row ID: site plus the portal listing ID, e.g. magicbricks:79283231.
sitestringPortal the listing comes from: magicbricks or 99acres.
listingIdstringThe portal's own listing ID.
urlstringLink to the listing page on the portal.
titlestringListing headline as the portal shows it.
listingTypestringrent or buy.
pricenumberPrice in INR. For rent: per month. null when the portal shows "Price on request".
priceTextstringPrice as the portal writes it, e.g. 1.25 Cr or 35,000.
pricePerSqftnumberINR per square foot, as the portal reports it.
areaSqftnumberThe area the portal shows on the card, in sq ft.
areaTypestringWhich area areaSqft is (e.g. Carpet Area), when the portal says so. On MagicBricks only set when the card has nothing but the carpet area.
carpetAreaSqftnumberCarpet area in sq ft.
builtUpAreaSqftnumberBuilt-up area in sq ft.
superAreaSqftnumberSuper built-up area in sq ft.
bhkintegerBedrooms (BHK). null for studios when the portal gives no number.
bathroomsintegerBathrooms.
balconiesintegerBalconies.
propertyTypestringProperty type as the portal names it, e.g. Apartment, Independent House, Builder Floor.
furnishingstringFurnished, Semi-Furnished or Unfurnished.
floorstringFloor of the unit as the portal writes it, e.g. 3, Ground or Lower Basement.
totalFloorsintegerFloors in the building.
facingstringDirection the property faces, e.g. East.
localitystringLocality or neighbourhood, e.g. Whitefield.
citystringCity.
latitudenumberLatitude, when the portal publishes it.
longitudenumberLongitude, when the portal publishes it.
projectNamestringHousing project or society name.
builderNamestringBuilder or developer of the project (MagicBricks only).
amenitiesarrayAmenity names, e.g. Lift, Power Back Up, Swimming Pool. Empty list when none are listed.
imagesarrayPhoto URLs from the search result (https). Empty list when the listing has no photos.
listedBystringWho posted the listing: owner, agent or builder.
agencyNamestringAgency or builder company name. Null for owners and when the portal shows what looks like a person's name: no private names.
availabilitystringPossession or availability, e.g. Ready to Move or Immediately.
tenantPreferencestringRent only: preferred tenants, e.g. Family, Single Women.
depositnumberRent only: security deposit in INR.
maintenancenumberMaintenance charge in INR (MagicBricks only).
maintenancePeriodstringPeriod of the maintenance charge, e.g. Monthly.
reraIdstringRERA registration number, when the listing shows one.
descriptionstringListing text, up to 2000 characters. Phone numbers and e-mails are hidden.
postedAtstringWhen the listing was posted (ISO 8601).
Input settings (8)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
City requiredcitystring"Bangalore"
Rent or buylistingTypestring"rent"
Portalsitestring"both"
Max listingsmaxItemsinteger20
Property typepropertyTypearray
Bedrooms (BHK)bhkarray
Min price (INR)budgetMininteger
Max price (INR)budgetMaxinteger

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure