# OnTheMarket Property Scraper — UK Listings, Prices & Agents (`memo23/onthemarket-property-scraper`) Actor

Scrape OnTheMarket property listings — price, bedrooms, bathrooms, address, coordinates, features, images, agent and more. Search by UK location or paste search / property URLs. One row per property; optional detail enrichment (description, EPC, floor area, nearby stations & schools). JSON/CSV out.

- **URL**: https://apify.com/memo23/onthemarket-property-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## OnTheMarket Property Scraper

Turn any [OnTheMarket](https://www.onthemarket.com) search into clean, structured property data. Search by **UK location** (with price, bedroom and type filters), or paste **search-results URLs** and **property URLs** — and get one flat row per property with price, bedrooms, bathrooms, address, coordinates, features, images and the full agent block. Flip on detail mode to add the full description, EPC rating, floor area, and nearby stations & schools.

Built for property-market research, price monitoring, lead generation and building UK real-estate datasets.

#### How it works

![How the OnTheMarket Property Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-onthemarket.png)

#### ✨ Why use this scraper?

- **Rich rows out of the box** — ~25 fields per property from the search results alone: price, beds, baths, property type, address, latitude/longitude, features, cover image + gallery, days-since-added and the full agent block (name, phone, logo, URL).
- **Three ways in** — location slugs (a search is built for you), pasted search-results URLs, or direct `/details/` property URLs. Mix them in one run.
- **Every UK location** — `london`, `manchester`, `sw1`, `n3` … OnTheMarket resolves the slug server-side. Add `for-sale`/`to-rent`, price, bedroom and property-type filters.
- **Full detail on demand** — turn on *Scrape property detail pages* (or paste a property URL) to add the full description, EPC rating, floor area (sqm), postcode, nearby stations (with lines) and schools (with ratings).
- **Skips the ads** — injected "in-market" advertorial cards are filtered out, so every row you pay for is a real property listing.
- **No brittle DOM scraping** — reads OnTheMarket's embedded `__NEXT_DATA__` JSON, so the output stays stable when the page layout changes.
- **JSON, CSV, Excel or API** — pipe straight into your sheet, BI tool or pipeline. Billed per property.

#### 🎯 Use cases

| You are a… | Use it to… |
|---|---|
| Property investor | Track asking prices, £/sqm and new listings across your target postcodes |
| Estate agent | Benchmark competing listings — price, beds, features and time on market |
| Market researcher | Measure price distribution and stock levels per area and property type |
| Proptech / app builder | Seed a UK property dataset with structured listing + agent rows |
| Lead-gen | Pull agent names, phones and branches behind live listings by area |
| Relocation / buyer | Compare properties by price, floor area, EPC and nearby transport |

#### 📥 Supported inputs

| Input | Example | What it does |
|---|---|---|
| Location slug | `london`, `manchester`, `sw1` | Builds a search and paginates the results |
| Search URL | `https://www.onthemarket.com/for-sale/property/london/` | Paginates that search's results |
| Property URL | `https://www.onthemarket.com/details/19723728/` | Scrapes that single property in full detail |

**Not supported:** anything behind a login, saved searches/alerts tied to an account, buyer/agent messaging, or sold-price history endpoints. The actor reads only public search-results and property pages.

#### ⚙️ How it works

1. **Classify** every input — location slugs become search URLs; pasted URLs are sorted into search vs `/details/` property pages.
2. **Fetch** each page with a real browser TLS fingerprint over a UK residential IP, so OnTheMarket returns the real page.
3. **Parse** the page's embedded `__NEXT_DATA__` JSON — a search page yields 30 properties; the `?page=2`, `?page=3` … sequence is followed automatically up to your limit.
4. **Enrich** each property from its detail page (when *Scrape property detail pages* is on): description, EPC, floor area, postcode, stations and schools.
5. **Emit** one flat, deduplicated row per property to the dataset.

#### ⚙️ Input parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `locations` | array | `["london"]` | Location slugs to build a search from. |
| `startUrls` | array | — | Search-results URLs and/or `/details/` property URLs. Auto-classified. |
| `channel` | string | `for-sale` | `for-sale` or `to-rent` (applied to the Locations builder). |
| `propertyType` | string | — | e.g. `flats-apartments`, `houses`, `bungalows`, `land`. |
| `minPrice` / `maxPrice` | integer | — | Price band (£) for built searches. |
| `minBedrooms` / `maxBedrooms` | integer | — | Bedroom band for built searches. |
| `radius` | integer | — | Search radius (miles) around the location. |
| `sortField` | string | `recommended` | `recommended`, `update-date`, `price-asc`, `price-desc`. |
| `scrapeDetails` | boolean | `false` | Also fetch each property's detail page for description, EPC, floor area, stations and schools (~2× requests). Pasted property URLs are always fully detailed. |
| `maxItems` | integer | `1000` | Max rows for the whole run. |
| `maxItemsPerSearch` | integer | `1000` | Max properties per location / search URL. |
| `maxConcurrency` | integer | `6` | Parallel requests. |
| `maxRequestRetries` | integer | `12` | Retry budget on IP-level blocks (403/429/5xx). |
| `proxy` | object | Apify Residential (GB) | Proxy for free-tier runs; paid runs use a built-in GB residential pool. |

#### 📤 Output

Each row is one property, flat and ready for CSV/Excel. Detail fields (below the divider) appear when *Scrape property detail pages* is on or when you paste a `/details/` URL.

```json
{
  "rowType": "property",
  "id": "19865517",
  "propertyUrl": "https://www.onthemarket.com/details/19865517/",
  "title": "1 bedroom flat for sale",
  "propertyType": "Flat",
  "channel": "sale",
  "status": "live",
  "price": "£290,000",
  "priceNumeric": 290000,
  "shortPrice": "£290k",
  "priceQualifier": "Offers over",
  "bedrooms": 1,
  "bathrooms": 1,
  "floorAreaSqM": 39,
  "address": "Brixton Hill, London SW2",
  "postcode": "SW2 5LP",
  "latitude": 51.450127,
  "longitude": -0.123365,
  "features": ["Well-appointed kitchen", "Lift access", "One double bedroom"],
  "mainLabel": "Recently added",
  "daysSinceAdded": "Added < 7 days",
  "images": ["https://media.onthemarket.com/properties/19865517/…/image-0-480x320.jpg"],
  "agentId": 54127,
  "agentName": "Trevlyn Properties - Maidstone",
  "agentPhone": "020 3641 3807",
  "agentUrl": "https://www.onthemarket.com/agents/branch/trevlyn-properties-maidstone/",
  "matterportVirtualTour": false,
  "isNewHome": false,
  "sourceUrl": "https://www.onthemarket.com/for-sale/property/london/",
  "sourceMode": "search",
  "scrapedAt": "2026-07-06T03:22:01.916Z",

  "detailScraped": true,
  "description": "This stunning one-bedroom apartment, situated on the prominent Brixton Hill…",
  "epcRating": "D",
  "broadbandType": "ultra-fast",
  "broadbandMaxDownloadMbps": 10000,
  "stations": [{ "name": "Brixton Underground Station", "distance": "0.5mi.", "lines": ["Victoria"], "networks": ["Tube"] }],
  "schools": [{ "name": "Sudbourne Primary School", "distance": "0.3mi.", "rating": "Outstanding" }]
}
````

#### 🔑 Key output fields

| Field | Description |
|---|---|
| `id`, `propertyUrl` | OnTheMarket property id and its `/details/` URL |
| `price`, `priceNumeric`, `priceQualifier` | Asking price as shown, as a number, and the qualifier (e.g. "Offers over") |
| `bedrooms`, `bathrooms`, `floorAreaSqM` | Core specs; floor area (sqm) from the detail page |
| `propertyType`, `tenure`, `status` | "Flat" / "Semi-detached house"; Freehold/Leasehold; live/under-offer |
| `address`, `postcode`, `latitude`, `longitude` | Location + geo-coordinates |
| `features` | Bullet features from the listing |
| `images`, `coverImage` | Photo gallery URLs |
| `agentName`, `agentPhone`, `agentUrl`, `agentLogo` | The listing agent / branch |
| `epcRating`, `broadbandType`, `broadbandMaxDownloadMbps` | EPC band and broadband (detail) |
| `stations`, `schools` | Nearby transport and schools with distances (detail) |

#### ❓ FAQ

**Is scraping OnTheMarket legal?** This actor collects only publicly available listing data. You are responsible for using the output in line with OnTheMarket's terms and applicable laws (including GDPR for any personal data such as agent contact details). Do not use it to spam or to build a competing listings service.

**Do I need proxies?** OnTheMarket serves UK-geolocated pages, so requests go through UK residential IPs. Paid runs use a built-in GB residential pool automatically; free-tier runs default to Apify Residential (GB).

**How many properties can I get?** As many as the search returns — pagination is followed automatically up to your `maxItems`/`maxItemsPerSearch` limits. A single London search exposes tens of thousands of listings across pages.

**How do I get the full description, EPC and floor area?** Turn on *Scrape property detail pages*, or paste `/details/` property URLs directly (those are always fully detailed).

**What's a "row"?** One property. You're billed per property row emitted to the dataset.

#### 🛟 Support

Found a missing field or a page shape that doesn't parse? Open an issue on the actor's Issues tab with the input URL — fixes are quick.

#### 🧭 Explore more scrapers

Building a UK property or lead-gen pipeline? This actor pairs well with other real-estate and directory scrapers in the store — combine listing data with agent and location enrichment.

#### ⚠️ Disclaimer

This actor is an independent tool and is not affiliated with, endorsed by, or connected to OnTheMarket or its operators. All trademarks belong to their respective owners. It accesses only publicly available pages and does not bypass any login. You are solely responsible for how you use the collected data, including compliance with OnTheMarket's terms of service and all applicable data-protection laws.

#### 🔎 SEO keywords

OnTheMarket scraper, OnTheMarket property scraper, UK property scraper, real estate scraper UK, property listings scraper, house prices scraper, flats for sale scraper, property data extraction, estate agent leads scraper, OnTheMarket API, UK housing data, property market research, scrape onthemarket.com, property price monitoring.

# Actor input Schema

## `locations` (type: `array`):

Location slugs to build a search from, e.g. `london`, `manchester`, `sw1`, `n3`. OnTheMarket resolves the slug server-side. Filters below apply to these.

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

Search-results URLs (e.g. `https://www.onthemarket.com/for-sale/property/london/`) and/or property URLs (`https://www.onthemarket.com/details/19723728/`). Auto-classified.

## `channel` (type: `string`):

For-sale or to-rent — applied to each location in the Locations field.

## `propertyType` (type: `string`):

Optional property-type filter for built searches, e.g. `flats-apartments`, `houses`, `bungalows`, `land`. Leave empty for all types.

## `minPrice` (type: `integer`):

Minimum price for built searches.

## `maxPrice` (type: `integer`):

Maximum price for built searches.

## `minBedrooms` (type: `integer`):

Minimum bedrooms for built searches.

## `maxBedrooms` (type: `integer`):

Maximum bedrooms for built searches.

## `radius` (type: `integer`):

Radius in miles around the location for built searches.

## `sortField` (type: `string`):

Result ordering for built searches.

## `scrapeDetails` (type: `boolean`):

For each property found in a search, also fetch its detail page to add the full description, features, EPC rating, floor area (sqm), nearby stations & schools, postcode and agent block. Richer rows, but ~2× the requests. Off = the search-card fields (already ~30 per property). Property URLs you paste are always fully detailed.

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

Hard cap on rows across the entire run. Each row is one paid `property` event. Default 1000. Free-tier users are additionally capped at 100.

## `maxItemsPerSearch` (type: `integer`):

Cap per location / search URL. OnTheMarket returns 30 properties per page. Default 1000.

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

Parallel HTTP requests. Default 6.

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

Per-request retry budget on IP-level blocks (403/429/5xx) and network errors. Each retry rotates to a fresh residential IP. Default 12.

## `proxy` (type: `object`):

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "locations": [
    "london"
  ],
  "startUrls": [],
  "channel": "for-sale",
  "sortField": "recommended",
  "scrapeDetails": false,
  "maxItems": 1000,
  "maxItemsPerSearch": 1000,
  "maxConcurrency": 6,
  "maxRequestRetries": 12
}
```

# 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 = {
    "locations": [
        "london"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/onthemarket-property-scraper").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 = {
    "locations": ["london"],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/onthemarket-property-scraper").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 '{
  "locations": [
    "london"
  ],
  "startUrls": []
}' |
apify call memo23/onthemarket-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OnTheMarket Property Scraper — UK Listings, Prices & Agents",
        "description": "Scrape OnTheMarket property listings — price, bedrooms, bathrooms, address, coordinates, features, images, agent and more. Search by UK location or paste search / property URLs. One row per property; optional detail enrichment (description, EPC, floor area, nearby stations & schools). JSON/CSV out.",
        "version": "0.1",
        "x-build-id": "EUkMdK6KmgczvsK4C"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~onthemarket-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-onthemarket-property-scraper",
                "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~onthemarket-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-onthemarket-property-scraper",
                "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~onthemarket-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-onthemarket-property-scraper",
                "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": {
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Location slugs to build a search from, e.g. `london`, `manchester`, `sw1`, `n3`. OnTheMarket resolves the slug server-side. Filters below apply to these.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Search & property URLs",
                        "type": "array",
                        "description": "Search-results URLs (e.g. `https://www.onthemarket.com/for-sale/property/london/`) and/or property URLs (`https://www.onthemarket.com/details/19723728/`). Auto-classified.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "channel": {
                        "title": "Channel",
                        "enum": [
                            "for-sale",
                            "to-rent"
                        ],
                        "type": "string",
                        "description": "For-sale or to-rent — applied to each location in the Locations field.",
                        "default": "for-sale"
                    },
                    "propertyType": {
                        "title": "Property type",
                        "type": "string",
                        "description": "Optional property-type filter for built searches, e.g. `flats-apartments`, `houses`, `bungalows`, `land`. Leave empty for all types."
                    },
                    "minPrice": {
                        "title": "Min price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price for built searches."
                    },
                    "maxPrice": {
                        "title": "Max price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price for built searches."
                    },
                    "minBedrooms": {
                        "title": "Min bedrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum bedrooms for built searches."
                    },
                    "maxBedrooms": {
                        "title": "Max bedrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum bedrooms for built searches."
                    },
                    "radius": {
                        "title": "Search radius (miles)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Radius in miles around the location for built searches."
                    },
                    "sortField": {
                        "title": "Sort order",
                        "enum": [
                            "recommended",
                            "update-date",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "Result ordering for built searches.",
                        "default": "recommended"
                    },
                    "scrapeDetails": {
                        "title": "Scrape property detail pages",
                        "type": "boolean",
                        "description": "For each property found in a search, also fetch its detail page to add the full description, features, EPC rating, floor area (sqm), nearby stations & schools, postcode and agent block. Richer rows, but ~2× the requests. Off = the search-card fields (already ~30 per property). Property URLs you paste are always fully detailed.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max results (whole run)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on rows across the entire run. Each row is one paid `property` event. Default 1000. Free-tier users are additionally capped at 100.",
                        "default": 1000
                    },
                    "maxItemsPerSearch": {
                        "title": "Max properties per search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap per location / search URL. OnTheMarket returns 30 properties per page. Default 1000.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max parallel requests",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Parallel HTTP requests. Default 6.",
                        "default": 6
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Per-request retry budget on IP-level blocks (403/429/5xx) and network errors. Each retry rotates to a fresh residential IP. Default 12.",
                        "default": 12
                    },
                    "proxy": {
                        "title": "Proxy configuration (optional override)",
                        "type": "object",
                        "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
