# Crexi Scraper: Commercial Real Estate Listings For Sale & Lease (`getascraper/crexi-listings-scraper`) Actor

Scrape Crexi commercial real estate listings for sale and lease: price, size, address, property type, brokerage and dates. Filter by type, state, city, ZIP, price and cap rate. Monitor mode flags new listings, price drops and removals. Cap rate and NOI appear only when Crexi shows them. No login.

- **URL**: https://apify.com/getascraper/crexi-listings-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.13 / 1,000 listing records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏢 Crexi Scraper: Commercial Real Estate Listings For Sale & Lease

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#EAF1F8;border:1px solid #C5D8EA;border-top:4px solid #1F4E79;border-radius:12px 12px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every Crexi listing that fits your deal criteria, in one spreadsheet</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search commercial properties for sale and for lease by type, place, price, size and cap rate. Schedule the same search and get only new listings, price drops and removed listings.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D8EA;border-radius:0 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#163A5C">🎯 Deal filters</span><br>
<span style="font-size:12px;color:#57534E">Property type, state, city, ZIP, price, cap rate, price per sq ft, building and lot size, class and tenancy.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D8EA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#163A5C">🔔 What changed</span><br>
<span style="font-size:12px;color:#57534E">New listings, price drops, price increases, status changes and removed listings, with the old price and the percent change.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D8EA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#163A5C">🏬 Sale and lease</span><br>
<span style="font-size:12px;color:#57534E">Investment sales and space for lease in one run, with every available suite, its size and its rent.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D8EA;border-left:none;border-radius:0 0 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#163A5C">🤝 Brokers and photos</span><br>
<span style="font-size:12px;color:#57534E">Listing broker, brokerage, license details, the written description and the full photo gallery.</span>
</td>
</tr>
</table>

**Collect Crexi commercial real estate listings, for sale and for lease, and download them as JSON, CSV or Excel.** Each row gives the property name, type, address, asking price, size, status and listing dates. Switch on full details to add the description, investment highlights, property facts the broker made public, brokers and photos. No login or account is needed.

***

### 🔍 What can you do with it?

- **I source investment deals** and want every new multifamily, retail or industrial listing in my target markets, inside my price range, the day it appears.
- **I am a broker** and need to see what competing brokerages have on the market in my submarket, and which listings just dropped their price.
- **I analyze markets** and need price per square foot, size and days on market across a city or state, in a table I can pivot.
- **I place tenants** and want every space for lease in a city, with the size and asking rent of each suite.
- **I find off-market style opportunities** and watch for listings that go under contract, change price or disappear, so I can follow up at the right moment.

***

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EAF1F8;border:1px solid #C5D8EA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F4E79;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick sale or lease</span><br>
<span style="font-size:12px;color:#57534E">Choose the property types and the places you care about, or paste Crexi links.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF1F8;border:1px solid #C5D8EA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F4E79;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your numbers</span><br>
<span style="font-size:12px;color:#57534E">Add price, cap rate, size and listing age limits, then decide if you want full details.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF1F8;border:1px solid #C5D8EA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F4E79;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Download or schedule</span><br>
<span style="font-size:12px;color:#57534E">Export the table, or name the search and schedule it to see only what is new or changed.</span>
</td>
</tr>
</table>

**Good to know before you start**

- A run with no filters returns the newest sale listings across the United States. The default is 25 listings so you can check the data first.
- Large searches work. A single run can return thousands of listings, and big searches are split up for you automatically.
- Choose "Both" as the listing type to get sale and lease listings together. The listing limit is shared between the two.
- Crexi hides some figures from visitors who are not signed in. Cap rate, net operating income, occupancy, year built and similar facts only appear when the broker made them public. See the FAQ below.
- For monitoring, keep the same Monitor name and the same filters on every scheduled run.

