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

Scrape YouTube comments without API limits or quotas. Extract comment text, author, likes, replies, publish time & video metadata. Sort by Top or Newest. Pay per result — no charge if no comments found. Export JSON, CSV, Excel.

- **URL**: https://apify.com/scraperhive/youtube-comments-scraper.md
- **Developed by:** [Mubeen Ali](https://apify.com/scraperhive) (community)
- **Categories:** Videos, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 1,000 comments

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 — No Quota. Pay Per Result.

**Extract YouTube comments without API limits.** Scrape comment text, author name, like count, reply count, publish time, replies, and full video metadata from any YouTube video — in seconds. Download as JSON, CSV, or Excel. No YouTube Data API key needed.

> **Zero charges if no comments are retrieved.** You only pay for actual results.

---

### What Is YouTube Comments Scraper?

YouTube Comments Scraper is an unofficial YouTube comments API alternative that bypasses the YouTube Data API v3 quota system entirely. The official YouTube Data API gives you just **10,000 units per day** — enough for roughly 100 videos before you hit the wall. This actor has **no quotas, no limits, no key required.**

Paste in one URL or ten thousand. Sort by top comments or newest first. Include full reply threads or top-level only. Get clean, structured data ready for sentiment analysis, AI training, brand monitoring, or competitive research — all without managing infrastructure, proxies, or API credentials.

---

### Key Features

- **No YouTube API key required** — uses YouTube's internal InnerTube API, the same endpoint the YouTube app itself uses
- **No daily quota limits** — scrape as many videos as you need in a single run
- **Replies support** — optionally fetch every reply thread under every comment
- **Sort control** — retrieve Top comments (most-liked first) or Newest first
- **Flexible URL formats** — supports `youtube.com/watch?v=`, `youtu.be/`, `youtube.com/shorts/`, `/embed/`, and mobile `m.youtube.com` URLs
- **Rich per-comment output** — comment ID, text, author username, channel ID, avatar URL, like count, reply count, verified badge, creator heart, publish timestamp, video title, and video channel name
- **Pay-per-result pricing** — charged per comment retrieved, not per compute minute
- **Zero charge on zero results** — if a video has no comments or is unavailable, you pay nothing

---

### Pricing

| Plan | Price per 1,000 Comments |
|------|--------------------------|
| Free | $2.00 |
| Starter | $1.40 |
| Scale | $1.10 |
| Business | $0.80 |

> **No comments retrieved = no charge.** Unavailable videos, age-restricted videos, and videos with disabled comments are returned as error items at zero cost.

---

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `videoUrls` | array | — | One or more YouTube video URLs to scrape. **Required.** |
| `maxComments` | integer | 100 | Max top-level comments per video. Set to `0` for all available comments. |
| `sortBy` | select | `top` | `top` = most-liked first. `newest` = most recent first. |
| `includeReplies` | boolean | false | When enabled, fetches all reply threads under every comment. Increases run time proportionally. |

**Supported URL formats:**
````

https://www.youtube.com/watch?v=VIDEO\_ID
https://youtu.be/VIDEO\_ID
https://youtube.com/shorts/VIDEO\_ID
https://www.youtube.com/embed/VIDEO\_ID
https://m.youtube.com/watch?v=VIDEO\_ID

````

**Input JSON example:**
```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "maxComments": 500,
  "sortBy": "top",
  "includeReplies": false
}
````

***

### Output

Each scraped comment is returned as one structured JSON item. Comments and replies share the same schema — differentiated by the `type` field.

**Output fields per item:**

| Field | Description |
|-------|-------------|
| `type` | `"comment"` or `"reply"` |
| `commentId` | Unique YouTube comment ID (CID) |
| `text` | Full comment text |
| `authorName` | Author's YouTube handle (e.g. `@username`) |
| `authorChannelId` | Author's YouTube channel ID |
| `authorAvatarUrl` | URL of the author's profile picture |
| `likeCount` | Number of likes on the comment |
| `replyCount` | Number of replies (top-level comments only) |
| `publishedTime` | Relative publish time (e.g. `"2 hours ago"`) |
| `isVerified` | Whether the author has a verified badge |
| `isCreator` | Whether the comment was posted by the video's creator |
| `isArtist` | Whether the author is a verified music artist |
| `videoId` | YouTube video ID |
| `videoUrl` | Full URL of the video |
| `videoTitle` | Title of the video |
| `videoChannel` | Name of the video's channel |
| `commentsCount` | Total comment count on the video |
| `scrapedAt` | ISO 8601 timestamp of when the comment was scraped |

**Output JSON sample:**

```json
{
  "type": "comment",
  "commentId": "UgxwmauZ1ebebrAGUMt4AaABAg",
  "text": "This is genuinely one of the best videos on this topic.",
  "authorName": "@username",
  "authorChannelId": "UCAV3YypyX8YNn6ITSMaKBkQ",
  "authorAvatarUrl": "https://yt3.ggpht.com/ytc/...",
  "likeCount": 142,
  "replyCount": 7,
  "publishedTime": "3 days ago",
  "isVerified": false,
  "isCreator": false,
  "isArtist": false,
  "videoId": "dQw4w9WgXcQ",
  "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "videoTitle": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
  "videoChannel": "Rick Astley",
  "commentsCount": 4800000,
  "scrapedAt": "2026-06-21T11:06:36.550Z"
}
```

***

### How to Use

1. **Create a free Apify account** at [apify.com](https://apify.com) — includes $5 monthly platform credits
2. **Open YouTube Comments Scraper** in the Apify Store
3. **Paste one or more YouTube video URLs** into the `videoUrls` field
4. **Set your options** — max comments, sort order, and whether to include replies
5. **Click Start** and wait for the run to complete
6. **Download your data** from the Storage tab in JSON, CSV, Excel, XML, or HTML

***

### What Can You Do With YouTube Comment Data?

**Sentiment analysis & NLP**
Feed raw comment text into your sentiment pipeline. Classify audience reactions, train text classifiers, or build fine-tuning datasets for LLMs — without touching the YouTube Data API quota.

**Brand monitoring**
Track every mention of your brand, product, or competitor across any set of videos. Sort by newest to catch emerging conversations in real time.

**Competitor intelligence**
Scrape comments on your competitors' most popular videos. Identify recurring complaints, feature requests, and praise patterns — then act on them before they do.

**Audience research**
Understand exactly what your target audience cares about. YouTube comments are unfiltered, high-signal data about user intent, confusion, and enthusiasm.

**Content strategy**
Find the questions people are asking in comments. Answer them in your next video and outrank the competition on search.

**AI training data**
Build labeled datasets for comment toxicity detection, spam classification, intent recognition, or multi-language NLP models.

**Academic research**
Collect large-scale comment corpora for social media studies, misinformation research, or computational linguistics without institutional API access issues.

***

### Error Handling

When a video cannot be scraped, the actor pushes an error item to the dataset instead of failing silently. Normal output items are never affected.

**Error item structure:**

```json
{
  "url": "https://www.youtube.com/watch?v=EXAMPLE",
  "error": "VIDEO_UNAVAILABLE",
  "note": "This video is not available"
}
```

**Error codes:**

| Code | Meaning |
|------|---------|
| `VIDEO_UNAVAILABLE` | Video is deleted, region-blocked, or otherwise unavailable |
| `AGE_RESTRICTED` | Video requires login to view |
| `NO_COMMENTS` | Video exists but has comments disabled or zero comments |
| `NOT_FOUND` | URL returned a 404 |
| `NO_VALID_START_URLS` | All provided URLs were invalid or malformed |
| `INVALID_INPUT` | Actor configuration is invalid — run is terminated |

> Error items are **not charged**. You only pay for successfully extracted comment items.

***

### YouTube Comments API vs YouTube Data API v3

| | YouTube Comments Scraper | YouTube Data API v3 |
|---|---|---|
| API key required | ❌ No | ✅ Yes |
| Daily quota limit | ❌ None | ✅ 10,000 units/day |
| Replies support | ✅ Yes | ✅ Yes (costs extra quota) |
| Author avatar URL | ✅ Yes | ❌ Not returned |
| Author channel ID | ✅ Yes | ✅ Yes |
| Creator heart flag | ✅ Yes | ❌ No |
| Verified badge flag | ✅ Yes | ❌ No |
| Artist badge flag | ✅ Yes | ❌ No |
| Pay per result | ✅ Yes | ❌ Flat compute billing |
| Infrastructure needed | ❌ None | ✅ Your own server |

***

### Use via API

Run this actor programmatically using the Apify API. Integrate it into any workflow, data pipeline, or automation stack.

**Node.js (apify-client):**

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('scraperhive/youtube-comments-scraper').call({
  videoUrls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],
  maxComments: 500,
  sortBy: 'top',
  includeReplies: false,
});

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

**Python (apify-client):**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("scraperhive/youtube-comments-scraper").call(run_input={
    "videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "maxComments": 500,
    "sortBy": "top",
    "includeReplies": False,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

***

### Integrations

Connect YouTube Comments Scraper to your existing stack via the Apify platform's native integrations:

**Workflow automation:** Make (Integromat), Zapier, n8n
**Cloud storage:** Google Drive, Dropbox, AWS S3
**Databases:** Airtable, Google Sheets, MongoDB
**Messaging:** Slack, Discord
**Developer tools:** GitHub Actions, webhooks

Use webhooks to trigger a downstream action the moment a run completes — push results to a Slack channel, write to a database, or kick off a sentiment analysis pipeline automatically.

***

### MCP Server Support

This actor is available via Apify's MCP server, compatible with Claude Desktop, LibreChat, Cursor, and any other MCP client.

**To connect:**

1. Go to the **MCP tab** on this actor's page
2. Start a Server-Sent Events (SSE) session to receive a `sessionId`
3. Send API messages using that `sessionId` to trigger the scraper

***

### FAQ

**Is scraping YouTube comments legal?**
This actor only extracts publicly visible comments — data that any user can read in their browser. It does not extract private data, email addresses, or any information that requires a login. That said, you are responsible for how you use the data. If your use case involves personal data, consult your legal team. See [Apify's blog on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for more context.

**Do I need a proxy?**
Residential proxies are required for reliable YouTube scraping. They are automatically included when you run this actor on the Apify platform — no configuration needed. Proxies are included in Apify's Starter plan and above.

**Can I scrape comments from YouTube Shorts?**
Yes. The actor supports `youtube.com/shorts/VIDEO_ID` URLs natively alongside standard video URLs.

**Does it scrape replies to comments?**
Yes. Enable `includeReplies` in the input. Each reply is returned as a separate item with `type: "reply"` and the same field schema as top-level comments.

**What happens if a video has no comments or is unavailable?**
The actor pushes an error item to the dataset with the relevant error code. You are not charged for error items.

**How do I get all comments from a video?**
Set `maxComments` to `0`. The actor will paginate through all available comments until none remain.

**Can I scrape multiple videos in one run?**
Yes. Add as many URLs as you need to the `videoUrls` array. Each video is processed independently.

**What export formats are available?**
JSON, CSV, Excel (XLSX), XML, and HTML table — all available from the Storage tab after a run completes.

***

### Related Actors

- [YouTube Transcript Scraper](https://apify.com/scraperhive/youtube-transcript-scraper) — full subtitles and auto-generated captions

***

### Feedback & Issues

Found a bug or have a feature request? Open an issue in the **Issues tab** on this actor's page. We actively maintain this actor and respond to all reports.

# Actor input Schema

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

List of YouTube video URLs to scrape. Supports all common formats: https://www.youtube.com/watch?v=ID, https://youtu.be/ID, https://youtube.com/shorts/ID, https://www.youtube.com/embed/ID, https://m.youtube.com/watch?v=ID

## `maxComments` (type: `integer`):

Maximum number of top-level comments to scrape per video. Set to 0 to scrape all available comments.

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

Order in which comments are returned. 'Top' returns most-liked first. 'Newest' returns most recent first.

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

If enabled, the actor will also fetch all replies for every comment that has them. This increases run time and compute units proportionally.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "maxComments": 10,
  "sortBy": "top",
  "includeReplies": false
}
```

# 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"
    ]
};

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

