LoopNet + Crexi Scraper · CRE Listings · CoStar Alternative avatar

LoopNet + Crexi Scraper · CRE Listings · CoStar Alternative

Pricing

from $5.00 / 1,000 results

Go to Apify Store
LoopNet + Crexi Scraper · CRE Listings · CoStar Alternative

LoopNet + Crexi Scraper · CRE Listings · CoStar Alternative

LoopNet + Crexi scraper for CRE listings. Normalizes cap rates, deduplicates cross-platform, and returns broker names/companies plus phone/email when public. Days-on-market included when source-available. $5 per 1K results.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

KazKN

KazKN

Maintained by Community

Actor stats

2

Bookmarked

127

Total users

47

Monthly active users

6 hours ago

Last modified

Share

LoopNet Scraper + Crexi Scraper for Commercial Real Estate Listings

LoopNet and Crexi listings merged into one broker-ready CRE market file

Commercial Real Estate Brokerage Intel is a LoopNet scraper, Crexi scraper, and commercial real estate listings scraper built for brokers, investors, acquisition teams, analysts, and lead generation teams that need clean CRE data without rebuilding spreadsheets by hand.

Use it as a lightweight commercial real estate API and CoStar alternative for public on-market listings. One Apify run searches LoopNet and Crexi, normalizes key fields, deduplicates cross-platform listings, calculates cap-rate intelligence, tracks days on market when available, and enriches broker identity plus phone/email when publicly discoverable.

Open LoopNet or Crexi, choose the market and filters you need, then either configure the same search in the Actor or paste the source search URL directly.

Best for: CRE broker leads, market scans, acquisition lists, cap rate data API workflows, broker contact scraper workflows, CSV exports, Google Sheets, CRM enrichment, and daily monitoring.

Explore on Apify: Run Actor · Input · Output · Pricing · API · Examples · Support

Video Tutorial — See It in Action

Watch the full demo — from LoopNet + Crexi search to one clean commercial real estate dataset in about 2 minutes.


API examples, GitHub repo, and workflows

Need to run this actor from Python, Node.js, cURL, Google Sheets, a CRM, or a daily monitoring job?

Use the public GitHub resource hub:

GitHub repo GitHub Pages

The repo includes:

  • Python, Node.js, and cURL examples
  • Google Sheets-ready export workflow
  • broker lead review workflow
  • daily CRE deal-flow monitoring example
  • sample JSON and CSV output
  • guides for deduplicating LoopNet + Crexi listings and building a clean market file

Start here: LoopNet + Crexi Listings API examples


What this actor does

NeedWhat you get
LoopNet scraperPublic LoopNet commercial real estate listings with normalized output
Crexi scraperPublic Crexi listings in the same dataset format
Commercial real estate APIStructured rows you can export as CSV, Excel, JSON, or connect to workflows
Commercial real estate listings scraperSearch by city, state, asset class, price, cap rate, square footage, and more
CoStar alternativePay-per-result public listing intelligence for teams that do not need a heavy enterprise UI
CRE broker leadsBroker names, companies, and public phone/email when discoverable from source/detail pages
Cap rate data APISource-listed cap rate or a comparable rate calculated from source-declared NOI and asking price
Days on market commercial real estateDays-on-market values when the source exposes a usable listing date
Broker contact scraperBroker contact fields separated into clean columns for outreach review

Why brokers use it

Brokers and acquisition teams often live between two tabs: LoopNet and Crexi. They search one market, repeat the search on the other platform, copy listings, clean duplicates, compare cap rates, hunt for days on market, and rebuild the same spreadsheet again.

This actor turns that workflow into one Apify run:

  1. Choose a market such as Austin, Dallas, Phoenix, Miami, Chicago, Los Angeles, or New York.
  2. Select LoopNet, Crexi, or both.
  3. Pick asset classes and filters.
  4. Run the actor.
  5. Export one clean dataset for Google Sheets, Excel, a CRM, a data warehouse, or underwriting.

Output

Results are stored in the run's default Apify Dataset. Review the Output schema, download results as JSON, CSV, Excel, XML, or RSS, or access the dataset through the Apify API and integrations.

Output example

