LoopNet Commercial Property Scraper avatar

LoopNet Commercial Property Scraper

Pricing

from $0.99 / 1,000 listings

Go to Apify Store
LoopNet Commercial Property Scraper

LoopNet Commercial Property Scraper

Scrape LoopNet US and UK commercial real estate listings, sale/lease details, tax records, and broker directories. Export as JSON, CSV, or Excel.

Pricing

from $0.99 / 1,000 listings

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

LoopNet Commercial Property Scraper

Extract commercial real estate data from LoopNet — the largest commercial property marketplace in the US, now covering LoopNet's UK site too. This LoopNet scraper pulls sale and lease listings, US tax/assessor property records, and commercial real estate broker directories into clean, structured JSON — no LoopNet API key required.

Search by US state/city or UK city, paste any LoopNet search or listing URL, and get address, price, size, property type, broker, and a full property-facts table (sale terms, building class, tenure, year built) per listing.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor: Use the Apify actor parsebird/loopnet-scraper via ApifyClient — example: client.actor("parsebird/loopnet-scraper").call(run_input={"startUrls": [{"url": "https://www.loopnet.com/search/land/usa/for-sale/"}], "maxItems": 50}); key inputs are startUrls (array of LoopNet search/listing/property-record/broker-directory URLs), State + City (string, search without a URL), searchQuery (string, free text like "office space Austin Texas"), addresses (array of strings, geocoded to the nearest city), includeListingDetails (boolean, fetch full property-facts table + description + photos), moreResults (boolean, page past the first few pages), maxItems (integer, cap per start URL); output fields include propertyId, listingUrl, address, city, region, country, propertyType, transactionType, price, brokerName, brokerCompany, photo/photos, and (when includeListingDetails is on) a facts object with the full property-facts table; get an API token at https://console.apify.com/account/integrations and see the full API spec on the actor's API tab.

What does LoopNet Commercial Property Scraper do?

LoopNet lists hundreds of thousands of commercial properties for sale and lease across the US and UK, plus a public directory of commercial real estate brokers. This scraper automates pulling that data at scale:

  • 🏢 US + UK commercial listings — office, retail, industrial, land, multifamily, hospitality, and specialty properties, for sale or for lease
  • 📄 Full listing details — description, property-facts table (price, size, sale/lease terms, tenure, year built, building class), photos, and portfolio child properties, when you turn on "Fetch full listing details"
  • 🧾 US tax/assessor property records — parcel data, zoning, CBSA, submarket, and 1/3/5-mile demographics from LoopNet's /property/ pages
  • 👤 Broker directory — name, company, location, phone, and languages from LoopNet's public /commercial-real-estate-brokers/ pages
  • 🔎 Multiple ways to search — paste a LoopNet URL, pick a US State/City, type a free-text query like "retail space Austin Texas", or supply street addresses (geocoded to their city)
  • 📅 Scheduled monitoring — re-run on a schedule and get only new listings, price-change flags, or a feed of listings that disappeared (closed/sold/leased) since the last run

Since LoopNet has no public API, this actor reads the same server-rendered pages a browser does and normalizes them into rows — the closest thing to a LoopNet API you'll find, ready to plug into a spreadsheet, database, or BI tool.

Supported LoopNet URLs

URL patternRegionBehavior
/search/{property-type}/{state}/for-sale|for-lease/USSearch, paginates /2/, /3/, …
/search/{property-type}/{city}--united-kingdom/for-sale|for-rent/UKSearch, same pagination
/Listing/{slug}/{id}/US + UKSingle listing — full property-facts table
/property/{slug}/{parcel-id}/US onlyTax/assessor property record
/commercial-real-estate-brokers/...USBroker directory, paginates /2/, /3/, …