# Run the Actor and wait for it to finish
run = client.actor("scraperhive/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"
  ]
}' |
apify call scraperhive/youtube-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Comments Scraper",
        "description": "Scrape YouTube comments without API limits or quotas. Extract comment text, author, likes, replies, publish time & video metadata. Sort by Top or Newest. Pay per result — no charge if no comments found. Export JSON, CSV, Excel.",
        "version": "1.0",
        "x-build-id": "3vHVJyLlNsdm2hL1J"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperhive~youtube-comments-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperhive-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/scraperhive~youtube-comments-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperhive-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/scraperhive~youtube-comments-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperhive-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",
                "required": [
                    "videoUrls"
                ],
                "properties": {
                    "videoUrls": {
                        "title": "YouTube Video URLs",
                        "minItems": 1,
                        "type": "array",
                        "description": "List of YouTube video URLs to scrape. Supports all common formats: https://www.youtube.com/watch?v=ID, https://youtu.be/ID, https://youtube.com/shorts/ID, https://www.youtube.com/embed/ID, https://m.youtube.com/watch?v=ID",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxComments": {
                        "title": "Max Comments Per Video",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of top-level comments to scrape per video. Set to 0 to scrape all available comments.",
                        "default": 10
                    },
                    "sortBy": {
                        "title": "Sort Comments By",
                        "enum": [
                            "top",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Order in which comments are returned. 'Top' returns most-liked first. 'Newest' returns most recent first.",
                        "default": "top"
                    },
                    "includeReplies": {
                        "title": "Include Replies",
                        "type": "boolean",
                        "description": "If enabled, the actor will also fetch all replies for every comment that has them. This increases run time and compute units proportionally.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
