99acres Property Scraper avatar

99acres Property Scraper

Pricing

from $1.80 / 1,000 results

Go to Apify Store
99acres Property Scraper

99acres Property Scraper

[๐Ÿ’ฐ $1.8 / 1K] Extract property listings from 99acres.com โ€” India's largest real estate portal. Search by city, transaction type, BHK, and budget, or paste search URLs directly. Returns prices, locations, specifications, photos, and RERA details for residential and commercial properties.

Pricing

from $1.80 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pull property listings from 99acres.com โ€” India's largest real estate portal โ€” at scale. Capture residential and commercial listings, new-launch developer projects, prices in INR, lakh / crore breakdowns, BHK configurations, map coordinates, RERA registration IDs, builder names, agent contacts, and full photo galleries in one structured dataset. Built for real-estate analysts, property investors, builder-developer intel teams, listing aggregators, and PropTech apps that need fresh 99acres data without wrestling with India-specific price strings, locality slugs, and dual card formats.

Why This Scraper?

  • Dual-card normalizer in one feed โ€” regular property listings AND sponsored new-launch project cards arrive in the same dataset, every row tagged with cardType: "property" or "project" so you can split them downstream with a single filter.
  • 43 cities across 8 metro regions โ€” verified ID coverage for Delhi NCR (Delhi, Noida, Gurgaon, Ghaziabad, Faridabad), Mumbai (incl. Western and Central Suburbs, Navi Mumbai, Thane), Bangalore, Pune, Kolkata, Chennai, Hyderabad, and Ahmedabad, plus their satellite towns.
  • 6 transaction types in one schema โ€” Buy (Residential), Rent (Residential), Paying Guest / Co-living, New Launches, Buy (Commercial), and Rent (Commercial), normalized to a single flat row format.
  • 10 property types โ€” Apartment / Flat, Independent House, Villa, Builder Floor, Studio Apartment, Plot / Land, Farmhouse, Office Space, Retail Shop / Showroom, and Warehouse / Industrial.
  • Lat / lng on every listing โ€” map coordinates extracted from the listing's MAP_DETAILS block, ready for spatial joins, heat maps, or distance-to-metro analytics.
  • Price normalization built in โ€” heterogeneous Indian price strings ("1.15 Cr", "โ‚น50 Lakh", "โ‚น15,000", "2.5L") parsed into integer rupees in priceInr, plus a separate pricePerSqftInr rate and priceMinInr / priceMaxInr range for project cards.
  • Builder, RERA, and possession metadata for new launches โ€” builderName, reraId, isNewLaunch, possessionStatus, plus the full configSummary array (per-BHK area + price breakdown) and keyHighlights bullets.
  • Locality autocomplete by name โ€” paste neighborhood names like "Bandra West", "Whitefield", or "Koramangala" directly. The actor resolves them to 99acres' internal IDs via the same dropdown the website uses.
  • Search-URL passthrough โ€” paste any 99acres search URL with the filters already applied (BHK, budget, RERA, ready-to-move, property type) and the actor honors them as-is. No filter mapping required.
  • Smooth pagination across all pages โ€” approximately 25 listings per page across pagination (page 1 ships 27, follow-on pages 24-26), with deterministic stop-on-empty so a 200-row run pages until satisfied without overshoot.

Use Cases

Market Research & Pricing Intelligence

  • Track ask-price-per-sqft across Mumbai's Western Suburbs, week over week
  • Map the supply curve of 2-3 BHK apartments in Bangalore IT corridors
  • Build a city-level price heat map from latitude + longitude + pricePerSqftInr

Investment Analysis

  • Surface verified resale apartments under โ‚น1 Cr in target localities
  • Compare new-launch project pricing (cardType: "project") against resale comps
  • Filter for verified: true listings to focus on agent-validated inventory

Lead Generation & CRM Enrichment

  • Pull contactable agent names, companies, and city for outbound real-estate sales
  • Identify owner-direct postings (agentType: "Owner") for direct-deal pipelines
  • Enrich CRM records with society / project name and full address

Builder & Developer Intelligence

  • Track which builders are launching the most projects in a given quarter
  • Monitor possession status and RERA filings by developer
  • Capture configSummary to compare 2/3/4 BHK price tiers across launches

Real-Estate Tech & Aggregator Apps

  • Power a property comparison feed with photos, amenities, and floor counts
  • Feed a mortgage calculator or affordability tool with live priceInr data
  • Build a hyperlocal listings widget keyed on locality + bedrooms

