# YouTube Video Details Scraper (`fetch_cat/youtube-video-details-scraper`) Actor

🎬 Enrich YouTube video and Shorts URLs with public titles, channels, dates, durations, views, thumbnails, and status rows.

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

## Pricing

Pay per event

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 Video Details Scraper

Extract public metadata from YouTube videos and Shorts at scale.

This actor turns YouTube video URLs, Shorts URLs, youtu.be links, embed links, or direct video IDs into clean dataset rows with titles, descriptions, channels, dates, durations, view counts when available, thumbnails, keywords, and status information for each requested video.

Use it when you already have a list of YouTube links and need a reliable enrichment step for dashboards, lead lists, content audits, competitor research, or marketing reports.

### What does YouTube Video Details Scraper do?

YouTube Video Details Scraper enriches a list of public YouTube videos.

It accepts:

- 🎬 Standard watch URLs
- 📱 YouTube Shorts URLs
- 🔗 youtu.be short links
- 🧩 Embed URLs
- 🆔 Raw 11-character video IDs

It returns one dataset item per unique video ID.

Each item includes the canonical URL, title, description, channel details, publish date, duration, view count when public, thumbnail URLs, keywords, and whether the input looked like a Short.

### Who is it for?

This scraper is useful for teams that work with YouTube URLs every day.

- 📈 Social media analysts enriching campaign exports
- 🧑‍💻 Data teams normalizing lists of video links
- 🎥 Creators auditing their own video catalog references
- 🛒 Ecommerce teams tracking product mention videos
- 🧭 Market researchers comparing video performance
- 📰 Journalists validating public YouTube sources
- 🤖 Automation builders feeding YouTube metadata into agents

### Why use this actor?

Manual YouTube metadata collection is slow and inconsistent.

This actor gives you a repeatable workflow:

1. Paste or upload video URLs.
2. Run the actor.
3. Export clean JSON, CSV, Excel, XML, or API results.
4. Connect the dataset to your BI, CRM, or automation tools.

You do not need to create a YouTube API key for basic public metadata enrichment.

### What data can you extract?

| Field | Description |
| --- | --- |
| `url` | Canonical YouTube watch URL |
| `videoId` | YouTube video ID |
| `type` | `video`, `short`, or `unknown` |
| `title` | Public video title when available |
| `description` | Public description when available |
| `channelId` | Channel ID when available |
| `channelName` | Channel or author name |
| `channelUrl` | Public channel URL |
| `publishedAt` | Publish date/time when available |
| `durationSeconds` | Video length in seconds |
| `viewCount` | Public view count when exposed |
| `likeCount` | Public like count when exposed |
| `commentCount` | Public comment count when exposed |
| `thumbnailUrls` | Available thumbnail image URLs |
| `keywords` | Public keyword tags when exposed |
| `isLiveContent` | Whether the item is live content when exposed |
| `isShort` | Whether the input/result appears to be a Short |
| `scrapedAt` | Timestamp when the row was created |
| `status` | `ok` or `error` |
| `errorMessage` | Per-video error details when a URL cannot be processed |

### How much does it cost to scrape YouTube video details?

The actor uses pay-per-event pricing.

- Small one-time run start event
- Per-result event for each successfully enriched video

Typical enrichment jobs are inexpensive because the actor performs lightweight HTTP requests and saves one row per video.

Before running a large job, test a small sample of 5-20 URLs to confirm the fields you need are public for your target videos.

### Input

The main input is `videoUrls`.

Example:

```json
{
  "videoUrls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
    { "url": "https://www.youtube.com/shorts/0zM3nApSvMg" }
  ],
  "videoIds": ["9bZkp7q19f0"],
  "maxConcurrency": 3,
  "includeRawMetadata": false
}
````

### Input fields

#### `videoUrls`

A request-list array of public YouTube URLs.

Supported formats include:

- `https://www.youtube.com/watch?v=VIDEO_ID`
- `https://youtu.be/VIDEO_ID`
- `https://www.youtube.com/shorts/VIDEO_ID`
- `https://www.youtube.com/embed/VIDEO_ID`

#### `videoIds`

Optional list of direct video IDs.

Use this when your source system already stores YouTube IDs instead of full URLs.

#### `maxConcurrency`

Controls how many videos are fetched in parallel.

The default is conservative for reliability.

If you see throttling or many temporary errors, reduce this value.

#### `includeRawMetadata`

Adds selected raw metadata objects to output rows.

Most users should keep this disabled.

Enable it only for debugging or advanced custom parsing.

### Output

The actor writes results to the default dataset.

Each row represents one unique YouTube video ID.

Duplicate URLs or IDs are processed once.

Private, deleted, invalid, or unavailable videos do not stop the whole run. They are saved with `status: "error"` and an `errorMessage` so you can audit failures later.

### Example output

```json
{
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "videoId": "dQw4w9WgXcQ",
  "type": "video",
  "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "channelName": "Rick Astley",
  "channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
  "publishedAt": "2009-10-24T23:57:33-07:00",
  "durationSeconds": 213,
  "viewCount": 1780000000,
  "isShort": false,
  "status": "ok"
}
```

### How to scrape YouTube video details

1. Open the actor on Apify.
2. Add your YouTube URLs or video IDs.
3. Keep `maxConcurrency` at the default for the first run.
4. Click **Start**.
5. Open the dataset when the run finishes.
6. Export the results or connect them to your workflow.

### Tips for best results

- Start with 5-20 URLs before running a large batch.
- Use public, canonical video URLs when possible.
- Mix Shorts and normal videos freely.
- Keep concurrency low for very large jobs.
- Expect some metrics to be `null` when YouTube does not expose them publicly.
- Use `status` and `errorMessage` to filter unavailable videos.

