# LoopNet and Crexi Scraper: Commercial Real Estate

> LoopNet scraper for US commercial listings from LoopNet and Crexi: price, cap rate, size, address, coordinates, broker company. Search by place. No login.

URL: https://cliqtomedia.com/actors/commercial-real-estate/

Category: Real estate, travel & cars · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Get US commercial property listings from Crexi and LoopNet in one table. Each row has price, size, address, coordinates and broker company. Sale, lease and auction listings are covered.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `crexi` in Site. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Give this Actor a US place and it returns commercial property listings from [Crexi](https://www.crexi.com) and [LoopNet](https://www.loopnet.com) in one table: price, cap rate, size, address, coordinates and broker company. You need no login and no account on these sites.

- It reads Crexi, LoopNet or both in one run.
- It covers listings for sale, for lease and at auction.
- It filters by price, size, cap rate, lot, year built, units, rent, keyword and date.
- It can also read each listing page for more fields, such as cap rate, NOI, year built and zoning.
- It saves the broker company. It has no fields for people's contacts, and it removes emails and phone numbers in common formats from listing text.

### Good for

- You watch a US market and want new listings in a table.
- You compare asking prices and price per square foot across sites.
- You need a list of properties with coordinates for a map or a model.

## Price

Prices will be shown after release.

## Questions

### Do I need a login on Crexi or LoopNet?

No. The tool reads public pages only. You need only an Apify account.

### Does it give broker names, phones or emails?

No. It saves the broker company only.

### Why is capRate empty in some rows?

On Crexi it needs a login. On LoopNet many listings do not show it on the search page.

### Why does a run with no results cost money?

A run start is always charged. On LoopNet, each page read is charged too, because filters are applied after the page is read. Set a Max charge if you use narrow filters.

### How complete and how fresh are the rows?

The rows show what the site showed at `fetchedAt`. A field is `null` when the site does not show it. In one test on 300 LoopNet sale rows, 284 had a price and 41 had a cap rate from search pages only.

### Which site should I start with?

Start with Crexi for most cases: a run is faster and cheaper, and you get price, size and coordinates in most rows. Use LoopNet for cap rate, year built and lot size on search pages, and for lease rates.

## Data fields

- `listingId` (string): Listing ID on the source site. Empty on service rows.
- `site` (string): Source site.
- `purpose` (string): sale, lease or auction. Empty when a LoopNet page does not say.
- `status` (string): complete: all fields of the chosen route. partial: the detail page failed, search fields are kept. not_found: the search or link has nothing. error: this search or link failed or cannot run.
- `statusReason` (string): Why a row is not complete.
- `errorCode` (string): Machine-readable error, for example SOURCE_BLOCKED or UNSUPPORTED_FILTER.
- `title` (string): Listing title.
- `price` (number): Asking price in USD. Empty when the listing shows none: empty never means zero.
- `priceText` (string): Price as the source shows it when it is not one number, for example a range, a rent or Unpriced.
- `pricePerSqft` (number): Price per square foot in USD.
- `pricePerSqftBasis` (string): source: shown by the site. computed: price divided by building size.
- `capRate` (number): Cap rate in percent, for example 6.5.
- `propertyType` (string): Property type as the source names it.
- `propertySubType` (string): Property subtype as the source names it.
- `buildingSqft` (number): Building size in square feet.
- `sqftMin` (number): Smallest space for lease in square feet.
- `sqftMax` (number): Largest space for lease in square feet.
- `rentPerSqftYearMin` (number): Lowest rent in USD per square foot per year.
- `rentPerSqftYearMax` (number): Highest rent in USD per square foot per year.
- `rentType` (string): Rent basis as the source names it.
- `lotSize` (number): Lot size in acres.
- `units` (number): Number of units.
- `spaces` (number): Number of spaces or suites for lease.
- `properties` (number): Number of properties in a portfolio listing.
- `yearBuilt` (number): Year built.
- `address` (string): Address as shown.
- `city` (string): City.
- `state` (string): US state code.
- `zip` (string): ZIP code.
- `lat` (number): Latitude.
- `lng` (number): Longitude.
- `broker` (string): Brokerage company from the listing. The dataset has no fields for people's contacts.
- `url` (string): Listing page.
- `imageUrl` (string): Main photo.
- `imageUrls` (array): Photos found on the page used.
- `description` (string): Listing description.
- `listingStatus` (string): Listing status on Crexi, for example On-Market or Auction.
- `activatedOn` (string): Date the listing went live on Crexi.
- `noi` (number): Net operating income in USD.
- `zoning` (string): Zoning.

## Input settings

- `site` (string): Where to search. With both, the first half of Max listings comes from Crexi and the rest from LoopNet.
- `purpose` (string): For sale, for lease or at auction.
- `location` (string): A US place: "Phoenix, AZ", "AZ", "Maricopa County, AZ", "Phoenix, AZ 85004", "85004" or "USA". LoopNet needs a city with a ZIP.
- `propertyType` (string): Types marked with a site name exist on that site only; the other site reports it in an error row.
- `maxItems` (integer): How many listings to save at most, 1 to 1,500. One search stops at 1,500 on Crexi and 750 on LoopNet. For the largest LoopNet runs over several places, raise the timeout to 600 s.
- `includeDetails` (boolean): Adds cap rate, NOI, year built, zoning, lot size and more from each listing page, for an extra charge per listing. Search pages alone give price, size, address and broker company.
- `locations` (array): Several places, one per line, in the same form as Location. Up to 20. Max listings is shared among them.
- `startUrls` (array): Links to single listings on Crexi or LoopNet, or to a LoopNet search page. Up to 100. A listing link is always read in full. Crexi listing links return no broker company: the page does not have it.
- `minPrice` (number): Sale and auction listings.
- `maxPrice` (number): Sale and auction listings.
- `minSqft` (number): Building or space size.
- `maxSqft` (number): Building or space size.
- `minCapRate` (number): A listing that hides its cap rate stays in the result. Turn on listing pages to see more of them.
- `maxCapRate` (number): A listing that hides its cap rate stays in the result.
- `minLotAcres` (number): Applied to listings that show a lot size.
- `maxLotAcres` (number): Applied to listings that show a lot size.
- `minYearBuilt` (integer): Applied to listings that show the year.
- `maxYearBuilt` (integer): Applied to listings that show the year.
- `minUnits` (integer): Applied to listings that show units.
- `maxUnits` (integer): Applied to listings that show units.
- `minRentPerSqft` (number): Lease listings.
- `maxRentPerSqft` (number): Lease listings.
- `keyword` (string): A word or phrase to find in the listing.
- `includeUnpriced` (boolean): Keep listings that do not show a price or rent.
- `listedWithinDays` (integer): Crexi only.

## Step by step on Apify

1. In Site, keep `Crexi` (box 1).
2. In Purpose, keep `For sale` (box 2).
3. In Location, keep `Phoenix, AZ` or type your own US place (box 3).
4. In Max listings, keep `10` (box 4).
5. Click Start, wait for the run to end and open the Output tab.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Find properties for sale in a market | `site`, `purpose: sale`, `location` | Listing | `price`, `pricePerSqft`, `capRate`, `address` | Sheet or CRM |
| Compare lease rates in a city | `purpose: lease`, `location`, `propertyType` | Listing | `rentPerSqftYearMin`, `rentPerSqftYearMax`, `sqftMin`, `sqftMax` | Sheet or BI tool |
| Watch new deals by schedule | `site: crexi`, `listedWithinDays`, `sort: newest` | Listing | `listingId`, `activatedOn`, `price`, `url` | Apify schedule, Slack or Notion |
| Screen investment deals | `minCapRate`, `includeDetails: true` | Listing with details | `capRate`, `noi`, `yearBuilt`, `zoning` | Financial model |
| Refresh a list of known listings | `startUrls` | One listing per link | `status`, `price`, `listingStatus` | Your database |

## Tips

- Start with Crexi. It is faster and cheaper than LoopNet.
- Crexi cap rate and NOI need a login, so they stay empty. Use LoopNet with listing pages for them.
- A search shows up to 1,500 listings on Crexi and 750 on LoopNet. Split by city or type for more.

## Limits



- One run: up to 1,500 listings. To get more, start several runs.
- One search: Crexi shows up to 1,500 listings and LoopNet shows up to 750. To get more, split the search by city or by type. The run tells you with `SOURCE_CAP` when a search was cut.
- Time: the default timeout is 300 seconds. In our tests, 700 to 1,500 Crexi rows took 9 to 17 seconds. 750 LoopNet rows took 141 to 195 seconds. Over 1,300 LoopNet rows from three places took about 280 seconds, and one such run reached the time limit at 1,350 rows. For the largest LoopNet runs, raise the timeout to 600 seconds.
- Listing pages: 100 LoopNet listings with `includeDetails` took 247 seconds. For more than 100, raise the timeout.
- Narrow LoopNet filters over many places: a run with 20 places and a filter that matched nothing reached the 300-second limit, failed with `DEADLINE` and read 61 pages. Use fewer places or filters that match.
- Crexi fields: `capRate`, NOI and year built need a Crexi login, so they stay `null`. Lot size comes only from listing pages. Crexi links have no broker company.
- Links: a Crexi search link is not read, and it saves an error row. Use a place or links to single listings.
- LoopNet fields: search pages do not show every field. A LoopNet search page has no price on auction listings. Read listing pages to get more.

## Sample result

```json
{
  "listingId": "2749151",
  "site": "crexi",
  "purpose": "sale",
  "status": "complete",
  "title": "Jiffy Lube",
  "price": 2323000,
  "pricePerSqft": 795.55,
  "pricePerSqftBasis": "computed",
  "capRate": null,
  "propertyType": "Retail",
  "buildingSqft": 2920,
  "lotSize": null,
  "address": "4848 East Warner Road, Phoenix, Maricopa County, AZ 85044",
  "lat": 33.3316876,
  "lng": -111.9793332,
  "broker": "Matthews",
  "url": "https://www.crexi.com/properties/2749151/arizona-jiffy-lube",
  "source": "api.crexi.com/assets/search",
  "fetchedAt": "2026-11-07T09:29:31.606Z"
}
```

## Similar tools

- [Redfin & Realtor Listings Scraper (US): Sale, Sold & Rent](https://cliqtomedia.com/actors/us-property-listings/)
- [Zillow Listings Scraper: Zestimates & Price Cuts, No Login](https://cliqtomedia.com/actors/zillow-scraper/)
- [99acres & MagicBricks India Property Scraper - No Login](https://cliqtomedia.com/actors/india-property-listings/)
- [Airbnb Scraper: Listings, Prices, Calendar - No Login](https://cliqtomedia.com/actors/airbnb-scraper/)
- [Booking.com Scraper: Hotels, Prices, Reviews, No Login](https://cliqtomedia.com/actors/booking-scraper/)
- [Events Scraper: Eventbrite, Meetup & Luma — No Login](https://cliqtomedia.com/actors/events-aggregator/)
