# YouTube Channel Videos & Stats Scraper (`lurkapi/youtube-channel-videos-stats-scraper`) Actor

Scrape all videos from YouTube channels. Get titles, views, duration, publish dates, thumbnails, and optional enriched stats (likes, comments, category, tags).

- **URL**: https://apify.com/lurkapi/youtube-channel-videos-stats-scraper.md
- **Developed by:** [LurkAPI](https://apify.com/lurkapi) (community)
- **Categories:** Automation, Social media, Videos
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 video scrapeds

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 Channel Videos & Stats Scraper

Enter any YouTube channel and get a clean list of every video with metadata and stats. No coding required.

### 🎬 What it does

Give it one or more YouTube channels (or playlists), and it will:

1. **Pull every video** from each channel with title, views, duration, publish date, and thumbnail
2. **Filter and sort** by content type, date range, title keywords, or view count
3. **Return structured results** you can export as JSON, CSV, or Excel

You can scrape up to 200 channels per run, with up to 5,000 videos each. Results appear in real time in the Output tab as they are scraped.

### 📋 How to use it

#### Step 1: Enter your channels

Add one or more YouTube channels. Supported formats:

- `@mkbhd` (handle)
- `https://www.youtube.com/@mkbhd` (channel URL)
- `UCBJycsmduvYEL83R_U4JriQ` (channel ID)
- `https://www.youtube.com/playlist?list=PLDIoUOhQQPl...` (playlist URL)
- `PLDIoUOhQQPl...` (playlist ID)
- Any video URL (the scraper will find its channel automatically and scrape all videos from it, not just the linked video)

#### Step 2: Configure your filters

- **Content Type**: All content, videos only, Shorts only, or livestreams only.
- **Sort By**: Newest first (default), oldest first, or most viewed.
- **Published After / Before**: Only get videos from a specific date range.
- **Title Filter**: Only keep videos whose title contains specific keywords. Separate multiple keywords with commas (e.g. `review, unboxing`).
- **Max Videos Per Channel**: Default is 50. Set to 0 for unlimited (up to 5,000).

#### Step 3: Run it

Click Start. Results appear in real time in the Output tab. You do not have to wait for the full run to finish. When done, export your results from the Output tab.

#### For developers

You can call this tool through the Apify API:

```json
{
    "channels": ["@mkbhd", "@veritasium"],
    "maxVideosPerChannel": 100,
    "contentType": "all",
    "sortBy": "newest",
    "includeVideoStats": true,
    "concurrency": 3
}
````

### 🔄 Incremental scraping

If you scrape the same channels regularly, pass video IDs from your previous run to the `skipVideoIds` input. The scraper will skip those videos and only return new ones. This saves time and cost on repeated runs.

Example workflow:

1. Run the scraper for `@mkbhd` with `maxVideosPerChannel: 100`
2. Save the `videoId` column from the results
3. Next week, run again with the same channel and pass the saved IDs in `skipVideoIds`
4. Only new videos since your last run will be returned

### 📊 Output

Every result includes a `status` field. When it says "Success", the video was scraped correctly. If something went wrong, the status will tell you what happened and what to do about it.

#### Free fields (every video)

| Field | Description |
|-------|-------------|
| status | "Success" or an error message explaining what went wrong |
| channelName | Channel name |
| channelHandle | Channel handle (e.g. "@mkbhd") |
| channelId | YouTube channel ID |
| channelUrl | Link to the channel |
| subscriberCount | Subscriber count (e.g. "20.9M") |
| totalChannelViews | Total views across all channel videos (e.g. "5,347,960,537") |
| totalChannelVideos | Total number of videos on the channel (e.g. "1,814") |
| channelCountry | Channel country (e.g. "United States") |
| channelJoinedDate | When the channel was created (e.g. "Mar 21, 2008") |
| isVerified | Whether the channel has a verified badge |
| videoId | YouTube video ID |
| videoUrl | Direct link to the video |
| title | Video title |
| thumbnailUrl | Link to the video thumbnail |
| viewCount | View count as a number |
| viewCountText | View count as text (e.g. "3.4M views") |
| publishedText | When it was published (e.g. "2 days ago") |
| duration | Video length (e.g. "12:34") |
| durationSeconds | Video length in seconds |
| contentType | "video", "short", "livestream-active", "livestream-completed", or "livestream-upcoming" |
| playlistId | Playlist ID (only when scraping a playlist) |
| playlistTitle | Playlist title (only when scraping a playlist) |
| scrapedAt | When this data was collected (ISO timestamp) |

#### Video Stats add-on (paid)

Enable **Include Video Stats** to get these extra fields per video:

| Field | Description |
|-------|-------------|
| description | Full video description |
| likeCount | Number of likes |
| commentCount | Number of comments |
| category | YouTube category (e.g. "Science & Technology") |
| tags | Array of video tags |
| publishedDate | Exact publish date (e.g. "Apr 1, 2026") |

### 🌐 Proxy settings

By default, the scraper uses Apify's datacenter proxies.

- **Automatic (default)**: Apify selects the best proxy.
- **Datacenter**: Fast and cheap. Works for most runs.
- **Residential**: Use if you get frequent blocks or empty results. Recommended for large runs (500+ videos).
- **Own proxies**: Provide your own proxy URLs.
- **No proxy**: Disable proxies. There will be no IP rotation if you get blocked.

### 💰 Pricing

| What you pay for | Price | When it's charged |
|------------------|-------|-------------------|
| Base (every video) | $1.00 per 1,000 videos | For each video in the output |
| Video Stats add-on | $0.25 per 1,000 videos | Only when the add-on is enabled |

**Example**: Scraping 2 channels with 500 videos each (1,000 total) costs $1.00. With Video Stats enabled, it costs $1.25.

### 💡 Good to know

- **Start small**: Try a single channel with 10-20 videos first to test your filters before running large batches.
- **Use incremental scraping** for repeated runs to avoid paying for the same videos twice.
- **Shorts have limited metadata**: The Shorts feed does not include publish dates or duration. Enable Video Stats to get exact publish dates for Shorts.
- **Video URL input resolves to the full channel**: If you paste a video URL, the scraper will find its channel and scrape all channel videos, not just that one video.
- **Playlists have limited channel data**: When scraping playlists, subscriber count and channel metadata come from each video's author, not from a channel page.
- Results are stored in your Apify storage. How long they are kept depends on your Apify plan.

### ❓ FAQ

**Why are some fields empty (null)?**
Fields like `description`, `likeCount`, `category`, and `tags` require the Video Stats add-on. Enable it in the input to get those fields. Some fields like `publishedDate` (exact date) also require the add-on. The free `publishedText` field gives you a relative date (e.g. "2 days ago").

**Why did my run return no results?**
Check that the channel URL or handle is correct. If the channel has no public videos, or all videos were filtered out by your date/title filters, you will see a message explaining what happened. Try removing filters to confirm the channel has content.

**Which proxy should I use?**
Start with the default (datacenter). If you get frequent blocks or empty results, switch to residential proxies in the Proxy Configuration section.

**Can I scrape playlists?**
Yes. Paste a playlist URL or playlist ID (starting with "PL") in the channels input. Videos from playlists include `playlistId` and `playlistTitle` in the output.

### 🔗 Other tools you might like

- [YouTube Transcript Download](https://apify.com/lurkapi/youtube-transcript-download) - Extract transcripts and captions in SRT, VTT, JSON, or plain text.
- [YouTube Comments Scraper](https://apify.com/lurkapi/youtube-comments-scraper) - Extract comments and replies with language detection.
- [YouTube Channel Email Scraper](https://apify.com/lurkapi/youtube-channel-email-scraper) - Find contact emails and social links from channels.

### ⚖️ Disclaimer

This tool is intended for personal, research, and educational use. You are responsible for complying with YouTube's Terms of Service and applicable laws in your jurisdiction. The developer is not liable for misuse. Data availability depends on YouTube at run time.

**Keywords:** youtube channel scraper, youtube video scraper, youtube stats, channel videos, youtube data extraction, youtube api

# Actor input Schema

## `channels` (type: `array`):

List of YouTube channels or playlists to scrape. Accepts channel URLs (youtube.com/@handle, youtube.com/channel/UC...), @handles (@mkbhd), channel IDs (UC...), playlist URLs (youtube.com/playlist?list=PL...), or playlist IDs (PL...). Video URLs are automatically resolved to their channel — all channel videos will be scraped, not just the linked video.

## `maxVideosPerChannel` (type: `integer`):

Maximum number of videos to scrape per channel. Set to 0 for unlimited. Default 50, max 5000.

## `contentType` (type: `string`):

Filter by content type: all content, only regular videos, only Shorts, or only livestreams.

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

How to sort the channel's video feed. Newest shows most recent uploads first. Oldest shows earliest uploads first. Most viewed shows highest view count first.

## `publishedAfter` (type: `string`):

Only include videos published after this date. Format: YYYY-MM-DD.

## `publishedBefore` (type: `string`):

Only include videos published before this date. Format: YYYY-MM-DD.

## `titleFilter` (type: `string`):

Only keep videos whose title contains a specific keyword. Separate multiple keywords with commas (e.g. 'tutorial, review'). Leave empty to keep all videos.

## `skipVideoIds` (type: `array`):

List of video IDs to skip (for incremental scraping). Pass video IDs from a previous run to only get new videos. Saves time and cost on repeated runs.

## `includeVideoStats` (type: `boolean`):

Fetch detailed stats for each video: likes, comment count, full description, category, tags, and exact publish date. This is a paid add-on ($0.25 per 1,000 videos) and makes the scraper slower since it fetches each video individually.

## `concurrency` (type: `integer`):

Number of channels to process in parallel. Higher values are faster but use more memory.

## `proxyConfig` (type: `object`):

Select proxies for accessing YouTube.

## Actor input object example

```json
{
  "channels": [
    "@mkbhd"
  ],
  "maxVideosPerChannel": 50,
  "contentType": "all",
  "sortBy": "newest",
  "includeVideoStats": false,
  "concurrency": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

## `videos` (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 = {
    "channels": [
        "@mkbhd"
    ],
    "contentType": "all",
    "sortBy": "newest",
    "includeVideoStats": false,
    "concurrency": 3,
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lurkapi/youtube-channel-videos-stats-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 = {
    "channels": ["@mkbhd"],
    "contentType": "all",
    "sortBy": "newest",
    "includeVideoStats": False,
    "concurrency": 3,
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("lurkapi/youtube-channel-videos-stats-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 '{
  "channels": [
    "@mkbhd"
  ],
  "contentType": "all",
  "sortBy": "newest",
  "includeVideoStats": false,
  "concurrency": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call lurkapi/youtube-channel-videos-stats-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Channel Videos & Stats Scraper",
        "description": "Scrape all videos from YouTube channels. Get titles, views, duration, publish dates, thumbnails, and optional enriched stats (likes, comments, category, tags).",
        "version": "0.0",
        "x-build-id": "HGHLIQBil3lnZg849"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lurkapi~youtube-channel-videos-stats-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lurkapi-youtube-channel-videos-stats-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/lurkapi~youtube-channel-videos-stats-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lurkapi-youtube-channel-videos-stats-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/lurkapi~youtube-channel-videos-stats-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lurkapi-youtube-channel-videos-stats-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": [
                    "channels"
                ],
                "properties": {
                    "channels": {
                        "title": "YouTube Channels",
                        "maxItems": 200,
                        "type": "array",
                        "description": "List of YouTube channels or playlists to scrape. Accepts channel URLs (youtube.com/@handle, youtube.com/channel/UC...), @handles (@mkbhd), channel IDs (UC...), playlist URLs (youtube.com/playlist?list=PL...), or playlist IDs (PL...). Video URLs are automatically resolved to their channel — all channel videos will be scraped, not just the linked video.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxVideosPerChannel": {
                        "title": "Max Videos Per Channel",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of videos to scrape per channel. Set to 0 for unlimited. Default 50, max 5000.",
                        "default": 50
                    },
                    "contentType": {
                        "title": "Content Type",
                        "enum": [
                            "all",
                            "videos",
                            "shorts",
                            "livestreams"
                        ],
                        "type": "string",
                        "description": "Filter by content type: all content, only regular videos, only Shorts, or only livestreams.",
                        "default": "all"
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "newest",
                            "oldest",
                            "mostViewed"
                        ],
                        "type": "string",
                        "description": "How to sort the channel's video feed. Newest shows most recent uploads first. Oldest shows earliest uploads first. Most viewed shows highest view count first.",
                        "default": "newest"
                    },
                    "publishedAfter": {
                        "title": "Published After",
                        "type": "string",
                        "description": "Only include videos published after this date. Format: YYYY-MM-DD."
                    },
                    "publishedBefore": {
                        "title": "Published Before",
                        "type": "string",
                        "description": "Only include videos published before this date. Format: YYYY-MM-DD."
                    },
                    "titleFilter": {
                        "title": "Title Filter",
                        "type": "string",
                        "description": "Only keep videos whose title contains a specific keyword. Separate multiple keywords with commas (e.g. 'tutorial, review'). Leave empty to keep all videos."
                    },
                    "skipVideoIds": {
                        "title": "Skip Video IDs",
                        "type": "array",
                        "description": "List of video IDs to skip (for incremental scraping). Pass video IDs from a previous run to only get new videos. Saves time and cost on repeated runs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeVideoStats": {
                        "title": "Include Video Stats",
                        "type": "boolean",
                        "description": "Fetch detailed stats for each video: likes, comment count, full description, category, tags, and exact publish date. This is a paid add-on ($0.25 per 1,000 videos) and makes the scraper slower since it fetches each video individually.",
                        "default": false
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Number of channels to process in parallel. Higher values are faster but use more memory.",
                        "default": 3
                    },
                    "proxyConfig": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select proxies for accessing YouTube.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