PG / Co-Living & Rental Operators

  • Benchmark rent prices across PG and shared-accommodation listings
  • Track 1 BHK and 2 BHK rental supply by furnishing status
  • Surface furnished, ready-to-move flats matching corporate housing briefs

Getting Started

Simple โ€” One City, Buy Listings

{
"city": "Mumbai",
"transactionType": "buy",
"maxResults": 200
}

Filtered โ€” Bangalore 2+ BHK Rentals in Specific Localities

{
"city": "Bangalore",
"transactionType": "rent",
"propertyType": "apartment",
"bedroomsMin": 2,
"localities": ["Koramangala", "HSR Layout", "Indiranagar"],
"maxResults": 100
}

Advanced โ€” Search-URL Passthrough

For maximum filter precision, paste 99acres search URLs straight from your browser (any combination of filters you can apply on the site):

{
"searchUrls": [
"https://www.99acres.com/search/property/buy/mumbai?city=12&res_com=R&preference=S",
"https://www.99acres.com/search/property/rent/bangalore?city=20&res_com=R&preference=R&bedroom_num=2,3"
],
"maxResults": 500
}

New Launches โ€” Developer Projects Only

{
"city": "Pune",
"transactionType": "new-launches",
"maxResults": 100
}

Input Reference

ParameterTypeDefaultDescription
searchUrlsarray[]Paste one or more 99acres search-result URLs. When provided, the structured filters below are ignored.
citystring"Mumbai"City to search in (e.g. "Mumbai", "Bangalore", "Delhi", "Pune", "Hyderabad"). Common aliases are recognised โ€” "Bengaluru" maps to Bangalore, "Bombay" to Mumbai, "Calcutta" to Kolkata, "Madras" to Chennai, "Gurugram" to Gurgaon.

Filters

ParameterTypeDefaultDescription
transactionTypeenum"buy"One of: Buy (Residential), Rent (Residential), Paying Guest / Co-living, New Launches, Buy (Commercial), Rent (Commercial).
propertyTypeenumnullApartment / Flat, Independent House, Villa, Builder Floor, Studio Apartment, Plot / Land, Farmhouse, Office Space, Retail Shop / Showroom, or Warehouse / Industrial. Leave blank for all.
bedroomsMinintegernullMinimum BHK. Setting 2 includes 2 BHK, 3 BHK, 4 BHK, and 5+ BHK listings. Ignored for Plot, Commercial, and PG searches.
priceMinInrintegernullTarget minimum price in rupees (e.g. 5000000 for โ‚น50 lakh). See Tips for current behavior.
priceMaxInrintegernullTarget maximum price in rupees (e.g. 30000000 for โ‚น3 Cr). See Tips for current behavior.
localitiesarray[]Locality names to narrow within the city (e.g. "Bandra West", "Whitefield", "Gurgaon Sector 49"). Resolved to 99acres' internal IDs automatically.

Limits

ParameterTypeDefaultDescription
maxResultsinteger200Maximum listings to collect across all searches. Set to 0 for no cap (an internal upper limit of 50,000 still applies). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.

Output

Output is one flat row per listing, with cardType discriminating regular property listings from sponsored new-launch project cards. The two card types share the same column set โ€” fields irrelevant to a given card type land as null so downstream pipelines stay schema-stable.

Example โ€” Property Card (cardType: "property")

{
"cardType": "property",
"spid": "R12345678",
"propertyUrl": "https://www.99acres.com/3-bhk-bedroom-apartment-flat-for-sale-in-bandra-west-mumbai-spid-R12345678",
"transactionType": "buy",
"propertyType": "Apartment",
"title": "3 BHK in Bandra West",
"bedrooms": 3,
"bedroomsLabel": "3 BHK",
"bathrooms": 3,
"areaSqft": 1450.0,
"areaSqm": 134.71,
"areaType": "Carpet Area",
"priceInr": 47500000,
"priceLabel": "4.75 Cr",
"pricePerSqftInr": 32758.62,
"negotiable": true,
"city": "Mumbai",
"locality": "Bandra West",
"society": "Sea Breeze Heights",
"address": "Bandra West, Mumbai",
"latitude": 19.0606,
"longitude": 72.8362,
"furnishing": "Semi-Furnished",
"propertyAge": "5-10 years",
"floor": "12 of 22",
"facing": "North-East",
"availability": "Ready to Move",
"verified": true,
"reraId": "P51800012345",
"postedAt": "2026-04-21T08:14:00+00:00",
"agentName": "Priya Mehta",
"agentCompany": "Mumbai Realty Co.",
"agentType": "Broker",
"agentVerified": true,
"propertyImages": ["https://img.99acres.com/...jpg"],
"amenities": ["Lift", "Reserved Parking", "Power Backup", "Gymnasium"],
"tags": ["Verified", "Negotiable"],
"description": "Spacious 3 BHK in a premium tower...",
"scrapedAt": "2026-05-08T10:00:00+00:00"
}

