Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the 99acres API page →
Real Estate

99acres API & Scraper

The 99acres API turns India's largest property-listing site into JSON in two actions.

2 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search takes a city id, a locality id or free text that the site resolves itself ('baner', 'bangalore'), for sale, rent or paying-guest, residential or commercial, with the filters the site applies itself: BHK (one or several), property type, price band in rupees (monthly for rent), area in square feet, owner, dealer or builder, ready to move, under construction or new launch, resale or new booking, furnishing, verified listings and listings posted in the last 1, 3, 7, 15 or 30 days. Each row carries the price as an integer in rupees next to the lakh/crore string the site prints, the price range of a new-project unit, the price per square foot, carpet, built-up and super built-up area kept apart, locality and city with their ids, coordinates, floor, furnishing, ownership, posting date, the poster's RERA flag and the seller's name and company; every row says whether it is a featured placement, a builder's new-project unit or an ordinary listing. listing returns one property in full: price with negotiable and all-inclusive flags, brokerage, every area with its unit, plot length and breadth, facing, overlooking, availability, amenities, description, RERA, every photo, posting, update and expiry dates and the advertiser; on a new-project unit also the project name, RERA registration number, completion date, tower and unit counts and each unit plan with its price. One ReefAPI key, the standard { ok, data, meta, error } envelope, no 99acres account.

Reference

What one 99acres listing returns

Real listings read on 2026-10-14. The integer price matched the lakh/crore string the site prints on 102 of 102 rows across four searches, and the price on 10 of 10 listings matched the search row they came from.

listingwhat the page showsprice_inr / price_max_inrlisting_kind
Residential plot, Ghotawade, Pune, 7,532 sqft, dealer₹1.51 Cr · ₹2,000/sqft15064000 / nullfeatured
4 BHK flat, Geras Isle Royale, Bavdhan, Pune, builder₹3.42 - 6.19 Cr34238189 / 61861357project_unit
3 BHK flat for rent, Sector 47, Gurgaon, 2,470 sqft₹95,000 a month95000 / nulllisting

