Crexi Scraper — CRE Listings, Financials & Broker Leads avatar

Crexi Scraper — CRE Listings, Financials & Broker Leads

Pricing

from $5.00 / 1,000 listing scrapeds

Go to Apify Store
Crexi Scraper — CRE Listings, Financials & Broker Leads

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a month ago

Last modified

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 includeBrokers on, brokers lists each listing agent with brokerageName, brokerageWebsite, licenses, profileUrl and numberOfActiveListings.
  • Market filters. states, cities and propertyTypes focus the search, and sortBy orders it by relevance or price.
  • Ready-to-map locations. fullAddress, county, stateCode, zip, latitude and longitude on every row.
  • Listing signals. isNew, hasFlyer, hasOM, hasVideo, hasVirtualTour and isInOpportunityZone show how actively a listing is marketed.
  • Detail on demand. enrichDetails adds 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 startUrls with 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
}
FieldTypeWhat it controls
statesarrayTwo-letter state codes, the main location filter.
citiesarray of stringsCity names, most precise with the matching state.
propertyTypesarrayRetail, Office, Multifamily, Industrial, Land, Hospitality, Special Purpose, Mixed Use, Self Storage or Business for Sale.
sortBystringrelevance, priceLowToHigh or priceHighToLow. Default relevance.
includeUnpricedbooleanKeep listings without a public price. Default true.
maxResultsintegerCap on listings saved; 0 collects every match. Default 30.
startUrlsarray of stringsCrexi listing URLs or bare asset IDs.
enrichDetailsbooleanAdd full property detail. Default true.
includeBrokersbooleanAdd broker lead records. Default true.
proxyConfigurationobjectProxy settings. Default uses residential Apify Proxy.

Output

One row per listing.

FieldWhat it contains
id, name, url, statusListing identity, link and status
propertyTypes, subtypesAsset classes
askingPrice, askingPriceDisplay, isUnpricedPrice as a number and as shown
squareFootage, lotSizeSqFt, units, buildings, stories, zoningPhysical details, when listed
capRate, yearBuilt, apnValues Crexi shows publicly for some listings, masked for others
address, city, county, state, stateCode, zip, fullAddress, latitude, longitudeLocation
brokerageName, brokersBrokerage and broker leads with website, licenses, profile URL and active listing count
marketingDescription, investmentHighlightsMarketing copy as plain text
isNew, isSold, isInOpportunityZone, hasFlyer, hasOM, hasVideo, hasVirtualTourListing flags
thumbnailUrl, numberOfImagesPhotos
activatedOn, updatedOn, scrapedAtListing 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 ApifyClient
client = 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 situationHelpful actionExpected outcome
Broker prospectingKeep includeBrokers on and group by publicProfileIdOne lead per broker with listing counts
Fast market scanSwitch off enrichDetails and includeBrokersLean listing rows
A specific cityPair cities with its states codeA focused submarket
Priced deals firstSet includeUnpriced to false and sortBy to priceLowToHighComparable asking prices
Known listingsPaste URLs or asset IDs into startUrlsExactly 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.