# Loom Video Downloader (`maximedupre/loom-video-downloader`) Actor

Download public Loom videos from share URLs, embed URLs, iframe snippets, or raw video IDs. Export MP4 assets when available, media URLs, transcripts, WebVTT captions, thumbnails, owner data, views, duration, and metadata.

- **URL**: https://apify.com/maximedupre/loom-video-downloader.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 saved videos

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

### 📥 Loom video downloader for public share links

Loom Video Downloader downloads public [Loom](https://www.loom.com/) videos from share URLs, embed URLs, iframe snippets, or raw Loom video IDs. It saves one dataset row per public video with media links, metadata, thumbnails, transcripts, WebVTT captions, and an MP4 file in Apify key-value storage when the asset can be assembled safely.

Use this Loom video downloader when you already have Loom links and need a repeatable way to archive videos, review team knowledge, export transcripts, build internal search, prepare content notes, or feed a workflow through the Apify API. You do not need Loom cookies, a Loom login, or a Loom API key.

For a small first run, keep the prefilled Loom video and start the Actor. Once the output shape looks right, paste your own Loom share links, embed links, iframe snippets, or raw video IDs.

### ✅ What this Actor does

- Accepts public Loom share URLs such as `https://www.loom.com/share/VIDEO_ID`.
- Accepts public Loom embed URLs such as `https://www.loom.com/embed/VIDEO_ID`.
- Accepts iframe snippets that contain a Loom embed URL.
- Accepts raw 32-character Loom video IDs.
- Saves one dataset row per successfully processed public Loom video.
- Adds source fields such as `input`, `inputIndex`, `videoId`, `canonicalUrl`, and `embedUrl`.
- Adds video metadata such as title, description, duration, size, thumbnails, owner name, views, privacy, and scrape time when Loom exposes it.
- Adds Loom transcript text and timestamped transcript phrases when available.
- Adds WebVTT captions when Loom provides captions for the video.
- Adds HLS or DASH media URLs when Loom exposes them.
- Saves an MP4 asset to Apify key-value storage when the video can be assembled during the run.
- Skips invalid, private, password-protected, permission-only, deleted, or unavailable Loom videos without saving failure rows.

This Actor is focused on known public Loom videos. It does not crawl Loom folders, search workspaces, use private Loom accounts, bypass passwords, or create new AI transcripts for videos that do not expose public transcript data.

### 📦 Data you can export

Each output row represents one public Loom video. Fields can include:

- `input` and `inputIndex` - the submitted target and its position in your list.
- `videoId`, `canonicalUrl`, and `embedUrl` - stable Loom identity and source links.
- `title`, `description`, `durationSeconds`, `durationMs`, `width`, and `height`.
- `thumbnailUrl` and `animatedThumbnailUrl`.
- `ownerName` and `ownerAvatarUrl` when Loom exposes the owner.
- `totalViews` and `uniqueViews` when visible.
- `downloadable`, `downloadEnabled`, `downloadableBy`, `privacy`, and availability flags.
- `media.hlsUrl`, `media.dashUrl`, and `media.format`.
- `transcript.text`, `transcript.phrases`, `transcript.status`, and `transcript.language`.
- `captions.vtt` and `captions.sourceUrl`.
- `savedFile.storageKey`, `savedFile.downloadUrl`, `savedFile.contentType`, and `savedFile.fileSizeBytes` when an MP4 is saved.
- `status`, `statusReason`, and `scrapedAt`.

Rows may contain `null` values when Loom does not expose a field for a public video. If MP4 saving is not available for one video, the row still includes source media URLs and a plain `statusReason`.

### 🚀 How to run it

1. Open the Actor input tab.
2. Paste Loom targets into **Loom videos**. You can mix share URLs, embed URLs, iframe snippets, and raw video IDs.
3. Set **Maximum videos** if you want to cap the run.
4. Start the Actor.
5. Open the dataset to export JSON, CSV, Excel, XML, RSS, or use the results through the Apify API.

The Actor pushes accepted video rows during the run, so you can inspect results before a large batch finishes.

### 🧾 Input example

```json
{
	"targets": [
		"https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
		"https://www.loom.com/embed/e41353f2fe1c43eba6c6829693e0f2c5",
		"e41353f2fe1c43eba6c6829693e0f2c5"
	],
	"maxItems": 25
}
````

### 📄 Output example

```json
{
	"input": "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
	"inputIndex": 0,
	"videoId": "e41353f2fe1c43eba6c6829693e0f2c5",
	"canonicalUrl": "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
	"embedUrl": "https://www.loom.com/embed/e41353f2fe1c43eba6c6829693e0f2c5",
	"title": "Eric Yuan: Simplicity Scales",
	"description": null,
	"durationSeconds": 210,
	"thumbnailUrl": "https://cdn.loom.com/sessions/thumbnails/example.jpg",
	"ownerName": "Loom",
	"downloadable": true,
	"media": {
		"hlsUrl": "https://luna.loom.com/id/example/resource/hls/playlist.m3u8",
		"dashUrl": "https://cdn.loom.com/sessions/raw/example-manifest.mpd",
		"format": "dash"
	},
	"transcript": {
		"status": "success",
		"language": null,
		"text": "All right. This is the lesson...",
		"phrases": [
			{
				"startSeconds": 1.14,
				"text": "All right. This is the lesson..."
			}
		],
		"sourceUrl": "https://cdn.loom.com/..."
	},
	"captions": {
		"vtt": "WEBVTT\n\n1\n00:00:01.140 --> 00:00:05.730\n...",
		"sourceUrl": "https://cdn.loom.com/..."
	},
	"savedFile": {
		"storageKey": "loom-video-e41353f2fe1c43eba6c6829693e0f2c5.mp4",
		"downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/loom-video-e41353f2fe1c43eba6c6829693e0f2c5.mp4?disableContentDisposition=true",
		"contentType": "video/mp4",
		"fileSizeBytes": 56272893
	},
	"status": "ok",
	"statusReason": null,
	"scrapedAt": "2026-06-11T18:00:00.000Z"
}
```

### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each public Loom video row saved to the dataset. Invalid, private, password-protected, permission-only, deleted, or unavailable targets are skipped and are not saved as dataset rows.

### ⚠️ Limits and caveats

This Actor works with public Loom videos only. It cannot access private videos, workspace-only videos, password-protected videos, deleted videos, or videos that require a Loom login.

MP4 saving depends on the media files Loom exposes during the run. If the MP4 asset cannot be assembled or stored for one public video, the Actor still saves the video row with source media URLs, metadata, transcript, captions when available, and a clear `statusReason`.

Transcript and caption fields appear only when Loom exposes transcript or WebVTT data for that video. The Actor does not create new transcripts with speech-to-text.

### ❓ FAQ

#### 🔐 Do I need a Loom account?

No. The Actor is built for public Loom videos and does not ask for Loom cookies, a login, or an API key.

#### 📥 Does it save MP4 files?

Yes, when Loom exposes media that can be assembled during the run. The saved MP4 appears in `savedFile`. If MP4 saving is unavailable for one video, the row still includes source media URLs.

#### 📝 Does it return Loom transcripts?

Yes, when Loom exposes transcript data for the public video. The Actor returns plain transcript text and timestamped transcript phrases.

#### 🎬 Can I download private or password-protected Looms?

No. Private, permission-only, password-protected, deleted, or login-required videos are skipped. This Actor does not bypass Loom access controls.

#### 🗂️ Can it crawl a Loom folder?

No. Paste direct Loom video targets. Folder crawling and workspace library sync are outside this Actor.

### 📝 Changelog

- 0.1: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~loom-video-downloader/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [TikTok Video Downloader ↗](https://apify.com/maximedupre/tiktok-video-downloader) - Download public TikTok video or audio files with source metadata.
- [Instagram Downloader API ↗](https://apify.com/maximedupre/instagram-downloader-api) - Export media URLs and metadata from public Instagram posts, reels, and TV links.
- [Facebook Media Downloader ↗](https://apify.com/maximedupre/facebook-media-downloader) - Download public Facebook videos and reels with metadata.
- [Pinterest Video Downloader ↗](https://apify.com/maximedupre/pinterest-video-downloader) - Extract video and image media from public Pinterest pins.
- [TikTok Transcript Scraper ↗](https://apify.com/maximedupre/tiktok-transcript-scraper) - Extract public TikTok transcripts, subtitle formats, and video metadata.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `targets` (type: `array`):

Paste Loom share URLs, embed URLs, iframe snippets, or raw video IDs.

## `maxItems` (type: `integer`):

Set the maximum number of submitted videos to return in this run.

## Actor input object example

```json
{
  "targets": [
    "https://www.loom.com/share/b82a5cea29c84bf596d2da3fc453befe",
    "https://www.loom.com/share/4c0c4d7396a543b8a55d67bcf5c0f41c",
    "https://www.loom.com/share/50fca6637e8e4c5e9ea2d5186baf3d21",
    "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
    "https://www.loom.com/share/56fde5f991b8490d9033dd226ebf3043",
    "https://www.loom.com/share/4518a20bc09441779574bdd25743afe9",
    "https://www.loom.com/share/1a7d22ab727d4154a6a95fdce4333457",
    "https://www.loom.com/share/fff20c3413c24186952c4fa120347569",
    "https://www.loom.com/share/74e18ac00fc04821802a7322409137a9",
    "https://www.loom.com/share/c5ea41b490c74d899df3d5970f21e943"
  ],
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset of public Loom video rows with download, transcript, caption, metadata, and media fields.

# 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 = {
    "targets": [
        "https://www.loom.com/share/b82a5cea29c84bf596d2da3fc453befe",
        "https://www.loom.com/share/4c0c4d7396a543b8a55d67bcf5c0f41c",
        "https://www.loom.com/share/50fca6637e8e4c5e9ea2d5186baf3d21",
        "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
        "https://www.loom.com/share/56fde5f991b8490d9033dd226ebf3043",
        "https://www.loom.com/share/4518a20bc09441779574bdd25743afe9",
        "https://www.loom.com/share/1a7d22ab727d4154a6a95fdce4333457",
        "https://www.loom.com/share/fff20c3413c24186952c4fa120347569",
        "https://www.loom.com/share/74e18ac00fc04821802a7322409137a9",
        "https://www.loom.com/share/c5ea41b490c74d899df3d5970f21e943"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/loom-video-downloader").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 = {
    "targets": [
        "https://www.loom.com/share/b82a5cea29c84bf596d2da3fc453befe",
        "https://www.loom.com/share/4c0c4d7396a543b8a55d67bcf5c0f41c",
        "https://www.loom.com/share/50fca6637e8e4c5e9ea2d5186baf3d21",
        "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
        "https://www.loom.com/share/56fde5f991b8490d9033dd226ebf3043",
        "https://www.loom.com/share/4518a20bc09441779574bdd25743afe9",
        "https://www.loom.com/share/1a7d22ab727d4154a6a95fdce4333457",
        "https://www.loom.com/share/fff20c3413c24186952c4fa120347569",
        "https://www.loom.com/share/74e18ac00fc04821802a7322409137a9",
        "https://www.loom.com/share/c5ea41b490c74d899df3d5970f21e943",
    ],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/loom-video-downloader").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 '{
  "targets": [
    "https://www.loom.com/share/b82a5cea29c84bf596d2da3fc453befe",
    "https://www.loom.com/share/4c0c4d7396a543b8a55d67bcf5c0f41c",
    "https://www.loom.com/share/50fca6637e8e4c5e9ea2d5186baf3d21",
    "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
    "https://www.loom.com/share/56fde5f991b8490d9033dd226ebf3043",
    "https://www.loom.com/share/4518a20bc09441779574bdd25743afe9",
    "https://www.loom.com/share/1a7d22ab727d4154a6a95fdce4333457",
    "https://www.loom.com/share/fff20c3413c24186952c4fa120347569",
    "https://www.loom.com/share/74e18ac00fc04821802a7322409137a9",
    "https://www.loom.com/share/c5ea41b490c74d899df3d5970f21e943"
  ],
  "maxItems": 10
}' |
apify call maximedupre/loom-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Loom Video Downloader",
        "description": "Download public Loom videos from share URLs, embed URLs, iframe snippets, or raw video IDs. Export MP4 assets when available, media URLs, transcripts, WebVTT captions, thumbnails, owner data, views, duration, and metadata.",
        "version": "0.1",
        "x-build-id": "V6ALiBdoUnqdbJLAo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~loom-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-loom-video-downloader",
                "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/maximedupre~loom-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-loom-video-downloader",
                "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/maximedupre~loom-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-loom-video-downloader",
                "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": [
                    "targets"
                ],
                "properties": {
                    "targets": {
                        "title": "Loom videos",
                        "minItems": 1,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Paste Loom share URLs, embed URLs, iframe snippets, or raw video IDs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum videos",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Set the maximum number of submitted videos to return in this run.",
                        "default": 25
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