price_inr is the integer rupee figure the site carries; price_display is the string it prints. A new-project unit is sold as a range, so it has both price_inr (from) and price_max_inr (to). Rent and PG prices are monthly (price_period: month). Carpet, built-up and super built-up area are separate fields, never merged.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/99acres/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "city_id": 19,
    "transaction": "buy",
    "bedrooms": "2",
    "posted_by": "owner"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "99acres",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3181.5,
    "record_count": 25,
    "bytes": 317216,
    "cache_hit": false,
    "total": 4968,
    "pagination": {
      "page": 1,
      "limit": 25,
      "last_page": 199,
      "has_more": true
    },
    "row_kinds": {
      "listing": 25
    },
    "resolved": {
      "cities": [
        {
          "id": "19",
          "name": "Pune"
        }
      ],
      "localities": [],
      "city_ids": [
        "19"
      ]
    },
    "currency": "INR",
    "signing_mints": 0,
    "warnings": [],
    "upstream_requests": 1,
    "charged_credits": 3,
    "version": "1.0.0",
    "request_id": "637afab3e9ea4b37",
    "queue_ms": 1.1,
    "fetched_at": "2026-10-14T18:57:19.236Z"
  },
  "data": {
    "listings": [
      {
        "listing_id": "P94497322",
        "spid": "94497322",
        "url": "https://www.99acres.com/2-bhk-bedroom-apartment-flat-for-sale-in-kohinoor-coral-hinjewadi-pune-670-sqft-spid-P94497322",
        "title": "2 BHK Flat in Hinjewadi, Pune",
        "listing_kind": "listing",
        "product_type": "AI_LISTING",
        "transaction": "buy",
        "segment": "residential",
        "property_type": "Residential Apartment",
        "property_type_id": "1",
        "bedrooms": 2,
        "bathrooms": 2,
        "balconies": 1,
        "price_inr": 8700000,
        "price_max_inr": null,
        "price_is_range": false,
        "price_display": "87 L",
        "price_on_request": false,
        "price_period": null,
        "price_per_sqft_inr": 12985,
        "price_per_unit_text": "₹12,985 /sqft",
        "price_per_unit_inr": 12985,
        "price_per_unit_label": "sqft",
        "price_per_unit_area_type": "CARPET_AREA",
        "area": {
          "super_area_sqft": null,
          "super_built_up_area_sqft": null,
          "built_up_area_sqft": null,
          "carpet_area_sqft": 670,
          "display_area_type": "Carpet Area",
          "display_area": 670,
          "display_area_unit": "sqft",
          "display_area_text": "670 sqft",
          "secondary_area_text": "62.25 sq.m."
        },
        "locality": "Hinjewadi",
        "locality_id": "836",
        "locality_text": "Hinjewadi, Pune",
        "city": "Pune West",
        "city_id": "1171162",
        "society": "Kohinoor Coral",
        "building_id": "1002516",
        "project_id": "334343",
        "lat": 18.59,
        "lng": 73.68,
        "location_precision": "BUILDING",
        "floor": "2",
        "total_floors": 14,
        "furnishing": "unfurnished",
        "sale_type": "resale",
        "ownership": "Co-operative Society",
        "age": "7",
        "verified": true,
        "poster_rera_registered": false,
        "posted_at": "2026-09-22T03:17:39Z",
        "updated_at": "2026-10-12T07:51:33Z",
        "posted_label": "3 weeks ago",
        "tags": [
          "READY TO MOVE",
          "RESALE",
          "RERA"
        ],
        "highlights": [
          "2nd out of 14 Floors",
          "Overlooking Park",
          "East Facing"
        ],
        "description": "Situated in kohinoor coral, hinjewadi, this 2 bhk flat offers 670 sq ft of comfortable living on the 2nd floor of a 14-Story high-Rise. Ready for immediate sale, the 1-3 year old property includes 2 bedrooms, 2 bathrooms, and comes unfurnished. Residents enjoy amenities like a gym, pool, clubhouse, lift, power backup, and covered parking.",
        "photo_url": "https://imagecdn.99acres.com/media1/42367/8/847348427M-1790416173520.jpg",
        "photo_count": 23,
        "seller": {
          "type": "owner",
          "label": "Owner",
          "name": "Pawas Sharma",
          "company": "Pawas Sharma",
          "photo_url": "https://static.99acres.com/images/owner_pnava.png",
          "rera_registered": false
        }
      },
      {
        "listing_id": "P94702058",
        "spid": "94702058",
        "url": "https://www.99acres.com/2-bhk-bedroom-apartment-flat-for-sale-in-atrium-skyward-undri-pune-south-1489-sqft-spid-P94702058",
        "title": "2 BHK Flat in Undri, Pune",
        "listing_kind": "listing",
        "product_type": "AI_LISTING",
        "transaction": "buy",
        "segment": "residential",
        "property_type": "Residential Apartment",
        "property_type_id": "1",
        "bedrooms": 2,
        "bathrooms": 2,
        "balconies": 1,
        "price_inr": 12900000,
        "price_max_inr": null,
        "price_is_range": false,
        "price_display": "1.29 Cr",
        "price_on_request": false,
        "price_period": null,
        "price_per_sqft_inr": 8663,
        "price_per_unit_text": "₹8,663 /sqft",
        "price_per_unit_inr": 8663,
        "price_per_unit_label": "sqft",
        "price_per_unit_area_type": "CARPET_AREA",
        "area": {
          "super_area_sqft": null,
          "super_built_up_area_sqft": null,
          "built_up_area_sqft": null,
          "carpet_area_sqft": 1489,
          "display_area_type": "Carpet Area",
          "display_area": 1489,
          "display_area_unit": "sqft",
          "display_area_text": "1489 sqft",
          "secondary_area_text": "138.33 sq.m."
        },
        "locality": "Undri",
        "locality_id": "6260",
        "locality_text": "Undri, Pune",
        "city": "Pune South",
        "city_id": "1171163",
        "society": "Atrium Skyward",
        "building_id": "353443",
        "project_id": "223533",
        "lat": 18.46,
        "lng": 73.91,
        "location_precision": "BUILDING",
        "floor": "11",
        "total_floors": 11,
        "furnishing": "semifurnished",
        "sale_type": "resale",
        "ownership": "Freehold",
        "age": "1",
        "verified": true,
        "poster_rera_registered": false,
        "posted_at": "2026-09-29T16:57:07Z",
        "updated_at": "2026-10-11T05:35:11Z",
        "posted_label": "1 week ago",
        "tags": [
          "READY TO MOVE",
          "RESALE",
          "RERA"
        ],
        "highlights": [
          "11th out of 11 Floors",
          "Overlooking Main Road"
        ],
        "description": "This residential flat is south-East-Facing direction. Constructed on a carpet area of 1489 sq.Ft., the flat comprises 2 bedroom(s), 2 bathrooms and 1 balcony. The flat has a total of 11 floors and this property is situated on top floor. Being a ready to move project, you can expect immediate possession of this 1-5 years old property. The well built ceramic flooring enhances the aesthetic appeal of this flat. The society is well equipped with many modern amenities, including swimming pool, gymnasium, maintenance staff, club house, cctv surveillance, park, security guard, lift(s) and shopping ce",
        "photo_url": "https://imagecdn.99acres.com/media1/42765/7/855307237M-1791251143034.jpg",
        "photo_count": 14,
        "seller": {
          "type": "owner",
          "label": "Owner",
          "name": "Vinod",
          "company": "Vinod",
          "photo_url": "https://static.99acres.com/images/owner_pnava.png",
          "rera_registered": false
        }
      },
      {
        "listing_id": "Z90514920",
        "spid": "90514920",
        "url": "https://www.99acres.com/2-bhk-bedroom-apartment-flat-for-sale-in-godrej-nurture-mamurdi-pune-825-sqft-spid-Z90514920",
        "title": "2 BHK Flat in Mamurdi, Pune",
        "listing_kind": "listing",
        "product_type": "AI_LISTING",
        "transaction": "buy",
        "segment": "residential",
        "property_type": "Residential Apartment",
        "property_type_id": "1",
        "bedrooms": 2,
        "bathrooms": 2,
        "balconies": 2,
        "price_inr": 12500000,
        "price_max_inr": null,
        "price_is_range": false,
        "price_display": "1.25 Cr",
        "price_on_request": false,
        "price_period": null,
        "price_per_sqft_inr": 183769,
        "price_per_unit_text": "₹15,154 /sqft",
        "price_per_unit_inr": 15154,
        "price_per_unit_label": "sqft",
        "price_per_unit_area_type": "BUILTUP_AREA",
        "area": {
          "super_area_sqft": null,
          "super_built_up_area_sqft": null,
          "built_up_area_sqft": 824.84,
          "carpet_area_sqft": 732.16,
          "display_area_type": "Built-up Area",
          "display_area": 824.84,
          "display_area_unit": "sqft",
          "display_area_text": "824.84 sqft",
          "secondary_area_text": "76.55 sq.m."
        },
        "locality": "Mamurdi",
        "locality_id": "13964",
        "locality_text": "Mamurdi, Pune",
        "city": "Pune West",
        "city_id": "1171162",
        "society": "Godrej Nurture",
        "building_id": "903538",
        "project_id": "331671",
        "lat": 18.67,
        "lng": 73.71,
        "location_precision": "BUILDING",
        "floor": "2",
        "total_floors": 19,
        "furnishing": "unfurnished",
        "sale_type": "resale",
        "ownership": "Freehold",
        "age": null,
        "verified": false,
        "poster_rera_registered": false,
        "posted_at": "2026-04-20T09:21:47Z",
        "updated_at": "2026-10-06T23:36:45Z",
        "posted_label": "5 months ago",
        "tags": [
          "READY TO MOVE",
          "RESALE",
          "RERA"
        ],
        "highlights": [
          "2nd out of 19 Floors"
        ],
        "description": "This property faces the north direction. The floor plan additionally contains 2 bedroom(s), 2 bathrooms and 2 balconies. All in all, the flat is spread over a built up area of 77 sq.M. This flat is situated on the 2nd floor of this 19 floors tall residential building. As the project is already ready to move, so you can easily move into this 0-1 year old property. The flat comes well built with vitrified flooring options. All the modern amenities such as park, lift(s), fitness centre / gym, swimming pool and club house will make life easier for you.\n\nThis is your chance to a 2 bhk apartment / f",
        "photo_url": "https://imagecdn.99acres.com/media1/37448/16/748976796M-1777053816203.jpg",
        "photo_count": 16,
        "seller": {
          "type": "owner",
          "label": "Owner",
          "name": "SUBHRADEEP ROY",
          "company": "Manoj Chatterjee",
          "photo_url": "https://static.99acres.com/images/owner_pnava.png",
          "rera_registered": false
        }
      }
    ]
  }
}
Actions

