# UAE Real Estate Scraper (`happyendpoint/uae-real-estate-scraper`) Actor

Filter search property and scrape live UAE property listings from Bayut - apartments, villas, offices & more for sale or rent. Filter by location, price, bedrooms & type. Real-time data, no proxies needed. Perfect for real estate apps & analytics. Propertyfinder, UAE Properties, Unofficial Scraper

- **URL**: https://apify.com/happyendpoint/uae-real-estate-scraper.md
- **Developed by:** [Happy Endpoint](https://apify.com/happyendpoint) (community)
- **Categories:** Real estate, Developer tools, Integrations
- **Stats:** 19 total users, 11 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

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

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

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

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

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

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

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


# README

## 🏠 Bayut Property Search - UAE Real Estate Scraper

### 🚫 NO Proxies Needed

Search and extract **residential and commercial property listings** from Bayut - the UAE's leading real estate portal. Get live Dubai property data including apartments, villas, townhouses, offices, and shops for sale or rent. No proxies. No setup. Just results.

---

### What This Actor Does

This actor has **two modes** that work together:

| Mode | What it does |
|------|-------------|
| 📍 **Location Search** | Look up any UAE area by name and get its ID |
| 🏠 **Property Search** | Search live listings with filters - price, type, bedrooms, status |

---

### How to Use (Step-by-Step)

#### Step 1 - Find Your Location ID

Bayut identifies locations by an `externalID`. You need to look this up before searching.

1. Set **Mode** to `📍 Location Search`
2. Enter a **Location Name** - e.g. `Dubai Marina`
3. Run the actor
4. In the results, find the row that matches your target area
5. Copy the **`externalID`** value - e.g. `5003`

**Sample Location Search result:**
```json
{
  "externalID": "5003",
  "name": { "en": "Dubai Marina" },
  "path": "UAE > Dubai > Dubai Marina",
  "type": "neighbourhood",
  "adCount": 12450
}
````

> **Pro tip:** You can pass multiple IDs separated by commas - e.g. `5003,5060` - to search across more than one area at once.

***

#### Step 2 - Search Properties

1. Set **Mode** to `🏠 Property Search`
2. Paste the `externalID` from Step 1 into **Location ID(s)**
3. Set your filters
4. Run the actor
5. Results appear in the **Dataset**

***

### Input Fields

#### Mode

- **Location Search** - resolve a place name to its Bayut `externalID`
- **Property Search** - scrape listings using filters

***

#### Location Search Input

| Field | Required | Description |
|-------|----------|-------------|
| Location Name | ✅ Yes | Any area, community, or city in UAE. Example: `Downtown Dubai` |

***

#### Property Search Inputs

| Field | Required | Notes |
|-------|----------|-------|
| Purpose | ✅ Yes | For Sale or For Rent |
| Location ID(s) | ❌ No | `externalID` from Location Search. Comma-separated for multiple |
| Property Type | ❌ No | See accepted values below |
| Bedrooms | ❌ No | Residential only. See accepted values below |
| Minimum Price (AED) | ❌ No | Annual rent for rentals, purchase price for sale |
| Maximum Price (AED) | ❌ No | Annual rent for rentals, purchase price for sale |
| Completion Status | ❌ No | **For Sale only** - Ready or Off-Plan |
| Sort Order | ❌ No | Default: Most Popular |
| Page Number | ❌ No | Default: 1. Increment to paginate |

***

#### Accepted Values

**Property Type:**

| Option | Description |
|--------|-------------|
| `All Residential` | All residential sub-types |
| `Apartments` | Apartments only |
| `Villas` | Villas only |
| `Townhouses` | Townhouses only |
| `Penthouse` | Penthouses only |
| `Hotel Apartments` | Hotel apartments only |
| `All Commercial` | All commercial sub-types |
| `Offices` | Office spaces |
| `Shops` | Retail shops |
| `Warehouses` | Warehouses |
| `Showrooms` | Showrooms |

**Bedrooms** (residential only - not applicable for commercial):

Enter a single value or comma-separated values. `0` = Studio.

| Example input | Matches |
|--------------|---------|
| `0` | Studio only |
| `1` | 1 bedroom only |
| `2,3` | 2 or 3 bedrooms |
| `0,1,2` | Studio, 1-bed, or 2-bed |
| `4,5` | 4 or 5 bedrooms |

**Completion Status** (for sale only - not meaningful for rentals):

| Option | Meaning |
|--------|---------|
| `Any` | All properties |
| `Ready / Completed` | Move-in ready |
| `Off-Plan / Under Construction` | Development stage |

**Sort Order:**

| Option | Meaning |
|--------|---------|
| `Most Popular` | Default Bayut ranking |
| `Newest Listings` | Most recently added |
| `Price: Low to High` | Cheapest first |
| `Price: High to Low` | Most expensive first |
| `Verified Listings First` | TruCheck verified properties |

***

### Pagination - How to Know When to Stop

Each page returns up to **25 listings**. After every run, the actor saves pagination metadata to the **Key-Value Store**.

**Where to find it:** Apify Console → Your Run → Storage → Key-Value Store → `PAGINATION_INFO`

```json
{
  "currentPage": 2,
  "totalPages": 47,
  "totalListings": 1163,
  "listingsThisPage": 25,
  "hasNextPage": true,
  "nextPage": 3
}
```

| Field | What it means |
|-------|--------------|
| `currentPage` | The page that was just fetched |
| `totalPages` | Total number of pages available |
| `totalListings` | Total matching listings in Bayut for your search |
| `listingsThisPage` | How many listings were returned this page |
| `hasNextPage` | `true` if there are more pages to fetch |
| `nextPage` | The page number to use on your next run - `null` if done |

**You know you're done when:**

- `hasNextPage` is `false`, OR
- `nextPage` is `null`, OR
- The log says **"You have reached the last page."**

**If `listingsThisPage` is less than 25**, that means you are on the last page - there are no more listings after this one, even if `currentPage` is less than `totalPages`.

#### Pagination Example

Say your search returns 55 total listings across 3 pages:

| Run | Page input | `listingsThisPage` | `hasNextPage` | Action |
|-----|-----------|-------------------|---------------|--------|
| 1 | `1` | 25 | `true` | Run again with page = 2 |
| 2 | `2` | 25 | `true` | Run again with page = 3 |
| 3 | `3` | 5 | `false` | ✅ Done - all 55 listings collected |

***

### Output

#### Dataset - Property Listings

Each item in the dataset is one property listing. Key fields:

| Field | Type | Description |
|-------|------|-------------|
| `externalID` | string | Unique Bayut listing ID. Use in Property Details actor. |
| `title.en` | string | Listing title in English |
| `purpose` | string | `for-sale` or `for-rent` |
| `price` | number | Price in AED (annual for rent, purchase for sale) |
| `rentFrequency` | string | null | Payment frequency for rentals |
| `rooms` | number | Bedrooms. `0` = Studio |
| `baths` | number | Bathrooms |
| `area` | number | Area in square metres |
| `completionStatus` | string | `completed` or `under-construction` |
| `furnishingStatus` | string | `furnished` or `unfurnished` |
| `isVerified` | boolean | TruCheck verified by Bayut |
| `referenceNumber` | string | Agent's internal reference |
| `contactName` | string | Listing agent name |
| `phoneNumber.mobile` | string | Agent mobile number |
| `phoneNumber.whatsapp` | string | Agent WhatsApp number |
| `agency.name` | string | Real estate agency name |
| `ownerAgent.isTruBroker` | boolean | Whether agent is TruBroker certified |
| `location` | array | Location hierarchy from UAE → Dubai → Area → Building |
| `geography.lat` | number | Property latitude |
| `geography.lng` | number | Property longitude |
| `amenities` | array | List of amenities, e.g. `["Balcony", "Gym", "Pool"]` |
| `photoCount` | number | Number of photos on the listing |
| `createdAt` | number | Unix timestamp - when listing was posted |
| `updatedAt` | number | Unix timestamp - last update |

#### Key-Value Store - Pagination Info

Saved after every Property Search run under the key `PAGINATION_INFO`. Use this to control your pagination loop. See Pagination section above.

#### Dataset - Location Search Results

When running in Location Search mode, each item is one location:

| Field | Description |
|-------|-------------|
| `externalID` | **The ID you need for Property Search** |
| `name.en` | Location name in English |
| `path` | Full path e.g. `UAE > Dubai > Dubai Marina` |
| `type` | Location type e.g. `neighbourhood`, `city` |
| `level` | Hierarchy level (0 = country, 1 = city, 2 = district) |
| `adCount` | Number of active listings in this location |

***

### Common Use Cases

**Scrape 2-bedroom apartments for rent in Dubai Marina under AED 120,000/year:**

1. Location Search → `Dubai Marina` → copy `externalID` `5003`
2. Property Search → Purpose: For Rent, Location IDs: `5003`, Property Type: Apartments, Bedrooms: `2`, Max Price: `120000`

**Find luxury villas for sale in Palm Jumeirah, sorted by price:**

1. Location Search → `Palm Jumeirah` → copy `externalID`
2. Property Search → Purpose: For Sale, Property Type: Villas, Sort: Price High to Low

**Scrape off-plan apartments across all of Dubai:**

1. Location Search → `Dubai` → copy `externalID` `5002`
2. Property Search → Purpose: For Sale, Location IDs: `5002`, Property Type: Apartments, Completion Status: Off-Plan

**Extract commercial offices for rent in Business Bay:**

1. Location Search → `Business Bay` → copy `externalID`
2. Property Search → Purpose: For Rent, Location IDs: (paste), Property Type: Offices

### Our Other Scraper

- [Sephora Scraper](https://apify.com/happyendpoint/sephora-scrapper)
- [Tesco Scraper](https://apify.com/happyendpoint/tesco-scraper)
- [Ikea Scraper](https://apify.com/happyendpoint/ikea-scraper)
- [Ikea Product Scraper By Category](https://apify.com/happyendpoint/ikea-products-bycategory)

***

### SEO Keywords

Bayut scraper · UAE property data · Dubai real estate listings · apartments for rent Dubai · villas for sale Dubai · Dubai property search · Bayut data extractor · UAE real estate API · off-plan properties Dubai · Dubai property listings scraper · commercial property UAE · real estate data Dubai · Bayut listing data · property prices Dubai · Dubai rental market data

# Actor input Schema

## `endpoint` (type: `string`):

**Step 1:** Run **Location Search** to find a location ID.
**Step 2:** Run **Property Search** using that ID.

## `query` (type: `string`):

**\[Location Search only]** Enter any area, district, or city in Dubai / UAE.

Examples: `Dubai Marina`, `Downtown Dubai`, `Palm Jumeirah`, `Abu Dhabi`.

## `purpose` (type: `string`):

**\[Property Search only]** Whether you are looking for properties to buy or rent.

This selection affects which other filters are relevant — see filter descriptions below.

## `location_ids` (type: `string`):

**\[Property Search only]** The `externalID` from a Location Search result. For multiple locations, separate with commas.

Examples: `5003` (Dubai Marina) · `5002` (All of Dubai) · `5003,5060` (multiple areas).

## `property_type` (type: `string`):

**\[Property Search only]** Filter by property type.

**Residential types** work for both sale and rent.
**Commercial types** work for both sale and rent.

Choose `All Residential` or `All Commercial` to include all sub-types of that category.

## `rooms` (type: `string`):

**\[Property Search only — Residential only]** Number of bedrooms. Enter a single value or comma-separated values.

`0` = Studio. Valid values: `0`, `1`, `2`, `3`, `4`, `5`.

Examples: `1` · `2,3` · `0,1,2` · `4,5`.

⚠️ Not applicable for commercial property types (offices, shops, warehouses, showrooms).

## `price_min` (type: `integer`):

**\[Property Search only]** Minimum price in AED.

**For Sale:** purchase price. Example: `500000`
**For Rent:** annual rent amount. Example: `30000`

## `price_max` (type: `integer`):

**\[Property Search only]** Maximum price in AED.

**For Sale:** purchase price. Example: `2000000`
**For Rent:** annual rent amount. Example: `120000`

## `completion_status` (type: `string`):

**\[Property Search only — For Sale only]** Filter by build status.

⚠️ This filter is only meaningful when Purpose is **For Sale**. Rental listings are always ready-to-occupy and are not categorised by completion status.

## `sort_order` (type: `string`):

**\[Property Search only]** How to order results.

## `page` (type: `integer`):

**\[Property Search only]** Which page of results to fetch. Each page contains up to 25 listings.

After each run, check **Storage → Key-Value Store → PAGINATION\_INFO** to see `totalPages`, `hasNextPage`, and `nextPage`. Increment this number on your next run to continue paginating.

## Actor input object example

```json
{
  "endpoint": "/search-property",
  "purpose": "for-sale",
  "property_type": "residential",
  "sort_order": "popular",
  "page": 1
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("happyendpoint/uae-real-estate-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("happyendpoint/uae-real-estate-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 '{}' |
apify call happyendpoint/uae-real-estate-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "UAE Real Estate Scraper",
        "description": "Filter search property and scrape live UAE property listings from Bayut - apartments, villas, offices & more for sale or rent. Filter by location, price, bedrooms & type. Real-time data, no proxies needed. Perfect for real estate apps & analytics. Propertyfinder, UAE Properties, Unofficial Scraper",
        "version": "0.0",
        "x-build-id": "15xOo89LOhCxRAECx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/happyendpoint~uae-real-estate-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-happyendpoint-uae-real-estate-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/happyendpoint~uae-real-estate-scraper/runs": {
            "post": {
                "operationId": "runs-sync-happyendpoint-uae-real-estate-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/happyendpoint~uae-real-estate-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-happyendpoint-uae-real-estate-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",
                "required": [
                    "endpoint"
                ],
                "properties": {
                    "endpoint": {
                        "title": "Mode",
                        "enum": [
                            "/autocomplete",
                            "/search-property"
                        ],
                        "type": "string",
                        "description": "**Step 1:** Run **Location Search** to find a location ID.\n**Step 2:** Run **Property Search** using that ID.",
                        "default": "/search-property"
                    },
                    "query": {
                        "title": "Location Name",
                        "type": "string",
                        "description": "**[Location Search only]** Enter any area, district, or city in Dubai / UAE.\n\nExamples: `Dubai Marina`, `Downtown Dubai`, `Palm Jumeirah`, `Abu Dhabi`."
                    },
                    "purpose": {
                        "title": "Purpose",
                        "enum": [
                            "for-sale",
                            "for-rent"
                        ],
                        "type": "string",
                        "description": "**[Property Search only]** Whether you are looking for properties to buy or rent.\n\nThis selection affects which other filters are relevant — see filter descriptions below.",
                        "default": "for-sale"
                    },
                    "location_ids": {
                        "title": "Location ID(s)",
                        "type": "string",
                        "description": "**[Property Search only]** The `externalID` from a Location Search result. For multiple locations, separate with commas.\n\nExamples: `5003` (Dubai Marina) · `5002` (All of Dubai) · `5003,5060` (multiple areas)."
                    },
                    "property_type": {
                        "title": "Property Type",
                        "enum": [
                            "residential",
                            "apartments",
                            "villas",
                            "townhouses",
                            "penthouse",
                            "hotel-apartments",
                            "commercial",
                            "offices",
                            "shops",
                            "warehouses",
                            "showrooms"
                        ],
                        "type": "string",
                        "description": "**[Property Search only]** Filter by property type.\n\n**Residential types** work for both sale and rent.\n**Commercial types** work for both sale and rent.\n\nChoose `All Residential` or `All Commercial` to include all sub-types of that category.",
                        "default": "residential"
                    },
                    "rooms": {
                        "title": "Bedrooms",
                        "type": "string",
                        "description": "**[Property Search only — Residential only]** Number of bedrooms. Enter a single value or comma-separated values.\n\n`0` = Studio. Valid values: `0`, `1`, `2`, `3`, `4`, `5`.\n\nExamples: `1` · `2,3` · `0,1,2` · `4,5`.\n\n⚠️ Not applicable for commercial property types (offices, shops, warehouses, showrooms)."
                    },
                    "price_min": {
                        "title": "Minimum Price (AED)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "**[Property Search only]** Minimum price in AED.\n\n**For Sale:** purchase price. Example: `500000`\n**For Rent:** annual rent amount. Example: `30000`"
                    },
                    "price_max": {
                        "title": "Maximum Price (AED)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "**[Property Search only]** Maximum price in AED.\n\n**For Sale:** purchase price. Example: `2000000`\n**For Rent:** annual rent amount. Example: `120000`"
                    },
                    "completion_status": {
                        "title": "Completion Status",
                        "enum": [
                            "",
                            "completed",
                            "under-construction"
                        ],
                        "type": "string",
                        "description": "**[Property Search only — For Sale only]** Filter by build status.\n\n⚠️ This filter is only meaningful when Purpose is **For Sale**. Rental listings are always ready-to-occupy and are not categorised by completion status."
                    },
                    "sort_order": {
                        "title": "Sort Order",
                        "enum": [
                            "popular",
                            "latest",
                            "lowest_price",
                            "highest_price",
                            "verified"
                        ],
                        "type": "string",
                        "description": "**[Property Search only]** How to order results.",
                        "default": "popular"
                    },
                    "page": {
                        "title": "Page Number",
                        "minimum": 1,
                        "type": "integer",
                        "description": "**[Property Search only]** Which page of results to fetch. Each page contains up to 25 listings.\n\nAfter each run, check **Storage → Key-Value Store → PAGINATION_INFO** to see `totalPages`, `hasNextPage`, and `nextPage`. Increment this number on your next run to continue paginating.",
                        "default": 1
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
