Discover/CBRE API
live

CBRE APIcbre.com ↗

Search and extract CBRE US commercial real estate listings by location, type, and transaction. Get pricing, broker contacts, spaces, and coordinates.

Endpoint health
verified 4d ago
search_properties_for_lease
get_property_detail
search_properties_for_sale
get_agent_contact
get_property_pricing
7/7 passing latest checkself-healing
Endpoints
7
Updated
25d ago

What is the CBRE API?

The CBRE API exposes 7 endpoints covering US commercial real estate listings on cbre.com, including sale and lease inventory with normalized address, coordinates, pricing, broker contacts, and subdivided space details. The search_properties endpoint accepts bounding-box, radius, and free-text location filters simultaneously with property-type, size, and transaction-type constraints, returning up to 10,000 candidate listings per filtered query with accurate pagination.

This call costs1 credit / call— charged only on success
Try it
Bounding box as 'south,west,north,east' in decimal degrees (WGS84). Takes precedence over coordinate radius and location.
1-based page number over the filtered result set.
Source sort expression; the default orders by most recently updated first.
2-letter US state code (e.g. NJ) applied to the listing address; ANDs with any geographic filter.
Listing status filter applied by the source. Omit to return all statuses.
Center latitude in decimal degrees for a straight-line radius search; requires longitude and radius_miles.
Free-text place to search near: city ('Midland Park, NJ'), 5-digit ZIP, state name or full address. Geocoded to the place's bounding viewport. Ignored when bbox or coordinate radius is supplied.
Inclusive maximum property size in sqft.
Inclusive minimum property size in sqft (total size, falling back to minimum available size).
Center longitude in decimal degrees for a straight-line radius search; requires latitude and radius_miles.
Inclusive maximum disclosed asking price. Setting it excludes unpriced listings unless include_unpriced=true.
Inclusive minimum disclosed asking price in the listing's currency (USD on this site). Setting it excludes unpriced listings unless include_unpriced=true.
Listings per page, 1-100.
Straight-line (great-circle, not road/driving) radius in statute miles around latitude/longitude; must be > 0.
Single property type code. Combined (OR) with property_types when both are given. Unrecognized codes return a stale_input error listing the accepted codes.
Comma-separated PropertyType codes matched with OR semantics, e.g. Office,Retail. Aliases Hotel, Medical, Data Center, Flex and Specialty are mapped to the site codes.
Only meaningful when min_price or max_price is set: true also returns listings with no disclosed asking price (contact broker, zero placeholder, absent); they never satisfy a price bound on their own.
'sale' = listings offered for sale only (no lease-only listings); 'lease' = listings offered for lease; 'allTypes' = both. When omitted, lease listings are returned.
→ api.parse.bot/scraper/eee95c27-9fe9-4347-a798-32cfc2ce7122/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/eee95c27-9fe9-4347-a798-32cfc2ce7122/search_properties?page=1&sort=desc%28Common.LastUpdated%29&location=New+York%2C+NY%2C+USA&max_size=50000&min_size=1000&page_size=24&property_type=Office&transaction_type=lease' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 7 totalmissing one? ·

Search CBRE US commercial listings. One record per property listing (a parent listing may contain several spaces, returned inline). Filters combine with AND: transaction_type (sale returns only listings marked for sale, lease-only listings are never mixed in; a listing marketed for both sale and lease has transaction_types ['sale','lease']), status, property types (OR across property_type + property_types), state, one geographic filter, size and disclosed-price bounds. Geographic precedence: bbox > latitude/longitude/radius_miles > location; state always ANDs with the geographic filter. radius_miles is a straight-line (as-the-crow-flies) distance in statute miles approximated by a 36-point circle, not a driving distance. location text (city, ZIP, state, address) is geocoded to its bounding viewport; text the geocoder cannot place returns a stale_input error instead of a nationwide result set. Disclosed asking price means a positive stated sale-price amount; contact-broker and zero/absent values are unpriced and are excluded whenever min_price or max_price is set unless include_unpriced=true. Size and price bounds are inclusive and evaluated over the whole matching result set before paging, so total_matches, has_more and page tiling stay accurate; this costs two round trips and is capped at 10000 candidate listings (truncated=true when the source held more). Without size/price bounds the call is a single round trip. Results default to newest-updated first. page_size accepts 1-100. Each item in properties is the raw source record; listings holds the normalized record for the same item in the same order (listing_id, listing_url, address, coordinates, asking_price with currency, status, transaction_types, building/lot area with units, photos, brochures, agents, update dates). Zoning, parking, dimensions and marketing text are source-reported listing information, not verified facts. Fields not published by the source (parcel IDs, structured zoning, stories, occupancy, auction bids/deadlines) are not returned.