What the 99acres API does

ActionDescriptionConcrete use caseKey params
searchSearch 99acres listings by city, locality or free text, for sale, rent or PG, or commercial, with the filters the source applies itself (BHK, property type, price, area, poster, construction status, resale/new booking, furnishing, verified, posting age). 25 rows a page by default, up to 50. Each row says whether it is a featured placement, a builder's new-project unit or an ordinary listing. 🔴 Needs one of city_id, locality_id or query. No sort parameter is offered: none of the source's sort keys changed the order.Real-estate investors call search to search 99acres listings by city, locality or free text, for sale, rent or PG, or commercial,….city_id, locality_id, query, transaction, segment, ...
listingOne listing in full by its listing_id: price in rupees (and range for project units) with negotiable / all-inclusive flags, brokerage, super / built-up / carpet area with units, plot length and breadth, floor, facing, overlooking, furnishing, ownership, availability, age, amenities, highlights, description, RERA, coordinates, every photo, posting / update / expiry dates and the advertiser (name, company, type, member since, office address, the phone as the site masks it).Brokerage tools call listing to get one listing in full by its listing_id.listing_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/99acres/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"city_id":19,"transaction":"buy","bedrooms":"2","posted_by":"owner"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.99acres.search with {"city_id":19,"transaction":"buy","bedrooms":"2","posted_by":"owner"}.
Use cases

