LoopNet $1.2๐Ÿ’ฐ URL | Search | Enriched Output avatar

LoopNet $1.2๐Ÿ’ฐ URL | Search | Enriched Output

Pricing

from $1.20 / 1,000 results

Go to Apify Store
LoopNet $1.2๐Ÿ’ฐ URL | Search | Enriched Output

LoopNet $1.2๐Ÿ’ฐ URL | Search | Enriched Output

From $1.2/1K. Scrape LoopNet across the US including office, retail, industrial, multifamily, land, and hotels. Search by city or URL. Extract 25+ fields such as address, price, size, broker contact, and photos, with optional detail enrichment for cap rate, year built, class, and description.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

11

Monthly active users

2 days ago

Last modified

Share

LoopNet Commercial Properties Scraper

Pull commercial property listings from LoopNet across the United States, Canada (loopnet.com) and the United Kingdom / international markets (loopnet.co.uk): offices, retail, industrial, multifamily, land, hotels and more. Search by location or paste your own LoopNet URLs. Returns 30+ fields per listing including address, price, size, broker contacts, photos and a full description. Tuned for fast, low-cost, stable runs.

Why this scraper

  • Two markets, one actor. Choose loopnet.com (US / Canada) or loopnet.co.uk (UK / international); URL mode auto-detects the site per link.
  • Rich results without extra fetches. On the UK site every result already carries title, address, size range, full description and broker names, so the default run is fast and cheap with detail fetching off.
  • 30+ fields per listing: location, price, size, year built, building class, broker contacts, photos, coordinates and more.
  • Two modes: search by location and filters, or paste specific search / listing URLs (multiple URLs supported).
  • Resilient connections. Connections are managed automatically to keep results flowing.
  • Predictable cost. One small default result cap, per-record output, and an optional per-listing detail surcharge only when you turn detail fetching on.

Data you get

Sample shape, values are illustrative placeholders, not from a live listing.

FieldExample
id00000001
urlhttps://www.loopnet.co.uk/listing/sample-road-london/00000001/
titleSample Logistics Park, Unit 1
listingTypefor-lease
propertyTypeindustrial-properties
listingTypeNameIndustrial to Let
addressRawLondon, AA0 0AA
cityLondon
zipCodeAA0 0AA
countryGB
pricenull
priceRawยฃ00.00 - ยฃ00.00 sq ft pa
sizeSqftMin1000
sizeSqftMax25000
size1,000 - 25,000 sq ft
brokerNames["Sample Agency", "Example Partners"]
descriptionFull listing description text appears here.
primaryPhotohttps://images.loopnet.co.uk/i2/000000000/117/sample.jpg
stateCA (US listings; UK uses postcode)
latitude / longitude51.5000 / -0.1000 (US: included by default; UK: with detail fetch)
brokerPhone+440000000000 (with detail fetch)
scrapedAt2026-01-01T00:00:00.000Z
changeTypeNEW (only present when incrementalMode is on โ€” see below)
changedFields, firstSeenAt, lastSeenAtincremental mode only

How to use

Search the UK site (nationwide industrial to let):

{
"mode": "search",
"site": "co-uk",
"locations": ["united-kingdom"],
"listingType": "for-lease",
"propertyType": "industrial-properties",
"maxListings": 20
}

Search a specific UK city (use the full location slug):

{
"mode": "search",
"site": "co-uk",
"locations": ["london-england--united-kingdom"],
"listingType": "for-lease",
"maxListings": 20
}

Search the US site (loopnet.com), on Apify Residential:

