# Airbnb Scraper - Listings, Calendar, Reviews & Analytics (`primevision/airbnb-radar`) Actor

Scrape Airbnb listings, details, amenities, 12-month availability calendar, reviews and derived occupancy/revenue analytics. Full-coverage mode beats Airbnb's ~240-per-search cap. No login. Honest pay-per-result billing.

- **URL**: https://apify.com/primevision/airbnb-radar.md
- **Developed by:** [Prime Vision](https://apify.com/primevision) (community)
- **Categories:** Travel, Real estate, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 listing scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Airbnb Radar — Search, Calendar, Reviews & STR Analytics Scraper

Scrape **Airbnb** listings at scale — search results, full listing details,
amenities, a **12-month availability calendar**, guest **reviews**, and derived
**short-term-rental analytics** (occupancy, ADR, estimated revenue) — all in one
actor. No login, no cookies, honest pay-per-result billing.

Built for STR investors, revenue managers, market analysts, and data teams who
need clean, structured Airbnb data and got tired of scrapers that break, cap at
the first page, or bill for empty runs.

### Why this scraper

| | Airbnb Radar | Typical Airbnb scraper |
|---|---|---|
| Search + details + calendar + reviews | ✅ one actor | ❌ split across 3–4 actors |
| Beats Airbnb's ~240-results-per-search cap | ✅ `fullCoverage` map subdivision | ❌ "Airbnb-side limitation" |
| 12-month availability calendar | ✅ | ❌ or a separate paid actor |
| Occupancy / revenue analytics | ✅ derived from calendar | ❌ |
| Direct room-URL **and** location search | ✅ same actor | ❌ needs a second actor for URLs |
| Reviews | ✅ inline | ❌ separate actor |
| Billing when nothing parses | ✅ run **fails**, you pay nothing | ❌ "Succeeded", 0 items, still billed |
| `maxCostPerRun` honored via API | ✅ | ⚠️ often UI-only |

#### Full coverage: get *all* the listings, not the first 240

Airbnb caps any single search at roughly 240–270 results. Most scrapers stop
there — so a city with 478 listings returns 41. Turn on **`fullCoverage`** and
the actor recursively splits the map into quadrants until every cell is under
the cap, then de-duplicates. In testing this turned a 256-listing cap into
**1,000+ unique listings** from one location.

### What you get per listing

```jsonc
{
  "id": "54032513",
  "url": "https://www.airbnb.com/rooms/54032513",
  "name": "Warsaw Downtown — Luxurious 1BR with AC",
  "coordinates": { "latitude": 52.2337, "longitude": 20.9875 },
  "rating": 4.86,
  "reviewsCount": 181,
  "price": { "displayPrice": 313.0, "qualifier": "total", "displayPriceString": "$313" },
  "maxGuestCapacity": 4,
  "overviewItems": ["Entire rental unit", "2 beds", "1 bath"],
  "description": "Welcome to our high-end furnished apartment ...",
  "host": { "id": "78460722", "name": "OompH", "isSuperhost": true, "profileUrl": "..." },
  "amenities": [{ "group": "Bathroom", "title": "Hair dryer", "available": true }],
  "images": ["https://a0.muscache.com/im/pictures/..."],
  "houseRules": ["Check-in after 4:00 PM", "Checkout before 11:00 AM", "4 guests maximum"],
  "sleepingArrangement": [{ "title": "Bedroom", "subtitle": "1 queen bed" }],

  // when scrapeCalendar = true
  "calendar": [
    { "date": "2026-08-01", "available": true, "availableForCheckin": true, "minNights": 2 }
  ],
  "analytics": {
    "occupancyNext30d": 0.63, "occupancyNext90d": 0.55, "occupancyNext365d": 0.41,
    "availableNights365": 215, "unavailableNights365": 150,
    "minNightsMode": 2, "estimatedNightlyPrice": 78.25, "estimatedRevenueNext30d": 1486.75
  },

  // when scrapeReviews = true
  "reviews": [{ "rating": 5, "date": "3 weeks ago", "comment": "...", "reviewerName": "Kal" }],
  "reviewTags": [{ "name": "Location", "count": 83 }],
  "scrapedAt": "2026-07-20T12:00:00Z"
}
````

### Input

Search one or more places, paste search URLs, or feed listing URLs/IDs directly
— mix all three in a single run.

```jsonc
{
  "locationQueries": ["Lisbon, Portugal", "Porto, Portugal"],
  "checkIn": "2026-09-05",
  "checkOut": "2026-09-09",
  "adults": 2,
  "priceMax": 200,
  "roomTypes": ["Entire home/apt"],
  "maxResults": 500,
  "fullCoverage": true,
  "scrapeCalendar": true,
  "calendarMonths": 12,
  "scrapeReviews": true,
  "maxReviewsPerListing": 50,
  "currency": "USD",
  "maxCostPerRun": 5.0
}
```

Scrape specific listings only:

```jsonc
{
  "roomUrls": ["https://www.airbnb.com/rooms/54032513", "1234567890"],
  "scrapeCalendar": true,
  "scrapeReviews": true
}
```

Key options: `locationQueries`, `startUrls` (search URLs; room URLs pasted here
are auto-detected), `roomUrls`, `maxResults`, `fullCoverage`, `checkIn`/`checkOut`,
`adults`/`children`/`infants`/`pets`, `priceMin`/`priceMax`,
`minBedrooms`/`minBeds`/`minBathrooms`, `roomTypes`, `scrapeCalendar` +
`calendarMonths`, `scrapeReviews` + `maxReviewsPerListing`, `currency`, `locale`,
`maxCostPerRun`, `proxyConfiguration`.

### Pricing (pay per result)

You pay only for listings that were genuinely parsed. Calendar and reviews are
optional premium add-ons charged only when you enable them.

| Event | What it covers |
|---|---|
| Listing | One full listing record (details + amenities) |
| Calendar | 12-month availability + occupancy analytics for a listing |
| Reviews | Guest reviews + review-tag counts for a listing |

**Zero-yield guarantee:** if Airbnb changes its page structure and parsing
collapses, the run **fails** and you are **not** billed for the empty output —
instead of finishing "Succeeded" with an empty dataset.

### Proxy & reliability

Airbnb blocks datacenter IPs, so the actor defaults to **Apify Residential proxy
(US)** and uses browser-grade TLS fingerprinting. The public API key and
GraphQL query hashes are refreshed at runtime, requests are paced and retried
with automatic session rotation on rate-limits, and a nightly self-check catches
structure changes early.

### Notes

- Scrapes **only public, non-logged-in** Airbnb data.
- **Unofficial** — not affiliated with, endorsed by, or connected to Airbnb, Inc.
- Prices/availability reflect what Airbnb shows anonymously for the given
  currency, locale and proxy region; pin `currency` + `locale` for reproducible
  output.
- Occupancy counts a night as "unavailable" whether it is booked or host-blocked
  (Airbnb does not distinguish the two); revenue figures are labelled estimates.

# Actor input Schema

## `locationQueries` (type: `array`):

Places to search, e.g. "Lisbon, Portugal" or "Austin, Texas". Each is searched independently.

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

Airbnb search-result URLs (e.g. https://www.airbnb.com/s/Lisbon/homes...). Room URLs pasted here are auto-detected and treated as direct listings.

## `roomUrls` (type: `array`):

Scrape specific listings directly — full room URLs (https://www.airbnb.com/rooms/12345678) or bare numeric IDs. No separate actor needed.

## `maxResults` (type: `integer`):

Cap on listings collected per location/search-URL. Ignored for direct room URLs.

## `fullCoverage` (type: `boolean`):

Airbnb returns at most ~240-270 listings per search. When enabled, the actor auto-subdivides the map into quadrants until every cell is under the cap and de-dupes — returning ALL listings in the area, not just the first page.

## `checkIn` (type: `string`):

YYYY-MM-DD. Filters availability and returns the real total price for the stay.

## `checkOut` (type: `string`):

YYYY-MM-DD.

## `adults` (type: `integer`):

Number of adult guests to search availability and pricing for.

## `children` (type: `integer`):

Number of children guests.

## `infants` (type: `integer`):

Number of infant guests.

## `pets` (type: `integer`):

Number of pets.

## `priceMin` (type: `integer`):

Minimum nightly price filter.

## `priceMax` (type: `integer`):

Maximum nightly price filter.

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

Minimum number of bedrooms.

## `minBeds` (type: `integer`):

Minimum number of beds.

## `minBathrooms` (type: `integer`):

Minimum number of bathrooms.

## `roomTypes` (type: `array`):

Restrict to these room types.

## `scrapeCalendar` (type: `boolean`):

Adds a 12-month day-by-day availability calendar (available / min nights) per listing, plus derived occupancy analytics. Premium event.

## `calendarMonths` (type: `integer`):

How many months of calendar to fetch (1-12).

## `scrapeReviews` (type: `boolean`):

Adds guest reviews (text, rating, date, reviewer) and review-tag counts per listing. Premium event.

## `maxReviewsPerListing` (type: `integer`):

Cap on how many reviews to fetch per listing (newest first).

## `currency` (type: `string`):

ISO currency code for all prices (e.g. USD, EUR, GBP).

## `locale` (type: `string`):

Language for titles/descriptions (e.g. en, es, fr).

## `maxCostPerRun` (type: `number`):

Hard ceiling on this run's cost — honored in code, not just the console UI. The run stops charging once reached.

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

Airbnb blocks datacenter IPs — residential proxy is strongly recommended. Defaults to Apify residential, US.

## Actor input object example

```json
{
  "locationQueries": [
    "Lisbon, Portugal"
  ],
  "startUrls": [],
  "roomUrls": [],
  "maxResults": 100,
  "fullCoverage": false,
  "adults": 1,
  "children": 0,
  "infants": 0,
  "pets": 0,
  "roomTypes": [],
  "scrapeCalendar": false,
  "calendarMonths": 12,
  "scrapeReviews": false,
  "maxReviewsPerListing": 50,
  "currency": "USD",
  "locale": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "locationQueries": [
        "Lisbon, Portugal"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("primevision/airbnb-radar").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 = {
    "locationQueries": ["Lisbon, Portugal"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("primevision/airbnb-radar").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 '{
  "locationQueries": [
    "Lisbon, Portugal"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call primevision/airbnb-radar --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airbnb Scraper - Listings, Calendar, Reviews & Analytics",
        "description": "Scrape Airbnb listings, details, amenities, 12-month availability calendar, reviews and derived occupancy/revenue analytics. Full-coverage mode beats Airbnb's ~240-per-search cap. No login. Honest pay-per-result billing.",
        "version": "0.1",
        "x-build-id": "ofOrREqdsXX9dpBse"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/primevision~airbnb-radar/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-primevision-airbnb-radar",
                "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/primevision~airbnb-radar/runs": {
            "post": {
                "operationId": "runs-sync-primevision-airbnb-radar",
                "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/primevision~airbnb-radar/run-sync": {
            "post": {
                "operationId": "run-sync-primevision-airbnb-radar",
                "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": {
                    "locationQueries": {
                        "title": "Location queries",
                        "type": "array",
                        "description": "Places to search, e.g. \"Lisbon, Portugal\" or \"Austin, Texas\". Each is searched independently.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Airbnb search-result URLs (e.g. https://www.airbnb.com/s/Lisbon/homes...). Room URLs pasted here are auto-detected and treated as direct listings.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "roomUrls": {
                        "title": "Listing URLs or IDs",
                        "type": "array",
                        "description": "Scrape specific listings directly — full room URLs (https://www.airbnb.com/rooms/12345678) or bare numeric IDs. No separate actor needed.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Cap on listings collected per location/search-URL. Ignored for direct room URLs.",
                        "default": 100
                    },
                    "fullCoverage": {
                        "title": "Full coverage (beat the ~240 cap)",
                        "type": "boolean",
                        "description": "Airbnb returns at most ~240-270 listings per search. When enabled, the actor auto-subdivides the map into quadrants until every cell is under the cap and de-dupes — returning ALL listings in the area, not just the first page.",
                        "default": false
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "YYYY-MM-DD. Filters availability and returns the real total price for the stay."
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "YYYY-MM-DD."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of adult guests to search availability and pricing for.",
                        "default": 1
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of children guests.",
                        "default": 0
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of infant guests.",
                        "default": 0
                    },
                    "pets": {
                        "title": "Pets",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of pets.",
                        "default": 0
                    },
                    "priceMin": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum nightly price filter."
                    },
                    "priceMax": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum nightly price filter."
                    },
                    "minBedrooms": {
                        "title": "Min bedrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of bedrooms."
                    },
                    "minBeds": {
                        "title": "Min beds",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of beds."
                    },
                    "minBathrooms": {
                        "title": "Min bathrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of bathrooms."
                    },
                    "roomTypes": {
                        "title": "Room types",
                        "type": "array",
                        "description": "Restrict to these room types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Entire home/apt",
                                "Private room",
                                "Shared room",
                                "Hotel room"
                            ],
                            "enumTitles": [
                                "Entire home/apt",
                                "Private room",
                                "Shared room",
                                "Hotel room"
                            ]
                        },
                        "default": []
                    },
                    "scrapeCalendar": {
                        "title": "Scrape availability calendar",
                        "type": "boolean",
                        "description": "Adds a 12-month day-by-day availability calendar (available / min nights) per listing, plus derived occupancy analytics. Premium event.",
                        "default": false
                    },
                    "calendarMonths": {
                        "title": "Calendar months",
                        "minimum": 1,
                        "maximum": 12,
                        "type": "integer",
                        "description": "How many months of calendar to fetch (1-12).",
                        "default": 12
                    },
                    "scrapeReviews": {
                        "title": "Scrape reviews",
                        "type": "boolean",
                        "description": "Adds guest reviews (text, rating, date, reviewer) and review-tag counts per listing. Premium event.",
                        "default": false
                    },
                    "maxReviewsPerListing": {
                        "title": "Max reviews per listing",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on how many reviews to fetch per listing (newest first).",
                        "default": 50
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "ISO currency code for all prices (e.g. USD, EUR, GBP).",
                        "default": "USD"
                    },
                    "locale": {
                        "title": "Locale",
                        "type": "string",
                        "description": "Language for titles/descriptions (e.g. en, es, fr).",
                        "default": "en"
                    },
                    "maxCostPerRun": {
                        "title": "Max cost per run (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Hard ceiling on this run's cost — honored in code, not just the console UI. The run stops charging once reached."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Airbnb blocks datacenter IPs — residential proxy is strongly recommended. Defaults to Apify residential, US.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
