🏢 Crexi CRE Scraper avatar

🏢 Crexi CRE Scraper

Pricing

from $7.00 / 1,000 listing records

Go to Apify Store
🏢 Crexi CRE Scraper

🏢 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 $7.00 / 1,000 listing records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

28 minutes ago

Last modified

Share

Crexi Commercial Real Estate hero

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.


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

  1. Open the Input tab on the actor page
  2. Enter a Crexi search URL OR set individual filters (asset class, city, state, cap rate range, price range)
  3. Set maxItems (default 50) and maxPages
  4. Optionally enable watchlistMode for daily diffs
  5. 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.01 once per run
  • Crexi listing record: tiered, charged per record written
Apify plan$/1000 records
FREE$40.00
BRONZE$34.00
SILVER$28.00
GOLD$24.00
PLATINUM$24.00
DIAMOND$21.60

A daily watchlist for multifamily 50+ unit deals in your target metros returns ~30-100 records day 1, then 5-20 per day. Roughly $0.65-$2.40 per day on GOLD.

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

{
"searchUrl": "https://www.crexi.com/properties?types=Multifamily&priceMin=5000000&priceMax=25000000&states=TX",
"maxItems": 100
}

Example 2: Industrial 7%+ cap rate national

{
"assetClass": "Industrial",
"capRateMin": 7,
"maxItems": 200
}

Example 3: Daily watchlist on retail in Florida

{
"assetClass": "Retail",
"states": ["FL"],
"watchlistMode": true,
"maxItems": 100
}

Example 4: Office portfolios over $50M

{
"assetClass": "Office",
"priceMin": 50000000,
"isPortfolio": true,
"maxItems": 50
}

Example 5: Land deals in growth metros

{
"assetClass": "Land",
"metros": ["Austin", "Phoenix", "Nashville", "Charlotte"],
"maxItems": 200
}

Example 6: Broker-prospecting (active brokers in your geography)

{
"states": ["CA"],
"maxItems": 500
}

Aggregate by brokerName and filter for ≥10 active listings to find power brokers.

Example 7: Cap-rate benchmark scrape

{
"assetClass": "Multifamily",
"states": ["TX", "FL", "GA", "NC", "TN"],
"maxItems": 1000
}

Median + P25 + P75 of capRatePct per metro × asset class.

Example 8: AI underwriting pipeline feed

{
"assetClass": "Multifamily",
"priceMin": 10000000,
"priceMax": 50000000,
"watchlistMode": true,
"maxItems": 100
}

Pipe to your underwriting model; auto-score deals against your investment thesis.

Input parameters

FieldTypeDefaultDescription
searchUrlstring""Direct Crexi search URL. Overrides individual filters.
assetClassenumnullMultifamily, Retail, Industrial, Office, Land, Hospitality, Mixed-Use
statesstring[][]2-letter state codes
metrosstring[][]Metro / city names
priceMin, priceMaxintnullUSD asking-price range
capRateMin, capRateMaxfloatnullCap rate % range
isPortfolioboolnullFilter to portfolio listings
maxItemsint50Hard cap
maxPagesint5Pagination cap
watchlistModeboolfalseIdempotent diff against KV-stored seen listing IDs
useApifyProxybooltrueApify residential proxy. Recommended.

Crexi output format

crexi_listing

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity
listingId, url, slugstringCrexi IDs + URL
title, address, city, state, zip, countrystringAddress fields
latitude, longitudefloatGeo
assetClass, assetSubType, propertyTypestring/enumAsset taxonomy
listingStatusenumActive, Pending, Sold, Withdrawn
askingPriceUsd, askingPriceRawint / stringNumeric mirror + raw
capRatePct, capRateRawfloat / stringNumeric mirror + raw
noiUsdintNet Operating Income
buildingSqft, lotSizeAcres, yearBuilt, numUnits, numBuildingsint / floatProperty facts
daysOnMarket, listedAtint / ISO 8601Time-on-market
brokerName, brokerCompany, brokerEmail, brokerPhone, contactDataStatusstring / enumBroker contact tier (none, public_profile_only, public_contact_details, gated)
subPropertiesarrayPer-property breakdown for portfolio listings
imageUrlsstring[]Property photos
investmentHighlightsstring[]Bullet-point highlights from listing
descriptionstringFull listing description
fieldCompletenessScore, agentMarkdownint / stringQuality + 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:

  1. OUTPUT — run summary
  2. AGENT_BRIEFING — top 10 listings by completeness × cap-rate × recency
  3. WATCHLIST_STATE — (when watchlistMode: 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

Open an issue on the actor page — replies within 48 hours.

Why choose Crexi Commercial Real Estate Scraper

  • 50+ fields per listing — every Crexi-visible data point normalized
  • Numeric mirrorsaskingPriceUsd, capRatePct, noiUsd, buildingSqft, lotSizeAcres ready for analytics
  • Broker contact tier enumcontactDataStatus tells 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 schemaoutputSchemaVersion: '2026-05-08'
  • Idempotent record IDscrexi:listing:<slug> stable across runs
  • Agent-grade outputagentMarkdown ready to paste into an LLM context

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page — replies within 48 hours.