Input
ParamTypeDescription
bboxstringBounding box as 'south,west,north,east' in decimal degrees (WGS84). Takes precedence over coordinate radius and location.
pageinteger1-based page number over the filtered result set.
sortstringSource sort expression; the default orders by most recently updated first.
statestring2-letter US state code (e.g. NJ) applied to the listing address; ANDs with any geographic filter.
statusstringListing status filter applied by the source. Omit to return all statuses.
latitudenumberCenter latitude in decimal degrees for a straight-line radius search; requires longitude and radius_miles.
locationstringFree-text place to search near: city ('Midland Park, NJ'), 5-digit ZIP, state name or full address. Geocoded to the place's bounding viewport. Ignored when bbox or coordinate radius is supplied.
max_sizenumberInclusive maximum property size in sqft.
min_sizenumberInclusive minimum property size in sqft (total size, falling back to minimum available size).
longitudenumberCenter longitude in decimal degrees for a straight-line radius search; requires latitude and radius_miles.
max_pricenumberInclusive maximum disclosed asking price. Setting it excludes unpriced listings unless include_unpriced=true.
min_pricenumberInclusive minimum disclosed asking price in the listing's currency (USD on this site). Setting it excludes unpriced listings unless include_unpriced=true.
page_sizeintegerListings per page, 1-100.
radius_milesnumberStraight-line (great-circle, not road/driving) radius in statute miles around latitude/longitude; must be > 0.
property_typestringSingle property type code. Combined (OR) with property_types when both are given. Unrecognized codes return a stale_input error listing the accepted codes.
property_typesstringComma-separated PropertyType codes matched with OR semantics, e.g. Office,Retail. Aliases Hotel, Medical, Data Center, Flex and Specialty are mapped to the site codes.
include_unpricedbooleanOnly meaningful when min_price or max_price is set: true also returns listings with no disclosed asking price (contact broker, zero placeholder, absent); they never satisfy a price bound on their own.
transaction_typestring'sale' = listings offered for sale only (no lease-only listings); 'lease' = listings offered for lease; 'allTypes' = both. When omitted, lease listings are returned.
Response
{
  "type": "object",
  "fields": {
    "page": "integer page returned",
    "has_more": "boolean, true when a later page exists",
    "listings": "array of normalized records aligned with properties: listing_id, listing_url, address{line1,line2,city,state,postal_code,country,formatted}, latitude, longitude, property_type, property_subtype, transaction_types[], status, asking_price, asking_price_currency, price_on_application, building_area{value,units}, lot_area{value,units}, year_built, parking{ratio,ratio_per,external_spaces,internal_spaces}, loading_docks, loading_doors, lease_rate_type, lease_types[], headline, description, location_description, highlights[], photos[{caption,url}], brochures[{name,url,external,access}], website, agents[{name,email,phone,office}], brokerage, is_parent, space_count, created_date, last_updated, source_last_updated; missing values are null",
    "page_size": "integer page size applied",
    "truncated": "boolean, true when size/price filtering could only evaluate the first 10000 candidate listings",
    "properties": "array of raw source listing records (Common.* / Dynamic.* fields: address, agents, aspects, charges, photos, sizes, spaces, primary key)",
    "total_matches": "integer count of listings matching every filter (source total, or exact local count when size/price bounds are used)",
    "returned_count": "integer number of listings on this page",
    "geo_filter_mode": "string bbox|radius|location or null when no geographic filter was applied",
    "geocoded_location": "string place the location text resolved to, null when location was not used"
  },
  "sample": {
    "data": {
      "page": 1,
      "has_more": false,
      "listings": [
        {
          "agents": [
            {
              "name": "John Doe",
              "email": "[email protected]",
              "phone": "+1 (555) 012-3456",
              "office": "New Jersey - East Brunswick"
            }
          ],
          "photos": [
            {
              "url": "https://www.cbre.com/resources/fileassets/US-SMPL-179394/52a56d16/01bef103-c795-4e8a-a5b9-7db6186b0639_Photo_1_large.jpg",
              "caption": "Bldg Photo"
            }
          ],
          "status": null,
          "address": {
            "city": "Manchester Township",
            "line1": null,
            "line2": "123 Main St",
            "state": "NJ",
            "country": "US",
            "formatted": "123 Main St, Manchester Township, NJ, 08759",
            "postal_code": "08759"
          },
          "parking": {
            "ratio": 0,
            "ratio_per": 0,
            "external_spaces": 0,
            "internal_spaces": 0
          },
          "website": "http://www.cbre.com/123mainst",
          "headline": "For Sale or Build to Suit Opportunity | Manchester",
          "latitude": 40.022726,
          "lot_area": null,
          "brochures": [],
          "brokerage": "CBRE",
          "is_parent": true,
          "longitude": -74.266299,
          "highlights": [
            "2.39 AC Available"
          ],
          "listing_id": "US-SMPL-179394",
          "year_built": null,
          "description": null,
          "lease_types": [],
          "listing_url": "https://www.cbre.com/properties/properties-for-lease/commercial-space/details/US-SMPL-179394/123-main-st-manchester-township-nj-08759",
          "space_count": 0,
          "asking_price": 600000,
          "created_date": "2025-06-02",
          "last_updated": "2026-02-26T15:28:11.9984287Z",
          "building_area": null,
          "loading_docks": 0,
          "loading_doors": 0,
          "property_type": "Office",
          "lease_rate_type": null,
          "property_subtype": null,
          "transaction_types": [
            "sale"
          ],
          "source_last_updated": "2026-02-26",
          "location_description": null,
          "price_on_application": false,
          "asking_price_currency": "USD"
        }
      ],
      "page_size": 50,
      "truncated": false,
      "properties": [
        {
          "Common.Agents": [
            {
              "Common.AgentName": "John Doe",
              "Common.AgentOffice": "New Jersey - East Brunswick",
              "Common.EmailAddress": "[email protected]",
              "Common.TelephoneNumber": "+1 (555) 012-3456"
            }
          ],
          "Common.Photos": [],
          "Common.Aspects": [
            "isSale"
          ],
          "Common.Charges": [
            {
              "Common.Amount": 600000,
              "Common.PerUnit": "Whole",
              "Common.Interval": "Once",
              "Common.AmountKind": "Value",
              "Common.ChargeKind": "SalePrice",
              "Common.CurrencyCode": "USD",
              "Common.OnApplication": false
            }
          ],
          "Common.Created": "2025-06-02",
          "Common.Brochures": [],
          "Common.UsageType": "Office",
          "Common.Coordinate": {
            "lat": 40.022726,
            "lon": -74.266299
          },
          "Common.Highlights": [],
          "Common.PrimaryKey": "US-SMPL-179394",
          "Dynamic.SalePrice": 460829.49,
          "Common.LastUpdated": "2026-02-26T15:28:11.9984287Z",
          "Common.ActualAddress": {
            "Common.Line1": " ",
            "Common.Line2": "123 Main St",
            "Common.Region": "NJ",
            "Common.Country": "US",
            "Common.PostCode": "08759",
            "Common.Locallity": "Manchester Township"
          },
          "Common.FloorsAndUnits": [],
          "Common.SourceLastupdated": "2026-02-26"
        }
      ],
      "total_matches": 2,
      "returned_count": 2,
      "geo_filter_mode": null,
      "geocoded_location": null
    },
    "status": "success"
  }
}

