# YouTube Comments Scraper (`fetch_cat/youtube-comments-scraper`) Actor

Extract public YouTube video comments, replies, authors, likes, timestamps, and video context for social listening and creator analytics.

- **URL**: https://apify.com/fetch\_cat/youtube-comments-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / 1,000 comment extracteds

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

## YouTube Comments Scraper

Extract public YouTube video comments and replies at scale.

This Apify actor helps teams collect public comment data from YouTube videos for social listening, creator analytics, moderation research, brand monitoring, audience research, and community reporting.

It accepts YouTube video URLs or video IDs, reads public comment threads, and saves clean dataset rows with author, text, timestamps, reply metadata, and source video details.

### Choose the right YouTube actor

| Need | Use |
| --- | --- |
| Viewer feedback and replies | YouTube Comments Scraper |
| Recent uploads from a channel | YouTube Channel Videos Scraper |
| Caption text for summaries, RAG, or research | YouTube Transcript Scraper |

### What does YouTube Comments Scraper do?

YouTube Comments Scraper collects public comments from one or more YouTube videos.

Use it when you need structured comment data instead of manually scrolling through a video page.

The actor returns one dataset item per comment or reply.

Each row includes the video ID, canonical video URL, video title, comment ID, author name, author channel URL, text, visible published time, reply relationship fields, requested sort mode, and scrape timestamp.

### Who is it for?

#### Social listening teams

Track what viewers say about a campaign, product, creator, brand mention, or announcement video.

#### Creators and channel managers

Export comments for content planning, community analysis, moderation workflows, and audience research.

#### Agencies

Collect public viewer feedback across client videos and competitor videos for recurring reporting.

#### Researchers

Analyze public conversations around media, politics, education, entertainment, and cultural trends.

#### Support and community teams

Find repeated complaints, questions, feature requests, or praise in video comment sections.

### Why use this actor?

- 💬 Export comments into JSON, CSV, Excel, XML, or HTML from Apify datasets.
- 🎬 Process multiple public videos in one run.
- 🧵 Include reply metadata so nested conversations stay understandable.
- 🔎 Use comment IDs and author URLs for deduplication and follow-up analysis.
- ⚙️ Run manually, on a schedule, through the API, or from an automation workflow.
- 🧩 Connect the output to spreadsheets, BI dashboards, sentiment tools, or LLM pipelines.

### What data can you extract?

| Field | Description |
| --- | --- |
| `videoId` | YouTube video ID |
| `videoUrl` | Canonical YouTube watch URL |
| `videoTitle` | Public video title when exposed by YouTube |
| `commentId` | Public comment identifier when exposed by YouTube |
| `parentCommentId` | Parent comment ID for replies |
| `isReply` | Whether the row is a nested reply |
| `authorName` | Public author display name |
| `authorChannelUrl` | Public author channel URL |
| `authorThumbnailUrl` | Public author avatar image URL |
| `text` | Comment or reply text |
| `likeCount` | Visible like count when available |
| `publishedTimeText` | Relative published time shown by YouTube |
| `replyCount` | Visible reply count when available |
| `sort` | Requested comment sort mode |
| `scrapedAt` | ISO timestamp when the row was saved |

### How much does it cost to scrape YouTube comments?

This actor uses pay-per-event pricing.

There is a small start event for each run and a per-comment event for every dataset item saved.

Current formula-derived BRONZE pricing is about **$0.0408 per 1,000 comments**, plus a small $0.005 start event. Higher Apify plan tiers receive automatic volume discounts.

Apify will show the exact maximum charge before you start a run.

### Input options

#### YouTube video URLs

Paste one or more public YouTube video URLs.

Supported examples:

