CommonFloor APIcommonfloor.com ↗
Access CommonFloor property listings, project details, market trends, amenities, nearby POIs, and agent info across Indian cities via 9 structured endpoints.
What is the CommonFloor API?
The CommonFloor API exposes 9 endpoints covering property listings, real estate projects, market price trends, and location intelligence across major Indian cities. Use search_properties to query buy or rent listings filtered by city, BHK, budget, locality, and property type, and get_property_details to retrieve full listing data including broker info, images, and similar properties. Structured JSON responses include fields like cfListingId, carpetArea, bhk_range, and sell_trend_data.
curl -X GET 'https://api.parse.bot/scraper/a6558220-8a63-4e08-ab89-73ac743af634/search_properties?bhk=2&city=Bangalore&page=1&locality=xi23fd&budget_max=500000000&budget_min=500000&listing_type=sale&property_type=Apartment' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace commonfloor-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: CommonFloor Real Estate API — bounded, re-runnable; every call capped."""
from parse_apis.commonfloor_real_estate_api import CommonFloor, City, ListingType, EntityType, ListingNotFound
client = CommonFloor()
# List available cities
for city_name in client.properties.list_cities(limit=5):
print(city_name)
# Search for sale listings in Bangalore
for listing in client.properties.search(city=City.BANGALORE, listing_type=ListingType.SALE, limit=3):
print(listing.title, listing.price, listing.locality, listing.city)
# Drill-down: take ONE listing, explore its sub-resources
listing = client.properties.search(city=City.PUNE, limit=1).first()
if listing:
# Full property details
detail = listing.details()
print(detail.info.city, detail.info.bedrooms, detail.info.carpet_area, detail.info.price)
# Agent contact info
contact = listing.agent()
print(contact.contact_name, contact.contact_person_type)
# Market trends for this listing's locality
trends = listing.market_trends()
for trend in trends.sell_trend_data[:2]:
print(trend.name, trend.data, trend.label)
# Get nearby POIs for a project
location = client.locationinfos.get(entity_id="2828", entity_type=EntityType.PROJECT)
for school in location.school[:3]:
print(school.name, school.travel_distance, school.travel_time)
# Typed error handling
try:
bad = client.property(id="nonexistent_id_xyz").details()
except ListingNotFound as exc:
print(f"Listing not found: {exc.listing_id}")
print("exercised: list_cities / properties.search / details / agent / market_trends / locationinfos.get")
Search for property listings (buy/rent) in a city with optional filters. Returns paginated results with listing summaries including price, BHK, area, and locality. The bhk filter is a preference hint that may return mixed BHK values from the upstream. Paginates via integer page counter with 30 results per page.
| Param | Type | Description |
|---|---|---|
| bhk | string | Number of bedrooms to filter by (e.g. '2', '3', '4'). Acts as a preference hint; results may include other BHK types. |
| city | string | City name. |
| page | integer | Page number for pagination. |
| locality | string | Internal area/locality ID filter (e.g. 'xi23fd' for Yelahanka). Uses the site's internal locality IDs which can be found in search results as area_id fields. |
| budget_max | integer | Maximum budget in INR. |
| budget_min | integer | Minimum budget in INR. |
| listing_type | string | Type of listing: 'sale' or 'rent'. |
| property_type | string | Property type filter (e.g. 'Apartment', 'Villa', 'Plot'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"listings": "array of property listing objects",
"page_size": "integer number of results per page",
"total_count": "integer total number of matching results"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"bhk": "3 BHK",
"url": "/listing/3bhk-apartment-for-sale-in-budigere-cross-bangalore-at-haridhruva-halcyon/fqitouldjwc63mjf",
"price": "89 L ",
"title": "3BHK Apartment for Sale in Budigere Cross",
"cfAreaName": "Budigere Cross",
"cfCity_name": "Bangalore",
"cfListingId": "fqitouldjwc63mjf",
"property_area": 1307,
"property_type": "Apartment"
}
],
"page_size": 30,
"total_count": 28329
},
"status": "success"
}
}About the CommonFloor API
Property Search and Listing Details
The search_properties endpoint accepts filters for city, listing_type (sale or rent), bhk, budget_min, budget_max, property_type, and locality. Results are paginated and each listing object includes cfListingId, title, price, bhk, property_area, property_type, cfAreaName, and a direct url. Note that the bhk parameter is a preference hint — the upstream data may return mixed BHK values, and locality must match CommonFloor's internal naming, which can differ from commonly used area names.
get_property_details takes a listing_id (e.g. gfv4o4uqzkjya5wm) and returns the full listing record: broker contact details via the broker object, an images.cfImages array, and a flpBodyQH object containing price, bedrooms, carpetArea, city, area_name, intent, and projectId. Similar properties are returned in the similar_listings array.
Projects, Trends, and Location Data
search_projects and get_project_details cover new residential developments. Project objects include cfBuilder_name, minimumPrice, maximumPrice, cfLocality_name, and cfProjectUrl. The get_market_trends endpoint accepts an entity_id and page_type (listing or project) and returns sell_trend_data (price per sqft over time periods) and rent_trend_data (rent values by BHK) for the entity's locality and nearby areas.
get_property_location_info returns nearby POIs organized by category — school, hospital, techPark, metroStation, and shoppingMall — each with poiName, travelDistance, and travelTime. The entity_id for this endpoint is the numeric project ID found under qaAnalyticsCf.project_id in property details, not the alphanumeric listing ID. get_property_amenities returns an array of amenity name strings for a listing, though coverage varies — some listings return an empty array. Agent contact via get_agent_contact_details exposes contact_name, contact_person_type, and propertyType; the phone number is gated and not returned.
The CommonFloor API is a managed, monitored endpoint for commonfloor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when commonfloor.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official commonfloor.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate buy and rent listings across Bangalore, Mumbai, and Pune with budget and BHK filters for a property comparison tool.
- Build a project discovery feed that surfaces new residential developments using search_projects with builder name and price range data.
- Display locality-level price-per-sqft trends from get_market_trends to help buyers evaluate neighborhood pricing over time.
- Enrich property detail pages with nearby school, hospital, and metro station data from get_property_location_info.
- Show available amenities like Swimming Pool, Gym, and Club House for shortlisted listings using get_property_amenities.
- Identify whether a listing is handled by a Broker or Owner using the contact_person_type field in get_agent_contact_details.
- Populate a city selector for a real estate app using the supported city list from get_cities_list.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.