Indian Property Listings Finder by City & BHK
Search sale and rental property listings across 31 Indian cities by BHK, property type, locality and price band, with area, poster identity and listing links for buyers, agents and researchers.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to collect. Search by city and filters, paste MagicBricks search-result URLs, or paste property-detail URLs. |
startUrls | array | optional | MagicBricks search-result or property-detail links (mode=bySearchUrl or byPropertyUrl). |
city | string | optional | Indian city to search (mode=searchForSale, searchForRent, searchProperties). |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to collect. Search by city and filters, paste MagicBricks search-result URLs, or paste property-detail URLs. |
startUrls | array | optional | MagicBricks search-result or property-detail links (mode=bySearchUrl or byPropertyUrl). |
city | string | optional | Indian city to search (mode=searchForSale, searchForRent, searchProperties). |
localities | array | optional | Optional locality or neighbourhood names inside the city (mode=searchForSale, searchForRent, searchProperties). One search is run per locality. |
propertyType | string | optional | Type of property to search (mode=searchForSale, searchForRent, searchProperties). |
bedrooms | string | optional | Bedroom count. 5+ is sent as 5, the site's maximum (mode=searchForSale, searchForRent, searchProperties). |
priceMin | integer | optional | Lowest asking price in Indian Rupees (mode=searchForSale, searchForRent, searchProperties). |
priceMax | integer | optional | Highest asking price in Indian Rupees (mode=searchForSale, searchForRent, searchProperties). |
areaMin | integer | optional | Smallest covered or carpet area in square feet (mode=searchForSale, searchForRent, searchProperties). |
areaMax | integer | optional | Largest covered or carpet area in square feet (mode=searchForSale, searchForRent, searchProperties). |
furnishing | string | optional | Furnishing state filter (mode=searchForSale, searchForRent, searchProperties). |
possessionStatus | string | optional | Ready-to-move or under-construction filter (mode=searchForSale, searchProperties). |
postedSince | string | optional | Only listings posted in the last 24 hours (mode=searchForSale, searchForRent, searchProperties). MagicBricks does not expose wider server-side posting windows. |
tenantType | string | optional | Who the landlord accepts (mode=searchForRent and rent searches in searchProperties). MagicBricks exposes Bachelors and Family server-side. |
sortBy | string | optional | Order of search results (mode=searchForSale, searchForRent, searchProperties). |
maxItems | integer | optional | Hard cap on the number of property records returned. |
includeDetails | boolean | optional | Also open each listing's detail page for project, developer, RERA, full address, GPS, amenities, deposit and maintenance data (search modes). |
Download the published input schema
View complete JSON
{
"description": "Choose what to collect from MagicBricks: city searches for sale or rent, pasted search-result URLs, or pasted property-detail URLs. Add optional BHK, price, area, furnishing, possession and locality filters.",
"properties": {
"areaMax": {
"description": "Largest covered or carpet area in square feet (mode=searchForSale, searchForRent, searchProperties).",
"maximum": 1000000,
"minimum": 0,
"title": "Maximum area (sq.ft)",
"type": "integer"
},
"areaMin": {
"description": "Smallest covered or carpet area in square feet (mode=searchForSale, searchForRent, searchProperties).",
"maximum": 1000000,
"minimum": 0,
"title": "Minimum area (sq.ft)",
"type": "integer"
},
"bedrooms": {
"default": "Any",
"description": "Bedroom count. 5+ is sent as 5, the site's maximum (mode=searchForSale, searchForRent, searchProperties).",
"editor": "select",
"enum": [
"Any",
"1",
"2",
"3",
"4",
"5+"
],
"enumTitles": [
"Any",
"1 BHK",
"2 BHK",
"3 BHK",
"4 BHK",
"5+ BHK"
],
"prefill": "Any",
"title": "Bedrooms (BHK)",
"type": "string"
},
"city": {
"default": "Mumbai",
"description": "Indian city to search (mode=searchForSale, searchForRent, searchProperties).",
"editor": "select",
"enum": [
"Mangalore",
"Belgaum",
"Mysore",
"Hubli",
"Ahmedabad",
"Bangalore",
"Beyond Thane",
"Chennai",
"Gurgaon",
"Hyderabad",
"Indore",
"Jaipur",
"Kolkata",
"Lucknow",
"Mumbai",
"Navi Mumbai",
"New Delhi",
"Noida",
"Pune",
"Thane",
"Agra",
"Ahmadnagar",
"Allahabad",
"Aluva",
"Amritsar",
"Aurangabad",
"Badlapur",
"Bareilly",
"Bhiwadi",
"Bhiwandi",
"Bhopal",
"Bhubaneswar",
"Bokaro Steel City",
"Chandigarh",
"Chengalpattu",
"Coimbatore",
"Dehradun",
"Durgapur",
"Ernakulam",
"Erode",
"Faridabad",
"Ghaziabad",
"Goa",
"Gorakhpur",
"Greater Noida",
"Guntur",
"Guwahati",
"Gwalior",
"Haridwar",
"Hosur",
"Jabalpur",
"Jalandhar",
"Jammu",
"Jamshedpur",
"Jodhpur",
"Kalyan",
"Kannur",
"Kanpur",
"Khopoli",
"Kochi",
"Kodaikanal",
"Kottayam",
"Kozhikode",
"Lonavala",
"Ludhiana",
"Madurai",
"Mohali",
"Nagpur",
"Nainital",
"Nanded",
"Nashik",
"Navsari",
"Nellore",
"Newtown",
"Ooty",
"Palakkad",
"Palghar",
"Panchkula",
"Patiala",
"Patna",
"Pondicherry",
"Raipur",
"Rajahmundry",
"Ranchi",
"Salem",
"Satara",
"Shimla",
"Siliguri",
"Solapur",
"Sonipat",
"Surat",
"Thanjavur",
"Thrissur",
"Tirunelveli",
"Tirupati",
"Tirupur",
"Trichy",
"Trivandrum",
"Tumkur",
"Udaipur",
"Udupi",
"Vadodara",
"Vapi",
"Varanasi",
"Vijayawada",
"Visakhapatnam",
"Vrindavan",
"Zirakpur"
],
"enumTitles": [
"Mangalore",
"Belgaum",
"Mysore",
"Hubli",
"Ahmedabad",
"Bangalore",
"Beyond Thane",
"Chennai",
"Gurgaon",
"Hyderabad",
"Indore",
"Jaipur",
"Kolkata",
"Lucknow",
"Mumbai",
"Navi Mumbai",
"New Delhi",
"Noida",
"Pune",
"Thane",
"Agra",
"Ahmadnagar",
"Allahabad",
"Aluva",
"Amritsar",
"Aurangabad",
"Badlapur",
"Bareilly",
"Bhiwadi",
"Bhiwandi",
"Bhopal",
"Bhubaneswar",
"Bokaro Steel City",
"Chandigarh",
"Chengalpattu",
"Coimbatore",
"Dehradun",
"Durgapur",
"Ernakulam",
"Erode",
"Faridabad",
"Ghaziabad",
"Goa",
"Gorakhpur",
"Greater Noida",
"Guntur",
"Guwahati",
"Gwalior",
"Haridwar",
"Hosur",
"Jabalpur",
"Jalandhar",
"Jammu",
"Jamshedpur",
"Jodhpur",
"Kalyan",
"Kannur",
"Kanpur",
"Khopoli",
"Kochi",
"Kodaikanal",
"Kottayam",
"Kozhikode",
"Lonavala",
"Ludhiana",
"Madurai",
"Mohali",
"Nagpur",
"Nainital",
"Nanded",
"Nashik",
"Navsari",
"Nellore",
"Newtown",
"Ooty",
"Palakkad",
"Palghar",
"Panchkula",
"Patiala",
"Patna",
"Pondicherry",
"Raipur",
"Rajahmundry",
"Ranchi",
"Salem",
"Satara",
"Shimla",
"Siliguri",
"Solapur",
"Sonipat",
"Surat",
"Thanjavur",
"Thrissur",
"Tirunelveli",
"Tirupati",
"Tirupur",
"Trichy",
"Trivandrum",
"Tumkur",
"Udaipur",
"Udupi",
"Vadodara",
"Vapi",
"Varanasi",
"Vijayawada",
"Visakhapatnam",
"Vrindavan",
"Zirakpur"
],
"prefill": "Mumbai",
"title": "City",
"type": "string"
},
"furnishing": {
"default": "Any",
"description": "Furnishing state filter (mode=searchForSale, searchForRent, searchProperties).",
"editor": "select",
"enum": [
"Any",
"Furnished",
"Semi-Furnished",
"Unfurnished"
],
"enumTitles": [
"Any",
"Furnished",
"Semi-furnished",
"Unfurnished"
],
"prefill": "Any",
"title": "Furnishing",
"type": "string"
},
"includeDetails": {
"default": false,
"description": "Also open each listing's detail page for project, developer, RERA, full address, GPS, amenities, deposit and maintenance data (search modes).",
"editor": "checkbox",
"prefill": false,
"title": "Fetch detail pages",
"type": "boolean"
},
"localities": {
"description": "Optional locality or neighbourhood names inside the city (mode=searchForSale, searchForRent, searchProperties). One search is run per locality.",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Localities",
"type": "array"
},
"maxItems": {
"default": 50,
"description": "Hard cap on the number of property records returned.",
"maximum": 10000,
"minimum": 1,
"prefill": 3,
"title": "Max listings",
"type": "integer"
},
"mode": {
"default": "searchForSale",
"description": "What to collect. Search by city and filters, paste MagicBricks search-result URLs, or paste property-detail URLs.",
"editor": "select",
"enum": [
"searchForSale",
"searchForRent",
"searchProperties",
"bySearchUrl",
"byPropertyUrl"
],
"enumTitles": [
"Search properties for sale",
"Search properties for rent",
"Search both sale and rent",
"Scrape MagicBricks search-result URLs",
"Scrape MagicBricks property URLs"
],
"prefill": "searchForSale",
"title": "Mode",
"type": "string"
},
"possessionStatus": {
"default": "Any",
"description": "Ready-to-move or under-construction filter (mode=searchForSale, searchProperties).",
"editor": "select",
"enum": [
"Any",
"Ready to Move",
"Under Construction"
],
"enumTitles": [
"Any",
"Ready to move",
"Under construction"
],
"prefill": "Any",
"title": "Possession",
"type": "string"
},
"postedSince": {
"default": "Any",
"description": "Only listings posted in the last 24 hours (mode=searchForSale, searchForRent, searchProperties). MagicBricks does not expose wider server-side posting windows.",
"editor": "select",
"enum": [
"Any",
"1"
],
"enumTitles": [
"Any time",
"Last 24 hours"
],
"prefill": "Any",
"title": "Posted within",
"type": "string"
},
"priceMax": {
"description": "Highest asking price in Indian Rupees (mode=searchForSale, searchForRent, searchProperties).",
"maximum": 1000000000000,
"minimum": 0,
"title": "Maximum price (INR)",
"type": "integer"
},
"priceMin": {
"description": "Lowest asking price in Indian Rupees (mode=searchForSale, searchForRent, searchProperties).",
"maximum": 1000000000000,
"minimum": 0,
"title": "Minimum price (INR)",
"type": "integer"
},
"propertyType": {
"default": "Apartment",
"description": "Type of property to search (mode=searchForSale, searchForRent, searchProperties).",
"editor": "select",
"enum": [
"Apartment",
"Builder Floor",
"Independent House",
"Villa",
"Plot",
"Penthouse",
"Studio Apartment",
"Farm House",
"Serviced Apartment",
"Commercial Office",
"Office in IT Park/SEZ",
"Commercial Shop",
"Commercial Showroom"
],
"enumTitles": [
"Apartment / flat",
"Builder floor",
"Independent house",
"Villa",
"Plot / land",
"Penthouse",
"Studio apartment",
"Farm house",
"Serviced apartment",
"Commercial office",
"Office in IT park / SEZ",
"Commercial shop",
"Commercial showroom"
],
"prefill": "Apartment",
"title": "Property type",
"type": "string"
},
"sortBy": {
"default": "Relevance",
"description": "Order of search results (mode=searchForSale, searchForRent, searchProperties).",
"editor": "select",
"enum": [
"Relevance",
"Price - Low to High",
"Price - High to Low",
"Most Recent",
"Rate/sqft - Low to High",
"Rate/sqft - High to Low"
],
"enumTitles": [
"Relevance",
"Price: low to high",
"Price: high to low",
"Most recent",
"Rate per sq.ft: low to high",
"Rate per sq.ft: high to low"
],
"prefill": "Relevance",
"title": "Sort by",
"type": "string"
},
"startUrls": {
"default": [],
"description": "MagicBricks search-result or property-detail links (mode=bySearchUrl or byPropertyUrl).",
"editor": "requestListSources",
"items": {
"properties": {
"url": {
"description": "MagicBricks search-result or property-detail URL.",
"title": "URL",
"type": "string"
}
},
"type": "object"
},
"prefill": [],
"title": "Search or property URLs",
"type": "array"
},
"tenantType": {
"default": "Any",
"description": "Who the landlord accepts (mode=searchForRent and rent searches in searchProperties). MagicBricks exposes Bachelors and Family server-side.",
"editor": "select",
"enum": [
"Any",
"Bachelors",
"Family"
],
"enumTitles": [
"Any",
"Bachelors",
"Family"
],
"prefill": "Any",
"title": "Tenant preference",
"type": "string"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "MagicBricks Property Listings Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
listings | string | optional | Dataset containing all scraped MagicBricks property listings. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "MagicBricks property listings with price, area, BHK, project, RERA, seller, amenities, images and listing URLs.",
"properties": {
"listings": {
"description": "Dataset containing all scraped MagicBricks property listings.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "MagicBricks property listings",
"type": "string"
}
},
"title": "MagicBricks Property Listings Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {}
},
"title": "Property Listings",
"transformation": {
"fields": [
"propertyId",
"title",
"price",
"priceInr",
"area",
"bedrooms",
"propertyType",
"transactionType",
"city",
"locality",
"projectName",
"reraIds",
"propertyUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
MagicBricks Listings Finder: Sale, Rent & Detail Pages
Collect MagicBricks property listings across 108 Indian cities. Search for sale, rent, or both with BHK, budget, area, furnishing, possession and locality filters; paste search-result links to keep the site's own filters; or paste property-detail links for a single enriched record. Every listing keeps a clean, human-readable set of price, size, project, seller, RERA, GPS, amenity and image fields.
What this actor does
- Five modes:
searchForSale,searchForRent,searchProperties,bySearchUrl,byPropertyUrl - 108 cities with the site's own canonical names, plus locality filters and 13 residential and commercial property types
- Server-side filters: BHK, budget, area, furnishing, possession, tenant preference, last-24-hours posting age and six sort orders
- Optional detail pages add project, developer, RERA registrations, full address, GPS, complete amenities, estimated deposit, maintenance, booking amount and brokerage
- Clean output: numeric INR prices, carpet and covered areas, ISO dates, absolute links, and empty fields omitted instead of returned as null
Output per property
propertyId— MagicBricks listing idtitle— listing headlinepropertyType— Apartment, Builder Floor, Independent House, Villa, Plot, Penthouse, Studio Apartment, Farm House, Serviced Apartment, Commercial Office, Office in IT Park/SEZ, Commercial Shop or Commercial ShowroomtransactionType— Sale or RentsaleType— New Property or Resale (sale listings)price— price as shown on MagicBricks (e.g.1.10 Cr)priceInr— numeric asking price in Indian RupeespriceCurrency—INRpricePerSqft— rate per square foot (the site's own value, or derived from price and carpet area when it is missing)priceBreakdown— all-inclusive price, stamp duty and brokerage (detail pages)bookingAmount,maintenanceCharges,maintenancePeriod,securityDeposit(MagicBricks estimate),brokeragearea— covered or carpet area as a display stringcarpetArea,carpetAreaUnit,coveredArea,coveredAreaUnitbedrooms,bathrooms,balconiesfloorNumber,totalFloors,floorDisplayfurnishing,facing,ownershipType,ageOfProperty,parkingpossessionStatus,availableFrompostedAt,postedLabel,expiresAtcity,locality,address,landmarklatitude,longitude— real coordinates, omitted when the source only carries a zero placeholderprojectName,projectId,projectUrl,developerNamereraIds[],reraUrl,agentReraId,approvedBypostedBy— publicly displayed owner, agent or builder namelisterName,listerType,companyNameagentId,agentUrl,agentRating,agentExperienceSince,agentBuyersServeddescription,autoDescriptionamenities[],luxuryAmenities[],amenitiesFacingimages[],imageUrl,imageCountsearchUrl— the search that produced the recorddetailFetched— present when detail-page data was mergedsource—magicbricksrecordType—propertyscrapedAt— ISO 8601 timestamp
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | searchForSale |
searchForSale, searchForRent, searchProperties, bySearchUrl or byPropertyUrl |
startUrls |
array | – | MagicBricks search or property links (URL modes) |
city |
string | Mumbai |
One of 108 Indian cities (search modes) |
localities |
array | – | Locality names inside the city; one search per locality (search modes) |
propertyType |
string | Apartment |
13 residential and commercial types (search modes) |
bedrooms |
string | Any |
Any, 1, 2, 3, 4 or 5+ (search modes) |
priceMin |
integer | – | Minimum price in INR (search modes) |
priceMax |
integer | – | Maximum price in INR (search modes) |
areaMin |
integer | – | Minimum area in sq.ft (search modes) |
areaMax |
integer | – | Maximum area in sq.ft (search modes) |
furnishing |
string | Any |
Any, Furnished, Semi-Furnished or Unfurnished (search modes) |
possessionStatus |
string | Any |
Any, Ready to Move or Under Construction (sale searches) |
postedSince |
string | Any |
Any or 1 (last 24 hours; search modes). MagicBricks exposes only this server-side window. |
tenantType |
string | Any |
Any, Bachelors or Family (rent searches). MagicBricks exposes these two server-side. |
sortBy |
string | Relevance |
Relevance, price, recency or rate per sq.ft (search modes) |
maxItems |
integer | 50 |
Hard cap on returned listings (1–10,000) |
includeDetails |
boolean | false |
Open each listing's detail page for project, RERA, address, GPS, amenities and cost data |
Example: 2 BHK flats for sale in Mumbai
{
"mode": "searchForSale",
"city": "Mumbai",
"propertyType": "Apartment",
"bedrooms": "2",
"priceMin": 10000000,
"priceMax": 30000000,
"maxItems": 100
}
Example: rentals in two Bangalore localities
{
"mode": "searchForRent",
"city": "Bangalore",
"localities": ["Whitefield", "Hebbal"],
"bedrooms": "2",
"furnishing": "Furnished",
"tenantType": "Bachelors",
"maxItems": 60
}
Example: keep the filters from a MagicBricks search link
{
"mode": "bySearchUrl",
"startUrls": [
{"url": "https://www.magicbricks.com/property-for-sale/residential-real-estate?cityName=Pune&proptype=Villa"}
],
"maxItems": 50
}
Example: enrich a handful of property links
{
"mode": "byPropertyUrl",
"startUrls": [
{"url": "https://www.magicbricks.com/propertyDetails/3-BHK-1600-Sq-ft-Multistorey-Apartment-FOR-Sale-Juhu-in-Mumbai&id=4d423836393237353637"}
],
"maxItems": 10
}
Use cases
- Home buyers — shortlist flats by BHK, budget, locality and ready-to-move status
- Tenants — compare furnished rentals by locality, deposit and maintenance
- Real-estate agencies — monitor new listings and seller types in target micro-markets
- Market research — compare asking prices and rates per sq.ft across cities and property types
- PropTech products — feed structured listing, project and RERA data into search and valuation tools
FAQ
Is this affiliated with MagicBricks? No. This is an independent, third-party actor that reads publicly visible MagicBricks pages. It is not operated by or endorsed by MagicBricks.
Do I need a MagicBricks account or cookies? No. Every supported mode works without a login, cookies or API keys.
How many listings can one run return?
maxItems is a hard cap up to 10,000. MagicBricks serves 30 listings per page and exposes a finite number of results for each filter set. Once that ceiling is reached, narrow the city, locality, property type or budget to reach more listings. The run summary says when the ceiling was hit.
Why do some records have more fields than others? Fields are filled only when the source publishes them. A listing without a project, RERA number or agent rating simply omits those fields. Empty strings, nulls and empty lists are never emitted.
What does includeDetails add?
It opens each listing's detail page for project name, developer, RERA registrations, full address, GPS, complete amenities, description, image gallery, estimated deposit, maintenance, booking amount, brokerage and price breakup. It is slower and uses more resources than a plain search, so it is off by default.
Which URLs can I paste?
A search-results URL that contains property-for-sale or property-for-rent and cityName=, or a /propertyDetails/... link. City landing pages such as property-for-sale-rent-in-Mumbai do not contain listings; the actor reports that instead of returning zero silently.
Can I get phone numbers or email addresses? No. MagicBricks reveals contact details only after an OTP or login flow, so this actor does not return phones, emails or masked numbers.
Why does the listing count change between pages? MagicBricks updates results continuously. The actor removes duplicate listings by id and stops when a page repeats, so a run can finish slightly below the site's displayed result count.
Do I need to configure a proxy? No. The actor chooses a working connection to MagicBricks automatically. Fill in the input and run it.
Can I search several localities at once?
Yes. Add each locality to localities; the actor runs a separate search per locality and removes duplicates. Multiple localities are not combined into one AND filter.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build 9lCmU3P2oSAmJd2ok. Documentation is regenerated from the default published build; private drafts are not included.