```text
https://www.youtube.com/watch?v=dQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ
https://www.youtube.com/shorts/dQw4w9WgXcQ
````

#### YouTube video IDs

If you already have video IDs, enter them directly.

```text
dQw4w9WgXcQ
```

#### Maximum comments per video

Set a cap to control run size and cost.

For a quick test, use 10 to 25 comments.

For monitoring, increase the limit based on the size of the videos you track.

#### Sort order

Choose top comments or newest comments.

Newest-first depends on what YouTube exposes for the selected video at run time.

#### Include replies

Enable replies when you want conversation context.

Disable replies when you only need top-level comments.

#### Proxy configuration

The actor supports Apify Proxy configuration.

Automatic proxy settings are a good default for most runs.

Use residential proxy only if your workload is throttled.

### Example input

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "maxCommentsPerVideo": 25,
  "sort": "top",
  "includeReplies": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Example output

```json
{
  "videoId": "dQw4w9WgXcQ",
  "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "commentId": "Ugzge340dBgB75hWBm54AaABAg",
  "parentCommentId": null,
  "isReply": false,
  "authorName": "@YouTube",
  "authorChannelUrl": "https://www.youtube.com/@YouTube",
  "authorThumbnailUrl": "https://yt3.ggpht.com/example=s88-c-k-c0x00ffffff-no-rj",
  "text": "can confirm: he never gave us up",
  "likeCount": 255000,
  "publishedTimeText": "1 year ago",
  "replyCount": 960,
  "sort": "top",
  "scrapedAt": "2026-06-16T14:21:28.786Z"
}
```

### How to scrape YouTube comments

1. Open the actor on Apify.
2. Paste one or more YouTube video URLs.
3. Set the maximum number of comments per video.
4. Choose top or newest sort.
5. Decide whether to include replies.
6. Click **Start**.
7. Download the dataset in your preferred format.

### Tips for best results

- Start with a small limit to confirm the video has public comments.
- Use video IDs if you already have a list from another workflow.
- Disable replies when you only need high-level audience sentiment.
- Schedule recurring runs for campaign monitoring.
- Deduplicate downstream by `commentId` if you run the same video repeatedly.
- Use `scrapedAt` to compare comment exports over time.

### Common use cases

- Brand sentiment tracking on product launch videos.
- Creator audience analysis across recent uploads.
- Exporting comments for moderation review.
- Detecting recurring customer questions.
- Researching public reaction to news or entertainment videos.
- Building datasets for natural language processing.
- Monitoring competitor campaign responses.

### Integrations

Send results to Google Sheets through Apify integrations.

Load dataset exports into BigQuery, Snowflake, Airtable, or your BI stack.

Trigger the actor from Zapier, Make, n8n, GitHub Actions, or a custom backend.

Use webhooks to notify your team when a recurring monitoring run finishes.

### API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('fetch_cat/youtube-comments-scraper').call({
  videoUrls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],
  maxCommentsPerVideo: 25,
  sort: 'top',
  includeReplies: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')

run = client.actor('fetch_cat/youtube-comments-scraper').call(run_input={
    'videoUrls': ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],
    'maxCommentsPerVideo': 25,
    'sort': 'top',
    'includeReplies': True,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl "https://api.apify.com/v2/acts/fetch_cat~youtube-comments-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "maxCommentsPerVideo": 25,
    "sort": "top",
    "includeReplies": true
  }'
```

### MCP usage

You can run this actor from Claude Desktop, Claude Code, and other MCP-compatible tools through Apify MCP.

Use this MCP URL pattern:

```text
https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper
```

Claude Code setup:

```bash
claude mcp add apify-youtube-comments https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper
```

Claude Desktop JSON configuration:

```json
{
  "mcpServers": {
    "apify-youtube-comments": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper"
    }
  }
}
```

Example prompts:

- "Scrape the top 50 comments from this YouTube video and summarize the main viewer reactions."
- "Export public comments from these three video URLs and identify common product complaints."
- "Run the YouTube Comments Scraper for this video ID and group comments by sentiment."

### Scheduling

Create a schedule in Apify Console to monitor the same video list daily, weekly, or monthly.

Scheduled runs are useful for campaigns, launches, music videos, trailers, tutorials, and recurring brand mentions.

### Data quality notes

YouTube can change what it exposes for individual videos.

Some videos have comments disabled.

Some comments may be hidden, moderated, removed, region-limited, or unavailable.

Visible like counts and reply counts may not be available for every row.

### Troubleshooting

#### Why did I get zero comments?

The video may have comments disabled, may be private or deleted, may be age restricted, or YouTube may not expose comments for that request.

Try another public video with visible comments and a small limit.

