Crexi Commercial Real Estate Scraper
Pricing
from $15.00 / 1,000 listing records
Crexi Commercial Real Estate Scraper
Scrape Crexi commercial real estate listings by keyword or property URL. Get addresses, prices, brokers, property facts, URLs, and clean agent-ready records for CRE lead generation, market maps, comps, and investment research.
Pricing
from $15.00 / 1,000 listing records
Rating
0.0
(0)
Developer
Skootle
Maintained by CommunityActor stats
0
Bookmarked
34
Total users
19
Monthly active users
5 hours ago
Last modified
Categories
Share
TL;DR
Scrape Crexi commercial real estate listings into a normalized JSON schema with 50+ fields per listing: asking price, cap rate, NOI, building size, lot size, year built, asset class + sub-type, listing status, days on market, broker contacts, portfolio sub-properties, geo coordinates, image URLs, and Investment Highlights. Numeric mirrors on every monetary/numeric field for analytics. Built on a managed low-cost HTTP pipeline tuned for Crexi, with a browser fallback reserved for non-Crexi legacy paths.
Try it on a small dataset, then let us know what you think in a review.
What does Crexi Commercial Real Estate Scraper do?
Crexi Commercial Real Estate Scraper extracts public commercial real estate listings from Crexi's keyword search and direct property records. You give it searchKeywords, a direct Crexi property ID or URL, or a Crexi search URL that includes term= or q=. It returns one well-typed record per listing with available fields such as asking price, cap rate, NOI, building size, lot size, year built, asset class, listing status, broker contacts when public, geo coordinates, image URLs, and investment highlights when Crexi exposes them.
Every monetary or numeric field has a numeric mirror such as askingPriceUsd, capRatePct, noiUsd, squareFootageNum, or lotSizeAcres when the source exposes that value. Every listing carries fieldCompletenessScore (0-100) so AI agents can self-filter and consume directly.
Why scrape Crexi?
Crexi is the largest broker-driven CRE marketplace in the United States, with the deepest coverage of multifamily, retail, industrial, office, and land listings outside of CoStar's paywall. For CRE deal sourcing, broker relationship building, market analytics, comp benchmarking, and AI-powered underwriting pipelines, Crexi is the highest-ROI public CRE data source.
Crexi's listings are publicly accessible on the web. This actor uses Crexi's public JSON data path for search and detail records, then handles the 50+ field extraction, numeric normalization, and broker contact-tier enum so you get clean structured records instead of HTML strings.
Who needs this?
- CRE acquisitions teams sourcing deals by metro, asset class, cap rate threshold, and asking-price range
- Broker-relationship CRMs seeding their database with active brokers + recent listing counts
- Market analysts building cap-rate distribution, days-on-market median, $/sqft benchmarks per submarket
- Property tech (proptech) startups training AI underwriting models on labeled CRE data
- REIT investor relations monitoring competitor portfolios for listing activity
- Family office and HNW capital allocators screening deals at scale before underwriting deeper
- AI agents consuming a daily filtered Crexi feed and surfacing top deals against an investment thesis
How to use Crexi Commercial Real Estate Scraper
- Open the Input tab on the actor page
- Enter
searchKeywords, directpropertyUrls, or CrexistartUrlsthat includeterm=orq= - Set
maxItems(default 10) andmaxSearchPages(default 1) - Leave
enrichDetailsoff for lowest-cost search-card runs, or enable it when detail fields are worth the extra API requests - Click Start or call via the Apify REST API or CLI
How much will scraping Crexi cost?
This actor is priced per event:
- Actor Start: $0.75 once per run
- Crexi listing record: tiered, charged per record written
- Apify platform usage: paid by the user separately when pass-through pricing is active
| Apify plan | $/1000 records |
|---|---|
| FREE | $30.00 |
| BRONZE | $25.00 |
| SILVER | $20.00 |
| GOLD | $15.00 |
| PLATINUM | $15.00 |
| DIAMOND | $15.00 |
Default runs are intentionally bounded for cost control. Search-card mode is the lowest-cost path. Detail enrichment makes one additional API request per listing and should be enabled only when those richer fields are worth the extra requests.
Is it legal to scrape Crexi?
Yes, Crexi's listings are publicly accessible to anyone in a browser without logging in. This actor reads the same public pages with proper rate-limiting and a respectful User-Agent. It does not log into broker accounts, does not access broker-private data, and does not bypass any technical access control.
For commercial redistribution of raw datasets, consult Crexi's terms and your legal counsel. For internal CRE pipelines, comp analysis, broker outreach, and AI underwriting, the scraped data is treated like any other public web content.
Examples
Example 1: Multifamily in Texas
{"searchKeywords": ["multifamily texas"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Example 2: Industrial 7%+ cap rate national
{"searchKeywords": ["industrial 7 cap rate"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Example 3: Daily retail search in Florida
{"searchKeywords": ["retail florida"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Example 4: Office portfolios over $50M
{"searchKeywords": ["office portfolio over 50m"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Example 5: Land deals in growth metros
{"searchKeywords": ["land Austin", "land Phoenix", "land Nashville", "land Charlotte"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Example 6: Broker-prospecting (active brokers in your geography)
{"searchKeywords": ["commercial real estate California"],"maxItems": 25,"maxSearchPages": 1,"enrichDetails": true}
Aggregate by brokerName and filter for ≥10 active listings to find power brokers.
Example 7: Cap-rate benchmark scrape
{"searchKeywords": ["multifamily Texas", "multifamily Florida", "multifamily Georgia", "multifamily North Carolina", "multifamily Tennessee"],"maxItems": 25,"maxSearchPages": 1,"enrichDetails": false}
Median + P25 + P75 of capRatePct per metro × asset class.
Example 8: AI underwriting pipeline feed
{"searchKeywords": ["multifamily 10m 50m"],"maxItems": 10,"maxSearchPages": 1,"enrichDetails": false}
Pipe to your underwriting model; auto-score deals against your investment thesis.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchKeywords | string[] | ["multifamily texas"] | Free-text Crexi searches. |
startUrls | request list | [] | Direct listing URLs, LoopNet URLs, or Crexi search URLs that include term= or q=. Filter-only Crexi URLs are rejected so runs do not silently return irrelevant results. |
propertyUrls | string[] | [] | Direct listing URLs or Crexi numeric property IDs. |
maxItems | int | 10 | Hard saved-record cap. |
maxSearchPages | int | 1 | Search pagination cap. |
enrichDetails | bool | false | Fetch Crexi detail API records after search results for richer fields, at higher request count. |
includeRawData | bool | false | Include compact raw snippets for debugging. |
proxyConfiguration | object | proxy disabled | Optional proxy configuration for non-Crexi browser fallback paths. Crexi keyword and detail runs use the HTTP data path. |
Crexi output format
crexi listing row
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, sourcePlatform, sourceId | string | Source identity |
listingUrl | string | Crexi listing URL |
title, address, city, state, zip | string | Address fields |
latitude, longitude | float | Geo |
assetClass, propertySubType | string | Asset taxonomy |
listingStatus | enum | active, under_contract, sold, withdrawn, unknown |
askingPrice, askingPriceUsd | string / int | Raw price plus numeric mirror |
capRate, capRatePct | string / float | Raw cap rate plus numeric mirror when present |
netOperatingIncome, noiUsd | string / int | Net operating income when present |
squareFootage, squareFootageNum, lotSize, lotSizeAcres, yearBuilt, units | string / number | Property facts when present |
daysOnMarket, listedDate | string | Time-on-market fields when present |
brokerName, brokerCompany, brokerEmail, brokerPhone, contactDataStatus | string / enum | Broker contact tier (none, public_profile_only, public_contact_details, gated) |
portfolioProperties | array | Per-property breakdown for portfolio listings |
imageUrls | string[] | Property photos |
investmentHighlights | string[] | Bullet-point highlights from listing |
description | string | Full listing description |
fieldCompletenessScore | int | Completeness score for filtering |
Crexi scraper output example
{"outputSchemaVersion": "2026-05-07","sourcePlatform": "crexi","sourceId": "2349838","listingUrl": "https://www.crexi.com/properties/2349838/florida-98-central","title": "98 Central","address": "4688 US-98, Santa Rosa Beach, Walton County, FL 32459","city": "Santa Rosa Beach","state": "FL","zip": "32459","assetClass": "Retail","transactionType": "sale","askingPrice": "$6,950,000","askingPriceUsd": 6950000,"squareFootage": "12000","squareFootageNum": 12000,"listingStatus": "active","brokerCompany": "Marcus & Millichap - Orlando","contactDataStatus": "public_profile_only","fieldCompletenessScore": 35,"imageUrls": ["https://images.crexi.com/assets/2349838/example_716x444.jpg"],"scrapedAt": "2026-07-03T13:23:17.273Z"}
During the Actor run
For Crexi, the actor uses a low-cost HTTP data path for keyword search and direct property detail enrichment. It does not need residential proxy for normal Crexi runs. Browser crawling is retained only for non-Crexi legacy fallback paths.
The actor writes:
- Dataset items — one normalized listing row per saved record
OUTPUT— run summary with item count and diagnostics
FAQ
How does Crexi Commercial Real Estate Scraper work?
The actor calls Crexi's public JSON data path for keyword search and direct detail records, normalizes each listing, validates it against a Zod schema, and pushes it to the Apify dataset.
Can I get broker contact info?
When Crexi exposes it publicly on the listing page, yes — brokerName, brokerCompany, brokerEmail, brokerPhone. The contactDataStatus enum tells you what's available before you try to use it (public_contact_details means you got the email/phone; public_profile_only means just the name).
Can I filter by cap rate?
Use keyword phrases such as multifamily 7 cap Texas, then filter the exported dataset by capRatePct when Crexi exposes that value. Dedicated capRateMin and capRateMax inputs are not part of this actor today.
Can I get historical (sold) data?
listingStatus includes Sold listings when they're still on the search results. For deeper sold history, sales-comparable scraping is on the roadmap as a v0.2 feature.
Can I use this with the Apify API?
Yes. POST to https://api.apify.com/v2/acts/skootle~crexi-commercial-real-estate-scraper/runs.
Can I integrate with Make / Zapier / n8n / Slack?
Yes. Click Integrations on the actor page.
Why does this actor cost more than free CRE scrapers?
This actor ships a broad normalized CRE row, numeric mirrors for available monetary/numeric fields, broker-contact-tier enum, direct-ID enrichment, and continuous maintenance. If you're feeding the data into an underwriting pipeline or AI agent, the per-record cost pays back in saved engineering and missed-deal time.
Your feedback
Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).
Why choose Crexi Commercial Real Estate Scraper
- Broad normalized CRE rows — Crexi-visible data points normalized when exposed
- Numeric mirrors —
askingPriceUsd,capRatePct,noiUsd,squareFootageNum,lotSizeAcresready for analytics when present - Broker contact tier enum —
contactDataStatustells you what to expect - Portfolio sub-property breakdown — multi-property listings expand into structured sub-records
- Versioned schema —
outputSchemaVersion: '2026-05-07' - Idempotent source IDs — Crexi listing IDs remain stable across runs
Other Skootle actors you might want to check
- SAM.gov + USAspending Federal Contracts — federal contracting + award history
- Wellfound Jobs Scraper — startup hiring intelligence
- Reddit Subreddit Scraper — sentiment + brand monitoring
- GitHub Trending Repos — daily trending dev repos
- SEC EDGAR Filings Monitor — public-company filings stream
Support and contact
File issues on this actor's page — replies within 48 hours.