# Zomato Scraper (`crawlerbros/zomato-scraper`) Actor

Scrape restaurant data from Zomato for major Indian and UAE cities. Get cuisine, ratings, cost for two, location, phones, timings, features, and images.

- **URL**: https://apify.com/crawlerbros/zomato-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Other, Developer tools, Automation
- **Stats:** 2 total users, 0 monthly users, 97.7% runs succeeded, 11 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Zomato Scraper

Scrape restaurant data from [Zomato](https://www.zomato.com) for major Indian and UAE cities. Get structured JSON with cuisines, ratings, cost-for-two, location, phones, timings, features, photos, and more — up to 9 restaurants per URL, ready for food-tech research, market analysis, lead lists, and directory building.

---

### What This Actor Does

The **Zomato Scraper** extracts restaurant listings and full details from Zomato.com using two complementary modes:

- **URL mode** — paste any Zomato city, cuisine, locality, or search URL.
- **Filter builder mode** — pick a city and optional filters (cuisine, category, rating, sort, cost range) and the actor constructs the URL for you.

Both modes can be combined in a single run. Optional **Expand Cuisines** and **Expand Localities** toggles fan out across dozens of URLs for wider coverage of a single city.

---

### Key Features

- **Structured JSON output** — 30+ fields per restaurant, grouped by topic
- **India + UAE coverage** — 13 supported cities verified live (Mumbai, NCR/Delhi, Bangalore, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad, Jaipur, Lucknow, Dubai, Abu Dhabi, Sharjah)
- **Four surfaces** — Dining Out, Delivery, Cafes, Drinks & Nightlife
- **Rich filters** — cuisine ID, category ID, minimum rating, sort order, cost range
- **Full restaurant detail** — address, lat/long, phones, cost for two, top dishes, known-for, features, timings
- **Expand modes** — auto-fan-out across top cuisines or locality pages for a city
- **Fault tolerant** — per-URL retries, optional continue-on-failure
- **No browser** — pure HTTP, fast and lightweight

---

### Supported Cities

| Country | Cities |
|---|---|
| **India** | Mumbai, NCR (Delhi), Bangalore, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad, Jaipur, Lucknow |
| **UAE** | Dubai, Abu Dhabi, Sharjah |

> Zomato withdrew from other international markets in 2020. URLs for London, NYC, Sydney, etc. are rejected with a clear error.

---

### How to Use

#### URL mode

Paste any of these URL shapes:

- `https://www.zomato.com/mumbai/restaurants`
- `https://www.zomato.com/ncr/delivery`
- `https://www.zomato.com/dubai/cafes`
- `https://www.zomato.com/bangalore/drinks-and-nightlife`
- `https://www.zomato.com/mumbai/restaurants/biryani`
- `https://www.zomato.com/mumbai/bandra-west-restaurants`
- `https://www.zomato.com/mumbai/restaurants?cuisine=55&rating=4.5`

Each URL returns **up to 9 restaurants** (Zomato's server-side cap). Use Expand modes or supply multiple URLs for wider coverage.

#### Filter builder mode

1. Pick a **City** (e.g. `mumbai`).
2. Pick a **Search Mode** (`dining`, `delivery`, `cafes`, `nightlife`).
3. Optionally set **Cuisine**, **Category**, **Min Rating**, **Sort**, **Min/Max Cost**.
4. Run. The actor constructs a single URL under the hood and scrapes it.

#### Expand modes

- **Expand Cuisines** — fans out across ~15 top cuisines for the chosen city (≈135 restaurants).
- **Expand Localities** — fans out across locality pages Zomato exposes for the chosen city.

---

### Output Fields

Every field below is guaranteed present — missing data is represented as `""`, `0`, `[]`, or empty object — never `null`.

| Field | Type | Description |
|---|---|---|
| `id` | int | Zomato restaurant ID |
| `name` | string | Restaurant name |
| `url` | string | Absolute Zomato URL |
| `type` | string | Always `"restaurant"` |
| `cuisines` | string | Comma-joined cuisine names |
| `establishments` | array | `[{id, name}]` establishment types |
| `status` | string | Human-readable (e.g. `"Open now"`) |
| `timing` | string | Opening hours description |
| `is_delivery_only` | bool | |
| `is_perm_closed` | bool | |
| `location.address` | string | |
| `location.locality` | string | |
| `location.locality_verbose` | string | |
| `location.city` | string | |
| `location.city_id` | int | |
| `location.country` | string | |
| `location.country_id` | int | |
| `location.zipcode` | string | |
| `location.latitude` | float | |
| `location.longitude` | float | |
| `location.map_url` | string | Static map image URL |
| `ratings.aggregate` | float | Overall rating |
| `ratings.text` | string | e.g. `"Very Good"` |
| `ratings.votes` | int | Review count |
| `ratings.dining` | float | Dining-only rating |
| `ratings.delivery` | float | Delivery rating (0 if not offered) |
| `reviews.count` | int | |
| `price.for_two` | int | Cost for two |
| `price.currency` | string | `"₹"` for India, `"AED"` for UAE |
| `price.cft_text` | string | Formatted cost for two |
| `phones` | array of string | |
| `photo.url` / `photo.thumb` | string | Main restaurant photo |
| `images` | array | `[{url, thumb}]` |
| `image_count` | int | |
| `features` | object | `{feature_slug: bool}` |
| `highlights` | array of string | |
| `known_for` | string | |
| `top_dishes` | array of string | |
| `social.website` | string | |
| `search_context.source_url` | string | Which input URL produced this record |
| `search_context.city_slug` | string | |
| `search_context.scraped_at` | string | ISO8601 UTC |

---

### Cuisine & Category ID Reference

Common cuisine IDs for the `cuisine` filter:

| ID | Cuisine | ID | Cuisine |
|---|---|---|---|
| 1 | American | 60 | Japanese |
| 25 | Chinese | 66 | Lebanese |
| 35 | Continental | 73 | Mexican |
| 40 | Fast Food | 82 | Pizza |
| 50 | North Indian | 85 | South Indian |
| 55 | Italian | 95 | Thai |

Common category IDs for the `category` filter:

| ID | Category | ID | Category |
|---|---|---|---|
| 1 | Delivery | 7 | Daily Menus |
| 2 | Fine Dining | 8 | Breakfast |
| 3 | Nightlife | 10 | Dinner |
| 4 | Catching-Up | 11 | Pubs and Bars |
| 5 | Takeaway | 13 | Pocket-Friendly Delivery |
| 6 | Cafes | 14 | Clubs and Lounges |

---

### FAQ

**Why is the max 9 restaurants per URL?**
Zomato's public search surface caps at 9 results per page and does not honour pagination parameters. This is a server-side constraint. To get wider coverage, supply more URLs (one per cuisine/locality/category) or use the **Expand Cuisines** / **Expand Localities** toggles.

**Why are some cities not supported?**
Zomato withdrew from many international markets (US, UK, Australia, etc.) in 2020. Only India and UAE have active, reliable data today. The actor validates city input against a live-verified allow-list.

**Does the actor use proxies or cookies?**
No. It runs purely on unauthenticated HTTP against Zomato's public endpoints.

**What happens if a URL fails?**
By default, the actor retries twice with exponential backoff. If retries are exhausted, it logs a warning and continues with the next URL (`ignore_url_failures=true`). Set `ignore_url_failures=false` to fail the run on any URL failure.

**Why are menu items and review text not in the output?**
Zomato's current public webroutes API no longer exposes dish-level data, review text, or wishlist counts. They were available on the deprecated v2 developer API. The actor only emits fields we can populate reliably so the output is never `null`.

**How do I scrape reviews?**
Review scraping is out of scope for this actor — it would require a separate, dedicated review-fetcher with cursor-based pagination.

**Can I batch multiple cities in one run?**
Yes. Pass multiple URLs in `start_urls`, or combine `start_urls` + a `city` selection.

---

### Output Example

```json
{
  "id": 22244281,
  "name": "Luna Et Sol",
  "url": "https://www.zomato.com/mumbai/luna-et-sol-lower-parel/info",
  "type": "restaurant",
  "cuisines": "Italian, Continental",
  "establishments": [{"id": 18, "name": "Fine Dining"}],
  "status": "Open now",
  "timing": "12midnight – 1am, 12noon – 1am (Mon-Sun)",
  "is_delivery_only": false,
  "is_perm_closed": false,
  "location": {
    "address": "Lower Parel, Mumbai",
    "locality": "Lower Parel",
    "locality_verbose": "Lower Parel, Mumbai",
    "city": "Mumbai",
    "city_id": 3,
    "country": "India",
    "country_id": 1,
    "zipcode": "",
    "latitude": 19.004,
    "longitude": 72.830,
    "map_url": "https://maps.zomato.com/php/staticmap?..."
  },
  "ratings": {
    "aggregate": 4.4, "text": "Very Good", "votes": 903,
    "dining": 4.4, "delivery": 0
  },
  "reviews": {"count": 903},
  "price": {"for_two": 3500, "currency": "₹", "cft_text": "₹3,500 for two"},
  "phones": ["+91 22XXXXXXXX"],
  "photo": {"url": "https://b.zmtcdn.com/...", "thumb": "https://b.zmtcdn.com/..."},
  "images": [{"url": "…", "thumb": "…"}],
  "image_count": 12,
  "features": {"outdoor-seating": true, "credit-card": true},
  "highlights": ["Fine Dining", "Rooftop"],
  "known_for": "Ambience, Italian Food",
  "top_dishes": ["Truffle Pasta", "Tiramisu"],
  "social": {"website": "https://www.zomato.com/mumbai/luna-et-sol-lower-parel/info"},
  "search_context": {
    "source_url": "https://www.zomato.com/mumbai/restaurants",
    "city_slug": "mumbai",
    "scraped_at": "2026-04-11T10:30:00+00:00"
  }
}
````

# Actor input Schema

## `start_urls` (type: `array`):

Zomato restaurant/search/locality URLs. Examples:

- https://www.zomato.com/mumbai/restaurants
- https://www.zomato.com/ncr/restaurants/biryani
- https://www.zomato.com/mumbai/bandra-west-restaurants
- https://www.zomato.com/dubai/delivery

Each URL returns up to 9 restaurants (Zomato server-side cap).

## `city` (type: `string`):

Pick a supported city to build a search URL from filters below. Supported: major Indian cities + UAE.

## `search_mode` (type: `string`):

Which Zomato surface to scrape.

## `cuisine` (type: `string`):

Cuisine ID filter (e.g. 55=Italian, 25=Chinese, 50=North Indian). See README for full list.

## `category` (type: `string`):

Category ID filter (e.g. 2=Fine Dining, 6=Cafes, 11=Pubs and Bars).

## `min_rating` (type: `string`):

Filter to restaurants at or above this rating.

## `sort` (type: `string`):

Result ordering.

## `min_cost` (type: `integer`):

Lower bound of cost-for-two.

## `max_cost` (type: `integer`):

Upper bound of cost-for-two.

## `expand_cuisines` (type: `boolean`):

When set, fan out across 15 top cuisines for the chosen city — 9 × 15 ≈ 135 restaurants per city.

## `expand_localities` (type: `boolean`):

When set, also scrape each locality page Zomato exposes for the chosen city.

## `max_items_per_url` (type: `integer`):

Up to 9 (Zomato server-side cap). Pagination beyond 9 is not available.

## `enrich_details` (type: `boolean`):

Fetch the detail page for each restaurant (menu highlights, hours, contact, features). Disable for speed.

## `max_retries_per_url` (type: `integer`):

Retries on 5xx / 429 / connection errors.

## `ignore_url_failures` (type: `boolean`):

Continue the run if some URLs fail after retries.

## Actor input object example

```json
{
  "start_urls": [
    "https://www.zomato.com/mumbai/restaurants"
  ],
  "city": "mumbai",
  "search_mode": "dining",
  "min_rating": "",
  "sort": "",
  "expand_cuisines": false,
  "expand_localities": false,
  "max_items_per_url": 9,
  "enrich_details": true,
  "max_retries_per_url": 2,
  "ignore_url_failures": true
}
```

# Actor output Schema

## `restaurants` (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 = {
    "start_urls": [
        "https://www.zomato.com/mumbai/restaurants"
    ],
    "city": "mumbai",
    "max_items_per_url": 9,
    "enrich_details": true,
    "max_retries_per_url": 2,
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/zomato-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 = {
    "start_urls": ["https://www.zomato.com/mumbai/restaurants"],
    "city": "mumbai",
    "max_items_per_url": 9,
    "enrich_details": True,
    "max_retries_per_url": 2,
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/zomato-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 '{
  "start_urls": [
    "https://www.zomato.com/mumbai/restaurants"
  ],
  "city": "mumbai",
  "max_items_per_url": 9,
  "enrich_details": true,
  "max_retries_per_url": 2,
  "ignore_url_failures": true
}' |
apify call crawlerbros/zomato-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zomato Scraper",
        "description": "Scrape restaurant data from Zomato for major Indian and UAE cities. Get cuisine, ratings, cost for two, location, phones, timings, features, and images.",
        "version": "1.0",
        "x-build-id": "fMAvZFfIjY0vc5aUI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~zomato-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-zomato-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/crawlerbros~zomato-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-zomato-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/crawlerbros~zomato-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-zomato-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "start_urls": {
                        "title": "Zomato URLs",
                        "type": "array",
                        "description": "Zomato restaurant/search/locality URLs. Examples:\n- https://www.zomato.com/mumbai/restaurants\n- https://www.zomato.com/ncr/restaurants/biryani\n- https://www.zomato.com/mumbai/bandra-west-restaurants\n- https://www.zomato.com/dubai/delivery\n\nEach URL returns up to 9 restaurants (Zomato server-side cap).",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "https://www.zomato.com/mumbai/restaurants"
                        ]
                    },
                    "city": {
                        "title": "City",
                        "enum": [
                            "mumbai",
                            "ncr",
                            "bangalore",
                            "pune",
                            "hyderabad",
                            "chennai",
                            "kolkata",
                            "ahmedabad",
                            "jaipur",
                            "lucknow",
                            "dubai",
                            "abudhabi",
                            "sharjah"
                        ],
                        "type": "string",
                        "description": "Pick a supported city to build a search URL from filters below. Supported: major Indian cities + UAE."
                    },
                    "search_mode": {
                        "title": "Search Mode",
                        "enum": [
                            "dining",
                            "delivery",
                            "cafes",
                            "nightlife"
                        ],
                        "type": "string",
                        "description": "Which Zomato surface to scrape.",
                        "default": "dining"
                    },
                    "cuisine": {
                        "title": "Cuisine",
                        "type": "string",
                        "description": "Cuisine ID filter (e.g. 55=Italian, 25=Chinese, 50=North Indian). See README for full list."
                    },
                    "category": {
                        "title": "Category",
                        "type": "string",
                        "description": "Category ID filter (e.g. 2=Fine Dining, 6=Cafes, 11=Pubs and Bars)."
                    },
                    "min_rating": {
                        "title": "Minimum Rating",
                        "enum": [
                            "",
                            "3.5",
                            "4",
                            "4.5",
                            "5"
                        ],
                        "type": "string",
                        "description": "Filter to restaurants at or above this rating.",
                        "default": ""
                    },
                    "sort": {
                        "title": "Sort By",
                        "enum": [
                            "",
                            "popularity",
                            "rating",
                            "cost"
                        ],
                        "type": "string",
                        "description": "Result ordering.",
                        "default": ""
                    },
                    "min_cost": {
                        "title": "Min Cost (for two)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound of cost-for-two."
                    },
                    "max_cost": {
                        "title": "Max Cost (for two)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound of cost-for-two."
                    },
                    "expand_cuisines": {
                        "title": "Expand Cuisines",
                        "type": "boolean",
                        "description": "When set, fan out across 15 top cuisines for the chosen city — 9 × 15 ≈ 135 restaurants per city.",
                        "default": false
                    },
                    "expand_localities": {
                        "title": "Expand Localities",
                        "type": "boolean",
                        "description": "When set, also scrape each locality page Zomato exposes for the chosen city.",
                        "default": false
                    },
                    "max_items_per_url": {
                        "title": "Max Items Per URL",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Up to 9 (Zomato server-side cap). Pagination beyond 9 is not available.",
                        "default": 9
                    },
                    "enrich_details": {
                        "title": "Fetch Full Details",
                        "type": "boolean",
                        "description": "Fetch the detail page for each restaurant (menu highlights, hours, contact, features). Disable for speed.",
                        "default": true
                    },
                    "max_retries_per_url": {
                        "title": "Max Retries Per URL",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Retries on 5xx / 429 / connection errors.",
                        "default": 2
                    },
                    "ignore_url_failures": {
                        "title": "Ignore URL Failures",
                        "type": "boolean",
                        "description": "Continue the run if some URLs fail after retries.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