About the CBRE API

Search and Filter Commercial Listings

The search_properties endpoint is the primary entry point. It accepts a bbox (south,west,north,east decimal degrees), a coordinate radius via latitude, longitude, and radius_miles, or a free-text location string (city, ZIP, state, or full address) that gets geocoded by the source. Geographic filters take precedence in a defined order: bbox overrides radius, which overrides location. You can layer in state, status, transaction_type (sale vs. lease), one or more property_types, min_size/max_size in sqft, and asking-price bounds. The truncated flag in the response tells you when size or price filtering could only evaluate the first 10,000 candidates. Each page returns total_matches, returned_count, has_more, and page_size so pagination is unambiguous.

Normalized Records and Raw Source Data

Every search response returns two parallel arrays: listings (normalized records) and properties (raw source fields). The normalized listing object includes listing_id, listing_url, a structured address object, latitude/longitude, property_type, transaction_types, status, asking_price, asking_price_currency, size_sqft, photo URLs, and a brokers array. The raw properties array carries Common.* and Dynamic.* source fields like Common.Agents, Common.Photos, Common.Charges, Common.Highlights, Common.LeaseTypes, and Common.ActualAddress. get_property_detail retrieves the complete record for a single listing by its stable property_id (e.g. US-SMPL-173239).

Specialized Endpoints

search_properties_for_lease and search_properties_for_sale are convenience wrappers that fix the transaction type and accept a free-text location and optional property_type. These return the same dual-array response shape as search_properties. Note that sale inventory on CBRE is sparse: many location/property-type combinations legitimately return zero results.

