# Viator Scraper – Tours, Activities, Prices & Availability (`abotapi/viator-com-scraper`) Actor

Collect Viator.com tour and activity results from destinations, categories, search pages, or pasted URLs. Returns product codes, prices, ratings, reviews, images, availability, source context, and optional detail fields.

- **URL**: https://apify.com/abotapi/viator-com-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Travel, Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
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

## Viator Tours and Activities Scraper

Collect Viator tour and activity listings from destination/category presets or pasted Viator URLs. The actor saves product codes, prices, ratings, review counts, images, availability, source context, and optional detail status for travel research, catalog monitoring, and price comparison workflows.

### What You Get

- Search mode for major destinations and tour categories.
- URL mode for Viator category, search-result, destination, or product URLs.
- Filters for keyword, price range, currency, minimum rating, minimum reviews, and availability.
- Sort options for price, rating, review count, or original source order.
- Optional product detail enrichment. Rows are still saved when a product page is unavailable.
- MCP connector export for sending selected rows into connected apps after the dataset is written.

### Input Examples

Search mode:

```json
{
  "mode": "search",
  "destination": "boston",
  "category": "bus_tours",
  "keyword": "hop",
  "minRating": 4,
  "minReviews": 50,
  "sortBy": "price_asc",
  "maxItems": 20,
  "maxPages": 0,
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] },
  "mcpConnectors": []
}
````

URL mode:

```json
{
  "mode": "url",
  "urls": ["https://www.viator.com/Boston-tours/Bus-and-Minivan-Tours/d678-g12-c98"],
  "maxItems": 20,
  "maxPages": 0,
  "fetchDetails": false
}
```

`maxItems` is the default cap. It means the maximum matching rows to save, not a guarantee that exactly that many live matches exist. `maxPages` defaults to `0`, which means no page limit; the run stops at `maxItems`.

### Inputs

| Input | Type | Default | Description |
|---|---:|---:|---|
| `mode` | string | `search` | Search filters or URL list. |
| `urls` | array | sample Boston URL | Viator URLs for URL mode. |
| `destination` | string | `boston` | Destination preset for search mode. |
| `category` | string | `tours_sightseeing` | Category preset for search mode. |
| `keyword` | string | empty | Text that must appear in activity/source fields. |
| `minPrice`, `maxPrice` | number | empty | Price range filters. |
| `currency` | string | Any | Keep only rows in a selected currency. |
| `minRating` | number | empty | Minimum aggregate rating. |
| `minReviews` | integer | empty | Minimum review count. |
| `availability` | string | Any | Availability filter. |
| `sortBy` | string | `source` | Source, price, rating, or review-count order. |
| `fetchDetails` | boolean | `false` | Try product pages for additional fields. |
| `maxItems` | integer | `20` | Maximum matching rows to save. |
| `maxPages` | integer | `0` | No page limit; stops at Max items. |
| `proxy` | object | Residential | Proxy configuration. |
| `mcpConnectors` | array | empty | Authorized MCP connectors to export rows to (Notion, Linear, Airtable, Apify). |
| `notionParentPageUrl` | string | empty | Parent page for Notion connector exports. |
| `maxNotifyListings` | integer | `50` | Maximum rows sent to connectors. |

### Output Fields

| Field | Description |
|---|---|
| `name` | Activity or tour name. |
| `productCode` | Viator product code parsed from the product URL. |
| `url` | Activity URL. |
| `image` | Main image URL. |
| `locationName` | Destination/source location when available. |
| `addressLocality` | Locality when available. |
| `addressCountryName` | Country/source breadcrumb when available. |
| `offerPrice` | Listed price. |
| `offerCurrency` | Price currency. |
| `availability` | Availability status. |
| `priceValidUntil` | Price validity date when present. |
| `ratingValue`, `exactRating` | Aggregate rating. |
| `bestRating`, `worstRating` | Rating bounds. |
| `reviewCount` | Number of reviews (full count when `fetchDetails` is on). |
| `description` | Full activity description (detail mode). |
| `images` | All product image URLs (detail mode). |
| `reviews` | Up to 10 recent reviews with author, rating, date, and text (detail mode). |
| `itineraryStopCount`, `itineraryStops` | Itinerary stop count and stop names (detail mode). |
| `position` | Position on the source page. |
| `sourceUrl`, `sourcePage`, `sourceName` | Source context. |
| `sourceDescription` | Source description text. |
| `breadcrumbs` | Source breadcrumb labels. |
| `detailStatus` | Detail enrichment result. |
| `detailError` | Detail error summary, only when detail enrichment fails. |
| `scrapedAt` | ISO timestamp. |

### Proxy Guidance

Residential proxy is recommended for this site. If a run returns fewer rows than `maxItems`, check whether the selected filters have enough live matches and whether the chosen proxy tier is accepted. Cheaper tiers can be blocked or incomplete.

### MCP Connector Export

Optionally pipe a capped subset of saved rows into the apps you already use via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify -> Settings -> Integrations, then pick it in the `mcpConnectors` field. Supported connectors:

| Connector | Server |
|---|---|
| Notion | `https://mcp.notion.com/mcp` |
| Linear | `https://mcp.linear.app/sse` |
| Airtable | `https://mcp.airtable.com/mcp` |
| Apify | `https://mcp.apify.com` |

The dataset remains the source of truth. `maxNotifyListings` limits connector writes only; it does not change dataset output. For Notion, set `notionParentPageUrl` to the parent page where tour pages are created.

### Notes

Product detail enrichment is optional. Category/search pages normally provide the core product fields used by the dataset. When a product page cannot be opened, the list row is still saved with `detailStatus`.