{
"source": "loopnet",
"source_listing_id": "29769721",
"listing_url": "https://www.loopnet.com/Listing/29769721/",
"market": "Austin, TX",
"state": "TX",
"city": "Austin",
"zip": "78702",
"address": "2921 E 17th St, Austin, TX 78702",
"asset_class": "office",
"sub_type": "Loft/Creative Space",
"building_size_sqft": 7500,
"asking_price_or_rent": "$2,500,000",
"asking_amount_usd": 2500000,
"noi": "$187,500",
"cap_rate": "7.5%",
"price_per_sqft": "$333/SF",
"lot_size_acres": "not publicly available",
"days_on_market": 32,
"status": "active",
"broker_name": "Isaac Gutierrez",
"broker_company": "ECR",
"broker_phone": "not publicly discoverable",
"broker_email": "not publicly discoverable",
"also_listed_on": "crexi"
}

Input

Open the Input tab and choose one mode. Use manual mode for a new US market search, or URL mode when you already configured filters on LoopNet or Crexi. When at least one supported URL is supplied, URL mode takes priority and manual search fields are ignored.

The Console starts with Dallas, TX, and 100 results per source. These are interface prefills: API calls that omit maxResultsPerSource keep the backward-compatible default of 30. URL mode remains capped at 200 results per source.

Manual search input

City and state example

{
"city": "Austin",
"state": "TX",
"sourcesEnabled": ["loopnet", "crexi"],
"assetClasses": ["office", "retail"],
"priceMin": 500000,
"priceMax": 5000000,
"maxResultsPerSource": 200
}

State-only example

{
"state": "Nevada",
"sourcesEnabled": ["loopnet", "crexi"],
"maxResultsPerSource": 100
}

Two-letter codes, English state names, and common French state names such as Géorgie are normalized automatically. A city or county is optional and narrows the statewide search when supplied.

Daily monitoring example

{
"city": "Dallas",
"state": "TX",
"sourcesEnabled": ["loopnet", "crexi"],
"monitoringMode": true,
"maxResultsPerSource": 1000
}

Run on an Apify schedule. The actor maintains an internal snapshot per query and emits only listings not seen in previous runs.

URL search input

{
"startUrls": [
{ "url": "https://www.loopnet.com/Listing/12345678/example-property/" },
{ "url": "https://www.crexi.com/properties/87654321/example-listing" }
]
}

Crexi search URLs are scraped as supplied, including URLs containing placeIds. No Google Places API key is required. Crexi uses its public API or native browser path only; Bright Data is reserved for LoopNet. URL mode accepts crexi.com and all five official LoopNet marketplaces (loopnet.com, loopnet.ca, loopnet.co.uk, loopnet.fr, and loopnet.es), including any country or location those source pages actually expose. A Crexi URL runs Crexi only; a LoopNet URL runs LoopNet only. To run both sources, provide URLs from each platform. You can provide more than ten URLs; duplicates are removed and URL task allocation is bounded by the selected result cap. When at least one supported URL is supplied, form fields and sourcesEnabled are ignored: the recognized URLs determine the platforms and their criteria. URL mode is capped at 200 results per source.

For international URL results, country uses an ISO country code and currency preserves the source currency. Non-USD prices and rents keep their source display and are never labeled as USD without a proven currency conversion.

URL mode supports the most common LoopNet and Crexi filters. Some advanced filters may not be fully reproduced. In those cases, the Actor applies every supported criterion and returns the closest available listings from the same source, so results may be broader than the original page.

The Actor keeps the platform, marketplace, transaction type, location/path, asset class, and supported numeric filters. It relaxes only valid advanced criteria that cannot be reproduced or verified, and marks that run as partial. Malformed, contradictory, unsafe, redirected, or credential-bearing URLs still fail closed; a source outage is not disguised as a successful search.

When URLs from both platforms are supplied, the healthy source can fill a proven natural shortage from the other source. Technical failures, timeouts, and lost filter context are never hidden by cross-source compensation.

Input suppliedCrexiLoopNet
Crexi URL onlyScrapes the supplied Crexi search; unsupported advanced filters can produce broader same-source resultsNot started
LoopNet URL onlyNot startedScrapes the supplied LoopNet search; after a zero-row exact attempt, unsupported advanced filters can produce broader same-source results
Crexi URL + LoopNet URLScrapes its own URLScrapes its own URL
Crexi URL + City + StateScrapes the exact Crexi URLDoes not run
State onlyUses a statewide form searchUses a statewide form search
City + State onlyUses a form searchUses a form search

