Pricing
from $15.00 / 1,000 listing records
๐ข Crexi CRE Scraper
Scrape Crexi commercial real estate listings into 50+ fields per listing: asking price, cap rate, NOI, building size, lot size, year built, asset class, broker contacts, geo coordinates, photos. Numeric mirrors on every monetary field. Export, run via API, schedule, or integrate with other tools.
Pricing
from $15.00 / 1,000 listing records
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
28
Total users
13
Monthly active users
5 days 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 fetch pipeline tuned for Crexi with continuous maintenance against layout changes.
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 every public commercial real estate listing on Crexi that matches your filters. You give it a Crexi search URL, a city, an asset class, or a set of filters; it returns one well-typed record per listing with: asking price (numeric USD + raw string), cap rate (% as float), NOI, building size (sqft), lot size (acres), year built, asset class enum, listing status, days on market, broker contacts (when public), portfolio sub-properties (when it's a portfolio listing), geo coordinates (lat/lng), image URLs, and Investment Highlights when Crexi exposes them.
Every monetary or numeric field has a numeric mirror (askingPriceUsd, capRatePct, noiUsd, buildingSqft, lotSizeAcres) for analytics, alongside the raw Crexi-format string. Every listing carries agentMarkdown (300-500 chars) and 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, but the site doesn't expose a public API. This actor handles the listing-page fetch, the 50+ field extraction, the numeric normalization, and the 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 direct
propertyUrls,startUrls, orsearchKeywords - Set
maxItems(default 10) andmaxSearchPages(default 1) - Leave
enrichDetailsoff for lower-cost search-card runs, or enable it when detail-page broker/enrichment fields are worth the extra proxy/browser usage - 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 opens extra listing pages and should be enabled only when those richer fields are worth the additional browser/proxy usage.
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, $5M-$25M asking
{"startUrls":[{"url":"https://www.crexi.com/properties?types=Multifamily&priceMin=5000000&priceMax=25000000&states=TX"}],"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 watchlist on retail 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 | [] | Crexi or LoopNet search/listing URLs. |
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 | Open detail pages after search results for richer fields, at higher browser/proxy cost. |
includeRawData | bool | false | Include compact raw snippets for debugging. |
proxyConfiguration | object | residential Apify proxy | Proxy configuration. |
Crexi output format
crexi_listing
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity |
listingId, url, slug | string | Crexi IDs + URL |
title, address, city, state, zip, country | string | Address fields |
latitude, longitude | float | Geo |
assetClass, assetSubType, propertyType | string/enum | Asset taxonomy |
listingStatus | enum | Active, Pending, Sold, Withdrawn |
askingPriceUsd, askingPriceRaw | int / string | Numeric mirror + raw |
capRatePct, capRateRaw | float / string | Numeric mirror + raw |
noiUsd | int | Net Operating Income |
buildingSqft, lotSizeAcres, yearBuilt, numUnits, numBuildings | int / float | Property facts |
daysOnMarket, listedAt | int / ISO 8601 | Time-on-market |
brokerName, brokerCompany, brokerEmail, brokerPhone, contactDataStatus | string / enum | Broker contact tier (none, public_profile_only, public_contact_details, gated) |
subProperties | array | Per-property breakdown for portfolio listings |
imageUrls | string[] | Property photos |
investmentHighlights | string[] | Bullet-point highlights from listing |
description | string | Full listing description |
fieldCompletenessScore, agentMarkdown | int / string | Quality + LLM-ready summary |
Crexi scraper output example
{"outputSchemaVersion":"2026-05-08","recordType":"crexi_listing","recordId":"crexi:listing:abc-multifamily-tx","listingId":"abc-multifamily-tx","url":"https://www.crexi.com/properties/abc-multifamily-tx","title":"Class B Multifamily ยท 96 Units","address":"1234 Sample Ln","city":"Austin","state":"TX","assetClass":"Multifamily","askingPriceUsd":14250000,"askingPriceRaw":"$14,250,000","capRatePct":5.85,"capRateRaw":"5.85%","noiUsd":833625,"buildingSqft":92500,"yearBuilt":1985,"numUnits":96,"daysOnMarket":12,"brokerName":"Sample Broker","brokerCompany":"ABC Realty","contactDataStatus":"public_contact_details","fieldCompletenessScore":88,"agentMarkdown":"**๐ข Class B Multifamily ยท 96 Units** ($14.25M ยท 5.85% cap)\n- ๐ Austin, TX ยท 92,500 sqft ยท built 1985\n- ๐ฐ NOI $833K ยท 12 days on market\n- ๐ค Sample Broker @ ABC Realty\n- ๐ https://www.crexi.com/properties/abc-multifamily-tx"}
During the Actor run
The actor uses Playwright with the Apify residential proxy to fetch search results pages and listing detail pages. Each listing's detail page yields the 50+ field record. Inter-request delays + stealth fingerprinting keep block rate near zero.
The actor writes:
OUTPUTโ run summaryAGENT_BRIEFINGโ top 10 listings by completeness ร cap-rate ร recencyWATCHLIST_STATEโ (whenwatchlistMode: true) seen listing IDs
FAQ
How does Crexi Commercial Real Estate Scraper work?
The actor uses Playwright to load each Crexi search page and listing detail page (Crexi is a heavy SPA). Each detail page is parsed for the 50+ fields, validated against a Zod schema, and pushed.
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 monitor for new listings only?
Yes. Set watchlistMode: true. The actor stores seen listing IDs and emits only listings new since the last run.
Can I filter by cap rate?
Yes. capRateMin: 6, capRateMax: 9 returns only listings where Crexi published a cap rate in that range.
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 50+ fields per listing (vs ~10 from free scrapers), numeric mirrors on every monetary/numeric field, broker-contact-tier enum, watchlist diff mode, 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
- 50+ fields per listing โ every Crexi-visible data point normalized
- Numeric mirrors โ
askingPriceUsd,capRatePct,noiUsd,buildingSqft,lotSizeAcresready for analytics - Broker contact tier enum โ
contactDataStatustells you what to expect - Portfolio sub-property breakdown โ multi-property listings expand into structured sub-records
- Watchlist diff mode โ only emits NEW listings since the last run
- Versioned schema โ
outputSchemaVersion: '2026-05-08' - Idempotent record IDs โ
crexi:listing:<slug>stable across runs - Agent-grade output โ
agentMarkdownready to paste into an LLM context
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.
