Crexi Commercial Real Estate Scraper & Investment Analysis
Pricing
Pay per event
Crexi Commercial Real Estate Scraper & Investment Analysis
Scrape Crexi commercial real-estate listings and underwrite them: price/SF, price/unit, DSCR, debt yield, cash-on-cash and a transparent 0-100 Deal Score.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Zapticx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract commercial real-estate listings from Crexi and underwrite them — price per square foot, price per unit, DSCR, debt yield, cash-on-cash return, break-even occupancy and a transparent 0–100 Deal Score.
Most Crexi scrapers hand you rows. This one hands you a screened, ranked deal list with the arithmetic already done — and tells you, listing by listing, exactly which numbers came from Crexi and which were calculated.
What it does
- Searches Crexi by city, state, ZIP, property type, asking price and cap rate. Crexi's city matching also covers neighborhoods and nearby suburbs, so pair a city with its state for precise geographic targeting.
- Extracts deep listing data — location and coordinates, building size, lot size, units, year built, zoning, APN, occupancy, cap rate, NOI, auction terms, marketing copy, investment highlights, images and publicly listed broker details.
- Calculates investment metrics from the listing's financials plus your financing assumptions.
- Scores and ranks deals on a documented, deterministic 0–100 scale.
- Breaks past Crexi's result ceiling. Crexi caps any single query at 1,499 results. This Actor automatically splits a large search into smaller non-overlapping queries and merges them, de-duplicated by listing ID.
Who it's for
| Use case | How this helps |
|---|---|
| Deal sourcing | Screen thousands of listings down to the handful that clear your DSCR and cap-rate thresholds |
| Investment screening | Rank by Deal Score instead of reading listings one at a time |
| Underwriting prep | Arrive at the model with price/unit, price/SF, NOI and debt service already computed |
| Market research | Pull an entire metro or asset class and analyse pricing distribution |
| Broker lead generation | Build a brokerage contact list from publicly listed broker profiles |
| Property comparisons | Normalised, typed fields make listings directly comparable in Excel |
| AI & automation pipelines | Predictable JSON for agents, n8n, Make and Zapier |
Three modes
1. Property Search
Find listings by location and filters.
{"mode": "search","cities": ["Dallas"],"states": ["TX"],"propertyTypes": ["Multifamily"],"maxPrice": 5000000,"maxResults": 100}
2. Analyze Listing URLs
Deep-extract specific listings you already have.
{"mode": "urls","listingUrls": ["https://www.crexi.com/properties/2522223/georgia-glenrose-apartments"],"downPaymentPercent": 30,"interestRatePercent": 6.75,"amortizationYears": 30}
3. Deal Finder
Screen and rank by investment quality. Requires financing assumptions.
{"mode": "dealFinder","states": ["TX"],"propertyTypes": ["Multifamily"],"maxPrice": 4000000,"minCapRate": 6,"minDscr": 1.25,"downPaymentPercent": 25,"interestRatePercent": 6.5,"amortizationYears": 30,"closingCostsPercent": 2,"maxResults": 100}
Output structure
Every record separates what Crexi published from what this Actor computed. A calculated value is never written into source.
{"rank": 1,"scrapedAt": "2026-08-30T18:12:04Z","source": { // Published by Crexi"listingId": 2617499,"listingUrl": "https://www.crexi.com/properties/2617499/texas-7-property-sfr-portfolio","propertyName": "7-Property SFR Portfolio","listingType": "Sale","askingPrice": 1229000.0,"capRate": 8.84, // Crexi's own figure"noi": 108686.0, // Crexi's own figure"units": 7,"buildingSizeSqFt": 8449,"occupancyPercent": 85.7,"city": "Mesquite", "state": "TX", "zip": "75150","latitude": 32.79, "longitude": -96.59,"brokers": [ { "name": "...", "brokerageName": "...", "profileUrl": "..." } ],"images": ["https://..."],"daysOnMarket": 53},"analysis": { // Calculated by this Actor"pricePerSqFt": 145.46,"pricePerUnit": 175571.43,"noiPerUnit": 15526.57,"loanAmount": 921750.0,"monthlyMortgagePayment": 6514.74,"annualDebtService": 78176.88,"dscr": 1.3903,"debtYield": 11.7913,"cashFlowBeforeTax": 30509.12,"cashOnCashReturn": 9.1942,"breakEvenOccupancyPercent": 61.64,"dealScore": 75.33,"dealScoreBand": "Strong","dealScoreConfidence": 1.0,"dealScoreBreakdown": [ /* every component, weight, value and sub-score */ ]},"dataQuality": { // What could not be calculated, and why"unavailableMetrics": {},"derivedFromOtherFields": [],"hasCapRateFromSource": true,"hasNoiFromSource": true,"financingAssumptionsApplied": true}}
Three dataset views are provided in the Output tab: Listings overview, Investment analysis and Broker leads.
Investment analysis
Metrics are computed from the listing's own financials plus the financing assumptions you supply.
| Metric | Formula |
|---|---|
| Price per SF / per unit | Asking price ÷ building SF or unit count |
| NOI | Crexi's published NOI, or derived as price × cap rate (flagged as derived) |
| Loan amount | Asking price − down payment |
| Monthly payment | Standard amortising payment on the loan |
| Annual debt service | Monthly payment × 12 |
| DSCR | NOI ÷ annual debt service |
| Debt yield | NOI ÷ loan amount |
| Cash flow before tax | NOI − annual debt service |
| Cash-on-cash | Cash flow ÷ (down payment + closing costs) |
| Break-even occupancy | Debt service ÷ NOI grossed up to 100% occupancy |
The rules this Actor follows
- Nothing is invented. If a metric needs data that isn't there, it returns
nullplus a reason indataQuality.unavailableMetrics— for example"dscr": "noi_and_cap_rate_unavailable". - No silent assumptions. Financing terms come only from your input. Omit them and every leverage metric returns
nullwith"financing_assumptions_not_provided"— the Actor will not quietly pick a rate for you. - Derived values are labelled. If NOI was reconstructed from price × cap rate rather than published by Crexi, it appears in
dataQuality.derivedFromOtherFields. - Placeholders are treated as missing. Some auction listings carry a $1 placeholder price; these never become ratios.
Deal Score
A deterministic 0–100 score. The same listing with the same assumptions always scores the same — it never depends on the other listings in your run.
| Component | Weight | 0 points at | 100 points at |
|---|---|---|---|
| Cap rate | 30% | 4.0% | 9.0% |
| DSCR | 25% | 1.00 | 2.00 |
| Debt yield | 20% | 7.0% | 15.0% |
| Cash-on-cash return | 15% | 0% | 15% |
| Occupancy | 10% | 70% | 97% |
Each component is scored on a linear ramp between those anchors, clamped at both ends, then weighted.
Why the cap-rate ramp stops at 9%. In US commercial real estate, yield materially above ~9% usually signals higher risk — a weaker submarket, weaker tenant credit, or deferred condition — rather than a better asset. Letting it keep earning points would rank the riskiest listings highest. DSCR and cash-on-cash carry no such ambiguity, so their ramps extend further.
Only available components are scored, and the total is renormalised over them, so a listing isn't punished for non-disclosure. dealScoreConfidence reports how much of the total weight had real inputs (1.0 = everything).
If components covering less than 50% of the weight are available, the score is null with a reason — never a fabricated number. In practice a Deal Score requires (a) Crexi publishing a cap rate or NOI, and (b) you supplying financing assumptions.
dealScoreBreakdown returns every component, its weight, the input value and its sub-score, so any ranking can be audited. Bands: Excellent ≥80, Strong ≥65, Moderate ≥50, Weak ≥35, Poor <35.
Important: how often financial data actually exists
Crexi listings vary enormously in disclosure. Measured across a random sample of 150 listings:
| Field | Available |
|---|---|
| Asking price, property type | ~100% |
| Lot size | ~90% |
| Year built | ~64% |
| Building size | ~62% |
| Units | ~33% |
| Occupancy | ~7% |
| Cap rate | ~6% |
| NOI | ~5% |
Gross income and operating expenses are not published by Crexi at all.
This is why the minCapRate filter matters. Setting it restricts results to listings that do disclose a cap rate — in testing, 100% of results returned under a cap-rate filter carried one. If you want investment analysis on most of your results, set minCapRate. Without it, expect many listings to return null metrics with a stated reason.
Performance
- Runs on Crexi's JSON API over plain HTTP. No browser, so no browser overhead.
- Bulk fetching: up to 1,499 listings per request, so 1,000 search results arrive in a single search request. Listing details are then fetched per listing.
- A 20-listing analysed run completes in roughly 5 seconds.
- Bounded retries with exponential backoff; repeated failures are reported, never hidden.
- Concurrency is configurable (default 8) and results are de-duplicated by listing ID.
Integrations
Export as JSON, CSV, Excel, XML or HTML, or pull from the Apify API. Works with Make, Zapier, n8n, Google Sheets, and any AI agent that can read JSON. Predictable types mean no string-parsing downstream: 2450000.0, not "$2,450,000".
Limitations
Stated plainly, because underwriting decisions depend on them:
- Sale and auction listings only. Crexi's lease inventory is served by a separate system this Actor does not cover. Lease listings also carry no cap rate or NOI, so investment analysis would not apply to them.
- Broker phone numbers and email addresses are not included. Crexi does not publish them anonymously, and this Actor does not attempt to access anything behind authentication.
- Cap rate and NOI are sparse unless you filter for them — see the table above.
- Cap rates are as advertised by the listing broker. They are marketing figures, not audited financials, and occasionally contain obvious errors. Treat the Deal Score as a screening aid, not investment advice.
- Crexi caps any single query at 1,499 results. The Actor partitions automatically, but a search too broad to subdivide will log a warning and return what it could reach — narrow by state, city or price range to reach the rest.
- Offering memoranda and document downloads are gated behind Crexi accounts and confidentiality agreements, and are not retrieved.
- Undocumented upstream API: field availability can change if Crexi changes its platform.
Responsible use & data source
Data comes from Crexi's public listing endpoints — the same information any visitor sees on a listing page. The Actor does not log in, does not use credentials, does not bypass access controls, and does not retrieve anything gated behind authentication or a confidentiality agreement. Broker information is limited to what brokers publish on their own public profiles.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Crexi. Output is for research and screening. It is not investment advice — verify every figure against the offering memorandum and your own due diligence before transacting.
FAQ
Why is dealScore null on some listings?
Crexi didn't publish a cap rate or NOI for it, or you didn't supply financing assumptions. The exact reason is in analysis.dealScoreUnavailableReason. Set minCapRate to restrict results to listings that disclose one.
Why are DSCR and cash-on-cash null?
They need financing terms. Supply downPaymentPercent, interestRatePercent and amortizationYears.
Can I get more than 1,499 results?
Yes. Set maxResults higher and the Actor splits the search automatically. Very broad searches may still be limited — add a state, city or price range.
Why does a listing show a cap rate in source but a different one in analysis?
It shouldn't — analysis.capRate mirrors the source value when Crexi publishes one. It only differs when Crexi published NOI but no cap rate, in which case it's derived and flagged in derivedFromOtherFields.
Does it get lease listings? No — see Limitations.
Why does a city search return nearby or unexpected places? Crexi matches city names against neighborhoods and nearby suburbs as well as the city itself — searching "Austin" can return listings in Chicago's Austin neighborhood, and "Dallas" can return neighbouring Farmers Branch. Always pair a city with its state for precise targeting; add ZIP codes to narrow further.
Do I need a proxy? Usually not. If you see access-restricted errors, enable Apify Proxy with residential groups in the Actor's proxy settings.
Are cap rates reliable? They're broker-advertised marketing figures. The Deal Score deliberately stops rewarding cap rates above 9% so that implausible or high-risk yields don't top your ranking.