Crexi Scraper — Commercial Properties for Sale & Lease avatar

Crexi Scraper — Commercial Properties for Sale & Lease

Pricing

from $1.90 / 1,000 properties

Go to Apify Store
Crexi Scraper — Commercial Properties for Sale & Lease

Crexi Scraper — Commercial Properties for Sale & Lease

Extract US commercial real estate from Crexi search results. Each row is one property for sale or lease with asking price or lease rate, size, brokerage, and address.

Pricing

from $1.90 / 1,000 properties

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

20 days ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Commercial Real Estate Exchange, Inc. or its affiliates. Data is read from publicly accessible property search results only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Crexi scraper for US commercial real estate for sale and for lease. Each row is one property: asking price or lease rate, size, brokerage, address, and whether a sale card lists an offering memorandum. Export the dataset as JSON. Use it as a Crexi API alternative from Python, Node.js, cURL, or Apify MCP.

Best for: sale and lease comps in one city, brokerage names from public search cards, and a scheduled check that saves only new property ids.

ActorRole
Crexi Scraper ◄── you are hereUS commercial sale and lease
LoopNet ScraperUS commercial sale, lease, and auctions

When to use this Actor

  • City, state, county, or ZIP — Austin, TX, TX, or 78701.
  • A filtered search you already built — Paste a search URL that includes a city, state, county, or ZIP.
  • One property — Paste a single property URL.
  • New-listing monitor — Schedule the same search. Later runs save property ids that were not stored last time. A quiet tick writes zero rows.
  • Broker names — Turn on broker names when you want the public name and brokerage. The default row does not call that extra record.

When not to use this Actor

  • Email, phone, or a downloaded offering memorandum — Those are not on the public search record. This Actor does not log in. A sale row can say that a memorandum or flyer exists. It does not download the file.
  • The other US commercial marketplace — For LoopNet sale, lease, and auction cards, use LoopNet Scraper.
  • A national dump in one run — Cap maxItems. Split by city or state instead of paging the whole country.

Key features

  • One property per row — Sale and lease search cards. Default 256 MB. No proxy.
  • Price or lease rate — Asking price on sales. Rate, suite count, and rentable size on leases.
  • Address and brokerage — Street, city, state, ZIP, coordinates, and the brokerage on the card.
  • Offering memorandum flag — hasOfferingMemorandum is true or false on sale cards. The PDF stays on the site.
  • Monitor — Named key-value store of property ids already saved for that search. New runs sort by activation date.

Input

FieldRequiredDefaultWhat it does
LocationNoAustin, TXCity and state, state code, county, or ZIP. Ignored when Start URLs is set.
Sale or leaseNoFor saleSearch type for the location.
Property typesNoall typesOptional types such as Office, Retail, Industrial, Multifamily, or Land.
Minimum / maximum asking priceNononeSale searches only.
Start URLsNoemptySearch or property URLs. Overrides the fields above.
Max propertiesNo25Cap across all searches. Maximum 500.
Include broker namesNooffPublic broker name and brokerage. No email or phone.
Monitor modeNooffSave only property ids not seen on the previous run of this search.
{
"location": "Austin, TX",
"transaction": "sale",
"propertyTypes": ["Retail"],
"maxItems": 25,
"includeBrokers": false,
"monitorMode": false
}

Output

One dataset row per property.

FieldMeaning
listingIdProperty id
urlProperty URL
nameListing name
transactionsale or lease
propertyTypeTypes on the card
descriptionShort public description
statusListing status
investmentTypeInvestment type when the sale card states one
askingPrice, currencySale asking price, USD
squareFootageBuilding size, or minimum rentable size on a lease
rateMin, rateMax, rateTypeLease rate per square foot per year, and how it is quoted
rateYearly, rateMonthlyYearly and monthly lease rate as shown
rentableSqftMin, rentableSqftMax, suiteCountLease size range and suite count
brokerageBrokerage on the search card
brokerNamePublic broker name when broker names are on
address, city, county, state, zipLocation
latitude, longitudeMap point
hasOfferingMemorandum, hasFlyerSale card says a memorandum or flyer exists
isInOpportunityZoneSale card marks an opportunity zone
imagePrimary photo
activatedOnWhen the listing was activated
scrapedAtUTC timestamp
{
"listingId": "2669174",
"url": "https://www.crexi.com/properties/2669174/texas-7-eleven-retail-building---austin-tx",
"name": "7-Eleven Retail Building - Austin, TX",
"city": "Austin",
"state": "TX",
"zip": "78759",
"transaction": "sale",
"propertyType": "Retail",
"askingPrice": 5200000,
"currency": "USD",
"squareFootage": 3650,
"brokerage": "Matthews",
"hasOfferingMemorandum": true
}

Use cases

  • Pull retail and office listings for sale in one metro and compare asking price and size for commercial real estate comps.
  • Export lease spaces with rate and rentable square feet for a tenant search.
  • Schedule a morning run in monitor mode and keep only property ids that were not in yesterday’s file.
  • Feed address, price, and brokerage into an internal comps sheet. For the other major US commercial marketplace, continue with LoopNet Scraper.

Integration examples

Replace APIFY_TOKEN. The slug below is the Store name.

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("crawloop/crexi-scraper").call({
location: "Austin, TX",
transaction: "sale",
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("crawloop/crexi-scraper").call(run_input={
"location": "Austin, TX",
"transaction": "lease",
"maxItems": 25,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items))

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~crexi-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"location":"Austin, TX","transaction":"sale","maxItems":10}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name crawloop/crexi-scraper.

Example prompts:

  • "Run Crexi Scraper for Austin, TX for-sale retail and return the top 20 rows as JSON"
  • "Scrape Crexi lease spaces in Dallas and summarize rate, size, and brokerage"
  • "Run Crexi Scraper in monitor mode for Houston offices, then use LoopNet Scraper for the same city"

Suite next step

This Actor covers Crexi sale and lease cards. For LoopNet sale, lease, and auction cards in the same market, run LoopNet Scraper.

FAQ

Does this download the offering memorandum? No. Sale rows include hasOfferingMemorandum when the public card says a memorandum exists. The file requires a login, and this Actor does not log in or charge for a download.

Are broker emails included? No. Broker names, when you turn them on, are the public name and brokerage. Email and phone are not on that record.

Does a row include cap rate or NOI? No. Cap rate and NOI are not on the public search card this Actor saves.

Why was my search URL skipped? A link that only contains a place id cannot be sent as a public search filter. Use a city, state, county, or ZIP, or a search URL that already includes one of those.

What does monitor mode skip? Property ids already stored for that same search. Change the city or the transaction and it is a new cursor. A run with no new ids writes zero rows.