Crexi Commercial Real Estate Scraper avatar

Crexi Commercial Real Estate Scraper

Pricing

Pay per event

Go to Apify Store
Crexi Commercial Real Estate Scraper

Crexi Commercial Real Estate Scraper

🏢 Export public Crexi listings with prices, locations, sizes, property types, brokerages, images, financial fields, and timestamps.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Export public commercial property listings from Crexi into clean JSON, CSV, Excel, XML, or RSS data.

Use any filtered Crexi search URL to collect property IDs, listing links, names, addresses, asking prices, sizes, property types, brokerages, images, investment fields, and timestamps. The Actor talks to Crexi's public listing API, so routine searches are fast and do not require a browser or Crexi account.

What does Crexi Commercial Real Estate Scraper do?

The Actor converts public Crexi search results into one structured dataset row per property.

It can:

  • 🏢 scrape sale and lease inventory from public Crexi searches
  • 📍 preserve location, city, state, ZIP, county, and coordinates
  • 💰 extract asking price, cap rate, NOI, size, and investment type when public
  • 🤝 collect public brokerage and broker metadata
  • 🖼️ retain listing thumbnails and public image metadata
  • 🔄 paginate large searches and remove duplicate property IDs
  • 🧾 preserve the source API payload for advanced analysis
  • ⏱️ add source and scrape timestamps for monitoring workflows

Who is it for?

Commercial real estate investors

Build acquisition lists, compare asking prices, and screen opportunities by market or property type.

Brokers and business-development teams

Track active inventory, identify listing brokerages, and organize prospecting research.

Appraisers and lenders

Collect current asking-price and property-size evidence for market snapshots and underwriting research.

Market-data and analytics teams

Create repeatable inventory feeds for dashboards, warehouses, alerting systems, and historical comparisons.

Developers

Integrate public Crexi listings through the Apify API without maintaining pagination and normalization code.

Why use this Crexi scraper?

  • Search URL support: configure filters on Crexi and paste the resulting URL.
  • Fast HTTP extraction: no full browser is required for normal listing searches.
  • Stable identifiers: deduplication uses Crexi property IDs.
  • Partial-result safety: search rows are retained if optional detail enrichment fails.
  • Data lineage: each row includes its source search URL and collection time.
  • Raw payload access: newly exposed Crexi fields remain available in raw.
  • Scheduled monitoring: run daily or weekly and compare datasets over time.

What data can you extract?

FieldDescription
propertyIdStable Crexi property ID
urlPublic property listing URL
nameListing or property name
descriptionPublic listing summary
statusListing status, such as On-Market or Auction
propertyTypesCommercial property categories
askingPricePublic asking price
squareFootagePublic building or offering size
capRatePublic capitalization rate when available
netOperatingIncomePublic NOI when available
investmentTypeInvestment profile, such as Value Add
locationAddress, city, county, state, ZIP, and coordinates
brokerageNamePublic listing brokerage
brokersPublic broker metadata from detail enrichment
thumbnailUrlPrimary listing image
imagesPublic image metadata from detail enrichment
activatedOnListing activation timestamp
updatedOnListing update timestamp
scrapedAtActor collection timestamp
sourceUrlCrexi search URL that produced the record
rawComplete public source payload

Fields may be absent when a listing owner does not publish that information.

How to scrape Crexi listings

  1. Open the public Crexi properties search.
  2. Apply location, property-type, price, and other filters.
  3. Copy the resulting /properties URL.
  4. Paste it into Crexi search URLs.
  5. Choose the maximum number of listings.
  6. Enable detail enrichment only when you need additional public fields.
  7. Click Start.
  8. Export the dataset in your preferred format.

Input

{
"searchUrls": [
"https://www.crexi.com/properties?types%5B%5D=Retail"
],
"maxItems": 100,
"fetchDetails": false,
"pageSize": 60,
"sortOrder": "rank"
}

Input options

OptionTypeDefaultPurpose
searchUrlsstring arrayRetail searchPublic Crexi property search URLs
maxItemsinteger100Global maximum unique listings
fetchDetailsbooleanfalseRequest each public property detail endpoint
pageSizeinteger60Listings requested per API page
sortOrderstringrankRelevance, newest, price, or cap-rate ordering

Output example

{
"propertyId": 2558765,
"url": "https://www.crexi.com/properties/2558765/alabama-vacant-freestanding-qsr-w-drive-thru",
"name": "Vacant Freestanding QSR w Drive-Thru",
"status": "Auction",
"propertyTypes": ["Retail"],
"askingPrice": 25000,
"squareFootage": 1130,
"investmentType": "Value Add",
"location": {
"city": "Birmingham",
"state": { "code": "AL", "name": "Alabama" },
"zip": "35218"
},
"brokerageName": "Diversified Realty Exchange",
"updatedOn": "2026-07-09T21:07:20.598Z",
"sourceUrl": "https://www.crexi.com/properties?types%5B%5D=Retail"
}

Search URL examples

Retail inventory

https://www.crexi.com/properties?types%5B%5D=Retail

Multiple property types

Use Crexi's interface to select multiple types, then copy the complete URL. Repeated query keys such as types[] are retained as arrays.

Choose a city, county, state, or map region on Crexi. The resulting placeIds[], map center, and related public filters are forwarded to the listing API.

Optional detail enrichment

Set fetchDetails to true to request the public asset endpoint for every listing.

This may add:

  • broker arrays
  • cap rate and NOI
  • gallery metadata
  • property descriptions
  • investment and occupancy details
  • additional public listing attributes