US property-type slugs: commercial-real-estate (all types), office-space, retail-space, industrial-properties, land, multifamily-properties, hospitality-properties, specialty-properties. UK property-type slugs: commercial-property (all types), office-space, retail-space, industrial-space, land, coworking-space. LoopNet's /biz/businesses-for-sale/ section is a separate, fully client-rendered app with no server-rendered listing data and is not supported by this actor.

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayNoLoopNet search, listing, property-record, or broker-directory URLs
searchQuerystringNoFree text, e.g. "office space Austin Texas"
addressesarrayNoStreet addresses, geocoded to their city
searchTypestringNofor-salefor-sale / for-lease / auctions (Filter mode only)
StatestringNononeUS state, for searching without a URL
CitystringNoNarrows State to one city
maxItemsintegerNo10000Max items per start URL
moreResultsbooleanNofalsePage past the first few pages
includeListingDetailsbooleanNofalseFetch each listing's full page
includePortfolioPropertiesbooleanNofalseInclude portfolio child properties
listedInLastDaysintegerNo0Keep only recently listed properties (needs listing details)
PriceMin / PriceMaxintegerNoPost-filter on scraped price
BuildingSizeRangeMin / MaxintegerNoPost-filter on scraped building size
monitoringModebooleanNofalsePush only listings new since the last run
enablePriceMonitoringbooleanNofalseFlag price changes vs. the last run
transactionTrackingModebooleanNofalsePush only listings that disappeared since the last run
downloadImagesbooleanNofalseSave photos to a key-value store
maxUnblockerRequestsintegerNo60Cost cap on proxy requests
proxyobjectNoUnblockerProxy configuration — keep the default

See the Input tab for the full list, including performance tuning (maxConcurrency, maxRequestRetries) and image options (maxImages, storeName).

Output example

{
"propertyId": "37936068",
"listingUrl": "https://www.loopnet.com/Listing/14211-14301-Arnold-Avenue/37936068/",
"address": "14211 & 14301 Arnold Avenue",
"city": "Glen Ellen",
"region": "CA",
"country": "US",
"propertyType": "",
"transactionType": "For Sale",
"price": "$8,025,000",
"brokerName": "Marshall Kelly",
"brokerCompany": "Keegan & Coppin Inc.",
"photo": "https://images1.loopnet.com/i2/.../image.jpg",
"facts": {
"totalBuildingSize": "18,354 SF",
"totalLandArea": "3.99 AC",
"saleType": "Investment or Owner User",
"saleStatus": "Active"
},
"sourceCountry": "US",
"scrapedAt": "2026-09-12T01:19:29.972Z"
}

facts only appears when includeListingDetails is on, and its keys vary by property type and country (a UK lease listing surfaces tenure/tenancy/rentableBuildingArea instead of saleType/saleStatus) — the actor exposes whatever LoopNet's own property-facts table contains rather than a fixed field list. Broker-directory rows and US property-record rows use a different shape — see the dataset preview after a run, or the API tab, for full examples. Download results as JSON, CSV, Excel, HTML, or XML from the Storage tab, or pull them via the API.

Use cases

  • Feed a CRE brokerage's internal deal-flow tool with new sale/lease listings by state or metro
  • Build a market-comps dataset (price, price/SF, size, cap rate where listed) for underwriting
  • Track a specific portfolio or competitor's listings for price changes and closings with monitoring mode
  • Build a broker contact list by state for outbound prospecting
  • Pull US tax/assessor data (zoning, CBSA, demographics) alongside listing data for site-selection research

How it works

  1. Give the actor Start URLs (LoopNet search/listing/property-record/broker-directory pages), a State/City, a searchQuery, or addresses.
  2. It resolves any query/address/State input into a LoopNet search URL, then requests each page through Apify's Unblocker proxy (LoopNet blocks every other proxy tier).
  3. Search-result pages are parsed directly from server-rendered HTML — no LoopNet login required.
  4. When includeListingDetails is on, each listing's own page is fetched for the full property-facts table, description, and photos.
  5. Results are pushed to the dataset as they're found; with monitoringMode / enablePriceMonitoring / transactionTrackingMode, each run is diffed against the previous run's snapshot.
  6. Download the dataset as JSON, CSV, or Excel, or read it through the Apify API / integrations (Zapier, Make, Google Sheets, and 30+ more).