### YouTube Shorts support

The scraper accepts Shorts URLs directly.

For Shorts, `isShort` is set to `true` when the input URL uses the `/shorts/` format or the page clearly indicates Shorts content.

Shorts can have fewer public metadata fields than standard videos, so some engagement fields may be `null`.

### Handling unavailable videos

YouTube may hide or restrict some videos.

Examples include:

- Deleted videos
- Private videos
- Region-limited videos
- Age-restricted videos
- Videos temporarily blocked by YouTube checks

The actor handles these cases per video and continues processing the rest of your list.

### Integrations

You can connect the output dataset to many workflows.

Common patterns:

- Send enriched video rows to Google Sheets.
- Load metadata into BigQuery, Snowflake, or Postgres.
- Trigger a Make or Zapier scenario after a run finishes.
- Feed video metadata into a content monitoring dashboard.
- Use the Apify API to enrich URLs collected by another actor.

### API usage

#### Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-video-details-scraper').call({
  videoUrls: [{ url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' }],
});
console.log(run.defaultDatasetId);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/youtube-video-details-scraper').call(run_input={
    'videoUrls': [{'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'}],
})
print(run['defaultDatasetId'])
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~youtube-video-details-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"videoUrls":[{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}]}'
```

### MCP usage

Use this actor through Apify MCP from Claude Code, Claude Desktop, or another MCP-compatible client.

MCP URL:

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

Claude Code setup:

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

Claude Desktop JSON configuration:

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

Example prompts:

- "Enrich these YouTube URLs and summarize the channels."
- "Create a CSV of titles, view counts, and publish dates for this video list."
- "Check which YouTube links in this report are unavailable."

### Data quality notes

Public YouTube pages can expose different metadata for different videos.

Some fields may be missing because the creator, region, or YouTube page does not expose them in public metadata.

This is normal. Use nullable fields and the `status` column in downstream processing.

### Limits

The actor is designed for URL-by-URL enrichment, not YouTube search discovery.

It does not crawl channels, search results, playlists, or comments.

For large files, deduplicate URLs before upload when possible. The actor also deduplicates by video ID internally.

### Legality

This actor extracts publicly available metadata from public YouTube pages and public YouTube metadata responses.

You are responsible for ensuring your use complies with applicable laws, YouTube terms, privacy rules, and your organization’s policies.

Do not use the actor for private, copyrighted, or restricted data you are not allowed to process.

### Troubleshooting

#### Why are likes or comments null?

YouTube does not always expose likes or comment counts in public page metadata. The actor returns `null` instead of guessing.

#### Why did a video return an error row?

The video may be private, deleted, age-restricted, region-limited, malformed, or temporarily unavailable. Check `errorMessage` for details.

#### Why is `channelId` null for some rows?

When YouTube only exposes lightweight public metadata, the actor may return an author/channel URL but not the internal channel ID.

### FAQ

#### Can I scrape YouTube Shorts?

Yes. Add Shorts URLs to `videoUrls`.

#### Do I need a YouTube API key?

No. This actor is intended for public metadata enrichment without a user-supplied YouTube API key.

#### Does the actor download videos?

No. It extracts metadata only.

#### Does it scrape comments?

No. It returns video-level metadata. Use a dedicated comments scraper for comments.

### Related scrapers

You may also need:

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

### Support

If a public video URL does not work as expected, save the run ID and a small sample input.

Include both in your support request so the issue can be reproduced quickly.

# Actor input Schema

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

Public YouTube watch, youtu.be, embed, or Shorts URLs. Add one URL per row.

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

Optional list of YouTube video IDs, for example dQw4w9WgXcQ. IDs are combined with the URLs above.

## `maxConcurrency` (type: `integer`):

How many videos to fetch in parallel. Lower this if YouTube starts throttling requests.

## `includeRawMetadata` (type: `boolean`):

Adds selected raw YouTube metadata objects to each item for debugging or custom downstream parsing.

## Actor input object example

```json
{
  "videoUrls": [
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    },
    {
      "url": "https://www.youtube.com/shorts/0zM3nApSvMg"
    }
  ],
  "videoIds": [],
  "maxConcurrency": 3,
  "includeRawMetadata": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "videoUrls": [
        {
            "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
        },
        {
            "url": "https://www.youtube.com/shorts/0zM3nApSvMg"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/youtube-video-details-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": [
        { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
        { "url": "https://www.youtube.com/shorts/0zM3nApSvMg" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/youtube-video-details-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": [
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    },
    {
      "url": "https://www.youtube.com/shorts/0zM3nApSvMg"
    }
  ]
}' |
apify call fetch_cat/youtube-video-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Video Details Scraper",
        "description": "🎬 Enrich YouTube video and Shorts URLs with public titles, channels, dates, durations, views, thumbnails, and status rows.",
        "version": "0.1",
        "x-build-id": "EKhJQJx3yzR2LIwLy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~youtube-video-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-youtube-video-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fetch_cat~youtube-video-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-youtube-video-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fetch_cat~youtube-video-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-youtube-video-details-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 or Shorts URLs",
                        "type": "array",
                        "description": "Public YouTube watch, youtu.be, embed, or Shorts URLs. Add one URL per row.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "videoIds": {
                        "title": "YouTube video IDs",
                        "type": "array",
                        "description": "Optional list of YouTube video IDs, for example dQw4w9WgXcQ. IDs are combined with the URLs above.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many videos to fetch in parallel. Lower this if YouTube starts throttling requests.",
                        "default": 3
                    },
                    "includeRawMetadata": {
                        "title": "Include raw metadata",
                        "type": "boolean",
                        "description": "Adds selected raw YouTube metadata objects to each item for debugging or custom downstream parsing.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