Enrichment increases request count and runtime. If a detail request fails, the Actor still stores the useful search result.

How much does it cost to scrape Crexi listings?

This Actor uses pay-per-event pricing: a small start charge plus a charge for each property saved. The exact amount is shown in the Apify Console before a run and decreases on higher platform tiers.

You control cost with maxItems. Start with 20 records, verify the fields, and then scale to the inventory volume you need.

Tips for reliable results

  • Use a focused Crexi search URL for precise market exports.
  • Keep fetchDetails off if search-level fields are sufficient.
  • Use stable property IDs when comparing runs.
  • Schedule focused searches instead of repeatedly exporting the entire national feed.
  • Keep the raw field when building long-lived pipelines.
  • Expect optional financial fields to vary by listing.

Listing monitoring workflow

  1. Save a filtered search input as an Apify Task.
  2. Schedule the Task daily or weekly.
  3. Send datasets to cloud storage or a webhook.
  4. Match records by propertyId.
  5. Compare askingPrice, status, and updatedOn.
  6. Alert when properties appear, disappear, or change.

Lead sourcing workflow

Export name, location, propertyTypes, brokerageName, url, and public broker metadata. Filter the dataset for your market, then import qualified rows into a CRM for human review.

Do not use the Actor to send unsolicited messages or circumvent access controls.

Integrations

Google Sheets

Use the Apify Google Sheets integration to create a searchable CRE inventory table.

Airtable

Upsert rows by propertyId and add internal underwriting or outreach status fields.

Make and Zapier

Trigger automations when scheduled runs complete or when a matching property enters the dataset.

Webhooks

Notify your application after a run and retrieve records through the dataset API.

Data warehouses

Load JSON or CSV exports into BigQuery, Snowflake, PostgreSQL, or your preferred analytics stack.

API usage

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/crexi-commercial-real-estate-scraper').call({
searchUrls: ['https://www.crexi.com/properties?types%5B%5D=Retail'],
maxItems: 100,
fetchDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/crexi-commercial-real-estate-scraper').call(run_input={
'searchUrls': ['https://www.crexi.com/properties?types%5B%5D=Retail'],
'maxItems': 100,
'fetchDetails': False,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL API example

curl -X POST \
'https://api.apify.com/v2/acts/automation-lab~crexi-commercial-real-estate-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchUrls":["https://www.crexi.com/properties?types%5B%5D=Retail"],"maxItems":100}'

Use with Apify MCP

Connect the Actor to AI clients through Apify MCP.

Claude Code

claude mcp add apify --transport http \
'https://mcp.apify.com/?tools=automation-lab/crexi-commercial-real-estate-scraper'

Example prompts:

  • “Export 100 public Retail listings from this Crexi search and summarize asking prices.”
  • “Find newly updated industrial properties in this dataset and group them by state.”
  • “Compare cap rates among enriched Crexi listings where the field is public.”

Claude Desktop

Add this server to claude_desktop_config.json. Claude Desktop launches the remote-MCP bridge and opens Apify authentication when you first use the tool.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=automation-lab/crexi-commercial-real-estate-scraper"
]
}
}
}

Cursor

Create or update .cursor/mcp.json in your project, then enable the apify server in Cursor Settings → MCP:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=automation-lab/crexi-commercial-real-estate-scraper"
}
}
}

VS Code

Create .vscode/mcp.json, then run MCP: List Servers and start apify. VS Code prompts you to authenticate with Apify on first use.

{
"servers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com/?tools=automation-lab/crexi-commercial-real-estate-scraper"
}
}
}

Scheduling

Save the input as an Apify Task and use Schedules to run it automatically. A focused scheduled search provides a repeatable inventory snapshot without manual exports.

Data quality

The Actor normalizes high-value fields but does not invent missing values. Crexi sellers control which pricing and financial details are public. Always review source listings before making an investment, lending, appraisal, or outreach decision.

Error handling

Transient server and rate-limit responses are retried with exponential delay. Invalid non-Crexi URLs fail early. Duplicate IDs are ignored. A failed optional detail request produces a warning while preserving the search record.

Legality

This Actor collects information exposed on public Crexi listing surfaces. Whether a particular use is lawful depends on your jurisdiction, purpose, contractual obligations, and the data you process.

Use reasonable request volumes, respect applicable laws and rights, avoid personal-data misuse, and review Crexi's terms. This documentation is not legal advice.

FAQ

Does it require a Crexi account?

No. The supported search and public listing fields do not require Crexi credentials.

Can it scrape filtered searches?

Yes. Paste the complete filtered /properties URL. Array and scalar query parameters are forwarded.

Why is a financial field missing?

Not every listing publicly discloses price, cap rate, NOI, or other investment metrics. Enable detail enrichment, but expect some fields to remain absent.

Why did fewer records appear than requested?

The filtered search may contain fewer unique results, or Crexi may return an empty page before the requested cap.

Does it scrape private broker contact details?

No. It only preserves broker metadata returned by the public listing endpoints and does not bypass login controls.

How do I avoid duplicate records?

The Actor deduplicates by Crexi property ID during each run. For historical pipelines, upsert records by propertyId across runs.

Explore other real-estate and market-data Actors from automation-lab to combine Crexi inventory with additional public sources. Only use sources and data that fit your compliance requirements.

Support

If a public Crexi search URL produces unexpected output, open an Actor issue with the input URL, run ID, expected fields, and a short example. Do not include private credentials or confidential deal information.