99acres Projects Search Scraper
Pricing
from $3.99 / 1,000 results
99acres Projects Search Scraper
Scrape 99acres new project search results with developer info, configurations, RERA, and optional deep scraping.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
3
Monthly active users
9 days ago
Last modified
Categories
Share
What this Actor does
This Actor collects public project listings from 99acres. It can return project identity, per-configuration prices and areas, location details, project specifications, construction counts, amenities, RERA data, developer details, public media and documents, FAQs, and image URLs. Optional detail-page scraping adds fields that the selected project page exposes.
Use the results for new-project discovery, residential market research, location comparisons, and project monitoring. The Actor does not log in, submit contact or brochure forms, solve CAPTCHAs, or bypass access controls.
Get started
- Open the Actor's Input tab.
- Enter one or more public 99acres project search URLs. The supported paths begin with
/search/project/or/new-projects-in-. - Set a result limit and page limit. Add filters and choose whether to include project details, which are enabled by default.
- Click Start.
- When the run finishes, open Results for project records or Output summary for the run status and saved-record count.
Input
searchUrls is required. All other fields are optional. The Actor normalizes accepted URLs to www.99acres.com, removes fragments, and rejects unsupported hosts or paths. Duplicate normalized URLs are rejected.
Search and result limits
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
searchUrls | Array of strings | Required | None | One to 10 HTTPS 99acres project-search or new-project URLs. Each URL must use /search/project/ or /new-projects-in-. |
maxItems | Integer, 1–500 | Optional | 20 | Maximum number of saved projects across all input URLs. |
maxPages | Integer, 1–100 | Optional | 25 | Maximum number of pages to visit for each input URL. The Console prefill is also 25; reaching this limit is normal completion. |
maxItems is shared across all search URLs; maxPages applies separately to each URL. The Actor follows a next-page link when one is available. Results are not sorted after collection; they follow the order returned by 99acres and the order the pages are processed.
Filters
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
filters | Object | Optional | {} | Holds the optional filters below. Unknown filter names are rejected. |
filters.statuses | Array of strings, each 1–80 characters | Optional | [] | Keep a project when its status or possession text contains any listed value, ignoring letter case. Duplicate values are rejected. |
filters.configurations | Array of strings, each 1–30 characters | Optional | [] | Keep a project when any listed configuration matches, such as 2 BHK. Letter case and spaces do not affect matching; duplicate values are rejected. |
filters.minPrice | Number, 0–1,000,000,000,000 | Optional | None | Keep price ranges that overlap this lower bound. Prices are interpreted as INR. |
filters.maxPrice | Number, 0–1,000,000,000,000 | Optional | None | Keep price ranges that overlap this upper bound. |
filters.minArea | Number, 0–100,000,000 | Optional | None | Keep area ranges that overlap this lower bound, using the listing's unit. |
filters.maxArea | Number, 0–100,000,000 | Optional | None | Keep area ranges that overlap this upper bound, using the listing's unit. |
For each filter array, a project can match any one of its entries. When both minimum and maximum bounds are supplied, the minimum must not exceed the maximum. A project without a numeric price or area cannot pass a filter that needs that value.
Information to include
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
enableDeepScraping | Boolean | Optional | true | Open each accepted project's public detail page for additional information. A detail-page failure leaves the project record from the search page available and marks the run as partial when a project was saved. |
includeDescription | Boolean | Optional | true | Include project descriptions from the result card and complete text from an identified detail-page description section. |
includeHighlights | Boolean | Optional | true | Include highlights shown on result cards and the selected project's detail page. |
includeImages | Boolean | Optional | true | Include extracted project images once, plus image-only URLs such as video thumbnails, developer logos, and RERA QR images. Video, document, and floor-plan page URLs remain separate fields. |
includeAmenities | Boolean | Optional | true | Include labels found in amenity or facility sections on optional detail pages. Mentions elsewhere on a page are not treated as project amenities. |
includeContact | Boolean | Optional | true | Include contact fields shown on the listing or optional detail page. contact.name is only for an explicitly named individual; developer or company names belong in developer or contact.companyName. |
deduplicate | Boolean | Optional | true | Keep only one result per project ID across pages and input URLs. Set to false to allow the same project to appear more than once. |
The information switches remove their corresponding fields from records when set to false. Missing information is omitted; the Actor does not fill missing values with placeholders.
Request behavior
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
locale | String: en-IN or en-US | Optional | en-IN | Sets the Accept-Language request header preference. It does not change the source page's displayed language. |
requestDelayMs | Integer, 0–30,000 | Optional | 0 | Adds a wait after each search page loads and before each optional detail-page navigation. |
maxConcurrency | Integer, 1–3 | Optional | 1 | Maximum number of search pages processed at the same time. |
detailConcurrency | Integer, 1–5 | Optional | 2 | Maximum number of detail tabs opened at the same time when deep scraping is enabled. |
maxRequestRetries | Integer, 0–2 | Optional | 0 | Maximum retries for a failed search-page request. |
navigationTimeoutSecs | Integer, 30–300 | Optional | 90 | Navigation timeout in seconds for search and detail pages. |
requestHandlerTimeoutSecs | Integer, 60–600 | Optional | 180 | Maximum time in seconds allowed to process one search page. |
proxyConfiguration | Object | Optional | {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"IN"} | Uses India residential Apify Proxy for project detail pages. You can choose another supported Apify or custom HTTP proxy configuration. |
India residential Apify Proxy is enabled by default and is billed by Apify. Other routes may return only search-card data if detail pages require verification. Set {"useApifyProxy":false} to disable it. Do not put credential values in shared inputs.
Copyable input examples
A small search:
{"searchUrls": ["https://www.99acres.com/new-projects-in-chennai-west-ffid"],"maxItems": 5,"maxPages": 1}
A filtered search:
{"searchUrls": ["https://www.99acres.com/new-projects-in-chennai-west-ffid"],"maxItems": 10,"maxPages": 2,"filters": {"statuses": ["Under Construction"],"configurations": ["2 BHK", "3 BHK"],"minPrice": 5000000,"maxPrice": 20000000,"minArea": 600,"maxArea": 2000}}
Several search URLs with deduplication:
{"searchUrls": ["https://www.99acres.com/new-projects-in-chennai-west-ffid","https://www.99acres.com/new-projects-in-porur-chennai-west-ffid"],"maxItems": 12,"maxPages": 3,"deduplicate": true}
More pages with optional details switched off:
{"searchUrls": ["https://www.99acres.com/search/project/buy/pune"],"maxItems": 25,"maxPages": 5,"enableDeepScraping": false,"includeDescription": false,"includeHighlights": false,"includeImages": false,"includeAmenities": false,"includeContact": false}
Search-page results with optional detail enrichment:
{"searchUrls": ["https://www.99acres.com/new-projects-in-bengaluru-east-ffid"],"maxItems": 4,"maxPages": 1,"enableDeepScraping": true,"detailConcurrency": 1,"requestDelayMs": 250}
Results
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Each dataset item is one validated project record. Projects without a usable source project URL are skipped; the Actor does not construct replacement business links. Price ranges are normalized to INR, including ranges separated by an en dash or em dash. Aggregate price bounds come from visible configuration rows; a conflicting basic-details price is ignored. Aggregate area is included only when configuration rows share an area unit and type; otherwise, use the per-configuration areas. Missing numbers are omitted rather than converted to zero.
The following example is illustrative; its values and URL are made up to show the output shape, not to claim a verified live result. Real items can omit any optional field when 99acres does not provide it or when the corresponding input switch is off.
{"projectId": "r428776","idType": "npxid","projectUrl": "https://www.99acres.com/example-heights-chennai-npxid-r428776","projectName": "Example Heights","developer": "Example Builders","propertyType": "Apartment","configurations": ["2 BHK", "3 BHK"],"location": "Example Locality, Example City","price": {"min": 5718000,"max": 12000000,"displayPrice": "57.18 L - 1.20 Cr","currency": "INR"},"area": {"min": 650,"max": 1450,"unit": "sqft"},"propertyDetails": {"bathrooms": 2,"configurations": ["2 BHK", "3 BHK"]},"statusInfo": "Under Construction","possessionDate": "Oct 2028","verification": {"isReraRegistered": true,"reraNumber": "TN/29/Building/0459/2023"},"amenities": ["Swimming Pool", "Gymnasium"],"projectHighlights": ["Rooftop clubhouse", "Close to transit"],"images": ["https://newprojects.99acres.com/projects/example/images/pool.jpg","https://newprojects.99acres.com/projects/example/images/exterior.jpg"],"photoCount": 12,"description": "Example Heights offers well-planned homes close to city amenities. The project includes landscaped common spaces and residential layouts. Amenities include a swimming pool and gymnasium for residents.","dates": {"posted": "3 weeks ago","updated": "15 Jan 2025"},"contact": {"name": "Example Contact","companyName": "Example Builders"},"totalFloors": 24,"configurationDetails": [{"configuration": "2 BHK","propertyType": "Apartment","areaType": "Built-up Area","area": {"min": 650, "max": 850, "unit": "sqft"},"secondaryAreaDisplay": "60.39 - 78.97 sq m","price": {"min": 5718000,"max": 6900000,"displayPrice": "57.18 L - 69.00 L","currency": "INR"}},{"configuration": "3 BHK","propertyType": "Apartment","areaType": "Built-up Area","area": {"min": 900, "max": 1450, "unit": "sqft"},"secondaryAreaDisplay": "83.61 - 134.71 sq m","price": {"min": 7200000,"max": 12000000,"displayPrice": "72 L - 1.20 Cr","currency": "INR"}}],"latitude": 13.054,"longitude": 80.241,"postalCode": "600000","state": "Example State","city": "Example City","locality": "Example Locality","totalTowers": 4,"totalUnits": 320,"projectArea": {"min": 2.1,"max": 2.1,"unit": "acres","display": "2.1 acres","secondaryDisplay": "8,498 sq m"},"openAreaPercentage": 65,"specifications": "Example project specifications and features.","locationAdvantages": [{"name": "Example Metro Station", "category": "Metro station", "distance": "8.5 km"}],"videos": [{"url": "https://newprojects.99acres.com/projects/example/media/walkthrough.mp4","title": "Project walkthrough","thumbnailUrl": "https://newprojects.99acres.com/projects/example/media/walkthrough.jpg","uploadedAt": "2026-03-08"}],"documents": [{"title": "Project brochure", "url": "https://newprojects.99acres.com/projects/example/brochure.pdf"}],"developerDetails": {"name": "Example Builders","url": "https://www.99acres.com/example-builders","description": "Example developer profile text.","logoUrl": "https://newprojects.99acres.com/projects/example/media/builder-logo.png"},"reraDetails": [{"phase": "Phase 1","registrationStatus": "Registered","registrationNumber": "TN/29/Building/0459/2023","registrationText": "TN/29/Building/0459/2023","websiteUrl": "https://www.tnrera.in/","qrCodeUrl": "https://newprojects.99acres.com/projects/example/media/rera-qr.png"}],"mediaCount": 18,"faqs": [{"question": "When is possession?", "answer": "October 2028."}],"floorPlanUrl": "https://www.99acres.com/example-heights-floor-plan-chennai-npxid-r428776"}
Output fields
| Field | Type | Required? | Meaning |
|---|---|---|---|
projectId | String | Required | Stable 99acres project ID. |
idType | String | Required | ID marker from the project URL, such as npxid or npspid. |
projectUrl | String | Required | Direct HTTPS link to the project page. |
projectName | String | Required | Project name shown by 99acres. |
developer | String | Optional | Developer or builder name. |
propertyType | String | Optional | Property category inferred from the listing, such as Apartment or Land. |
configurations | Array of strings | Optional | Configurations such as 2 BHK or 3 BHK. BHK means bedrooms, hall, and kitchen. |
location | String | Optional | Locality or address text. |
price | Object | Optional | Aggregate min, max, displayPrice, and currency from visible configuration rows; normalized numeric prices are in INR. |
area | Object | Optional | Aggregate min, max, and unit; included only when configuration rows share an area unit and type. |
propertyDetails | Object | Optional | bedrooms is a nonnegative whole number only when one value is unambiguous, including from a single listed configuration; bathrooms is a nonnegative whole number when shown. Several configurations do not imply one bedroom count. |
statusInfo | String | Optional | Construction or launch status. |
possessionDate | String | Optional | Possession text shown on the card. |
verification | Object | Optional | isReraRegistered when explicitly reported or supported by a registration number or positive registration label, and reraNumber when found. An absent registration fact is omitted, rather than reported as false. |
amenities | Array of strings | Optional | Labels from identified amenity or facility sections during optional detail scraping. |
projectHighlights | Array of strings | Optional | Highlight text from the result card or project summary. |
images | Array of strings | Optional | All extracted card and optional gallery image URLs, deduplicated by URL. Detail images add to the card images. |
photoCount | Nonnegative integer | Optional | Photo count shown on the result card; omitted if no photo count is published. It is photo-only and is not calculated from extracted image URLs. |
description | String | Optional | Description text from the card or complete text from an identified detail-page description section. Paragraph text is retained and whitespace is normalized. |
dates | Object | Optional | posted and updated date text from optional detail scraping. |
contact | Object | Optional | name only for an explicitly named individual; companyName for a developer or company. |
totalFloors | Nonnegative integer | Optional | Floor count found on an optional detail page. |
configurationDetails | Array of objects | Optional | One object per visible configuration, with its configuration label, property/area types, area and price ranges, and secondary area display text. |
latitude | Number, −90 to 90 | Optional | Project coordinate from the identity-matched page. |
longitude | Number, −180 to 180 | Optional | Project coordinate from the identity-matched page. |
postalCode | String | Optional | Postal code shown in the project location data. |
state | String | Optional | State name from project location data. |
city | String | Optional | City name from project location data. |
locality | String | Optional | Locality name from project location data. |
totalTowers | Nonnegative integer | Optional | Tower count from the project specifications. |
totalUnits | Nonnegative integer | Optional | Unit count from the project specifications. |
projectArea | Object | Optional | Project-site min, max, unit, and source display strings when available. |
openAreaPercentage | Number, 0–100 | Optional | Open-area percentage shown in project specifications. |
specifications | String | Optional | Text from the project's specifications section. |
locationAdvantages | Array of objects | Optional | Nearby points of interest with their source category and distance. These are not project amenities. |
videos | Array of objects | Optional | Public video URLs and source titles, thumbnails, and upload dates when available. Video URLs remain when includeImages is off; thumbnail URLs follow that switch. |
documents | Array of objects | Optional | Public document URLs, such as a brochure or price list, and their source titles. |
developerDetails | Object | Optional | Developer name, public profile URL, description, and logo URL when exposed. The developer remains separate from an individual contact name. |
reraDetails | Array of objects | Optional | Phase-level registration status, number/text, registry URL, and QR image URL when exposed. |
mediaCount | Nonnegative integer | Optional | Source-published combined photo and video count. It is separate from photoCount and is not computed from collected URLs. |
faqs | Array of objects | Optional | Question and answer text from the project's FAQ section. |
floorPlanUrl | HTTPS URL | Optional | Same-project floor-plan page link when exposed and its project identity matches. |
Nested output values
Nested fields are optional unless marked required. URL values are public HTTPS links with no embedded credentials.
| Field | Nested shape |
|---|---|
price | min and max: nonnegative numbers; displayPrice: string; currency: INR. |
area | min and max: nonnegative numbers; unit: string. |
propertyDetails | bedrooms and bathrooms: nonnegative whole numbers; configurations: array of strings. A single count is not inferred from varied configurations. |
verification | isReraRegistered: boolean; reraNumber: string. |
dates | posted and updated: strings. |
contact | name and companyName: strings. name is for an explicitly named individual only. |
configurationDetails[] | Required: configuration string and at least one of area or price. propertyType, areaType, and secondaryAreaDisplay: strings. area: min/max nonnegative numbers and unit string. price: min/max nonnegative numbers, displayPrice string, and currency INR. |
projectArea | min and max: nonnegative numbers; unit, display, and secondaryDisplay: strings. |
locationAdvantages[] | Required: name string; category and distance: strings. |
videos[] | Required: url HTTPS string; title, thumbnailUrl, and uploadedAt: strings. |
documents[] | Required: url HTTPS string; title: string. |
developerDetails | Required: name string; url, description, and logoUrl: optional strings. The URL and logo URL are omitted when unavailable; the logo URL follows includeImages. |
reraDetails[] | phase, registrationStatus, registrationNumber, registrationText, websiteUrl, and qrCodeUrl: strings. At least one of registrationNumber or registrationText is present. The QR image URL follows includeImages. |
faqs[] | Required: question and answer strings. |
Fields inside optional objects are also omitted when unavailable. Run status and collection metadata are not included in project records.
Business arrays have no additional item cap imposed by the Actor. maxItems limits the number of project records, not the number of images, videos, documents, amenities, configurations, location advantages, FAQs, or highlights within each record. Only content exposed in the visited page is available; the Actor does not promise to open every gallery or hidden section. The source-published combined mediaCount and photo-only photoCount can differ from the number of image and video URLs exposed on the visited pages.
Run status
- SUCCEEDED means at least one valid project record was written successfully.
- SUCCEEDED with limited results means real records were saved before a search-page, detail-page, or storage failure interrupted part of collection. The run remains successful and the summary marks it partial.
- FAILED means no valid project records were saved, including an empty, blocked, fully filtered, or invalid-input run. The Actor does not add placeholder rows.
The requested result limit or page limit being reached is normal completion. Run failure details are kept in the run log.
Output summary
The Output summary link opens the OUTPUT_SUMMARY record in the run's default Key-value store. It contains exactly these three fields:
| Field | Type | Required? | Meaning |
|---|---|---|---|
status | String (SUCCEEDED or FAILED) | Required | Whether at least one project record was saved. |
itemsStored | Nonnegative integer | Required | Number of validated project records whose dataset writes completed. |
isPartial | Boolean | Required | true when a collection failure followed one or more saved project records. |
Illustrative completed-run summary:
{"status": "SUCCEEDED","itemsStored": 5,"isPartial": false}
Illustrative limited-results summary:
{"status": "SUCCEEDED","itemsStored": 3,"isPartial": true}
Illustrative failed-run summary:
{"status": "FAILED","itemsStored": 0,"isPartial": false}
A summary-write problem is logged and does not change the status determined by saved project records.
Tips, access, and support
Start with one URL, one page, and a small maxItems value. Project details are included by default; switch them off for faster collection of search-page records. Detail pages add browser navigations and can take longer. Reduce concurrency or add a delay if you need to make collection gentler.
99acres may block automated access or show a verification page. The Actor stops at those access controls and does not attempt to bypass them. Access depends on the source accepting requests from your network or configured proxy. An HTTP 403 Access Denied response prevents collection and detail enrichment; adding retries does not guarantee access. Fields vary by listing, and some fields are only available when deep scraping is enabled.
Apify usage depends on browser runtime, pages visited, optional detail navigations, retries, and proxy use. No fixed price is set in this README; check the run's platform usage for your account. For help, share the run ID and relevant run-log messages in the Actor's Issues tab. This Actor is not affiliated with 99acres or Info Edge. Follow the site's terms and applicable privacy requirements.