cbre.com APIcbre.com ↗
Search and extract CBRE commercial property listings by location, type, and transaction. Access pricing, agent contacts, available spaces, and unit details.
curl -X GET 'https://api.parse.bot/scraper/eee95c27-9fe9-4347-a798-32cfc2ce7122/search_properties?location=Los+Angeles%2C+CA%2C+USA&page_size=5&property_type=Office' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for commercial real estate properties with filters for location, transaction type (lease/sale), property type, and size. Returns paginated results sorted by last updated date by default.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order expression. |
| location | string | Location string for geographic filtering (e.g. 'New York, NY, USA', 'Los Angeles, CA, USA'). Geocoded to a bounding polygon internally. |
| max_size | number | Maximum size in sqft for client-side filtering. |
| min_size | number | Minimum size in sqft for client-side filtering. |
| page_size | integer | Number of results per page. |
| property_type | string | Property type filter (e.g. 'Office', 'Retail', 'Industrial'). |
| transaction_type | string | Transaction type filter. Accepted values: 'lease', 'sale', 'allTypes'. When omitted, defaults to lease listings. |
{
"type": "object",
"fields": {
"properties": "array of property objects with address, agents, aspects, charges, photos, sizes, and primary key",
"total_matches": "integer total number of matching properties",
"returned_count": "integer number of properties in this page"
},
"sample": {
"data": {
"properties": [
{
"Common.Agents": [
{
"Common.AgentName": "John Doe",
"Common.EmailAddress": "[email protected]"
}
],
"Common.UsageType": "Office",
"Common.PrimaryKey": "US-SMPL-24575",
"Common.ActualAddress": {
"Common.Line2": "16921 Parthenia St",
"Common.Region": "CA",
"Common.PostCode": "91343",
"Common.Locallity": "Northridge "
}
}
],
"total_matches": 187,
"returned_count": 24
},
"status": "success"
}
}About the cbre.com API
The CBRE API provides access to commercial real estate listings across 7 endpoints, covering property search, detail retrieval, space availability, agent contacts, and pricing data. The search_properties endpoint accepts filters for location, transaction type (lease or sale), property type, and size range, returning paginated results with address, photos, charges, and agent information. Dedicated endpoints like get_property_spaces and get_property_pricing let you drill into individual listings without re-fetching the full search result.
Search and Filter Commercial Listings
The search_properties endpoint accepts location (e.g. 'New York, NY, USA'), transaction_type ('lease', 'sale', or 'allTypes'), property_type (e.g. 'Office', 'Retail', 'Industrial'), and size bounds via min_size / max_size in square feet. Results are paginated using page and page_size, and sorted by last-updated date by default, though the sort parameter accepts custom expressions. Each result in the properties array includes Common.PrimaryKey, address fields, photo resources, agent summaries, charges, and size data. total_matches and returned_count are returned alongside results for pagination control.
For workflows focused on a single transaction type, search_properties_for_lease and search_properties_for_sale are convenience endpoints with the same shape but a fixed transaction filter. Note that sale inventory is sparser than lease inventory; some location and property-type combinations will return zero results for sale.
Property Detail and Space Breakdown
Given a property_id (e.g. 'US-SMPL-24575') obtained from search results, get_property_detail returns the full listing record: Common.ActualAddress (with Line1, Line2, Locallity, Region, PostCode, Country), Common.FloorsAndUnits, Common.Agents, Common.Photos at multiple image breakpoints, Common.UsageType, and parking and highlights fields. The get_property_spaces endpoint isolates Common.FloorsAndUnits data as a spaces array, each item carrying subdivision name, area measurements, availability status, and lease type.
Pricing and Agent Data
get_property_pricing returns a charges array where each object has kind, currency, interval, and amount, plus a sale_price field (number or null) and a lease_types array (e.g. 'LeaseHold', 'SubLease'). get_agent_contact returns an agents array with each broker's name, email, direct phone number, and office location — useful for CRM enrichment or lead routing without fetching the full property detail.
- Aggregate available office and industrial listings in a target metro for tenant rep research
- Monitor lease availability changes for a watchlist of CBRE property IDs
- Enrich a CRM with broker contact data from
get_agent_contactwhen a new listing matches criteria - Compare asking rent charges across multiple properties using
get_property_pricingoutput - Build a space-matching tool that filters listings by
min_size/max_sizeand surfaces unit-level availability fromget_property_spaces - Track commercial sale inventory by property type and geography for investment screening
- Pull photo assets at multiple breakpoints for a property marketing portal
| 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 | 250 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.
Does CBRE offer an official developer API?+
What does `get_property_detail` return beyond what `search_properties` already includes?+
search_properties returns a summary per listing — address, agents, photos, charges, and sizes. get_property_detail adds the full Common.FloorsAndUnits breakdown, parking details, lease rate type, listing highlights, and photo resources at multiple responsive breakpoints. Use it when you need the complete record for a specific property_id.How does pagination work in `search_properties`?+
page (integer, 1-based) and page_size to control which slice of results is returned. The response always includes total_matches (the full count) and returned_count (items in the current page), so you can calculate total pages client-side. Results default to sort by last-updated date unless you supply a sort expression.Does the API cover CBRE listings outside the United States?+
property_id examples and location parameters reflect US-based listings (e.g. 'New York, NY, USA'). International coverage is not confirmed by the current endpoint set. You can fork this API on Parse and revise it to target non-US location inputs and validate which geographies return results.