How much does it cost to scrape LoopNet?

This actor uses Apify's pay-per-event pricing — you pay per scraped item, not per platform compute unit. Plain search results are inexpensive; turning on includeListingDetails costs far more per item because each one needs its own extra page fetch through the paid Unblocker proxy (the only proxy tier LoopNet doesn't block) — factor that in before enabling it on a large run.

EventFires whenFreeBronzeSilverGold
listing-scrapedOnce per property/listing/property-record row pushed$1.39$1.29$1.19$0.99
listing-detail-scrapedIn addition to listing-scraped, when includeListingDetails fetched that item's own page$45.00$39.00$37.00$35.00
monitoring-listing-scrapedOnce per row pushed while monitoringMode or transactionTrackingMode is on (cheaper — lower volume by design)$0.99$0.89$0.89$0.89
broker-scrapedOnce per broker-directory row pushed$3.49$3.29$3.09$2.89

Prices are per 1,000 events. Set a Max cost per run limit in the Console (Actor run → Limits) so an unexpectedly large search — especially one with includeListingDetails on — can't run past your budget; the actor also checks Apify's spending-limit signal after every charge and stops immediately once it's reached.

Input / Output

Configure Start URLs, State/City, or a search query in the Input tab — the schema includes prefilled example values so a default run works immediately. Every run's results land in the Storage tab, downloadable as JSON, CSV, Excel, HTML, or XML, or queryable live via the Apify API.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/loopnet-scraper").call(run_input={
"startUrls": [{"url": "https://www.loopnet.com/search/office-space/tx/for-lease/"}],
"maxItems": 200,
"includeListingDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["address"], item["price"])

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_API_TOKEN>" });
const run = await client.actor("parsebird/loopnet-scraper").call({
startUrls: [{ url: "https://www.loopnet.com/search/office-space/tx/for-lease/" }],
maxItems: 200,
includeListingDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Scraping publicly available data is generally legal, but you're responsible for how you use it. This actor only reads pages LoopNet serves to any visitor without logging in — it does not bypass a login wall, CAPTCHA-solve to access gated content, or access data behind LoopNet's CoStar account login (that's why broker phone/email on listing pages, which LoopNet gates behind a login, are not included — see the FAQ). Always review LoopNet's Terms of Use and comply with applicable law (including GDPR for UK/EU data) before scraping or reusing this data. See Apify's web scraping legality guide for more.

FAQ

Why don't I see broker phone or email on listing rows? LoopNet only shows a broker's name/company/photo to anonymous visitors on the listing page itself — phone and email require being logged into a CoStar/LoopNet account, which this actor does not do. Broker phone numbers (not email) are available separately from LoopNet's public broker-directory pages (/commercial-real-estate-brokers/...), which this actor supports as its own row type.

Why is facts sometimes empty? facts is only populated when includeListingDetails is on, since it comes from the listing's own page, not the search-result list.

LoopNet blocks my own scraper — why does this actor work? LoopNet runs Akamai Bot Manager and returns "Access Denied" to ordinary datacenter and residential IPs (we verified this directly). This actor routes every request through Apify's paid Unblocker proxy group, which is why the default Proxy configuration should be left as-is.

Does this cover LoopNet's UK site and Realla? Yes — UK searches and listings are supported via loopnet.com's own UK URLs. realla.co.uk and loopnet.co.uk point at the same underlying CoStar dataset since the 2018 Realla acquisition, but the listing data itself lives at loopnet.com UK URLs, so use those for best results.

Can I schedule recurring runs? Yes — use Apify's Scheduler to run daily or weekly, and turn on monitoringMode / enablePriceMonitoring / transactionTrackingMode to get only what changed each time.

Something looks wrong or missing — how do I report it? Open an issue on the actor's Issues tab in Apify Console. LoopNet's page structure does change occasionally; report the URL that failed and we'll take a look.