Crexi Scraper — Commercial Real Estate Listings
Pricing
from $8.00 / 1,000 property enriched (full detail + broker)s
Crexi Scraper — Commercial Real Estate Listings
Scrape Crexi commercial real estate for-sale listings — asking price, cap rate, NOI, size, zoning, broker & geo. Filter by type, state, city, ZIP, price, cap rate. MCP-ready.
Pricing
from $8.00 / 1,000 property enriched (full detail + broker)s
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape commercial real estate for-sale listings from Crexi — the largest US CRE marketplace — into clean, structured JSON. Filter by property type, state, city, ZIP, asking price, and cap rate, then optionally deep-enrich every listing with cap rate, NOI, year built, zoning, lot size, marketing description, and broker details.
Built HTTP-only against Crexi's public JSON API. No login, no cookies, fast and reliable. MCP-ready — drop it straight into an AI agent (Claude, ChatGPT, Gemini) as a tool.
What you can do
- Search by filters — property type (Office, Retail, Industrial, Multifamily, Land, Hospitality, Mixed Use, Special Purpose, Self Storage, Mobile Home Park, Business for Sale, Senior Living), subtype, state, city, ZIP, price band, and cap-rate band.
- Scrape specific listings — paste Crexi property URLs and pull full detail for each.
- Deep-enrich — add cap rate, NOI, year built, zoning, lot size, APN, marketing description, investment highlights, and broker (name, brokerage, license, title) per listing.
- Feed the output into a CRM, deal-flow tracker, comps database, market-research model, or lead list.
Who it's for
CRE brokers, acquisitions teams, private-equity and REIT analysts, appraisers, and PropTech builders who need Crexi deal data in bulk without copy-pasting from the site.
Output — one record per listing
| Field | Description |
|---|---|
id | Crexi listing ID |
name | Listing name |
url | Public Crexi listing URL |
propertyTypes / subtypes | Asset classes and subtypes |
status | e.g. On-Market |
askingPrice / isUnpriced | Asking price in USD; unpriced flag |
capRate / noi | Cap rate (%) and net operating income (USD) |
squareFootage / units | Building size and unit count |
yearBuilt / lotSizeAcres / zoning / apn | Physical + legal attributes |
address / city / county / state / zip | Full location |
latitude / longitude | Geo coordinates |
brokerageName / brokers[] | Listing brokerage + broker name, title, license, state |
description / investmentHighlights | Marketing copy (plain text) |
imageUrl / galleryCount | Primary image + gallery size |
hasVideo / hasVirtualTour / isInOpportunityZone | Media + zone flags |
activatedOn / updatedOn / scrapedAt | ISO 8601 timestamps |
capRate,noi,yearBuilt,zoning,apn,description, andbrokersare populated when Deep-enrich is on (default) or when scraping property URLs. With enrichment off, you get the fast listing-card fields only.
Pricing (pay-per-event)
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Property scraped (card fields, enrichment off) | $0.004 |
| Property enriched (full detail + broker) | $0.008 |
A typical 100-listing enriched run costs about $0.80. Turn off enrichment to halve the cost for lead-list use cases that only need price, size, type, and location.
Example input — search
{"propertyTypes": ["Multifamily"],"states": ["TX"],"cities": ["Austin"],"minPrice": 500000,"maxPrice": 5000000,"minCapRate": 6,"enrichDetails": true,"maxResults": 100}
Example input — specific listings
{"propertyUrls": ["https://www.crexi.com/properties/2608102/michigan-5084-lovers-lane","https://www.crexi.com/properties/2608071/ohio-14307-state-route-113"]}
Run via API
JavaScript (Apify client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('khadinakbar/crexi-commercial-real-estate-scraper').call({propertyTypes: ['Retail'],states: ['FL'],maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python (Apify client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("khadinakbar/crexi-commercial-real-estate-scraper").call(run_input={"propertyTypes": ["Industrial"],"states": ["CA"],"minCapRate": 5,"maxResults": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item.get("askingPrice"), item.get("capRate"))
Use as an MCP tool
Expose it to an AI agent via Apify's hosted MCP server:
https://mcp.apify.com?tools=khadinakbar/crexi-commercial-real-estate-scraper
The agent supplies filters or property URLs and receives structured listing JSON — ideal for "find me Austin multifamily deals under $3M with a 6%+ cap rate."
FAQ
Does it need Crexi login or cookies? No. It uses Crexi's public JSON API. No credentials.
Does it cover leases? This version covers for-sale listings (the core Crexi marketplace, ~243K live listings). Lease listings are not included yet.
Does it return broker emails/phones? No — Crexi gates broker contact details behind login. You get broker name, brokerage, license, state, and title, which are publicly visible.
How fresh is the data? Listings are read live from Crexi at run time.
Why are some fields empty? With enrichment off, detail-only fields (cap rate, NOI, zoning, etc.) are not fetched. Turn on Deep-enrich for the full record.
Can I get the whole market? Yes — leave filters empty and raise maxResults. Watch the cost cap shown in the run log before large runs.
Legal & compliance
This actor collects publicly available listing data from Crexi for legitimate business use such as market research, comps, and lead generation. You are responsible for using the data in compliance with Crexi's Terms of Service, applicable laws (including data-protection regulations), and any downstream contractual obligations. Do not use the data to spam, harass, or violate individuals' privacy. This actor is not affiliated with or endorsed by Crexi.