***

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Listing type | enum | No | Properties for sale, spaces for lease, or both. |
| Property types | array of enum | No | Retail, multifamily, office, industrial, hospitality, mixed use, land, self storage and more. |
| Property subtypes | array of text | No | Narrower categories such as `Strip Center` or `Medical`. |
| Keyword search | text | No | Words to look for in the listing. |
| Listing URLs or IDs | array of text | No | Crexi listing links or numbers. When filled, the filters are ignored and those listings are read in full. |
| States | array of text | No | Two letter state codes such as `TX`. |
| Cities | array of text | No | City names. A name can also match a neighborhood of the same name elsewhere. |
| Counties | array of text | No | County names. |
| ZIP codes | array of text | No | Five digit ZIP codes. |
| Minimum and maximum asking price | integer | No | Asking price range in US dollars (sale only). |
| Minimum and maximum cap rate | number | No | Cap rate range in percent (sale only). |
| Minimum and maximum price per sq ft | number | No | Price per square foot range (sale only). |
| Minimum and maximum building size | integer | No | Building size range in square feet. |
| Minimum and maximum lot size | number | No | Lot size range in acres. |
| Lease rate unit, minimum and maximum | enum, number | No | Rent range per square foot or per acre, per year or per month (lease only). |
| Building classes | array of enum | No | Class A, B, C or D. |
| Tenancy | array of enum | No | Single tenant, multi tenant or vacant. |
| Existing lease structure | array of enum | No | NNN, net, absolute net, gross or ground lease (sale only). |
| Opportunity Zone only | boolean | No | Keep only listings in an Opportunity Zone. Off by default. |
| Brokerage name | text | No | Listings whose brokerage name starts with these words. |
| Listing statuses | array of enum | No | For sale listings: On-Market, Auction, Contract Pending or Under Contract. Empty keeps active listings (On-Market and Auction). Lease listings are not filtered by this field. |
| Listed within the last N days | integer | No | Only listings published in the last N days. |
| Sort by and direction | enum | No | Newest, recently updated, price, cap rate, size or NOI, ascending or descending. |
| Run mode | enum | No | All listings, new listings only, or new listings plus changes. |
| Monitor name | text | No | Names the saved search so later runs know what you already received. |
| Report removed listings | boolean | No | In monitor mode, also report listings that have left the market. Off by default. |
| Full details | boolean | No | Adds description, highlights, property facts and lease spaces. Off by default. |
| Broker details | boolean | No | Adds broker names, brokerage and license details. Off by default. |
| Photo gallery | boolean | No | Adds every photo link. Off by default. |
| Max listings | integer | No | Upper limit for the run. The default is 25. |
| Proxy | object | No | Connection settings. The default works for most runs. |

***

### 📦 Output

Each listing is one row. Fields with no public value are left out, never filled with placeholders.

```json
{
  "listingType": "sale",
  "id": 2762897,
  "url": "https://www.crexi.com/properties/2762897/texas-1121-us-highway-271-south",
  "name": "1121 US Highway 271 South",
  "status": "Active",
  "propertyTypes": ["Retail", "Business for Sale"],
  "propertySubtypes": ["Restaurant", "Business and Building"],
  "address": "1121 US Highway 271 South",
  "city": "Gilmer",
  "county": "Upshur County",
  "state": "TX",
  "zip": "75645",
  "latitude": 32.7144597,
  "longitude": -94.9429134,
  "askingPrice": 1700000,
  "squareFootage": 10000,
  "pricePerSqFt": 170,
  "brokerName": "Alyssa Dyer",
  "photoCount": 42,
  "activatedOn": "2026-10-24T22:58:23.962Z",
  "daysOnMarket": 0,
  "withheldBySource": ["Year Built", "Year Renovated"]
}
```

#### Field reference