{
"mode": "search",
"site": "com",
"locations": ["los-angeles-ca", "new-york-ny"],
"listingType": "for-sale",
"propertyType": "office-space",
"maxListings": 30,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Paste your own URLs (site auto-detected per link):

{
"mode": "url",
"urls": [
"https://www.loopnet.co.uk/search/commercial-property/london-england--united-kingdom/for-rent/",
"https://www.loopnet.co.uk/search/office-space/manchester-gtm--united-kingdom/for-rent/"
],
"maxListings": 50
}

Input parameters

ParameterTypeDefaultDescription
modestringsearchsearch builds URLs from filters; url passes through your URLs.
sitestringcomcom for US / Canada, co-uk for UK / international. Auto-detected in URL mode.
locationsarray["los-angeles-ca"]Location slugs. US: los-angeles-ca. UK: united-kingdom or london-england--united-kingdom.
listingTypestringfor-salefor-sale, for-lease (For Rent on the UK site), or auction (US only).
propertyTypestringall-commercialOffice, retail, industrial, multifamily, land, hotels, and more.
minPrice / maxPriceintegernonePrice range filter (applied to results).
minSqft / maxSqftintegernoneSize range filter (applied to results).
sortBystringdefaultMost recent, price or size ordering.
urlsarraysampleURL mode only. Multiple URLs supported.
fetchDetailsbooleanfalseAdds coordinates, street, broker phone and JSON-LD fields per listing.
maxPagesinteger(empty)Safety ceiling on results pages per location/URL. Leave empty to walk every result page.
maxListingsinteger20Stop after this many listings. 0 = unlimited.
resumeFromRunIdstring(empty)A previous run ID or dataset ID to continue a full-catalogue walk across separate runs. Listings already collected there (matched by id) are skipped, so this run only saves the new ones.
incrementalModebooleanfalseTurn on for recurring/scheduled monitoring of the SAME search. Classifies each listing as NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED against the actor's own remembered state, instead of you pasting a run/dataset ID every time.
stateKeystring(empty)Incremental mode only. Names a monitoring campaign so its state stays stable, or to deliberately share state across differently-configured runs. Leave empty to derive a key automatically from the site/locations/filters/fetchDetails.
emitUnchangedbooleanfalseIncremental mode only. Also return (and bill) listings that have not changed since the last run, marked UNCHANGED.
emitExpiredbooleanfalseIncremental mode only. Also return (and bill) listings that were tracked before but are no longer found, marked EXPIRED. Only produced once a run fully scans the tracked search.
proxyobjectResidentialConnection settings, see below.

Resuming a full-catalogue walk

For an unbounded pull (maxPages empty, maxListings: 0), two things protect a long run:

  • resumeFromRunId lets you continue in a brand-new run: paste the ID of a previous run (or its dataset), and this run skips every listing id already saved there, appending only new listings.
  • A checkpoint is saved automatically as the run progresses. If the run is interrupted by an Apify platform migration or you click Resurrect on a failed run, it picks back up in the same run without re-saving (or re-charging for) listings it already collected. No input is needed for this; it's automatic.

Incremental & dedup mode (recurring monitoring)

Distinct from resumeFromRunId above, which continues ONE specific interrupted run. incrementalMode is for scheduling this actor to run the SAME search again and again (daily/weekly) and getting only what changed:

  • The first run returns every matching listing marked changeType: "NEW".
  • Later runs normally return only NEW, UPDATED, and REAPPEARED listings โ€” unchanged listings are suppressed (not pushed, not billed) unless you turn on emitUnchanged.
  • Every dataset row gains changeType, changedFields, firstSeenAt, and lastSeenAt while incremental mode is on. With it off, output is unchanged.
  • State is kept per stateKey (or an automatic hash of site/locations/filters/fetchDetails) in a dedicated key-value store, so it never costs extra requests against LoopNet.
  • A detail page is still fetched (and used to compute the change fingerprint) for a listing that turns out UNCHANGED, but that listing is neither pushed nor charged the detail-enrichment surcharge.
  • emitExpired only fires once a run has fully scanned the tracked search โ€” a page-capped, resumed, or partial run leaves previously-tracked listings' state as-is instead of guessing they are gone.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ€” the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record โ€” not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output example

Sample shape, values are illustrative placeholders, not from a live listing.

{
"id": "00000001",
"url": "https://www.loopnet.co.uk/listing/sample-road-london/00000001/",
"title": "Sample Logistics Park, Unit 1",
"listingType": "for-lease",
"propertyType": "industrial-properties",
"listingTypeName": "Industrial to Let",
"addressRaw": "London, AA0 0AA",
"city": "London",
"state": null,
"zipCode": "AA0 0AA",
"country": "GB",
"price": null,
"priceRaw": "ยฃ00.00 - ยฃ00.00 sq ft pa",
"priceUnit": "per_sqft_year",
"size": "1,000 - 25,000 sq ft",
"sizeSqftMin": 1000,
"sizeSqftMax": 25000,
"brokerNames": ["Sample Agency", "Example Partners"],
"description": "Full listing description text appears here.",
"primaryPhoto": "https://images.loopnet.co.uk/i2/000000000/117/sample.jpg",
"latitude": 51.5000,
"longitude": -0.1000,
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Connection

This actor needs Apify Residential proxy (Starter plan or higher). Both sites work on the Residential default; regional connections are handled automatically, so leave the connection as is for most runs.

  • loopnet.co.uk (UK / international) runs on Apify Residential out of the box.
  • loopnet.com (US / Canada) also runs on Apify Residential. If a US run occasionally returns zero results during heavy traffic periods, simply re-run, or optionally supply your own residential proxy URLs in the connection field (proxyUrls) for extra headroom.

If a run returns zero results, the dataset includes a single record noting what to adjust.