sourcesEnabled is an allow-list only in form mode. Direct LoopNet and Crexi URLs select their matching source in URL mode, even if a stale saved form selection says otherwise.

In form mode, explicit numeric filters are applied to the final normalized rows. In URL mode, decoded and supported criteria are applied before quota. When a valid advanced criterion cannot be reproduced, it can be relaxed under the best-effort policy above without changing the source. If a comparable value required by a supported decoded filter is unavailable or non-finite, that row is excluded. Lease price filters compare an annual lease amount.


Configuration options

Input fieldPurposeDefault or rule
stateUS state for manual mode; a state alone runs a statewide searchPrefilled with TX in the Console example only
cityOptional city or county that narrows a manual statewide searchPrefilled with Dallas in the Console example only
sourcesEnabledSelect LoopNet, Crexi, or both in manual modeBoth sources
transactionTypesSearch sale listings, lease listings, or bothSale
assetClassesFilter office, retail, industrial, multifamily, land, hotel, mixed-use, or specialtyAll classes
maxResultsPerSourceMaximum result target for each selected sourceConsole prefill: 100; omitted API value: 30; URL cap: 200 per source
startUrlsOne or more official LoopNet or Crexi search/listing URLsEmpty; when supplied, URL mode overrides manual fields
includeListingDetailsRequest public broker contacts and richer listing detailsfalse; slower and billed per enriched row
priceMin, priceMaxFilter asking price or annualized lease rent in manual modeOptional
capRateMin, capRateMaxFilter normalized cap rateOptional
buildingSizeMin, buildingSizeMaxFilter building square footageOptional
deduplicateMerge likely cross-platform duplicatestrue
monitoringModeReturn only newly observed listings for the same searchfalse

For every available field, accepted value, and tooltip, use the Actor's Input tab. Advanced proxy and concurrency settings should normally remain unchanged.


Key features

  • LoopNet + Crexi aggregation: search both sources in one run.
  • Cross-platform deduplication: output one primary record and mark also_listed_on when the same property appears elsewhere.
  • Cap-rate normalization: use a source-listed rate or calculate a comparable rate from source-declared NOI and asking price.
  • Source-declared NOI: expose public NOI from the source without presenting model-only estimates as facts.
  • Days on market: include days_on_market when a usable listing date is exposed.
  • Broker contact fields: broker name, company, public phone, and public email when discoverable from the listing source or public detail page.
  • Spreadsheet-friendly output: export to CSV, Excel, JSON, Google Sheets, CRM, Zapier, Make, or your own database.
  • Broker-ready calculated fields: market, unified price/rent, estimated annual/monthly rent, rent per sqft/year, lot acres, price per unit, and cross-listed flags.
  • Output sorting: sort the export by building size, asking amount, or days-on-market before it reaches your spreadsheet.
  • Monitoring mode: run daily or weekly to detect new public listings in target markets, with change columns like change_type, first_seen_at, and change_detected_at.
  • Dataset views: output columns are organized for overview, financial review, and broker contacts.

The intelligence layer

Cap-rate normalization

Commercial real estate listing data is inconsistent. Some listings declare NOI, some declare cap rate, some expose only asking price, and some expose neither. This actor adds a cap-rate intelligence layer so your team can compare listings more quickly.

Source dataActionOutput
NOI and price declaredCalculate cap rate as NOI / price x 100Comparable cap_rate
Cap rate declaredPass through the source-listed valueListed cap_rate
Only a model estimate is possibleDo not publish the estimate as a factcap_rate: "not public"
No usable source factMark cap rate as unavailable instead of leaving an ambiguous blankcap_rate: "not public"

This makes the actor useful as a cap rate data API for underwriting preparation, market scans, and broker lead triage. The public export returns one normalized cap_rate field. Model-only estimates are not exposed in the public dataset. Verify calculated values against the source before making investment decisions.

Days-on-market commercial real estate data

When LoopNet or Crexi exposes a usable listing date, the actor calculates days_on_market. This helps brokers and investors identify stale listings, recently added deals, and markets where inventory is sitting longer than expected.

Cross-platform deduplication

