# LoopNet US + UK + Realla \[$1.5💰] Commercial Property Scraper (`memo23/loopnet-scraper-ppe`) Actor

💰 $1.50 per 1,000 results, scrape commercial property from LoopNet (US) AND LoopNet UK / Realla (UK) in one actor — the only Apify scraper bundling both. Lease & sale listings across all US states + every UK city. Rich rows: address, geo, sqft, asking rent/price, broker, EPC. $1.50/1k.

- **URL**: https://apify.com/memo23/loopnet-scraper-ppe.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 268 total users, 87 monthly users, 96.7% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## LoopNet US + UK + Realla Commercial Property Scraper

**One actor, two continents.** Scrape commercial real estate from **LoopNet (US)** and **LoopNet UK / Realla.co.uk** in the same run. Office, retail, industrial, land, coworking — for sale or to let — across all 50 US states and every UK city. Rich rows with address, lat/lng, sqft, asking rent/price, broker contact, photos, EPC rating (UK), property records (US). $1.50 per 1,000 results, pure HTTP, no browser.

#### How it works

![How LoopNet US + UK Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-loopnet.png)

#### ✨ Why use this scraper?

Building UK + US commercial-property data sets, tracking asking rents, sourcing brokers across both markets, or stress-testing valuations against live comparables? Most LoopNet scrapers are US-only or rebrand themselves under one country's flag. This actor is **the only Apify scraper that bundles LoopNet US + LoopNet UK (Realla) in a single run** — and the only one that still works in 2026 against CoStar's current Akamai stack.

- 🌍 **Two markets, one actor.** Paste US URLs (`/search/.../usa/`), UK URLs (`/search/commercial-property/{city}--united-kingdom/`), or both in the same `startUrls` list.
- 🇬🇧 **Realla.co.uk = LoopNet UK since 2018.** CoStar acquired Realla, consolidated inventory under LoopNet UK. This actor uses the live LoopNet UK endpoint (same backend that powers `realla.co.uk`).
- 📋 **Live `/services/search` JSON API.** Not DOM-scraping fragile placards — the actor extracts CSRF tokens + posts to LoopNet's own search endpoint (the one the website itself uses for pagination).
- 🏢 **Optional listing-detail enrichment.** Toggle `includeListingDetails: true` and each row carries full marketing description, photos, broker contact, lease terms, EPC rating (UK), parcel data + demographics (US).
- 🔁 **Akamai-cleared.** Apify Residential (default pool or US) gets through cleanly. Apify Residential **GB pool is on Akamai's blocklist** for this site — use the default pool or US instead.
- 📤 **Clean exports.** One row per property to the dataset. JSON during the run, CSV at the end.

#### 🎯 Use cases