Who uses this API and why

  • Track asking prices by locality: the same BHK and property type every week in one locality_id, with price per square foot on every row.
  • Find owner listings with no broker: posted_by=owner returned 12,518 of 40,045 Pune sale listings.
  • Map new-project supply: posted_by=builder or the project_unit rows, then listing for the RERA registration number, completion date and unit plans with prices.
  • Build a rental feed: transaction=rent with a rupee band and furnishing, monthly rent on every row.
  • Watch fresh supply: posted_since_days=1 in a city for what went live in the last day.
FAQ

Questions developers ask before integrating

Which cities are covered?

Every city 99acres lists. On 2026-10-14 a sale search returned 40,045 listings in Pune, 96,632 in Mumbai and 57,582 for 'bangalore'; Delhi / NCR had 75,214 listings for rent. Pass city_id (19 Pune, 12 Mumbai, 1 Delhi / NCR), a locality_id, or free text in query: every answer echoes the city and locality ids the site resolved, so you can reuse them.

How are lakh and crore prices returned?

As integers in rupees. '₹1.51 Cr' comes back as price_inr 15064000 with price_display '₹1.51 Cr'; '45.99 L' as 4599000; a new-project unit printed '3.42 - 6.19 Cr' as price_inr 34238189 and price_max_inr 61861357. On 102 rows checked, the integer agreed with the printed string every time.

What are featured rows and project units?

The site mixes three kinds of rows into its results, and every row says which it is. featured is a paid placement on top of the page. project_unit is a builder's new-project unit sold as a price and size range; under the default order these fill the first pages of a city search. listing is an ordinary listing by an owner or a dealer. meta.row_kinds counts them per page. Use posted_by=owner or posted_by=dealer to get ordinary listings only.

How does the price filter work?

Give price_min and price_max in rupees (monthly for rent). The site filters on its own price steps (5 lakh, 10 lakh … 1 crore … for sale, 1,000 … 10 lakh for rent), so a bound between two steps is widened to the next step and meta.filters_applied says which step was used. A 50 lakh to 1 crore search in Pune returned 13,313 of 40,045 listings. Rows whose price falls outside your band carry outside_price_filter: true; none did in the bands measured.

Which area fields are there?

Search rows carry carpet_area_sqft, built_up_area_sqft, super_built_up_area_sqft and super_area_sqft separately, plus the area the site displays with its own label ('Plot Area', 'Carpet Area') and unit. A listing returns each area with the unit the page declares, and plot length and breadth for land. price_per_sqft_inr is the site's own figure; price_per_unit_area_type says which area it is quoted on.

Is the seller's phone number included?

The site masks phone numbers and e-mail on its public pages, so the API returns the phone the way the page prints it, masked. The advertiser's name, company, type (owner, dealer or builder), member-since date and office address are returned in full.

Can I sort the results?

No. None of the site's sort settings changed the order of the results on the day we measured, so the API offers no sort parameter rather than one that does nothing. Use posted_since_days to get the newest listings: 1,011 Pune sale listings were posted in the last day.

How fast is it and how far can I page?

One request to the site per call. In two full runs every search (62 of 62) and every listing in the second run (10 of 10) succeeded; the median search took 3.9 seconds and the median listing 7.2 seconds, the slowest search 12.2 seconds. Up to 50 rows a page; a page past the end answers an empty page with a warning.

What is the 99acres API?

99acres API is a ReefAPI endpoint group for india's property market as json: flats, houses, plots and commercial space for sale, rent and pg, with rupee prices, area by type, locality, owner, dealer or builder, and new-project units with their rera number. It returns live JSON through POST requests under /99acres/v1.

Is the 99acres API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. 99acres calls use the same shared credit balance as every other ReefAPI engine.

Do I need a 99acres login or account?

No login to 99acres is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the 99acres data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the 99acres API use?

99acres actions currently cost 3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call 99acres from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call 99acres actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / 99acres

99acres

India's property market as JSON: flats, houses, plots and commercial space for sale, rent and PG, with rupee prices, area by type, locality, owner, dealer or builder, and new-project units with their RERA number.

base /99acres/v12 endpoints
post/99acres/v1/listing3 credits

One listing in full by its listing_id: price in rupees (and range for project units) with negotiable / all-inclusive flags, brokerage, super / built-up / carpet area with units, plot length and breadth, floor, facing, overlooking, furnishing, ownership, availability, age, amenities, highlights, description, RERA, coordinates, every photo, posting / update / expiry dates and the advertiser (name, company, type, member since, office address, the phone as the site masks it).

ParameterAllowed / rangeDescription
listing_idrequired—The listing_id of a search row (letter + digits, e.g. S94838160), or the listing's full 99acres URL.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.

Comparing scraping APIs?ReefAPI vs Bright Data