The same property can appear on LoopNet and Crexi. The actor groups matching listings, picks the most complete record as the primary row, and marks the other platform in also_listed_on.

Example:

{
"source": "loopnet",
"address": "2141 E Camelback Rd, Phoenix, AZ",
"also_listed_on": "crexi"
}

This is the difference between a raw scraper and a dataset your team can actually scan.


Who this is for

PersonaUse case
CRE brokersBuild CRE broker leads and outreach lists from public listings
Investment sales teamsMonitor new listings by market, asset class, and price range
Acquisition teamsExport LoopNet + Crexi data into underwriting workflows
REITs and family officesTrack markets weekly without manual copy-paste
Lenders and appraisersReview days-on-market and asking-price signals
Data teamsUse Apify as a commercial real estate API feeding sheets, CRM, or warehouse tables
Lead generation teamsUse broker contact scraper fields where public contact data is discoverable

Try LoopNet and Crexi scraping for free

Apify's Free plan includes $5 in monthly credits, with no credit card required. Use them to test a small LoopNet search, Crexi search, or combined LoopNet + Crexi market file. Standard usage-based pricing applies after your credits are used.


Pricing

Pay-per-event on Apify Store. The price varies by Apify plan, and higher plans receive lower unit prices.

EventPrice fromWhen
Actor startFrom $0.05 / runOnce per scrape job
ResultFrom $5.00 per 1,000 resultsEach unique listing returned
Listing detail enrichmentFrom $5.00 per 1,000 enriched listingsOnly when includeListingDetails: true and the row is actually enriched
Monitoring modeFrom $0.001 / enabled runOnly when monitoringMode: true

For the lowest cost bulk export, keep includeListingDetails disabled. Enable detail enrichment only when public broker phone/email and richer listing detail are worth the extra per-row charge. Always check the live Pricing tab for the exact price attached to your plan.

Scheduled monitoring with Apify Tasks

The actor can already be scheduled through Apify Tasks. A typical workflow is:

  1. Create a task for one market, for example Miami retail listings.
  2. Enable monitoringMode for new-listing alerts.
  3. Set a daily, twice-weekly, or weekly schedule in Apify.
  4. Export the dataset to CSV/API/Google Sheets, or connect it to a CRM or warehouse.

Monitoring runs keep an internal snapshot for the same search criteria, then return only the delta on later runs.


Output field reference

Each dataset row includes the fields most CRE teams need for scanning, filtering, underwriting, and outreach:

{
source: "loopnet" | "crexi",
source_listing_id: string,
listing_url: string,
scraped_at: string,
market: string,
state: string,
city: string,
zip: string,
address: string,
asset_class:
| "office" | "retail" | "industrial" | "multifamily"
| "land" | "hotel" | "mixed-use" | "specialty" | "unknown",
sub_type: string,
building_size_sqft: number | string,
total_available_sqft: number | string,
units: number | string,
year_built: number | string,
lot_size_sqft: number | string,
asking_price_or_rent: string,
asking_amount_usd: number | string,
noi: string,
cap_rate: string,
price_per_sqft: string,
price_per_unit: string,
rent_per_sqft_per_year: string,
estimated_annual_rent: string,
estimated_monthly_rent: string,
days_on_market: number | string,
status:
| "active" | "under_contract" | "sold" | "leased"
| "removed" | "off_market" | "unknown",
broker_name: string,
broker_company: string,
broker_phone: string,
broker_email: string,
broker_profile_url: string,
is_cross_listed: "yes" | "no",
also_listed_on: string
}

Tips for reliable runs

  • The Console starts at 100 results per source. Lower the value only when you want a quicker connectivity check.
  • Keep includeListingDetails disabled for the fastest bulk export. Enable it only when public broker/contact details are needed.
  • In manual mode, provide one US state and optionally one city or county. Do not combine several states or cities in one field.
  • In URL mode, paste complete official source URLs and keep their query parameters. The Actor preserves source filters and ignores manual search fields.
  • URL mode applies supported filters first. If an advanced source filter cannot be reproduced, the run can be marked partial and return the closest listings from that same platform.
  • A requested maximum is a target, not permission to switch platforms or ignore supported filters. A smaller complete dataset can mean the source has less qualifying inventory.
  • LoopNet availability can vary because the site may block upstream transports. Crexi is collected directly and does not use Bright Data or a Google Places API key.

