# Youtube Transcript Scraper (`scraply/youtube-transcript-scraper`) Actor

🎬 YouTube Transcript Scraper (youtube-transcript-scraper) quickly pulls video captions/transcripts — with timestamps, multi-language support & exports (TXT, SRT, JSON). 🔎 Ideal for SEO, content repurposing, research, subtitles & accessibility. ⚡ Fast, developer-friendly.

- **URL**: https://apify.com/scraply/youtube-transcript-scraper.md
- **Developed by:** [Scraply](https://apify.com/scraply) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$19.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## 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 Transcript Scraper

Youtube Transcript Scraper is a fast, reliable YouTube captions/transcript extractor that turns public video captions into structured text. It solves the pain of manual transcription by letting you paste video URLs and instantly get clean, language-aware results. As a YouTube transcript extractor and YouTube captions scraper, it’s ideal for marketers, developers, data analysts, and researchers who need to get transcript from YouTube video at scale — without the YouTube API.

### What data / output can you get?

Below are the exact fields this actor saves to the Apify dataset for each processed URL. You can download the dataset as JSON, CSV, or Excel from the Apify platform.

| Data type | Description | Example value |
| --- | --- | --- |
| id | Extracted YouTube video ID parsed from the input URL | 4KbrxIpQgkM |
| url | Canonicalized YouTube watch URL constructed from the ID | https://www.youtube.com/watch?v=4KbrxIpQgkM |
| input | The original URL you provided in the input | https://youtu.be/4KbrxIpQgkM |
| transcripts | Array of transcript variants (by language and type) | [ … ] |
| transcripts[].language | Language label provided by YouTube | English (auto-generated) |
| transcripts[].content (text mode) | Full transcript as a single plain-text string | Welcome to the channel… Thanks for watching. |
| transcripts[].content (timestamp mode) | Array of caption segments with timing and text | [ {…}, {…} ] |
| transcripts[].content[].startMs | Segment start time in milliseconds | 12000 |
| transcripts[].content[].endMs | Segment end time in milliseconds | 15500 |
| transcripts[].content[].startTime | Human-readable start mm:ss | 0:12 |
| transcripts[].content[].text | Transcript text for the segment | Welcome to the video… |

Notes:
- transcripts is empty when no captions are available or when they’re filtered out by your language settings.
- You can export YouTube transcript to CSV/JSON directly from the Apify dataset. For “timestamp” mode, the nested content is exported as arrays.

### Key features

- ⚡ Bold speed & scale: Paste multiple video links and run a bulk YouTube transcript scraper in one go — each URL is saved to the dataset as soon as it finishes.
- 🌍 Multilingual filtering: Include non-English captions or download auto-generated YouTube captions in English by toggling includeNonEnglish and includeEnglishAG.
- 🕒 Flexible formats: Choose between “text” (single concatenated string) or “timestamp” (startMs/endMs/startTime/text per segment) to download YouTube transcript as text or with detailed timing.
- 🔒 Smart proxy handling: Uses Apify RESIDENTIAL proxy by default to bypass YouTube IP blocking; configurable via proxyConfiguration.
- 🧰 Developer-friendly: Runs as an Apify actor with clean JSON output fields (id, url, input, transcripts) that slot into pipelines for YouTube transcript to CSV, analytics, or search.
- 🚫 No YouTube API or login: A YouTube transcript scraper without API keys or cookies — just provide public video URLs.
- 🏗️ Production-ready reliability: Streams results to the dataset in real time and logs language counts for each processed URL.

### How to use Youtube Transcript Scraper - step by step

1. Sign up or log in to Apify.
2. Open the Youtube Transcript Scraper actor in the Apify Store.
3. Add input URLs: Paste one or more YouTube video links into urls (supports both youtube.com and youtu.be formats).
4. Choose output format: Set outputFormat to text for a single concatenated transcript, or timestamp for per-segment timing.
5. Set language filters: Toggle includeEnglishAG to include English auto-generated captions and includeNonEnglish to include non-English transcripts.
6. Configure proxy (optional): Leave defaults to use Apify RESIDENTIAL proxy, or customize proxyConfiguration as needed.
7. Run the actor: Click Start. Each completed URL is pushed immediately to the dataset with id, url, input, and transcripts.
8. Download results: Go to the Dataset tab of your run and export as JSON, CSV, or Excel.

Pro tip: Chain this YouTube closed captions downloader with Make.com or n8n to “save YouTube transcript online” into your CMS or feed it into NLP workflows.

### Use cases

| Use case name | Description |
| --- | --- |
| SEO + content repurposing | Extract and clean transcripts to create blog posts, summaries, and social snippets; automate a YouTube transcript to CSV workflow for editorial planning. |
| Research & analysis | Collect lecture/interview transcripts for qualitative coding, topic modeling, or benchmarking across multiple videos. |
| Accessibility operations | Generate text-based captions from public videos to support accessibility reviews and improvements. |
| Developer pipelines (API) | Ingest structured transcripts into apps, chatbots, and search indices; feed the JSON output directly into your ETL. |
| Competitive monitoring | Track messaging over time by scraping transcripts across product updates and announcements. |
| Education & training | Turn lecture videos into notes, study guides, or searchable knowledge bases for students. |

### Why choose Youtube Transcript Scraper?

Built for precision, automation, and reliability, this YouTube captions scraper delivers clean, structured outputs that slot into any workflow.

- 🎯 Accurate & structured: Clean JSON with clear fields (id, url, input, transcripts) and consistent “text” or “timestamp” formats.
- 🌐 Multilingual-ready: Filter in non-English captions or include English auto-generated subtitles as needed.
- 📈 Scales easily: Bulk-process many URLs and stream results to the dataset as each one finishes.
- 🧑‍💻 Developer access: Simple schema and Apify API compatibility make integration seamless for Python/Node pipelines.
- 🛡️ Safer than extensions: A server-side solution that avoids brittle browser extensions and manual copy-paste.
- 🔌 Integration friendly: Export datasets or connect to automation tools for continuous ingestion.
- 🚀 Versus alternatives: A robust YouTube transcript scraper without API keys or logins, backed by Apify infrastructure and optional residential proxy routing.

Bottom line: You get a reliable bulk YouTube transcript scraper that outputs exactly what your workflows need — every time.

### Is it legal / ethical to use Youtube Transcript Scraper?

Yes, when used responsibly. This tool automates access to publicly available captions on YouTube videos you provide.

Guidelines to follow:
- Only extract public data that’s visible without authentication.
- Respect YouTube’s Terms of Service and applicable laws (e.g., GDPR/CCPA).
- Avoid scraping private or region-restricted content.
- Use transcripts for analysis, accessibility, or internal workflows; obtain permission for redistribution when required.
- Consult your legal team for edge cases or commercial reuse.

The actor does not access private profiles or authenticated data.

### Input parameters & output format

#### Example JSON input
```json
{
  "urls": [
    "https://www.youtube.com/watch?v=4KbrxIpQgkM",
    "https://youtu.be/dQw4w9WgXcQ"
  ],
  "includeEnglishAG": true,
  "includeNonEnglish": false,
  "outputFormat": "timestamp",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

#### Parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| urls | array | Yes | \[] | One or more YouTube video URLs to process. Each completed URL is appended immediately to the dataset. |
| includeEnglishAG | boolean | No | true | Whether to include English auto-generated transcripts. |
| includeNonEnglish | boolean | No | false | Whether to include non-English transcripts. |
| outputFormat | string | No | "text" | Format of transcript output: "timestamp" returns detailed timestamps, "text" returns plain text. |
| proxyConfiguration | object | No | {} | Proxy configuration. Uses Apify RESIDENTIAL proxy by default to bypass YouTube IP blocking. If not configured, will try to use Apify proxy automatically. |

#### Example JSON output (timestamp mode)

```json
{
  "id": "4KbrxIpQgkM",
  "url": "https://www.youtube.com/watch?v=4KbrxIpQgkM",
  "input": "https://youtu.be/4KbrxIpQgkM",
  "transcripts": [
    {
      "language": "English (auto-generated)",
      "content": [
        {
          "startMs": 12000,
          "endMs": 15500,
          "startTime": "0:12",
          "text": "Welcome to the video..."
        },
        {
          "startMs": 15600,
          "endMs": 19800,
          "startTime": "0:15",
          "text": "In this section, we'll cover..."
        }
      ]
    }
  ]
}
```

For text mode, transcripts\[].content is a single string:

```json
{
  "id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "input": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "transcripts": [
    {
      "language": "English (auto-generated)",
      "content": "We're no strangers to love You know the rules and so do I ..."
    }
  ]
}
```

Notes:

- transcripts may be an empty array if captions are unavailable or filtered out by your settings.
- startMs/endMs are numeric millisecond values derived from caption timing.

### FAQ

#### Can this YouTube transcript extractor work without the YouTube API?

Yes. It’s a YouTube transcript scraper without API keys or logins. You provide public video URLs, and the actor retrieves available captions automatically.

#### Can I download auto-generated YouTube captions?

Yes. Set includeEnglishAG to true to include English auto-generated captions. If you disable it, those variants will be skipped.

#### Does it support multiple languages?

Yes. By default, you can includeNonEnglish to fetch non-English transcripts provided by YouTube. The output includes a language label per transcript variant.

#### Can I export results to CSV?

Yes. After the run, open the Dataset and export to JSON, CSV, or Excel. For timestamp mode, each segment is preserved as nested JSON in the export.

#### How many videos can I process in one run?

You can supply a list of URLs in urls. The actor processes each and pushes results as they finish, making it a practical bulk YouTube transcript scraper.

#### Is there a YouTube transcript Chrome extension required?

No. This is a server-side Apify actor — no Chrome extension is needed. It’s more reliable than browser-based tools for batch jobs.

#### Do I need to log in to YouTube?

No. The actor works with public video URLs and does not require authentication.

#### Can I export YouTube captions to SRT directly?

Not directly. The actor outputs transcripts in JSON (text or timestamp). You can convert the timestamped output to SRT with a post-processing script if needed.

#### What happens if a video has no captions?

If no transcripts are available or they’re filtered out by your settings, transcripts will be an empty array for that URL.

#### How does proxy usage work?

By default, the actor attempts to use the Apify RESIDENTIAL proxy to reduce IP blocks. You can customize this via proxyConfiguration or disable proxy usage if desired.

### Final thoughts

Youtube Transcript Scraper is built to extract clean, structured YouTube captions at scale. With multilingual filtering, timestamp or plain-text modes, and automatic proxy handling, it’s ideal for marketers, developers, analysts, and researchers. Use the simple JSON schema to integrate with APIs or automation pipelines, and export datasets to CSV/JSON for downstream workflows. Start extracting smarter, searchable transcripts from YouTube today.

# Actor input Schema

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

One or more YouTube video URLs to process. Each completed URL is appended immediately to the dataset.

## `includeEnglishAG` (type: `boolean`):

Whether to include English auto-generated transcripts

## `includeNonEnglish` (type: `boolean`):

Whether to include non-English transcripts

## `outputFormat` (type: `string`):

Format of transcript output: 'timestamp' returns detailed timestamps, 'text' returns plain text

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

Proxy configuration. Uses Apify RESIDENTIAL proxy by default to bypass YouTube IP blocking. If not configured, will try to use Apify proxy automatically.

## Actor input object example

```json
{
  "urls": [
    "https://www.youtube.com/watch?v=4KbrxIpQgkM"
  ],
  "includeEnglishAG": true,
  "includeNonEnglish": false,
  "outputFormat": "text",
  "proxyConfiguration": {}
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.youtube.com/watch?v=4KbrxIpQgkM"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraply/youtube-transcript-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"] }