| Team | What they build |
|---|---|
| **US CRE brokers & investors** | National search across LoopNet's US inventory — filter by state, market, sub-market, price band, sqft |
| **UK CRE analysts** | London / Manchester / Birmingham / Edinburgh / Glasgow asking-rent benchmarks for office, retail, industrial |
| **Multi-region funds** | Build comparable sets that span US + UK markets in one dataset (same row shape, regional fields where they apply) |
| **Property data platforms** | Power your listings UI with a fresh dual-market feed of commercial inventory |
| **Broker prospecting** | Extract broker name + agency + contact info from listing pages, pipeline by market or sector |
| **Geospatial analytics** | Every detail row carries `Latitude` + `Longitude` (CoStar's verified geocoding) |

#### 📥 Supported inputs

| URL pattern | Region | Behaviour |
|---|---|---|
| `/search/commercial-real-estate/{state}/for-sale/` | US | Listing crawl, paginates `/2/`, `/3/`, … |
| `/search/{property-type}/{state}/{for-sale\|for-lease}/` | US | Property-type-filtered listing crawl |
| `/search/commercial-property/{city}--united-kingdom/for-{rent,sale}/` | UK | UK listing crawl |
| `/search/{office-properties\|industrial-space\|coworking-space}/{city}--united-kingdom/...` | UK | UK sub-category listing crawl |
| `/Listing/{slug}/{id}/` | US + UK | Direct property-detail URL — single row |
| `/property/{slug}/{parcel-id}/` | US only | Tax/assessor property record (US-specific) |
| `/biz/businesses-for-sale/` | US | Businesses-for-sale listing crawl |
| `/commercial-real-estate-brokers/...` | US | Broker directory crawl |
| `realla.co.uk` / `loopnet.co.uk` paths | UK | Accepted — recommend loopnet.com UK paths instead (where the listing JSON actually lives) |

Easiest workflow: apply filters in the browser, copy the resulting URL, paste into `startUrls`. The actor classifies each URL automatically.

#### 🔄 How it works (step by step)

1. **Classify** each `startUrl` — US vs UK, listing vs detail vs property-record vs broker page.
2. **Extract criteria** from the rendered HTML — CSRF token, property types, geographic IDs, listing-search-type flags.
3. **POST `/services/search`** — LoopNet's own JSON API, the same endpoint the site uses for pagination on both US and UK pages.
4. **Walk pagination** until `maxItems` per source URL is hit or results run out.
5. **(Optional) Enrich detail pages** when `includeListingDetails: true` — full marketing description, photos, lease terms, broker card, US property records, UK EPC rating.
6. **(Optional) Resolve broker contact** when broker URL is in the input — phone, email, agency, profile photo.
7. **Push to dataset, export at end** — JSON rows during the run, `data.csv` and `data.json` after.

#### ⚙️ Input parameters

##### Core

| Parameter | Type | Default | Description |
|---|---|---|---|
| `urls` (alias of `startUrls`) | array | — | Listing / detail / property-record / broker URLs. US + UK can be mixed freely. |
| `includeListingDetails` | boolean | `false` | When `true`, each row is enriched by visiting the detail page (description, photos, lease terms, broker card, EPC for UK / parcel records for US). Slower, same pricing. |
| `maxItems` | integer | `100` | Hard cap on rows **per source URL**. 3 URLs × `maxItems: 100` → up to 300 rows. Apify pay-per-result limits honoured. |
| `moreResults` | boolean | `false` | Bypass LoopNet's 500-result cap by enumerating sub-filters automatically. |
| `proxy` | object | Apify Residential | **Note:** Apify Residential GB is Akamai-blocked for this site. Leave country empty (default pool) or use US. |

##### Filter mode (used when `urls` is empty)

| Parameter | Type | Description |
|---|---|---|
| `keywords` | string | Free-text keyword (`warehouse`, `daycare`, `auto repair`). |
| `location` | string | City + state for US (`Sacramento, CA`); city + country for UK (`London, England`). |
| `propertyTypes` | array | `Office`, `Retail`, `Industrial`, `Land`, `Multifamily`, `Special Purpose`, `Health Care`, `Hospitality`, `Sports & Entertainment`. |
| `searchType` | string | `for-sale` or `for-lease`. |
| `PriceMin` / `PriceMax` | string | Price range. |
| `BuildingSizeRangeMin` / `BuildingSizeRangeMax` | string | Building size in sq ft. |
| `addresses` | array | Specific addresses to look up via property-record search (US-specific). |
| `State` / `City` | string | Geographic filter. |

##### Performance & misc

| Parameter | Type | Default | Description |
|---|---|---|---|
| `downloadImages` | boolean | `false` | Download property photos to Apify Key-Value Store. |
| `maxImages` | integer | `10` | Cap on photos per row. |
| `maxConcurrency` / `minConcurrency` | integer | `20` / `1` | Parallel HTTP request limits. Sweet spot 4–10 via Apify Residential. |
| `maxRequestRetries` | integer | `100` | Retries on Akamai 403s, proxy failures, HTTP/2 resets. |
| `enablePriceMonitoring` | boolean | `false` | Track price changes vs prior runs. |
| `monitoringMode` | boolean | `false` | Differential mode — emit only new/changed listings. |

#### 📊 Output overview

One row per commercial property. Two field-density tiers depending on `includeListingDetails`:

- **Light** (`false`) — listing-page placard data: `propertyId`, `listingUrl`, `propertyType`, `brokerName`, partial address, price text. Fast, ~10× throughput.
- **Full** (`true`) — adds: address parts + lat/lng, sqft, year built, lease terms, broker contact, photos, description (HTML), region-specific extras (EPC for UK / parcel records + demographics for US).

US and UK rows share the **same row shape** — the parser was built around a unified schema rather than two separate ones. Region-specific extras are emitted in nested fields (`propertyRecord` for US, `ukSpecifics` for UK) that are null in the other region.

#### 📦 Output sample — UK property (full mode)

```jsonc
{
  "propertyId": "40367610",
  "listingUrl": "https://www.loopnet.com/Listing/13-Gascoigne-Rd-Barking/40367610/",
  "address": "13 Gascoigne Road",
  "city": "Barking",
  "region": "London",
  "country": "United Kingdom",
  "postalCode": "IG11 7DR",
  "latitude": 51.5364,
  "longitude": 0.0807,
  "propertyType": "Industrial",
  "propertySubType": "Warehouse",
  "yearBuilt": "1985",
  "totalSize": 14580,
  "sizeFormatted": "14,580 SF",
  "listingType": "For Lease",
  "priceText": "£12.50/SF/YR",
  "currency": "GBP",
  "rentPerSF": 12.50,
  "brokerName": "Richard Harman",
  "brokerCompany": "Avison Young",
  "description": "<p>Prime industrial unit fronting Gascoigne Road in Barking…</p>",
  "photos": ["https://images1.loopnet.com/.../1.jpg", "…"],
  "ukSpecifics": {
    "leaseTerm": "5–10 years",
    "businessRates": "TBC",
    "serviceCharge": "TBC",
    "epcRating": "C"
  },
  "datePosted": "2026-04-12T00:00:00Z",
  "scrapedAt": "2026-05-16T12:00:00.000Z"
}
````

#### 📦 Output sample — US property (full mode)

```jsonc
{
  "propertyId": "31948105",
  "listingUrl": "https://www.loopnet.com/Listing/1435-River-Ave-Camden-NJ/31948105/",
  "address": "1435 River Ave",
  "city": "Camden",
  "region": "NJ",
  "country": "USA",
  "postalCode": "08105",
  "latitude": 39.9495,
  "longitude": -75.1075,
  "propertyType": "Industrial",
  "totalSize": 28000,
  "sizeFormatted": "28,000 SF",
  "listingType": "For Sale",
  "priceText": "$2,400,000",
  "currency": "USD",
  "brokerName": "Anthony DeMarco",
  "brokerCompany": "Wolf Commercial Real Estate",
  "description": "<p>Industrial property in Camden's River Ward…</p>",
  "propertyRecord": {
    "parcelId": "08-0123-04567",
    "yearBuilt": "1962",
    "assessedValue": "$1,850,000",
    "taxAmount": "$42,560",
    "zoning": "I-2 Heavy Industrial",
    "cbsa": "Philadelphia-Camden-Wilmington, PA-NJ-DE-MD",
    "submarket": "South Camden",
    "demographics": { "oneMile": { /* … */ }, "threeMile": { /* … */ } }
  },
  "scrapedAt": "2026-05-16T12:00:00.000Z"
}
```

#### 🗂 Key output fields

| Group | Fields |
|---|---|
| **Identity** | `propertyId`, `listingUrl`, `brandedName`, `metaTitle` |
| **Address + geo** | `address`, `city`, `region`, `country`, `postalCode`, `latitude`, `longitude` |
| **Property** | `propertyType`, `propertySubType`, `yearBuilt`, `totalSize`, `sizeFormatted`, `lotSize`, `buildingClass` |
| **Compensation** | `listingType` (`For Lease` / `For Sale`), `price`, `priceText`, `currency`, `rentPerSF`, `rentPeriod` |
| **Broker** | `brokerName`, `brokerCompany`, `brokerPhone`, `brokerEmail` |
| **Content + media** | `description` (HTML), `photos[]`, `photosCount` |
| **UK-specific** *(`ukSpecifics.*` when UK URL)* | `leaseTerm`, `availableDate`, `businessRates`, `serviceCharge`, `epcRating` |
| **US-specific** *(`propertyRecord.*` when US URL with tax-record path)* | `parcelId`, `assessedValue`, `taxAmount`, `zoning`, `cbsa`, `submarket`, `demographics.{oneMile,threeMile,fiveMile}`, `publicTransportation.{commuterRail,airport,freightPorts}` |
| **Timing** | `datePosted`, `dateUpdated` (ISO 8601), `scrapedAt` |

#### 💰 Pricing

**$1.50 per 1,000 results.** Pay only for rows in the dataset, not for crawl attempts.

| Event | Charged when | Rate |
|---|---|---|
| `apify-default-dataset-item` (Result) | Property row written to dataset | $1.50 / 1,000 |
| `apify-actor-start` (Infrequent) | Each run starts | $0.007 / run |
| `additional-data` (Monitoring) | Each item check in monitoring mode | $1.00 / 1,000 |

Cost examples:

- 100 UK office properties in London → ~$0.15
- 1,000 US industrial properties across CA/NV/AZ → ~$1.50
- Daily monitoring of 500 new US + UK properties → ~$0.75/day ≈ $22/month

`includeListingDetails: true` doesn't change pricing — same rate whether you enrich or not.

#### ❓ FAQ

**Why does the same actor handle US + UK + Realla?**
Because LoopNet's `/services/search` JSON API is locale-agnostic — it accepts whatever criteria the page renders. US pages render US criteria, UK pages render UK criteria, both feed the same backend. The actor doesn't have to "know" which country a URL belongs to.

**What is Realla?**
Realla.co.uk was an independent UK commercial property platform until CoStar Group acquired it in 2018. CoStar consolidated Realla's inventory under LoopNet UK. The `realla.co.uk` domain still resolves but serves SEO hub pages — actual listings render at `loopnet.com` with UK-locale paths (which is what this actor uses).

**Can I scrape `realla.co.uk` URLs directly?**
Technically yes (the URL classifier accepts them), but the page body is a marketing hub without embedded listing JSON, so the actor falls back to defaults. Use `loopnet.com/.../united-kingdom/...` URLs for real data.

**Does it work for `loopnet.ca` (Canada) or French Canada listings?**
Yes — the same architecture serves `loopnet.ca` (en-CA + fr-CA `/chercher/immobilier-commercial/`). Not officially covered in the title but the actor handles it if you paste those URLs.

**What's the realistic throughput?**
Default `maxConcurrency: 20`. ~5–15 properties/sec sustained on Apify Residential. 1,000 properties in 3–10 min; 10,000 in 30–60 min.

**Why is Apify Residential GB blocked?**
Akamai's bot policy on this site filters specific IP pools. The GB pool happens to be on it. Default residential pool (no country lock) or US pool works cleanly for both US and UK URLs.

**Can I get private listings, premium recruiter listings, or off-market deals?**
No. The actor only accesses publicly available pages — no authenticated endpoints, no broker-only views.

#### 💬 Support

- For issues or feature requests, please use the [**Issues**](https://console.apify.com/actors/pIVhuvHZkW2Llfjrr/issues) tab on the actor's Apify Console page.
- Author's website: <https://muhamed-didovic.github.io/>
- Email: <muhamed.didovic@gmail.com>

#### 🛠 Additional services

- Custom output shape, additional fields, country expansion (Canada, France, Spain commercial), or a private build: <muhamed.didovic@gmail.com>
- Need other CRE platforms scraped (Crexi, CoStar paid, Rightmove Commercial, Zoopla Commercial, OnTheMarket Commercial, Movehut, CommercialPeople)? Drop an email.
- For API access (no Apify fee, just a usage fee for the API): <muhamed.didovic@gmail.com>

#### 🔎 Explore more scrapers

If this LoopNet US + UK + Realla scraper was useful, see other scrapers and actors at [memo23's Apify profile](https://apify.com/memo23) — real estate (residential + commercial), job boards, reviews, and more.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by LoopNet, Realla, CoStar Group Inc.**, or any of their subsidiaries or related entities. All LoopNet-, Realla-, and CoStar-related trademarks, service marks, trade names, and logos are the property of their respective owners and are used here solely for descriptive purposes — to identify the public commercial-property listings from which this scraper extracts data.

This Actor accesses only publicly available commercial property listing pages on `www.loopnet.com`, `www.loopnet.co.uk`, `realla.co.uk`, and `loopnet.ca`. **You are solely responsible** for ensuring that your use of the data complies with each site's Terms of Service, applicable copyright law, the UK Database Directive, GDPR (where applicable), the US Computer Fraud and Abuse Act, and any other regulations that may apply to your jurisdiction or use case. Do not use this Actor to bulk-republish copyrighted content, to harass brokers or property owners, to circumvent any rate-limiting or technical protection measure intentionally imposed by the source sites, or to enable unsolicited outreach in violation of CAN-SPAM / UK PECR / GDPR consent rules.

The author provides this Actor "as is", without warranty of any kind, and disclaims any liability for damages arising from its use.

***

### SEO Keywords

loopnet scraper, loopnet api, loopnet.com scraper, loopnet uk scraper, loopnet.co.uk scraper, realla scraper, realla.co.uk scraper, costar uk data, us commercial real estate scraper, uk commercial property scraper, uk commercial real estate api, london commercial property api, manchester commercial property scraper, birmingham commercial property scraper, california commercial property scraper, texas commercial property scraper, ny commercial property scraper, fl commercial property scraper, us cre data, uk cre data, commercial property records us, parcel data scraper, broker directory loopnet, apify loopnet actor, lease vs sale commercial property

# Actor input Schema

## `startUrls` (type: `array`):

Mix any combination of: (a) US listing URLs (`/search/.../usa/for-sale/`), (b) US Listing detail URLs (`/Listing/{slug}/{id}/`), (c) US property records (`/property/{slug}/{parcel-id}/`), (d) businesses-for-sale, (e) US broker directory pages, (f) **UK listing URLs** (`/search/commercial-property/{city}--united-kingdom/...`), (g) UK detail listing URLs, (h) UK sub-category URLs (office / retail / industrial / land / coworking). `realla.co.uk` and `loopnet.co.uk` paths point at the same CoStar dataset since the 2018 Realla acquisition; use the loopnet.com URLs (where the listing JSON actually lives) for best results.

## `addresses` (type: `array`):

Addresses to scrape - should be in format 123 Main St, City, State

## `searchQuery` (type: `string`):

Free-text search, e.g. 'office space Canary Wharf London' or 'retail space Austin Texas'. The actor infers the property type and location, then searches LoopNet. Use this when you don't have a specific LoopNet search URL or address.

## `moreResults` (type: `boolean`):

Enable this option to retrieve the maximum number of results possible. Note that LoopNet limits results to 500 per search.

## `includeListingDetails` (type: `boolean`):

Set to true if you want to include listing details of each search result.

## `includePortfolioProperties` (type: `boolean`):

When a LoopNet listing is a portfolio (multiple properties bundled under one URL), enable this to scrape each individual property as its own dataset record. Each child carries isPortfolioMember, parentPortfolioUrl, and parentPortfolioId.

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

Maximum listings or items collected per start URL (each entry in startUrls). With multiple URLs, the run can produce up to this many items per URL (for example, 10 × 3 URLs → up to 30 total). If not defined, all items will be scraped.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time. Values below 20 are raised to 20 at runtime.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up. Default 8 — gives Akamai-blocked sessions enough chances to retire and get a fresh residential IP from the proxy gateway, without burning cost on truly broken requests (100 was the old default and was wasteful).

## `PriceMin` (type: `integer`):

Minimum price to scrape.

## `PriceMax` (type: `integer`):

Maximum price to scrape.

## `BuildingSizeRangeMin` (type: `integer`):

Minimum building size to scrape.

## `BuildingSizeRangeMax` (type: `integer`):

Maximum building size to scrape.

## `PriceRangeRateType` (type: `string`):

Price range rate type to scrape.

## `CondosFilter` (type: `string`):

Condos filter to scrape.

## `DateIndicator` (type: `string`):

Date entered to scrape.

## `State` (type: `string`):

Select your state

## `City` (type: `string`):

Enter City to scrape.

## `monitoringMode` (type: `boolean`):

Enable this option to retrieve the maximum number of results possible. Note that LoopNet limits results to 500 per search.

## `enablePriceMonitoring` (type: `boolean`):

If checked, it will only scrape newly listings compared to what has been scraped in previous runs.

## `transactionTrackingMode` (type: `boolean`):

When enabled, the dataset emits ONLY the closed listings (not the full inventory). Each output item includes the original listing details plus closeStatus (removed / pending / under\_contract / sold / leased), closeDetectedAt, firstSeenAt, lastSeenAt, and previousPrice. The snapshot is auto-keyed by a hash of the input (search URLs / filters), so the same scheduled input always finds its prior snapshot.

## `downloadImages` (type: `boolean`):

Set to true if you want to download images to Apify's Key-Value Store so you can download them to your computer

## `maxImages` (type: `integer`):

Maximum number of images to download per listing.

## `storeName` (type: `string`):

Rule for naming: it can only contain letters 'a' through 'z', the digits '0' through '9', and the hyphen ('-') but only in the middle of the string (e.g. 'my-value-1')
Assign a custom name to the Key-Value Store where your scraped listings will be saved. This ensures:

1. **Persistent Storage**: Enables long-term retention of listings, beyond default storage limits.
2. **Project Management**: Separate datasets by using unique names for different projects or analyses.
3. **Data Reuse**: Easily reference and reuse stored data without overwriting.
   (If left blank, the default storage will be used with standard retention limits.)

## `cookies` (type: `array`):

<p>Cookie used to authorize actor with crexi.com. Install <a rel="noopener noreferrer nofollow" target="_blank" href="https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg" previewlistener="true">EditThisCookie</a> chrome extension. Login to your crexi.com account. Click on the extension and export the crexi.com cookies. Insert the contents here</p>
## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.loopnet.com/search/land/usa/for-sale/?sk=9546877f65c7a27eccfaa3321135d1dc"
    },
    {
      "url": "https://www.loopnet.com/Listing/1435-River-Ave-Camden-NJ/31948105/"
    },
    {
      "url": "https://www.loopnet.com/property/900-n-18th-st-kansas-city-ks-66102/20209-054121/"
    },
    {
      "url": "https://www.loopnet.com/search/commercial-property/london-england--united-kingdom/for-rent/"
    },
    {
      "url": "https://www.loopnet.com/search/commercial-property/manchester-gtm--united-kingdom/for-sale/"
    },
    {
      "url": "https://www.loopnet.com/search/office-properties/birmingham-wmd--united-kingdom/for-rent/"
    },
    {
      "url": "https://www.loopnet.com/Listing/13-Gascoigne-Rd-Barking/40367610/"
    },
    {
      "url": "https://www.loopnet.com/biz/businesses-for-sale/"
    },
    {
      "url": "https://www.loopnet.com/commercial-real-estate-brokers/united-states/ak/?searchbrokertype=7&language=english"
    }
  ],
  "addresses": [
    "2300 Craftsman Cir, Hyattsville, MD 20781"
  ],
  "moreResults": false,
  "includeListingDetails": false,
  "includePortfolioProperties": false,
  "maxItems": 10000,
  "maxConcurrency": 20,
  "minConcurrency": 1,
  "maxRequestRetries": 8,
  "CondosFilter": "0",
  "DateIndicator": "0",
  "State": "none",
  "monitoringMode": false,
  "enablePriceMonitoring": false,
  "transactionTrackingMode": false,
  "downloadImages": false,
  "maxImages": 10,
  "cookies": [],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.loopnet.com/search/land/usa/for-sale/?sk=9546877f65c7a27eccfaa3321135d1dc"
        },
        {
            "url": "https://www.loopnet.com/Listing/1435-River-Ave-Camden-NJ/31948105/"
        },
        {
            "url": "https://www.loopnet.com/property/900-n-18th-st-kansas-city-ks-66102/20209-054121/"
        },
        {
            "url": "https://www.loopnet.com/search/commercial-property/london-england--united-kingdom/for-rent/"
        },
        {
            "url": "https://www.loopnet.com/search/commercial-property/manchester-gtm--united-kingdom/for-sale/"
        },
        {
            "url": "https://www.loopnet.com/search/office-properties/birmingham-wmd--united-kingdom/for-rent/"
        },
        {
            "url": "https://www.loopnet.com/Listing/13-Gascoigne-Rd-Barking/40367610/"
        },
        {
            "url": "https://www.loopnet.com/biz/businesses-for-sale/"
        },
        {
            "url": "https://www.loopnet.com/commercial-real-estate-brokers/united-states/ak/?searchbrokertype=7&language=english"
        }
    ],
    "addresses": [
        "2300 Craftsman Cir, Hyattsville, MD 20781"
    ],
    "cookies": [],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/loopnet-scraper-ppe").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 = {
    "startUrls": [
        { "url": "https://www.loopnet.com/search/land/usa/for-sale/?sk=9546877f65c7a27eccfaa3321135d1dc" },
        { "url": "https://www.loopnet.com/Listing/1435-River-Ave-Camden-NJ/31948105/" },
        { "url": "https://www.loopnet.com/property/900-n-18th-st-kansas-city-ks-66102/20209-054121/" },
        { "url": "https://www.loopnet.com/search/commercial-property/london-england--united-kingdom/for-rent/" },
        { "url": "https://www.loopnet.com/search/commercial-property/manchester-gtm--united-kingdom/for-sale/" },
        { "url": "https://www.loopnet.com/search/office-properties/birmingham-wmd--united-kingdom/for-rent/" },
        { "url": "https://www.loopnet.com/Listing/13-Gascoigne-Rd-Barking/40367610/" },
        { "url": "https://www.loopnet.com/biz/businesses-for-sale/" },
        { "url": "https://www.loopnet.com/commercial-real-estate-brokers/united-states/ak/?searchbrokertype=7&language=english" },
    ],
    "addresses": ["2300 Craftsman Cir, Hyattsville, MD 20781"],
    "cookies": [],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/loopnet-scraper-ppe").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.loopnet.com/search/land/usa/for-sale/?sk=9546877f65c7a27eccfaa3321135d1dc"
    },
    {
      "url": "https://www.loopnet.com/Listing/1435-River-Ave-Camden-NJ/31948105/"
    },
    {
      "url": "https://www.loopnet.com/property/900-n-18th-st-kansas-city-ks-66102/20209-054121/"
    },
    {
      "url": "https://www.loopnet.com/search/commercial-property/london-england--united-kingdom/for-rent/"
    },
    {
      "url": "https://www.loopnet.com/search/commercial-property/manchester-gtm--united-kingdom/for-sale/"
    },
    {
      "url": "https://www.loopnet.com/search/office-properties/birmingham-wmd--united-kingdom/for-rent/"
    },
    {
      "url": "https://www.loopnet.com/Listing/13-Gascoigne-Rd-Barking/40367610/"
    },
    {
      "url": "https://www.loopnet.com/biz/businesses-for-sale/"
    },
    {
      "url": "https://www.loopnet.com/commercial-real-estate-brokers/united-states/ak/?searchbrokertype=7&language=english"
    }
  ],
  "addresses": [
    "2300 Craftsman Cir, Hyattsville, MD 20781"
  ],
  "cookies": [],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/loopnet-scraper-ppe --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/loopnet-scraper-ppe",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LoopNet US + UK + Realla [$1.5💰] Commercial Property Scraper",
        "description": "💰 $1.50 per 1,000 results, scrape commercial property from LoopNet (US) AND LoopNet UK / Realla (UK) in one actor — the only Apify scraper bundling both. Lease & sale listings across all US states + every UK city. Rich rows: address, geo, sqft, asking rent/price, broker, EPC. $1.50/1k.",
        "version": "0.0",
        "x-build-id": "0EiDbRgyQEuMWBtN8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~loopnet-scraper-ppe/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-loopnet-scraper-ppe",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~loopnet-scraper-ppe/runs": {
            "post": {
                "operationId": "runs-sync-memo23-loopnet-scraper-ppe",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~loopnet-scraper-ppe/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-loopnet-scraper-ppe",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs (US, UK, Realla — all in one actor)",
                        "type": "array",
                        "description": "Mix any combination of: (a) US listing URLs (`/search/.../usa/for-sale/`), (b) US Listing detail URLs (`/Listing/{slug}/{id}/`), (c) US property records (`/property/{slug}/{parcel-id}/`), (d) businesses-for-sale, (e) US broker directory pages, (f) **UK listing URLs** (`/search/commercial-property/{city}--united-kingdom/...`), (g) UK detail listing URLs, (h) UK sub-category URLs (office / retail / industrial / land / coworking). `realla.co.uk` and `loopnet.co.uk` paths point at the same CoStar dataset since the 2018 Realla acquisition; use the loopnet.com URLs (where the listing JSON actually lives) for best results.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "addresses": {
                        "title": "Addresses to search",
                        "type": "array",
                        "description": "Addresses to scrape - should be in format 123 Main St, City, State",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Free-text search query",
                        "type": "string",
                        "description": "Free-text search, e.g. 'office space Canary Wharf London' or 'retail space Austin Texas'. The actor infers the property type and location, then searches LoopNet. Use this when you don't have a specific LoopNet search URL or address."
                    },
                    "moreResults": {
                        "title": "Scrape all possible results (bypass limit of 500 items/listings)",
                        "type": "boolean",
                        "description": "Enable this option to retrieve the maximum number of results possible. Note that LoopNet limits results to 500 per search.",
                        "default": false
                    },
                    "includeListingDetails": {
                        "title": "Include listing details as well",
                        "type": "boolean",
                        "description": "Set to true if you want to include listing details of each search result.",
                        "default": false
                    },
                    "includePortfolioProperties": {
                        "title": "Include individual properties from portfolio listings",
                        "type": "boolean",
                        "description": "When a LoopNet listing is a portfolio (multiple properties bundled under one URL), enable this to scrape each individual property as its own dataset record. Each child carries isPortfolioMember, parentPortfolioUrl, and parentPortfolioId.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max Listings/Items per start URL",
                        "type": "integer",
                        "description": "Maximum listings or items collected per start URL (each entry in startUrls). With multiple URLs, the run can produce up to this many items per URL (for example, 10 × 3 URLs → up to 30 total). If not defined, all items will be scraped.",
                        "default": 10000
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time. Values below 20 are raised to 20 at runtime.",
                        "default": 20
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up. Default 8 — gives Akamai-blocked sessions enough chances to retire and get a fresh residential IP from the proxy gateway, without burning cost on truly broken requests (100 was the old default and was wasteful).",
                        "default": 8
                    },
                    "PriceMin": {
                        "title": "Min Price",
                        "type": "integer",
                        "description": "Minimum price to scrape."
                    },
                    "PriceMax": {
                        "title": "Max Price",
                        "type": "integer",
                        "description": "Maximum price to scrape."
                    },
                    "BuildingSizeRangeMin": {
                        "title": "Min Building Size",
                        "type": "integer",
                        "description": "Minimum building size to scrape."
                    },
                    "BuildingSizeRangeMax": {
                        "title": "Max Building Size",
                        "type": "integer",
                        "description": "Maximum building size to scrape."
                    },
                    "PriceRangeRateType": {
                        "title": "Price Range Rate Type",
                        "enum": [
                            "none",
                            "Total",
                            "BuildingSquareFootage",
                            "LotAcreage",
                            "Units"
                        ],
                        "type": "string",
                        "description": "Price range rate type to scrape."
                    },
                    "CondosFilter": {
                        "title": "Condos Filter",
                        "enum": [
                            "0",
                            "1",
                            "2"
                        ],
                        "type": "string",
                        "description": "Condos filter to scrape.",
                        "default": "0"
                    },
                    "DateIndicator": {
                        "title": "Date Entered",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7"
                        ],
                        "type": "string",
                        "description": "Date entered to scrape.",
                        "default": "0"
                    },
                    "State": {
                        "title": "State",
                        "enum": [
                            "none",
                            "Al",
                            "Ak",
                            "Az",
                            "Ar",
                            "Ca",
                            "Co",
                            "Ct",
                            "De",
                            "Fl",
                            "Ga",
                            "Hi",
                            "Id",
                            "Il",
                            "In",
                            "Ia",
                            "Ks",
                            "Ky",
                            "La",
                            "Me",
                            "Md",
                            "Ma",
                            "Mi",
                            "Mn",
                            "Ms",
                            "Mo",
                            "Mt",
                            "Ne",
                            "Nv",
                            "Nh",
                            "Nj",
                            "Nm",
                            "Ny",
                            "Nc",
                            "Nd",
                            "Oh",
                            "Ok",
                            "Or",
                            "Pa",
                            "Ri",
                            "Sc",
                            "Sd",
                            "Tn",
                            "Tx",
                            "Ut",
                            "Vt",
                            "Va",
                            "Wa",
                            "Wv",
                            "Wi",
                            "Wy"
                        ],
                        "type": "string",
                        "description": "Select your state",
                        "default": "none"
                    },
                    "City": {
                        "title": "City",
                        "type": "string",
                        "description": "Enter City to scrape."
                    },
                    "monitoringMode": {
                        "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
                        "type": "boolean",
                        "description": "Enable this option to retrieve the maximum number of results possible. Note that LoopNet limits results to 500 per search.",
                        "default": false
                    },
                    "enablePriceMonitoring": {
                        "title": "Enable price monitoring",
                        "type": "boolean",
                        "description": "If checked, it will only scrape newly listings compared to what has been scraped in previous runs.",
                        "default": false
                    },
                    "transactionTrackingMode": {
                        "title": "Track listings that have closed since the last run",
                        "type": "boolean",
                        "description": "When enabled, the dataset emits ONLY the closed listings (not the full inventory). Each output item includes the original listing details plus closeStatus (removed / pending / under_contract / sold / leased), closeDetectedAt, firstSeenAt, lastSeenAt, and previousPrice. The snapshot is auto-keyed by a hash of the input (search URLs / filters), so the same scheduled input always finds its prior snapshot.",
                        "default": false
                    },
                    "downloadImages": {
                        "title": "Download images (Images will be stored inside Key-Value Store)",
                        "type": "boolean",
                        "description": "Set to true if you want to download images to Apify's Key-Value Store so you can download them to your computer",
                        "default": false
                    },
                    "maxImages": {
                        "title": "Max images per listing (Only applicable if 'Download images' is enabled)",
                        "type": "integer",
                        "description": "Maximum number of images to download per listing.",
                        "default": 10
                    },
                    "storeName": {
                        "title": "Name your storage for images where to store them (this is optional)",
                        "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
                        "type": "string",
                        "description": "Rule for naming: it can only contain letters 'a' through 'z', the digits '0' through '9', and the hyphen ('-') but only in the middle of the string (e.g. 'my-value-1')\n Assign a custom name to the Key-Value Store where your scraped listings will be saved. This ensures:\n 1. **Persistent Storage**: Enables long-term retention of listings, beyond default storage limits.\n 3. **Project Management**: Separate datasets by using unique names for different projects or analyses.\n 4. **Data Reuse**: Easily reference and reuse stored data without overwriting.\n (If left blank, the default storage will be used with standard retention limits.)"
                    },
                    "cookies": {
                        "title": "Cookies",
                        "type": "array",
                        "description": "<p>Cookie used to authorize actor with crexi.com. Install <a rel=\"noopener noreferrer nofollow\" target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg\" previewlistener=\"true\">EditThisCookie</a> chrome extension. Login to your crexi.com account. Click on the extension and export the crexi.com cookies. Insert the contents here</p>"
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
