Crexi Scraper
Pricing
from $0.97 / 1,000 listings
Crexi Scraper
Collects Crexi.com commercial real estate listings for sale and lease from search queries or URLs. Returns price, property type, location, and optional listing details.
Pricing
from $0.97 / 1,000 listings
Rating
0.0
(0)
Developer
Scraptivo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Crexi Scraper collects commercial real estate listings from Crexi and turns them into structured data for deal sourcing, market research, and broker outreach. Provide a city or keyword, a Crexi search or listing URL, run the Actor, and export price, property type, address, and listing IDs to JSON, CSV, Excel, or your preferred integration. Use it to monitor for-sale and for-lease inventory and automate recurring collection. Pricing starts at $1.00 per 1,000 listings, with optional listing details at $2.00 per 1,000.
What can you automate with Crexi Scraper?
- Build a CRE database — Collect for-sale and for-lease listings with property specs, location, and images.
- Filter by type and price — Restrict results to Retail, Multifamily, Office, Industrial, Land, and other Crexi types.
- Search by city or keyword — Use queries such as
Houstonorshopping center, or paste a Crexi URL. - Enrich selected assets — Turn on listing details for marketing description, investment highlights, gallery, and broker contacts.
- Watch status changes — Track On-Market, Auction, Highest & Best, and Call For Offers listings on a schedule.
- Feed a deal pipeline — Export JSON, CSV, or Excel, or push results through a webhook.
Who is this scraper for?
| Team | Workflow |
|---|---|
| CRE investors and brokers | Sourcing sale and lease listings by city, type, and price. |
| Market researchers | Comparing asking strategies and listing activity across submarkets. |
| Analysts | Building structured property datasets for models and maps. |
| Outreach teams | Collecting broker names and contacts after a details run. |
What data can you collect from Crexi?
| Data group | Example fields | How it helps |
|---|---|---|
| Listing identity | Listing ID, propertyName, URL, status | Deduplicate and reopen the asset. |
| Price and type | askingPrice, propertyType, propertySubType, document type | Screen sale vs lease inventory. |
| Location | Full address, city, state, ZIP, coordinates | Map assets and filter by market. |
| Specs | Building sqft, lot acres, year built, class | Compare physical attributes. |
| Details | Marketing description, investment highlights, gallery, broker contacts | Appear when Scrape Listing Details is enabled. |
Card-level name, price, type, city, and URL are returned on every listing. Marketing copy, full gallery, and broker phones appear only when details are enabled.
How to use Crexi Scraper
- Open the Crexi Scraper on Apify.
- Enter a search query such as
Houston, or paste Crexi search or listing URLs. - Choose Sales or Lease, property types, an optional price range, and a
maxItemslimit. - Run the Actor and wait for listing records to appear in the dataset.
- Export JSON, CSV, or Excel, or connect the dataset to your workflow.
{"searchQueries": ["Houston"],"searchType": "Sales","propertyTypes": ["Retail"],"maxItems": 20,"scrapeDetails": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Example workflow
Watch Houston retail for sale every week
- Schedule a Monday run with
searchQueries=["Houston"],searchType=Sales, andpropertyTypes=["Retail"]. - Keep
scrapeDetailsoff for a cheap card-level snapshot, then enable it on a shortlist. - Send new records to Google Sheets through a webhook.
- Deduplicate user-side against the listing
idor URL.
Automate and integrate your results
- Schedules — CRE inventory changes slowly. Run weekly for most markets, or daily for auction and call-for-offers watches.
- Webhooks — Push completed datasets into Sheets, Slack, or a CRM.
- Exports and API — Download from the Apify Console or start a run from the API:
curl "https://api.apify.com/v2/acts/scraptivo~crexi-scraper/runs?token=YOUR-APIFY-TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["Houston"],"searchType": "Sales","propertyTypes": ["Retail"],"maxItems": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
- Deduplication — The Actor appends results on every run. Use the listing
idor URL as the stable key.
Input reference
| Field | Type | Required | Default | What it controls |
|---|---|---|---|---|
searchQueries | Array of strings | No | — | Free-text terms such as city or property name. |
startUrls | Array of URLs | No | — | Crexi search URLs or direct listing URLs. |
searchType | String | No | Sales | Sales or Lease. Ignored for direct listing URLs. |
propertyTypes | Array of strings | No | — | Retail, Multifamily, Office, Industrial, Hospitality, Mixed Use, Land, Self Storage, Mobile Home Park, Senior Living, Special Purpose, Note/Loan, Business for Sale. |
statuses | Array of strings | No | — | On-Market, Auction, Highest & Best, Call For Offers (Sales). |
locations | Array of strings | No | — | City names for the Crexi address filter. |
minPrice / maxPrice | Integer | No | — | Asking price range in USD (Sales only). |
scrapeDetails | Boolean | No | false | Fetch marketing copy, gallery, and broker contacts. Charges listing-details. |
maxConcurrency | Integer | No | 5 | Parallel detail fetches (1–20). |
maxItems | Integer | No | 0 | Maximum listings (0 = unlimited). |
proxyConfiguration | Proxy object | No | Apify proxy, RESIDENTIAL | Residential proxies are recommended. |
Do Start URLs keep their filters?
Yes. A Crexi search URL keeps the filters already in the link. searchType and constructed filters apply when you use searchQueries or the filter fields.
Output example
Each dataset item is one listing:
{"id": "sales-2623356","url": "https://www.crexi.com/properties/2623356/HOUSTON-TX-77064","propertyName": "17000 STATE HIGHWAY 249 HOUSTON TX 77064","status": "Active","propertyType": "Office, Retail","propertySubType": "Medical Office, Storefront","buildingSqft": 17000,"yearBuilt": 2026,"fullAddress": "17000 STATE HWY 249, HOUSTON, TX 77064","city": "HOUSTON","state": "TX","detailsFetched": false}
How much does it cost to scrape Crexi?
The Actor uses pay-per-event pricing plus a small Actor-start event ($0.00005 per start, scaled by memory):
- $1.00 / 1,000 listings — a
dataset-itemevent for every listing written to the dataset. - $2.00 / 1,000 listing details — a
listing-detailsevent only when Scrape Listing Details is enabled.
A listing-only run of 1,000 properties costs $1.00. Enriching the same 1,000 listings with details costs $3.00. Volume discounts on Apify paid plans reduce the per-1,000 rate (for example $0.97 per 1,000 listings and $1.70 per 1,000 details at the Gold plan). Compute units consumed are deducted from your Apify plan.
Reliability and responsible use
- Proxy requirement — Residential proxies are recommended. The default input uses the Apify RESIDENTIAL group.
- Conditional fields — Marketing description, investment highlights, full gallery, and broker contacts appear only when details are enabled.
- Public listings — The Actor collects publicly visible Crexi listing data.
- Responsible use — Only use the data in ways that comply with Crexi terms and applicable law.
Frequently asked questions
Can I scrape Crexi listings by city and property type?
Yes. Set searchQueries or locations to a city and choose propertyTypes such as Retail or Industrial. Use searchType = Sales or Lease.
Can I schedule Crexi Scraper to run automatically?
Yes. Use the Scheduler tab in Apify Console. Weekly works for most markets.
What counts as one result?
Each listing saved to the dataset is one dataset-item event ($1.00 per 1,000). If details are enabled, each successful detail fetch also counts as a listing-details event ($2.00 per 1,000).
Why are some fields empty?
Broker contacts, marketing copy, and full galleries are collected only when Scrape Listing Details is enabled. Crexi also leaves some card fields empty.
How do I avoid duplicate records?
The Actor does not deduplicate across runs. Use the listing id or URL. maxItems caps a single run.
Do I need a proxy?
Residential proxies are recommended and are the default.
Related Scraptivo automations
- Realtor Scraper — residential listings from Realtor.com.
- Realtor.com Agent Scraper — agent records from Realtor.com.
- BizBuySell Scraper — businesses for sale.
Support and custom workflows
Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.