Example โ€” Project Card (cardType: "project")

{
"cardType": "project",
"spid": "12345",
"propertyUrl": "https://www.99acres.com/lodha-park-worli-mumbai-npxid-r12345",
"transactionType": "new-launches",
"propertyType": "Apartment / Project",
"title": "Lodha Park",
"bedrooms": 2,
"bedroomsLabel": "2, 3 BHK",
"areaSqft": 985.0,
"areaSqm": 91.51,
"priceInr": 35000000,
"priceLabel": "3.5 - 6.2 Cr",
"priceMinInr": 35000000,
"priceMaxInr": 62000000,
"city": "Mumbai",
"locality": "Worli",
"society": "Lodha Park",
"latitude": 19.0176,
"longitude": 72.8175,
"builderName": "Lodha Group",
"possessionStatus": "Ready to Move",
"isNewLaunch": false,
"reraId": "P51900012345",
"configSummary": [
{"bhk": "2 BHK", "areaSqft": 985.0, "priceLabel": "3.5 Cr", "priceMinInr": 35000000, "priceMaxInr": 38000000},
{"bhk": "3 BHK", "areaSqft": 1480.0, "priceLabel": "5.2 - 6.2 Cr", "priceMinInr": 52000000, "priceMaxInr": 62000000}
],
"keyHighlights": ["Riverside views", "Clubhouse with infinity pool", "RERA approved"],
"propertyImages": ["https://img.99acres.com/...jpg"],
"tags": ["RERA Approved", "Ready to Move"],
"scrapedAt": "2026-05-08T10:00:00+00:00"
}

Core Identity

FieldTypeDescription
cardTypestring"property" (regular listing) or "project" (new-launch developer card).
spidstring99acres listing or project unit ID.
propertyUrlstringCanonical detail page URL on 99acres.com.
transactionTypestringbuy, rent, pg, new-launches, commercial-buy, or commercial-rent.
titlestringListing or project headline.
descriptionstringLong-form description, when present.
searchUrlstringThe 99acres search URL this row was collected from.
scrapedAtstring (ISO)When the row was captured.
postedAtstring (ISO)When the listing was posted.
updatedAtstring (ISO)When the listing was last updated.

Pricing

FieldTypeDescription
priceLabelstringOriginal 99acres price string ("1.15 Cr", "โ‚น15,000/mo").
priceInrintegerNumeric price in rupees, parsed from priceLabel or the raw MIN_PRICE field.
priceMinInrintegerProject cards only: lowest unit price in the range.
priceMaxInrintegerProject cards only: highest unit price in the range.
pricePerSqftInrfloatRate per sqft in rupees.
negotiablebooleanWhether the seller marked the listing as negotiable.

Property Details

FieldTypeDescription
propertyTypestringDecoded property type (Apartment, Villa, Plot, Office, etc.).
bedroomsintegerBHK count (smallest, for project cards with multiple configs).
bedroomsLabelstring"3 BHK" for property cards; "2, 3 BHK" for multi-config projects.
bathroomsintegerBathroom count.
areaSqftfloatArea in square feet.
areaSqmfloatArea in square meters (auto-converted).
areaTypestringCarpet, Built-up, or Super Built-up.
furnishingstringFurnished, Semi-Furnished, or Unfurnished.
propertyAgestringAge band ("5-10 years", "New", etc.).
floorstringFloor number / total floors ("12 of 22").
facingstringCompass direction.
availabilitystring"Ready to Move", "Under Construction", etc.
availableFromstring (ISO)Earliest move-in date, when available.
verifiedbooleanWhether 99acres has verified the listing.
reraIdstringRERA registration ID, when present.

Location

