Crexi Scraper — CRE Listings, Financials & Broker Leads
Pricing
from $5.00 / 1,000 listing scrapeds
Crexi Scraper — CRE Listings, Financials & Broker Leads
Scrape Crexi commercial real estate: for-sale listings, property details, financials, and broker contact leads via Crexi's public API. MCP/API-ready.
Pricing
from $5.00 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a month ago
Last modified
Categories
Share
What is Crexi Scraper — CRE Listings, Financials & Broker Leads?
Crexi Scraper — CRE Listings, Financials & Broker Leads returns one dataset row per for-sale commercial property on Crexi: asking price, property type and subtypes, square footage, lot size, zoning, full address with county and coordinates, marketing description, listing flags and photos, plus the listing brokers as leads with brokerage, brokerage website, licenses, Crexi profile link and active listing count. CRE brokers, investors, analysts, lenders' business development teams and AI agents use it to source deals and build broker prospect lists by state, city and property type, or from specific listing URLs.
Why CRE teams use this Crexi scraper
- Broker leads built in. With
includeBrokerson,brokerslists each listing agent withbrokerageName,brokerageWebsite,licenses,profileUrlandnumberOfActiveListings. - Market filters.
states,citiesandpropertyTypesfocus the search, andsortByorders it by relevance or price. - Ready-to-map locations.
fullAddress,county,stateCode,zip,latitudeandlongitudeon every row. - Listing signals.
isNew,hasFlyer,hasOM,hasVideo,hasVirtualTourandisInOpportunityZoneshow how actively a listing is marketed. - Detail on demand.
enrichDetailsadds subtypes, lot size, zoning, buildings, stories and the full marketing description.
Best fit for this Actor
- Best fit for broker prospecting and deal sourcing across Crexi's for-sale commercial listings.
- Designed for the public listing view. Crexi shows some values, such as cap rate, year built and APN, to signed-in users only, so in the public view those fields hold masked placeholders or stay empty.
- Use
startUrlswith listing URLs or bare asset IDs when you already know the properties. - When you need ZIP, asking price or cap rate filters, use Crexi Scraper — Commercial Real Estate Listings instead.
- To cover the same market on another marketplace, continue with LoopNet Scraper and match on address.
Example workflow: from a market to a broker call list
A commercial lender's business development rep starts with states set to FL, cities set to Miami and propertyTypes set to Office and Retail, with enrichDetails and includeBrokers on and maxResults at 100. The dataset returns every listing with its brokers. They group rows by brokers[].publicProfileId, rank brokers by numberOfActiveListings, and keep those with several listings in their target size band. They export the brokers with brokerageWebsite and profileUrl to their CRM, then schedule the same input monthly to spot new listings and new brokers.
Input
Search a market:
{"states": ["FL"],"cities": ["Miami"],"propertyTypes": ["Office", "Retail"],"sortBy": "relevance","includeUnpriced": true,"maxResults": 30,"enrichDetails": true,"includeBrokers": true}
Fetch specific listings:
{"startUrls": ["https://www.crexi.com/properties/2726421/new-york-102-henry-street", "2586166"],"enrichDetails": true,"includeBrokers": true}
| Field | Type | What it controls |
|---|---|---|
states | array | Two-letter state codes, the main location filter. |
cities | array of strings | City names, most precise with the matching state. |
propertyTypes | array | Retail, Office, Multifamily, Industrial, Land, Hospitality, Special Purpose, Mixed Use, Self Storage or Business for Sale. |
sortBy | string | relevance, priceLowToHigh or priceHighToLow. Default relevance. |
includeUnpriced | boolean | Keep listings without a public price. Default true. |
maxResults | integer | Cap on listings saved; 0 collects every match. Default 30. |
startUrls | array of strings | Crexi listing URLs or bare asset IDs. |
enrichDetails | boolean | Add full property detail. Default true. |
includeBrokers | boolean | Add broker lead records. Default true. |
proxyConfiguration | object | Proxy settings. Default uses residential Apify Proxy. |
Output
One row per listing.
| Field | What it contains |
|---|---|
id, name, url, status | Listing identity, link and status |
propertyTypes, subtypes | Asset classes |
askingPrice, askingPriceDisplay, isUnpriced | Price as a number and as shown |
squareFootage, lotSizeSqFt, units, buildings, stories, zoning | Physical details, when listed |
capRate, yearBuilt, apn | Values Crexi shows publicly for some listings, masked for others |
address, city, county, state, stateCode, zip, fullAddress, latitude, longitude | Location |
brokerageName, brokers | Brokerage and broker leads with website, licenses, profile URL and active listing count |
marketingDescription, investmentHighlights | Marketing copy as plain text |
isNew, isSold, isInOpportunityZone, hasFlyer, hasOM, hasVideo, hasVirtualTour | Listing flags |
thumbnailUrl, numberOfImages | Photos |
activatedOn, updatedOn, scrapedAt | Listing dates and collection time |
Example enriched row (broker details are illustrative):
{"id": 2196935,"name": "2175 SW 1st St","url": "https://www.crexi.com/properties/2196935/florida-2175-sw-1st-st","status": "Active","propertyTypes": ["Business for Sale", "Retail"],"subtypes": ["Business Only", "Restaurant"],"askingPrice": 125000,"askingPriceDisplay": "$125,000","squareFootage": 10419,"lotSizeSqFt": "15,920","zoning": "6100","address": "2175 SW 1st St","city": "Miami","county": "Miami-Dade County","state": "Florida","stateCode": "FL","zip": "33135","latitude": 25.7715933,"longitude": -80.2303667,"fullAddress": "2175 SW 1st St, Miami, FL 33135","brokerageName": "Example Realty Partners","brokers": [{"name": "Maria Lopez","brokerageName": "Example Realty Partners","brokerageWebsite": "https://www.example.com/","licenses": ["1234567"],"publicProfileId": "marialopez","profileUrl": "https://www.crexi.com/profile/marialopez","numberOfActiveListings": 5}],"isInOpportunityZone": false,"isNew": false,"isSold": false,"hasFlyer": true,"hasOM": false,"numberOfImages": 40,"marketingDescription": "Fully equipped corner restaurant with parking and seating, sold with its equipment and transferable licenses.","activatedOn": "2025-10-04T14:14:41Z","updatedOn": "2026-05-04T12:02:40.625Z","scrapedAt": "2026-10-01T12:16:20.423Z"}
Pricing
This Actor uses Pay per event plus Apify platform usage. Each listing saved is one Listing scraped event, and each listing enriched with full detail or broker data adds one Detail + broker enrichment event. Every run also has one Actor Start event plus the platform and proxy usage of the run. For example, 100 listings with enrichment and brokers are 100 Listing scraped events plus 100 enrichment events and the start event. Switch off enrichDetails and includeBrokers for listing-card rows only. The live Pricing tab on this page shows the current event prices.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~crexi-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"states": ["TX"], "cities": ["Austin"], "propertyTypes": ["Office"], "maxResults": 25, "includeBrokers": true}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/crexi-scraper").call(run_input={"states": ["CA"], "propertyTypes": ["Multifamily"], "maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():for broker in item.get("brokers") or []:print(item["name"], broker["name"], broker.get("profileUrl"))
Use with AI agents (MCP)
Connect the Actor to Claude, ChatGPT or Cursor through Apify MCP and ask:
List 30 office and retail properties for sale in Miami on Crexi, and give me the brokers with the most active listings and their brokerage websites.
The agent sets states, cities, propertyTypes, includeBrokers and maxResults, reads rows with get-dataset-items, groups by broker, and cites each listing url. Each listing is one event plus one enrichment event when enriched, so maxResults keeps the cost of the request predictable.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| Broker prospecting | Keep includeBrokers on and group by publicProfileId | One lead per broker with listing counts |
| Fast market scan | Switch off enrichDetails and includeBrokers | Lean listing rows |
| A specific city | Pair cities with its states code | A focused submarket |
| Priced deals first | Set includeUnpriced to false and sortBy to priceLowToHigh | Comparable asking prices |
| Known listings | Paste URLs or asset IDs into startUrls | Exactly those properties |
Builder's note
I built this one around the broker, because in commercial real estate the listing agent is often the real lead: each broker record carries a brokerage website and an active listing count so you can tell a busy specialist from a one-off seller. I kept location filters to state and city because they map cleanly to how Crexi organizes its market.
FAQ
Does it return broker emails or phone numbers?
It returns broker name, brokerage, brokerage website, licenses and Crexi profile link, which Crexi shows publicly.
Does it cover lease listings?
It covers for-sale listings.
Why is yearBuilt a row of asterisks?
Crexi reserves some details for signed-in users and masks them in the public view.
Responsible use
This Actor collects publicly available Crexi data. Broker names and licenses are personal data under laws such as the GDPR and CCPA, so contact brokers with a lawful basis, follow anti-spam rules, and respect Crexi's terms of service. Crexi is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Crexi.