get_property_spaces extracts floor and unit subdivisions within a listing — subdivision name, area, status, lease type, and availability — useful when a parent listing contains multiple leasable units. get_agent_contact returns agent names, emails, phone numbers, and office locations for a given property. get_property_pricing returns the charges array (kind, currency, interval, amount, contact-broker flag), asking_price, asking_price_currency, price_on_application boolean, lease_types, and transaction_types — without needing to pull the full detail record.

Reliability & maintenanceVerified

The CBRE API is a managed, monitored endpoint for cbre.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cbre.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 cbre.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.

Last verified
4d ago
Latest check
7/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a commercial property map using bbox geographic filters and latitude/longitude fields from search results.
  • Monitor asking prices for industrial listings in a specific state using state, property_type, and asking_price fields.
  • Aggregate broker contact data across a market area with get_agent_contact keyed on listing_id from search results.
  • Enumerate available sublease units in a building using get_property_spaces and filtering lease_types for 'SubLease'.
  • Screen properties by size before pulling full detail by combining min_size/max_size filters with size_sqft in normalized listings.
  • Track listing status changes (available, undercontract, unavailable) using Common.Status via get_property_detail.
  • Identify off-market or price-on-application listings using the price_on_application boolean from get_property_pricing.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does CBRE have an official public developer API?+
CBRE does not publish a public developer API for its property listings platform. This Parse API provides structured access to the same listing data available on cbre.com.
How does `search_properties` handle geographic filtering, and can I combine multiple filter types?+
The endpoint supports three geographic modes: a bbox string ('south,west,north,east'), a coordinate radius (requires latitude, longitude, and radius_miles), and a free-text location string that resolves to a place. When more than one is supplied, bbox takes precedence over radius, which takes precedence over location. You can stack any geographic mode with state, property_types, transaction_type, min_size/max_size, and price bounds — all filters combine with AND. The geocoded_location field in the response confirms what place the location string resolved to.
What does `get_property_pricing` return for listings where the price is not disclosed?+
asking_price will be null and price_on_application will be true for listings the source marks as 'contact broker'. The charges array still appears with its entries, but the amount field for those entries will reflect the contact-broker flag rather than a stated figure. sale_price is a separately normalized figure from the source and may also be null when no price is disclosed.
Does the API cover CBRE listings outside the United States?+
The API currently covers US listings only. The state parameter accepts 2-letter US state codes, and listing addresses return US-format fields. You can fork this API on Parse and revise it to target CBRE's international listing inventory if your use case requires non-US markets.
Are historical or sold listings accessible through the API?+
The API reflects the current listing statuses published on cbre.com, including 'undercontract' and 'unavailable' when the source exposes them via the status filter. A full archive of sold or expired listings is not currently accessible. You can fork the API on Parse and revise it to collect and persist historical snapshots if you need longitudinal records.
Page content last updated . Spec covers 7 endpoints from cbre.com.
Related APIs in Real EstateSee all →
crexi.com API
Search and browse commercial real estate listings from Crexi.com with detailed property information including pricing, cap rates, NOI, and broker details. Retrieve comprehensive listing data and property specifics to compare investment opportunities and market trends across a wide range of commercial property types.
realcommercial.com.au API
Search commercial property listings across Australia, view detailed property information, and stay updated with the latest real estate market news all from one platform. Find investment opportunities, compare properties, and read industry insights to make informed decisions in the commercial property market.
domain.com.au API
Search and compare property listings for sale, rent, or sold properties across Australia, view detailed property information and agent profiles, and explore suburb insights to make informed real estate decisions. Access comprehensive data on agents, neighborhoods, and properties all in one place.
centris.ca API
Search and retrieve real estate listings from Centris.ca, Canada's largest real estate platform. Filter by location, property type, price range, and keywords to find houses, condos, plexes, and multi-generational properties across Quebec. Get detailed listing information including price, address, room counts, and photos.
krisha.kz API
Search and browse real estate listings across Krisha.kz to find properties for sale, rent, or new developments, then access detailed information and contact details for each listing. Get comprehensive property data including prices, descriptions, and seller information to make informed decisions about properties in Kazakhstan.
coldwellbanker.com.mx API
Access data from coldwellbanker.com.mx.
realtor.com API
Search millions of real estate listings on Realtor.com, view detailed property information, find qualified agents in your area, and access market analytics to understand pricing trends. Get location suggestions and property insights all in one place to help you make informed decisions about buying, selling, or investing in real estate.
rent.com API
Browse and extract rental property data from Rent.com. Search listings by location and filter by beds, baths, price, and pet policy. Retrieve full property details, floor plans, unit availability, amenities, nearby schools, points of interest, and active specials.