FieldTypeDescription
citystringCity name.
localitystringNeighborhood / locality.
societystringSociety or project name.
addressstringFull address, when available.
latitudefloatMap latitude.
longitudefloatMap longitude.
landmarkDetailsarrayNearby landmarks with name, distance, and category.

Agent / Builder

FieldTypeDescription
agentNamestringListed-by name (agent, owner, or builder).
agentCompanystringBrokerage or company name.
agentTypestringDecoded type โ€” "Agent", "Owner", or "Builder".
agentCitystringAgent's listed city.
agentVerifiedbooleanWhether the agent is verified by 99acres.
builderNamestringProject cards: developer name.

New Launch / Project

FieldTypeDescription
possessionStatusstring"Ready to Move", "Under Construction", or possession date.
isNewLaunchbooleanWhether the project is flagged as new launch.
configSummaryarrayPer-BHK breakdown โ€” array of {bhk, areaSqft, priceLabel, priceMinInr, priceMaxInr}.
keyHighlightsarrayProject highlight bullets ("Riverside views", "Clubhouse", etc.).

Media & Tags

FieldTypeDescription
propertyImagesarrayListing photo URLs.
propertyVideosarrayListing video URLs, when present.
amenitiesarrayDecoded amenity names ("Lift", "Power Backup", "Swimming Pool").
featuresarrayDecoded extra-feature names.
tagsarrayListing badges ("Verified", "Negotiable", "RERA Approved").

Tips for Best Results

  • Use the URL passthrough mode for the most precise control. Apply every filter on 99acres.com (BHK, budget, RERA, ready-to-move, amenities), copy the URL, and paste it into searchUrls โ€” every filter is honored as-is.
  • Setting bedroomsMin: 2 is inclusive โ€” it returns 2 BHK, 3 BHK, 4 BHK, and 5+ BHK listings, matching how 99acres' multi-select BHK filter works on the site.
  • Sponsored new-launch project cards appear alongside regular listings. Filter on cardType after the run if you want only one or the other โ€” projects expose builderName, configSummary, and priceMinInr / priceMaxInr, while properties carry agent contacts and exact unit specs.
  • Price filters are applied locally after fetching. 99acres' server-side budget params behave inconsistently, so the actor enforces priceMinInr / priceMaxInr against priceInr on each row. To compensate, it over-fetches up to 3ร— your maxResults and trims afterward โ€” so a maxResults: 100 run with a tight price band may scan 300 raw listings to deliver 100 in-range rows. Rows priced "On Request" pass through unfiltered (you can drop them downstream by filtering priceInr is null).
  • Add multiple localities at once โ€” localities accepts an array of neighborhood names. The actor calls 99acres' locality autocomplete to resolve names to internal IDs, so you can paste the human-readable names directly. If a name doesn't match (typos, unfamiliar spelling), that single locality is skipped with a warning. If none of the names resolve, the search widens to the whole city and the final status message flags the fallback.
  • Set maxResults: 0 for unbounded runs with an internal 50,000-row safety cap. Note that 99acres caps each search at roughly 60 result pages (~1,500 listings) โ€” narrow your filters with localities or bedroomsMin if you hit the wall.
  • For "On Request" prices (common on premium listings), priceInr is null while priceLabel retains the original "Price on Request" string. Use this combination to filter out non-priced listings.

Pricing

$1.80 per 1,000 results โ€” pay only for what you collect. 10% cheaper than the closest 99acres scraper on the Apify Store.

ResultsEstimated Cost
100 listings$0.18
1,000 listings$1.80
10,000 listings$18.00
100,000 listings$180.00

No compute charges โ€” you only pay per result returned. Each property row counts as one result, regardless of how many photos, amenities, or landmarks it carries. Apify platform fees may apply on top, depending on your subscription plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Trigger custom APIs on run completion
  • Apify API โ€” Full programmatic access

Use the dataset directly in your CRM, BI tool, or analytics warehouse via REST API or scheduled exports.

This actor collects publicly available property listings from 99acres.com. You are responsible for using the data in compliance with 99acres' Terms of Service, applicable Indian data-protection law (including the DPDP Act), and any local regulations governing the use of personal information. Treat agent and owner contact details as personal data โ€” store them securely, honor opt-outs, and avoid bulk outreach without consent. This actor must not be used to harvest personal data for unlawful purposes, to bypass paywalls, or to overload the source site.