| Field | Type | Description |
| --- | --- | --- |
| listingType, id, url | text / number | Sale or lease, the Crexi listing number and its link. |
| name, headline, status | text | Listing name, headline and market status as Crexi reports it, for example `On-Market` or `Auction` for sale searches and `Active` for lease listings. Reading a listing by link can also show `No Longer For Sale`. |
| propertyTypes, propertySubtypes, investmentType | array / text | Property categories. |
| address, city, county, state, zip, fullAddress | text | Property location. |
| latitude, longitude, locations | number / array | Map position, and every address for multi-location listings. |
| askingPrice, isUnpriced | number / boolean | Asking price, or a flag when no price is shown. |
| pricePerSqFt | number | Price per square foot, calculated from the asking price and size, or the broker's figure when public. |
| squareFootage, lotSizeAcres, buildings, stories, units | number | Size facts. |
| capRate, noi, occupancyPercent, yearBuilt, yearRenovated, zoning, apn | number / text | Property facts, only when the broker made them public. |
| capRateInListingText | number | A cap rate quoted in the listing headline or name, such as "9% Cap Rate". |
| tenancy, leaseType, tenantBrand, tenantCredit, leaseTerm, leaseExpiration, remainingTerm | text | Existing tenant and lease facts, when public. |
| buildingClass, ownership, saleCondition, isInOpportunityZone | text / boolean | Further listing facts. |
| brokerName, brokerageName, brokerageWebsite, brokerOfRecord, brokers | text / array | Broker information. Names, brokerage and license details with broker details on. |
| hasOfferingMemorandum, hasFlyer, hasVideo, hasVirtualTour | boolean | Which marketing materials exist. The documents themselves are not downloaded. |
| photoCount, thumbnailUrl, photos | number / text / array | Photo count, a thumbnail and the full gallery. |
| description, investmentHighlights, buildingHighlights, facts | text / array / object | Written description and public property facts, with full details on. |
| rentableSqFtMin, rentableSqFtMax, baseRateSqFtPerYearMin, baseRateSqFtPerYearMax, rentPerSqFtPerYear, rentPerSqFtPerMonth, rateDisplay | number / text | Lease space sizes and asking rents. |
| suiteCount, suites | number / array | Every available suite with size, rent and lease type, for lease listings with full details. |
| activatedOn, createdOn, updatedOn, offersDueOn, daysOnMarket | date / number | Listing dates and days on market. |
| withheldBySource | array | Names of the facts that Crexi hides from signed-out visitors for this listing, such as `Year Built`. |
| changeType, previousPrice, priceChange, priceChangePercent, previousStatus, firstSeenAt, lastSeenAt, detectedAt | text / number / date | Monitor mode: `NEW`, `PRICE_DROP`, `PRICE_INCREASE`, `STATUS_CHANGED` or `REMOVED`, with what changed and when. |
| scrapedAt | date | Time of collection. |

**What is not included:** offering memorandums and flyer documents, broker phone numbers and email addresses, and figures Crexi shows only to signed-in members. The Actor never asks for a login and never guesses hidden values.

***

### 💰 Pricing

Pay per result. An empty run costs nothing and there are no subscriptions. Every listing row is one charge, and full details, broker details and photos cost nothing extra. See the pricing box at the top of this page for the current rates, which drop on higher Apify plans.

**Free plan:** up to 25 listings per run, 3 runs per day, with a 30 minute pause between runs.

***

### ⭐ Enjoying Crexi Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#EAF1F8;border:1px solid #C5D8EA;border-left:5px solid #1F4E79;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Stop refreshing search pages and let new deals and price drops come to you.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other investors, brokers and analysts find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1F4E79;border:1px solid #C5D8EA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/crexi-listings-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ✨ Tips and best practices

- Start with the default 25 listings to see the shape of the data, then raise the limit.
- Combine a property type with a state or ZIP list to keep results focused. Add a price or size range to cut noise.
- Use "Listed within the last N days" for a quick look at fresh inventory without any saved state.
- For deal alerts, give the search a Monitor name, choose "new listings plus changes" and schedule it daily.
- Turn on full details only for the searches that need them. Base rows come back faster.
- Treat price per square foot as a screening number. It is calculated from the asking price and the listed size.

***

### ❓ FAQ

##### Does it need a Crexi account, login or API key?

No. It collects only what Crexi shows to any visitor, so there is nothing to log in to and no key to enter.

##### Why are cap rate and NOI missing on many listings?

Crexi hides cap rate, NOI, occupancy, year built and similar facts from visitors who are not signed in, unless the broker made them public. In practice many listings do not show them. This Actor includes them when they are public and leaves them out otherwise. The "withheldBySource" field lists what was hidden. You can still filter by cap rate, and Crexi applies that filter itself.

##### Does it return broker phone numbers and emails?

No. Crexi does not show them in the public listing. You get broker names, brokerage, brokerage website and license details with broker details switched on.

##### How do I get alerted about new listings and price drops?

Set the run mode to new listings plus changes, give the search a Monitor name and schedule the run. Each run then returns only listings you have not received before, plus price drops, price increases, status changes and, if you ask for them, removed listings.

##### How many listings can I get in one run?

Thousands. Raise Max listings and the run collects in batches until the limit or the end of the results. Narrow searches finish in seconds.

***

### 🛡️ Disclaimers and support