# Actor input Schema

## `mode` (type: `string`):

Choose destination/category search or URL list mode.

## `destination` (type: `string`):

Search mode destination preset.

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

Search mode category preset.

## `keyword` (type: `string`):

Optional keyword that must appear in the activity name, URL, destination, or category text. Leave empty to keep all results.

## `minPrice` (type: `number`):

Minimum listed price. Leave empty for no minimum.

## `maxPrice` (type: `number`):

Maximum listed price. Leave empty for no maximum.

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

Keep only rows with this currency, or Any to keep all returned currencies.

## `minRating` (type: `number`):

Minimum aggregate rating.

## `minReviews` (type: `integer`):

Minimum review count.

## `availability` (type: `string`):

Filter by availability value.

## `sortBy` (type: `string`):

Sort saved rows after filters are applied.

## `urls` (type: `array`):

Viator destination, category, search-result, or product URLs. Used only in URL mode.

## `fetchDetails` (type: `boolean`):

Try product pages for additional fields when available. Results are still saved if detail pages are unavailable.

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

Maximum matching rows to save. Fewer rows can be returned when the selected source and filters match fewer live records.

## `maxPages` (type: `integer`):

No page limit when set to 0. The run stops at Max items.

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

Residential proxy is recommended for this site. Cheaper proxy tiers can return fewer usable pages or block.

## `mcpConnectors` (type: `array`):

Optionally send the scraped tours into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per tour (name + key fields), not the full JSON. The complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which tour pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "destination": "boston",
  "category": "tours_sightseeing",
  "currency": "",
  "availability": "",
  "sortBy": "source",
  "urls": [
    "https://www.viator.com/Boston-tours/Bus-and-Minivan-Tours/d678-g12-c98"
  ],
  "fetchDetails": false,
  "maxItems": 20,
  "maxPages": 0,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxNotifyListings": 50
}
```

# 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 = {
    "urls": [
        "https://www.viator.com/Boston-tours/Bus-and-Minivan-Tours/d678-g12-c98"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/viator-com-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 = { "urls": ["https://www.viator.com/Boston-tours/Bus-and-Minivan-Tours/d678-g12-c98"] }

# Run the Actor and wait for it to finish
run = client.actor("abotapi/viator-com-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 '{
  "urls": [
    "https://www.viator.com/Boston-tours/Bus-and-Minivan-Tours/d678-g12-c98"
  ]
}' |
apify call abotapi/viator-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Viator Scraper – Tours, Activities, Prices & Availability",
        "description": "Collect Viator.com tour and activity results from destinations, categories, search pages, or pasted URLs. Returns product codes, prices, ratings, reviews, images, availability, source context, and optional detail fields.",
        "version": "0.1",
        "x-build-id": "W7XHI26dM7TYmmmae"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~viator-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-viator-com-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/abotapi~viator-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-viator-com-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/abotapi~viator-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-viator-com-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": [
                    "mode",
                    "maxItems"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Choose destination/category search or URL list mode.",
                        "default": "search"
                    },
                    "destination": {
                        "title": "Destination",
                        "enum": [
                            "boston",
                            "new_york",
                            "las_vegas",
                            "london",
                            "paris",
                            "rome",
                            "sydney"
                        ],
                        "type": "string",
                        "description": "Search mode destination preset.",
                        "default": "boston"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "tours_sightseeing",
                            "bus_tours",
                            "day_trips",
                            "walking_tours",
                            "food_drink",
                            "attractions_tickets"
                        ],
                        "type": "string",
                        "description": "Search mode category preset.",
                        "default": "tours_sightseeing"
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Optional keyword that must appear in the activity name, URL, destination, or category text. Leave empty to keep all results."
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Minimum listed price. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Maximum listed price. Leave empty for no maximum."
                    },
                    "currency": {
                        "title": "Currency",
                        "enum": [
                            "",
                            "USD",
                            "AUD",
                            "EUR",
                            "GBP",
                            "CAD",
                            "NZD",
                            "SGD"
                        ],
                        "type": "string",
                        "description": "Keep only rows with this currency, or Any to keep all returned currencies.",
                        "default": ""
                    },
                    "minRating": {
                        "title": "Min rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum aggregate rating."
                    },
                    "minReviews": {
                        "title": "Min reviews",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum review count."
                    },
                    "availability": {
                        "title": "Availability",
                        "enum": [
                            "",
                            "InStock"
                        ],
                        "type": "string",
                        "description": "Filter by availability value.",
                        "default": ""
                    },
                    "sortBy": {
                        "title": "Sort",
                        "enum": [
                            "source",
                            "price_asc",
                            "price_desc",
                            "rating_desc",
                            "reviews_desc"
                        ],
                        "type": "string",
                        "description": "Sort saved rows after filters are applied.",
                        "default": "source"
                    },
                    "urls": {
                        "title": "URLs",
                        "type": "array",
                        "description": "Viator destination, category, search-result, or product URLs. Used only in URL mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch details",
                        "type": "boolean",
                        "description": "Try product pages for additional fields when available. Results are still saved if detail pages are unavailable.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum matching rows to save. Fewer rows can be returned when the selected source and filters match fewer live records.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 0,
                        "type": "integer",
                        "description": "No page limit when set to 0. The run stops at Max items.",
                        "default": 0
                    },
                    "proxy": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Residential proxy is recommended for this site. Cheaper proxy tiers can return fewer usable pages or block.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped tours into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per tour (name + key fields), not the full JSON. The complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which tour pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