#### Why are some fields null?

YouTube does not expose every field for every comment.

The actor keeps the row instead of inventing values.

#### Should I use residential proxy?

Usually no.

Start with the default proxy settings.

Use residential only if YouTube throttles your specific workload.

### Legality and privacy

This actor is designed to collect publicly visible YouTube comments.

Do not use it to collect private, account-only, or restricted data.

You are responsible for using the data in accordance with applicable laws, platform terms, and privacy requirements.

Avoid collecting more data than you need.

### Related scrapers

Explore other actors by the same developer on Apify:

- https://apify.com/fetch\_cat/youtube-transcript-scraper
- https://apify.com/fetch\_cat/youtube-channel-videos-scraper

### FAQ

#### Can I scrape multiple videos in one run?

Yes. Add multiple video URLs or IDs to the input.

#### Can I get replies?

Yes. Enable `includeReplies` to include nested replies when YouTube exposes them.

#### Can I export to CSV?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, and HTML.

#### Can I run this from code?

Yes. Use the Apify API, JavaScript client, Python client, webhooks, schedules, or MCP.

#### Does this require a YouTube account?

No. The actor is designed for public comments visible without login.

### Limitations

This actor does not use private accounts.

It does not bypass paywalls, login walls, or private video restrictions.

It cannot return comments that YouTube itself does not expose for the public video page.

### Changelog

#### 0.1

Initial version for public YouTube video comments with URL/ID input, per-video limits, sorting option, reply option, proxy configuration, and structured comment dataset output.

# Actor input Schema

## `videoUrls` (type: `array`):

Public YouTube watch, Shorts, embed, or youtu.be URLs to scrape comments from.

## `videoIds` (type: `array`):

Optional 11-character YouTube video IDs. Use this if you already have IDs instead of full URLs.

## `maxCommentsPerVideo` (type: `integer`):

Maximum number of comments and replies to save for each video.

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

Use top comments or newest comments when YouTube exposes the newest-comments continuation.

## `includeReplies` (type: `boolean`):

Also extract replies nested under top-level comments when available.

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

Optional Apify Proxy settings. Datacenter/automatic proxy is usually enough; use residential only if YouTube throttles your workload.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "videoIds": [],
  "maxCommentsPerVideo": 20,
  "sort": "top",
  "includeReplies": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "videoUrls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ],
    "videoIds": [],
    "maxCommentsPerVideo": 20,
    "sort": "top",
    "includeReplies": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/youtube-comments-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 = {
    "videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "videoIds": [],
    "maxCommentsPerVideo": 20,
    "sort": "top",
    "includeReplies": True,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/youtube-comments-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 '{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "videoIds": [],
  "maxCommentsPerVideo": 20,
  "sort": "top",
  "includeReplies": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call fetch_cat/youtube-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Comments Scraper",
        "description": "Extract public YouTube video comments, replies, authors, likes, timestamps, and video context for social listening and creator analytics.",
        "version": "0.1",
        "x-build-id": "IPEyusiUVr6wBXRoc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~youtube-comments-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-youtube-comments-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/fetch_cat~youtube-comments-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-youtube-comments-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/fetch_cat~youtube-comments-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-youtube-comments-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": {
                    "videoUrls": {
                        "title": "YouTube video URLs",
                        "type": "array",
                        "description": "Public YouTube watch, Shorts, embed, or youtu.be URLs to scrape comments from.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "videoIds": {
                        "title": "YouTube video IDs",
                        "type": "array",
                        "description": "Optional 11-character YouTube video IDs. Use this if you already have IDs instead of full URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxCommentsPerVideo": {
                        "title": "Maximum comments per video",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of comments and replies to save for each video.",
                        "default": 20
                    },
                    "sort": {
                        "title": "Comment sort order",
                        "enum": [
                            "top",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Use top comments or newest comments when YouTube exposes the newest-comments continuation.",
                        "default": "top"
                    },
                    "includeReplies": {
                        "title": "Include replies",
                        "type": "boolean",
                        "description": "Also extract replies nested under top-level comments when available.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy settings. Datacenter/automatic proxy is usually enough; use residential only if YouTube throttles your workload."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
