# Rightmove Scraper — UK Property Listings (`devilscrapes/rightmove-uk-property`) Actor

Scrape UK property listings from Rightmove (for-sale or to-rent) — price, address, bedrooms, agent phone, floor plan, EPC, photos, full description — export to JSON or CSV. A Rightmove data scraper that enriches from each detail page, going beyond the public search payload.

- **URL**: https://apify.com/devilscrapes/rightmove-uk-property.md
- **Developed by:** [DevilScrapes](https://apify.com/devilscrapes) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN 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

<div align="center">
  <img src=".actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## Rightmove Scraper — UK Property Listings to JSON

**💰 $0.05 / 1 000 results** &nbsp;·&nbsp; pay only for results &nbsp;·&nbsp; no credit card to try

_We do the dirty work so your dataset stays clean._ 😈

Extract UK property listings from Rightmove — for-sale or to-rent. Returns price, address, bedrooms, agent phone, floor plan, EPC graph, photos, and full description, enriched from the detail page to go beyond what the search payload alone exposes.

</div>

---

### 🎯 What this scrapes

Rightmove is the UK's largest property portal and publishes no public API. This Actor is your Rightmove scraper: search by location, filter by price, bedrooms, or listing type (for-sale or to-rent), and optionally enrich each result with detail-page data — agent phone, full description, floor plan URL, and EPC graph image. Built on `curl-cffi` with browser TLS impersonation; every request looks like a real browser visit from a UK residential IP.

Rightmove's site actively resists automated access. We run the gauntlet so you get clean rows.

### 🔥 Features

- 🛡️ **Browser fingerprint rotation** — `curl-cffi` replays real Chrome / Firefox / Safari TLS handshakes so every request looks like a real browser, not a script.
- 🌐 **Residential proxy rotation** via Apify Proxy — a fresh UK exit IP on every session, automatically swapped whenever the target pushes back.
- 🔁 **Retries with exponential backoff** on `408 / 429 / 5xx` — up to 5 attempts per page with `Retry-After` honoured.
- 🧱 **Rate-limit-aware pacing** — we slow down when Rightmove signals overload instead of hammering until banned.
- 🧊 **Clean, typed dataset rows** — Pydantic-validated, ISO-8601 timestamps, stable property IDs, ready for JSON / CSV / Excel export.
- 💰 **Pay-Per-Event pricing** — you only pay for rows that land in your dataset. No data, no charge.

### 💡 Use cases

- **Property-market analytics** — track price-per-square-foot trends across UK postcodes over time.
- **Buyer alerting** — daily diff for new sub-£500k 2-bed flats in your target postcode.
- **Landlord intelligence** — aggregate `to-rent` rows by postcode to estimate rental yields across a portfolio.
- **Agent prospecting** — build a directory of UK estate agents using `agent_name` + `agent_phone` from each listing.
- **Floor-plan + EPC enrichment** — detail-page data that cheaper competitors miss entirely: full description, floor plan URL, and EPC graph image.
- **UK property data API substitute** — Rightmove's official data access is restricted to registered agents. This Actor gives PropTech founders a clean postcode-property-data feed without a partner contract.

### ⚙️ How to use it

1. Click **Try for free** at the top of the page.
2. Fill in the input form — most fields have sensible defaults (London, for-sale, 50 results).
3. Click **Start**. Results stream into the run's dataset in real time.
4. Export from **Storage → Dataset** as JSON, CSV, or Excel — or pull via the Apify API.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `searchLocation` | `string` | **yes** | `London` | Free-form UK location — city, district, postcode prefix (`SW1A`), or region. Resolved via Rightmove's location autocomplete. |
| `listingType` | `string` | no | `for-sale` | Which Rightmove channel to scrape — `for-sale` or `to-rent`. |
| `radiusMiles` | `string` | no | `0.0` | Search radius around the centroid of the resolved location (miles). |
| `maxPriceGbp` | `integer` | no | — | Upper price filter. Total £ for `for-sale`; £ per month for `to-rent`. Leave empty for no cap. |
| `minBedrooms` | `integer` | no | — | Minimum number of bedrooms. Leave empty for no floor. |
| `maxProperties` | `integer` | no | `50` | Hard cap on dataset rows. Rightmove's own search caps at ~1 000 results per query. |
| `enrichDetails` | `boolean` | no | `true` | Fetch each listing's detail page for full description, floor plan URL, EPC graph URL, and agent phone. Doubles request count and run time; disable to get search-payload fields only. |
| `proxyConfiguration` | `object` | no | `{"useApifyProxy": true}` | Apify Proxy spec. UK residential exits are recommended for stable access. |

#### Example input

```json
{
  "searchLocation": "London",
  "listingType": "for-sale",
  "maxProperties": 5,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

### 📤 Output

Every row is one dataset item.

| Field | Type | Notes |
|---|---|---|
| `property_id` | `string` | Rightmove property ID. |
| `property_url` | `string` | Absolute URL to the listing detail page. |
| `address` | `string` | Display address (Rightmove's truncated form). |
| `postcode` | `string \| null` | Full postcode (e.g. `E17 6ZL`) — only present when enriched from the detail page. |
| `latitude` | `number \| null` | Latitude (WGS-84). |
| `longitude` | `number \| null` | Longitude (WGS-84). |
| `price_gbp` | `integer \| null` | Amount in GBP — total for sale, monthly for rent. |
| `price_qualifier` | `string \| null` | Price qualifier (e.g. `Offers in Excess of`, `Guide Price`). |
| `price_frequency` | `string \| null` | `monthly` for rentals, `not specified` for sales. |
| `listing_type` | `string` | `for-sale` or `to-rent`. |
| `property_type` | `string \| null` | Property sub-type (Apartment, Detached, Semi-detached, etc.). |
| `property_type_full` | `string \| null` | Human-readable description (e.g. `1 bedroom apartment for sale`). |
| `bedrooms` | `integer \| null` | Number of bedrooms. |
| `bathrooms` | `integer \| null` | Number of bathrooms. |
| `sqft` | `integer \| null` | Floor area in square feet (when published by the agent). |
| `tenure` | `string \| null` | Tenure type (`FREEHOLD` / `LEASEHOLD` / `SHARE_OF_FREEHOLD`). |
| `epc_graph_url` | `string \| null` | URL of the EPC graph image. Enrichment-only. |
| `epc_rating` | `string \| null` | EPC rating letter (A–G) when extractable. Currently always `null` — the letter is image-only; OCR the graph if you need it. |
| `description` | `string \| null` | Full property description (HTML stripped to plain text). Enrichment-only. |
| `key_features` | `array` | Bullet list of key features published by the agent. |
| `listing_added_date` | `string \| null` | ISO timestamp when the listing first appeared on Rightmove. |
| `listing_update_reason` | `string \| null` | Last update reason (e.g. `price_reduced`). |
| `agent_name` | `string \| null` | Estate agent branch display name. |
| `agent_phone` | `string \| null` | Agent's contact phone number. |
| `agent_url` | `string \| null` | Absolute URL to the agent's Rightmove branch page. |
| `photo_urls` | `array` | List of property photo URLs. |
| `floor_plan_url` | `string \| null` | Floor plan image URL when published. Enrichment-only. |
| `scraped_at` | `string` | ISO timestamp when this row was recorded. |

#### Example output

```json
{
  "property_id": "167180126",
  "property_url": "https://www.rightmove.co.uk/properties/167180126",
  "address": "Gainsford Road, Walthamstow",
  "postcode": "E17 6ZL",
  "latitude": 51.587363,
  "longitude": -0.027555,
  "price_gbp": 300000,
  "price_qualifier": "Offers in Excess of",
  "listing_type": "for-sale",
  "property_type": "Apartment",
  "bedrooms": 1,
  "bathrooms": 1,
  "sqft": 443,
  "agent_name": "haart, Walthamstow",
  "agent_phone": "020 3910 6244",
  "floor_plan_url": "https://media.rightmove.co.uk/property-floorplan/.../...jpeg",
  "epc_graph_url": "https://media.rightmove.co.uk/property-epc/.../...png"
}
```

### 💰 Pricing

Pay-Per-Event — you pay only when these events fire:

| Event | USD | What it is |
|---|---:|---|
| `actor-start` | $0.05 | One-off warm-up charge per run |
| `result-row` | $0.002 | Per result pushed to your dataset |

Example: 1 000 results at the rates above ≈ **$0.05 per 1 000**. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

### 🚧 Limitations

Rightmove's own search caps any query at ~1 000 results. Enabling detail enrichment roughly doubles request count and run time. The EPC rating letter (A–G) is not available in structured form — only the graph image is surfaced; OCR with Tesseract if you need the letter. Some agent phone numbers are masked behind a click-to-reveal widget on certain listings; in those cases `agent_phone` may be `null`.

### ❓ FAQ

**What is the Rightmove scraper?**

It is an Apify Actor that extracts UK property listings from Rightmove — for-sale or to-rent — and returns structured data including price, address, bedrooms, bathrooms, agent phone, floor plan URL, EPC graph, and full description. No Rightmove API key required.

**Is there an official Rightmove API?**

Rightmove offers no public API. Their data-access programme is restricted to registered agents under the Property Data Trust Framework. This Actor gives PropTech founders and landlords a practical Rightmove data export without a partner contract.

**Can I export Rightmove data to a spreadsheet?**

Yes. Every run writes to an Apify dataset that you can export as CSV or Excel directly from the Apify Console, or pull programmatically via the Apify API. That makes this Actor a drop-in Rightmove data export tool.

**What is postcode property data and does this include it?**

Yes. When `enrichDetails` is enabled the Actor fetches each listing's detail page and returns the full postcode (e.g. `SW1A 1AA`), latitude/longitude, and floor area — everything you need for postcode-level property data analysis.

**Does this work for rentals?**

Yes — set `listingType` to `to-rent`. `price_gbp` is then £ per month and `price_frequency` reads `monthly`.

**Is detail enrichment optional?**

Yes — set `enrichDetails` to `false` to halve the request count. You still get price, address, bedrooms, photos, lat/long, and agent name from the search payload — just no floor plan, EPC image, or full description.

**Does it cover Zoopla or OnTheMarket?**

This Actor covers Rightmove only. Zoopla and OnTheMarket are separate sites with separate structures — a dedicated `zoopla-uk-property` Actor would be needed for those.

**Why isn't the EPC rating letter populated?**

Rightmove publishes the EPC as a rendered graph image, not a structured field. We surface `epc_graph_url`; use Tesseract OCR if you need the letter extracted from the image.

**Will the Actor handle blocks if Rightmove pushes back?**

Yes — we rotate UK residential proxy exit IPs, rotate browser fingerprints, and retry with exponential backoff. If Rightmove rate-limits mid-run the Actor surfaces a clear status message with the partial result count rather than returning a silent empty dataset.

### 💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an
issue on the Actor's **Issues** tab on Apify Console — we ship
fixes weekly and we read every report.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

## `searchLocation` (type: `string`):

Free-form UK location — city (<code>London</code>), district, postcode prefix (<code>SW1A</code>), or region. Resolved via Rightmove's typeahead to a region/outcode identifier.

## `listingType` (type: `string`):

Which Rightmove channel to scrape.

## `radiusMiles` (type: `string`):

Distance around the centroid of the resolved location.

## `maxPriceGbp` (type: `integer`):

Upper price filter. Total £ for <code>for-sale</code>; £ per month for <code>to-rent</code>. Leave empty for no cap.

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

Minimum number of bedrooms. Leave empty for no floor.

## `maxProperties` (type: `integer`):

Hard cap on dataset rows. Rightmove's own search caps at ~1000 results per query.

## `enrichDetails` (type: `boolean`):

Fetch each property's detail page for full description, floor plan URL, EPC graph URL, and full agent phone. Doubles the request count.

## `proxyConfiguration` (type: `object`):

Apify Proxy spec. UK residential exits are safest.

## Actor input object example

```json
{
  "searchLocation": "London",
  "listingType": "for-sale",
  "radiusMiles": "0.0",
  "maxProperties": 50,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

All dataset items as JSON.

## `datasetItemsCsv` (type: `string`):

Same data exported to CSV.

## `datasetView` (type: `string`):

Open the run dataset in the Console.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/rightmove-uk-property").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 = { "proxyConfiguration": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("devilscrapes/rightmove-uk-property").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 '{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call devilscrapes/rightmove-uk-property --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rightmove Scraper — UK Property Listings",
        "description": "Scrape UK property listings from Rightmove (for-sale or to-rent) — price, address, bedrooms, agent phone, floor plan, EPC, photos, full description — export to JSON or CSV. A Rightmove data scraper that enriches from each detail page, going beyond the public search payload.",
        "version": "0.1",
        "x-build-id": "w5s1q57lxQf7Ug3rB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/devilscrapes~rightmove-uk-property/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-devilscrapes-rightmove-uk-property",
                "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/devilscrapes~rightmove-uk-property/runs": {
            "post": {
                "operationId": "runs-sync-devilscrapes-rightmove-uk-property",
                "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/devilscrapes~rightmove-uk-property/run-sync": {
            "post": {
                "operationId": "run-sync-devilscrapes-rightmove-uk-property",
                "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",
                "required": [
                    "searchLocation"
                ],
                "properties": {
                    "searchLocation": {
                        "title": "Search location",
                        "type": "string",
                        "description": "Free-form UK location — city (<code>London</code>), district, postcode prefix (<code>SW1A</code>), or region. Resolved via Rightmove's typeahead to a region/outcode identifier.",
                        "default": "London"
                    },
                    "listingType": {
                        "title": "Listing type",
                        "enum": [
                            "for-sale",
                            "to-rent"
                        ],
                        "type": "string",
                        "description": "Which Rightmove channel to scrape.",
                        "default": "for-sale"
                    },
                    "radiusMiles": {
                        "title": "Search radius (miles)",
                        "enum": [
                            "0.0",
                            "0.25",
                            "0.5",
                            "1.0",
                            "3.0",
                            "5.0",
                            "10.0",
                            "15.0",
                            "20.0",
                            "30.0",
                            "40.0"
                        ],
                        "type": "string",
                        "description": "Distance around the centroid of the resolved location.",
                        "default": "0.0"
                    },
                    "maxPriceGbp": {
                        "title": "Max price (GBP)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Upper price filter. Total £ for <code>for-sale</code>; £ per month for <code>to-rent</code>. Leave empty for no cap."
                    },
                    "minBedrooms": {
                        "title": "Minimum bedrooms",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of bedrooms. Leave empty for no floor."
                    },
                    "maxProperties": {
                        "title": "Max properties",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on dataset rows. Rightmove's own search caps at ~1000 results per query.",
                        "default": 50
                    },
                    "enrichDetails": {
                        "title": "Enrich from detail page",
                        "type": "boolean",
                        "description": "Fetch each property's detail page for full description, floor plan URL, EPC graph URL, and full agent phone. Doubles the request count.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy spec. UK residential exits are safest.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