# Run the Actor and wait for it to finish
run = client.actor("scraply/youtube-transcript-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.youtube.com/watch?v=4KbrxIpQgkM"
  ]
}' |
apify call scraply/youtube-transcript-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Youtube Transcript Scraper",
        "description": "🎬 YouTube Transcript Scraper (youtube-transcript-scraper) quickly pulls video captions/transcripts — with timestamps, multi-language support & exports (TXT, SRT, JSON). 🔎 Ideal for SEO, content repurposing, research, subtitles & accessibility. ⚡ Fast, developer-friendly.",
        "version": "0.1",
        "x-build-id": "GDfFqCdTcaKnnIZ43"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraply~youtube-transcript-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraply-youtube-transcript-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/scraply~youtube-transcript-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraply-youtube-transcript-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/scraply~youtube-transcript-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraply-youtube-transcript-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": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "YouTube URLs",
                        "type": "array",
                        "description": "One or more YouTube video URLs to process. Each completed URL is appended immediately to the dataset.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeEnglishAG": {
                        "title": "Include English Auto-Generated",
                        "type": "boolean",
                        "description": "Whether to include English auto-generated transcripts",
                        "default": true
                    },
                    "includeNonEnglish": {
                        "title": "Include Non-English Transcripts",
                        "type": "boolean",
                        "description": "Whether to include non-English transcripts",
                        "default": false
                    },
                    "outputFormat": {
                        "title": "Output Format",
                        "enum": [
                            "timestamp",
                            "text"
                        ],
                        "type": "string",
                        "description": "Format of transcript output: 'timestamp' returns detailed timestamps, 'text' returns plain text",
                        "default": "text"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy configuration. Uses Apify RESIDENTIAL proxy by default to bypass YouTube IP blocking. If not configured, will try to use Apify proxy automatically.",
                        "default": {}
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