Troubleshooting

The Actor returned fewer results than requested

Check the run summary and the source page. The Actor returns fewer rows when matching unique inventory is genuinely smaller, when rows fail a supported explicit filter, or when a source reports a technical limitation. A partial URL run can contain broader same-source results if an advanced filter was relaxed.

My URL results do not match the manual fields

This is expected. URL mode and manual mode cannot be combined. When startUrls contains a supported LoopNet or Crexi URL, the URLs determine the sources, locations, transaction types, and filters; manual search fields are ignored.

A LoopNet URL returned no rows or a technical failure

Keep the complete official URL, including parameters such as sk. The Actor first attempts the supplied LoopNet context. If that attempt produces no proven rows and the URL contains valid criteria that cannot be verified, it may retry the same LoopNet marketplace with only those advanced criteria relaxed. Redirects, malformed URLs, and source availability failures remain visible.

Broker phone or email is missing

Enable includeListingDetails. Contact fields are still returned only when the source or public detail page exposes them. The Actor does not invent gated or private contact data.

The run exceeded five minutes

Reduce maxResultsPerSource, disable detail enrichment, or split very large manual searches into separate markets. For the quickest connectivity check, temporarily lower the Console prefill of 100.


FAQ

Is this a LoopNet scraper?

Yes. It extracts public LoopNet commercial real estate listings and returns structured fields such as address, asset class, price, square footage, cap rate data, days on market when available, and broker details when publicly exposed.

Is this a Crexi scraper?

Yes. It extracts public Crexi listings and normalizes them into the same schema as LoopNet so both sources can be reviewed in one dataset.

Is this a commercial real estate API?

It can be used like a commercial real estate API through Apify. You can run the actor via API, schedule it, export datasets, connect webhooks, and send results to Google Sheets, Zapier, Make, a CRM, or your own backend.

Is it a CoStar alternative?

It is a lightweight CoStar alternative for public on-market listing workflows, especially for SMB brokers and acquisition teams that want pay-per-result data exports. It is not a replacement for every enterprise CoStar feature or private/off-market database.

Does it include broker contacts?

The actor includes broker names and companies when available. Public phone numbers and emails are included when they are discoverable from the source listing or public detail page. If the source gates the contact behind login or does not publish it, the CSV keeps the broker columns and marks the contact status as not publicly discoverable.

Can I use it for CRE broker leads?

Yes. Many users run it as a CRE broker leads workflow: filter a market, export listings, review broker contact fields, deduplicate properties, and send clean rows into a CRM.

Does it calculate days on market?

Yes, when the source exposes a usable listing date. The actor includes days_on_market to make the value easy to sort and filter.

How does it handle cap rate and NOI?

The actor exposes source-listed cap rate, source-declared NOI, and a comparable cap rate calculated from source-declared NOI and asking price when possible. Model-only estimates are not exposed in the public dataset, and unavailable values remain explicit.

Does it deduplicate LoopNet and Crexi listings?

Yes. The actor groups likely matching properties and marks cross-platform duplicates with also_listed_on, so your team does not chase the same deal twice.

Can I run it on a schedule?

Yes. Use Apify Scheduler with monitoringMode: true for daily or weekly new-listing monitoring.

Which markets are supported?

Manual city/state search remains designed for US markets. URL mode follows the exact market in the pasted source page: crexi.com plus LoopNet's five official marketplaces (loopnet.com, loopnet.ca, loopnet.co.uk, loopnet.fr, and loopnet.es). This covers every country or location the source actually exposes through those pages; unofficial look-alike domains are rejected rather than scraped as LoopNet.


Technical notes

  • Stack: Apify SDK v3, Crawlee v3, TypeScript, Node.js
  • Sources: public LoopNet and Crexi listing data
  • Output: Apify Dataset with CSV, Excel, JSON, API, and integrations
  • Anti-blocking: Apify proxy support
  • Best use: public on-market listing intelligence, not private off-market ownership data

Support

Open an issue on Apify for bugs, feature requests, additional fields, custom exports, or market-specific improvements.

If this Actor helped your workflow, an honest Apify review helps other CRE teams evaluate it and helps prioritize maintenance.

Built for commercial real estate teams that want cleaner LoopNet and Crexi data without rebuilding the same spreadsheet every morning.