Crexi Scraper avatar

Crexi Scraper

Pricing

from $0.97 / 1,000 listings

Go to Apify Store
Crexi Scraper

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

Scraptivo

Maintained by Community

Actor 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 Houston or shopping 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?

TeamWorkflow
CRE investors and brokersSourcing sale and lease listings by city, type, and price.
Market researchersComparing asking strategies and listing activity across submarkets.
AnalystsBuilding structured property datasets for models and maps.
Outreach teamsCollecting broker names and contacts after a details run.

What data can you collect from Crexi?

Data groupExample fieldsHow it helps
Listing identityListing ID, propertyName, URL, statusDeduplicate and reopen the asset.
Price and typeaskingPrice, propertyType, propertySubType, document typeScreen sale vs lease inventory.
LocationFull address, city, state, ZIP, coordinatesMap assets and filter by market.
SpecsBuilding sqft, lot acres, year built, classCompare physical attributes.
DetailsMarketing description, investment highlights, gallery, broker contactsAppear 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

  1. Open the Crexi Scraper on Apify.
  2. Enter a search query such as Houston, or paste Crexi search or listing URLs.
  3. Choose Sales or Lease, property types, an optional price range, and a maxItems limit.
  4. Run the Actor and wait for listing records to appear in the dataset.
  5. 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

  1. Schedule a Monday run with searchQueries = ["Houston"], searchType = Sales, and propertyTypes = ["Retail"].
  2. Keep scrapeDetails off for a cheap card-level snapshot, then enable it on a shortlist.
  3. Send new records to Google Sheets through a webhook.
  4. Deduplicate user-side against the listing id or 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 id or URL as the stable key.

Input reference

FieldTypeRequiredDefaultWhat it controls
searchQueriesArray of stringsNoFree-text terms such as city or property name.
startUrlsArray of URLsNoCrexi search URLs or direct listing URLs.
searchTypeStringNoSalesSales or Lease. Ignored for direct listing URLs.
propertyTypesArray of stringsNoRetail, Multifamily, Office, Industrial, Hospitality, Mixed Use, Land, Self Storage, Mobile Home Park, Senior Living, Special Purpose, Note/Loan, Business for Sale.
statusesArray of stringsNoOn-Market, Auction, Highest & Best, Call For Offers (Sales).
locationsArray of stringsNoCity names for the Crexi address filter.
minPrice / maxPriceIntegerNoAsking price range in USD (Sales only).
scrapeDetailsBooleanNofalseFetch marketing copy, gallery, and broker contacts. Charges listing-details.
maxConcurrencyIntegerNo5Parallel detail fetches (1–20).
maxItemsIntegerNo0Maximum listings (0 = unlimited).
proxyConfigurationProxy objectNoApify proxy, RESIDENTIALResidential 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-item event for every listing written to the dataset.
  • $2.00 / 1,000 listing details — a listing-details event 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.

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.