This Actor is an independent tool and is not affiliated with Crexi. It collects publicly available listing information. You are responsible for using the data in line with the law and the source's terms. Listing details can change at any time, so confirm important facts with the listing broker. Questions or feature ideas are welcome in the Issues tab of this Actor.

***

### 🔗 Other actors

- [CommercialRealEstate.com.au Scraper: Prices, Agents, Lease Data](https://apify.com/getascraper/commercialrealestate-au-scraper) ↗ - Australian commercial property for sale and lease.
- [Property24 Scraper: Real Estate Listings, Prices & Broker Leads](https://apify.com/getascraper/property24-scraper) ↗ - South African property listings with prices and agents.
- [Propertyware rental listings monitor: changes, rent, and leads](https://apify.com/getascraper/propertyware-rentals-monitor) ↗ - US rental listings with rent and change tracking.
- [Realting.com Scraper: Property Listings, Prices, 90+ Countries](https://apify.com/getascraper/realting-property-scraper) ↗ - International property listings in over 90 countries.
- [Lianjia Scraper 链家: China Resale Listings, Prices & Communities](https://apify.com/getascraper/lianjia-real-estate-scraper) ↗ - Chinese resale homes with prices and neighborhoods.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/crexi-listings-scraper/changelog.md

# Actor input Schema

## `listingType` (type: `string`):

Search properties for sale, properties for lease (space-level rents), or both. With both, Max listings is split between the two.

## `propertyTypes` (type: `array`):

Only these asset classes. Lease listings support Retail, Office, Industrial, Land, Special Purpose and Restaurant; other types are skipped for lease searches. Leave empty for all types.

## `subtypes` (type: `array`):

Optional sub-categories such as Storefront, Shopping Center, Medical Office, Warehouse or Day Care/Nursery. Use the exact names shown on Crexi; an unknown name stops the run with a clear message.

## `searchText` (type: `string`):

Free text matched against listing names and descriptions, for example "gas station", "net lease" or "opportunity zone". Sale search only.

## `propertyUrls` (type: `array`):

Fetch specific listings instead of searching: paste crexi.com/properties/... (sale) or crexi.com/lease/properties/... (lease) URLs, or bare numeric IDs. Filters are ignored when this is filled; full details and brokers are always returned.

## `states` (type: `array`):

Two-letter US state codes, for example TX, CA, FL. Combine with cities, counties or ZIP codes to narrow further.

## `cities` (type: `array`):

City names, for example Austin or Miami. Pair with a state because several states share city names.

## `counties` (type: `array`):

County names exactly as Crexi writes them, for example Travis County.

## `zipCodes` (type: `array`):

5-digit ZIP codes, for example 78701. Good for neighborhood-level deal hunting.

## `askingPriceMin` (type: `integer`):

Lowest asking price for sale listings. Listings with no public price are excluded once a price filter is set.

## `askingPriceMax` (type: `integer`):

Highest asking price for sale listings.

## `capRateMin` (type: `number`):

Only sale listings whose cap rate is at least this value. Crexi evaluates this filter on its side even when the exact cap rate is hidden from the public page.

## `capRateMax` (type: `number`):

Only sale listings whose cap rate is at most this value.

## `pricePerSqFtMin` (type: `number`):

Lowest sale price per square foot.

## `pricePerSqFtMax` (type: `number`):

Highest sale price per square foot.

## `sqFtMin` (type: `integer`):

Smallest building area, or smallest available space for lease searches.

## `sqFtMax` (type: `integer`):

Largest building area, or largest available space for lease searches.

## `acreageMin` (type: `number`):

Smallest land area in acres. Useful for land and development sites.

## `acreageMax` (type: `number`):

Largest land area in acres.

## `leaseRateUnit` (type: `string`):

Unit for the lease rate filters below, and the unit the rates are quoted in.

## `leaseRateMin` (type: `number`):

Lowest asking rent in the chosen unit. Lease searches only.

## `leaseRateMax` (type: `number`):

Highest asking rent in the chosen unit. Lease searches only.

## `buildingClasses` (type: `array`):

Building quality class, A (best) to D.

## `tenancy` (type: `array`):

Single-tenant, multi-tenant or vacant. Sale searches support Single, Multi and Vacant; lease searches support Single and Multiple.

## `investmentLeaseTypes` (type: `array`):

For investment sales: the lease structure already in place, such as NNN or Absolute Net.

## `opportunityZoneOnly` (type: `boolean`):

Keep only listings located in a federal Opportunity Zone.

## `brokerage` (type: `string`):

Only listings from brokerages whose name starts with this text, for example CBRE or Marcus & Millichap.

## `listingStatuses` (type: `array`):

Which sale listing states to keep: On-Market, Auction, Contract Pending or Under Contract. Leave empty for active listings (On-Market and Auction). Lease listings are returned with the status Crexi reports and are not filtered by this field.

## `listedWithinDays` (type: `integer`):

Only listings that went live on Crexi in the last N days. Combine with a daily schedule to catch fresh deals, or use New listings mode below.

## `sortBy` (type: `string`):

Order of the results. Newest puts freshly listed properties first. Price, cap rate and NOI sorting apply to sale searches; lease searches fall back to newest for those.

## `sortDirection` (type: `string`):

Descending shows the newest, most expensive or largest first.

## `mode` (type: `string`):

All listings returns everything that matches. New listings only returns listings not seen in earlier runs with the same monitor name. Monitor also reports price drops, price increases and status changes on listings seen before.

## `monitorName` (type: `string`):

Label that keeps the saved listing history for this search. Use a different name for each saved search. The first run with a new name lists current matches as new.

## `reportRemoved` (type: `boolean`):

In monitor mode, also emit listings that were seen before but are no longer in the results. Only works when the run covers every matching listing (Max listings at or above the match count).

## `includeDetails` (type: `boolean`):

Adds one request per listing: full description, investment highlights, property facts (year built, zoning, cap rate, NOI, occupancy when the broker made them public) and, for lease, every available suite with size and rate.

## `includeBrokers` (type: `boolean`):

Adds the listing brokers: name, brokerage, brokerage website and address, license numbers and profile ID. Phone numbers and emails are not public on Crexi and are not returned.

## `includePhotos` (type: `boolean`):

Adds the full list of photo URLs for each listing (the search result only carries one thumbnail).

## `maxItems` (type: `integer`):

Maximum number of listings to return (in the monitoring modes: the number of newest listings checked per run). Queries above 1,499 matches are split automatically into date windows. Free plan runs are capped at 25.

## `proxyConfiguration` (type: `object`):

Datacenter proxy is enough for this source. No account, cookie or login is ever needed.

## Actor input object example

```json
{
  "listingType": "sale",
  "propertyTypes": [
    "Retail"
  ],
  "states": [
    "TX"
  ],
  "leaseRateUnit": "SqFtPerYear",
  "opportunityZoneOnly": false,
  "sortBy": "newest",
  "sortDirection": "Descending",
  "mode": "all",
  "monitorName": "default",
  "reportRemoved": false,
  "includeDetails": false,
  "includeBrokers": false,
  "includePhotos": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "listingType": "sale",
    "propertyTypes": [
        "Retail"
    ],
    "states": [
        "TX"
    ],
    "leaseRateUnit": "SqFtPerYear",
    "opportunityZoneOnly": false,
    "sortBy": "newest",
    "sortDirection": "Descending",
    "mode": "all",
    "monitorName": "default",
    "reportRemoved": false,
    "includeDetails": false,
    "includeBrokers": false,
    "includePhotos": false,
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/crexi-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "listingType": "sale",
    "propertyTypes": ["Retail"],
    "states": ["TX"],
    "leaseRateUnit": "SqFtPerYear",
    "opportunityZoneOnly": False,
    "sortBy": "newest",
    "sortDirection": "Descending",
    "mode": "all",
    "monitorName": "default",
    "reportRemoved": False,
    "includeDetails": False,
    "includeBrokers": False,
    "includePhotos": False,
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/crexi-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "listingType": "sale",
  "propertyTypes": [
    "Retail"
  ],
  "states": [
    "TX"
  ],
  "leaseRateUnit": "SqFtPerYear",
  "opportunityZoneOnly": false,
  "sortBy": "newest",
  "sortDirection": "Descending",
  "mode": "all",
  "monitorName": "default",
  "reportRemoved": false,
  "includeDetails": false,
  "includeBrokers": false,
  "includePhotos": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/crexi-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/crexi-listings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7ZHpRwU9vrUqkIW7u/builds/bcY86UtMoFylCDfSz/openapi.json
