# Xvideos Video Downloader (`solidcode/xvideos-video-downloader`) Actor

\[💰 $2.5 / 1K] Download videos from Xvideos. Paste video links, pornstar, channel, or playlist pages, or a search term and get one row per video with direct media links, details, and optional file downloads.

- **URL**: https://apify.com/solidcode/xvideos-video-downloader.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Videos, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

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

## Xvideos Video Downloader

Turn any Xvideos link into clean, structured data — one row per video with the direct MP4 and HLS links, title, duration, view count, upload date, tags, uploader, and thumbnail, plus an optional one-click save of the actual video file into your run's storage. Paste a single video, a whole pornstar or channel page, a playlist, or just a keyword — all in the same run. Built for content archivists, media researchers, and library builders who need Xvideos videos in bulk, structured and download-ready, without copying watch pages one at a time.

### Why This Scraper?

- **Five source types plus keyword search, mixed in one run** — feed it direct video links, pornstar/model pages, channel pages, user profiles, and playlists, or run a site-wide keyword search, and combine all of them in a single job. No separate runs, no manual URL collection.
- **Whole catalogs from one link** — paste a single pornstar or channel page and it automatically walks the listing and pulls every video, capped by your per-source and total limits so a prolific model can't blow past your budget.
- **Both MP4 and HLS on every video** — each row carries the direct 240p and 360p MP4 links plus the HLS master playlist and up to four HLS quality renditions (250p, 360p, 480p, 720p), so you can pick the format your workflow needs.
- **Full per-video metadata, not just a link** — exact duration in seconds, precise view count, upload date, tag list, uploader name, channel URL, and thumbnail come stamped on every row, pulled from the page's own structured data rather than guessed.
- **Optional real-file archiving** — flip one toggle and the actual MP4 is saved into your run's storage with a ready-to-use `downloadUrl`, which matters because Xvideos media links are token-signed and expire in a few hours. Very large files (over ~230 MB) are left as direct links rather than saved, so runs stay fast and reliable.
- **A ready-to-read expiry on every media link** — each row includes `mediaExpiresAt`, the exact moment the signed links stop working, so your automation knows precisely how long it has to download.
- **Source tracking on every row** — a `sourceType` field records whether each video came from a direct link, pornstar, channel, playlist, or search, so mixed runs stay attributable and easy to split downstream.
- **Two hard caps for predictable cost** — a global `maxResults` cap bounds the whole run, and a separate per-source cap (default 50) lets you sample large pornstar or channel catalogs without pulling thousands of videos.

### Use Cases

**Content Archiving & Backup**
- Snapshot a pornstar's or channel's full catalog before it changes or disappears
- Save both the direct media links and the actual MP4 files in one pass
- Rebuild a personal collection from a list of video links
- Keep a rolling backup of specific playlists on a schedule

**Research & Trend Analysis**
- Study upload patterns across models by duration, views, and upload date
- Build a keyword-based dataset of videos with tags and view counts for trend work
- Compare view counts and tags across a set of channels
- Sample search results for a term to gauge catalog size and popularity

**Media Library Building**
- Turn pornstar, channel, and playlist links into a structured spreadsheet of every video
- Attach uploader, tags, duration, and thumbnail to each video for search and filtering
- Index videos by stable video ID and source type
- Feed clean per-video rows into a media asset manager

**Creator & Automation Tools**
- Pipe new video rows straight into Google Sheets or a database
- Trigger downstream workflows whenever a channel publishes new videos
- Power an internal dashboard from the JSON output
- Schedule recurring pulls of a watchlist of models, channels, or search terms

### Getting Started

#### Download a Single Video

The simplest run — just one video link:

```json
{
    "startUrls": ["https://www.xvideos.com/video.abc123/example"]
}
````

#### Keyword Search With Caps

Search Xvideos for a term and keep the run small and predictable:

```json
{
    "searchQuery": "sunset beach",
    "maxResults": 200,
    "maxVideosPerSource": 100
}
```

#### Multi-Source Run With File Downloads

Mix a pornstar page, a channel, and a playlist, save the real files, and cap the total:

```json
{
    "startUrls": [
        "https://www.xvideos.com/pornstars/example-model",
        "https://www.xvideos.com/channels/example-channel",
        "https://www.xvideos.com/favorite/12345/my-playlist"
    ],
    "searchQuery": "highlights",
    "downloadFiles": true,
    "maxResults": 500,
    "maxVideosPerSource": 50
}
```

### Input Reference

#### What to Download

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `["https://www.xvideos.com/video.abc123/example"]` | One or more Xvideos links. A single video link resolves to one row; a pornstar/model page, channel page, user profile, or playlist link automatically collects every video on it. Mix different link types freely. |
| `searchQuery` | string | *(empty)* | Optional keyword search across Xvideos. Matching videos are collected. Use it on its own or alongside the links above. |

#### Output Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `downloadFiles` | boolean | `false` | When on, the real video files are saved to this run's storage and each row gets a ready-to-use download link — handy because Xvideos media links expire quickly. Very large videos (over ~230 MB) are skipped for download but keep their direct links. When off, you get the direct media links and full details only, which is faster and cheaper. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | The most videos to collect in total, across every link and search. Each video is one result. Lower this to keep runs small and predictable. |
| `maxVideosPerSource` | integer | `50` | For pornstar, channel, playlist, and search sources: the most videos to pull from a single one. Ignored for direct video links. |

### Output

Each row is one video, carrying its metadata, direct media links, and — when enabled — a saved-file download link. Here's a representative row with file download turned on:

```json
{
    "videoId": "98765432",
    "sourceUrl": "https://www.xvideos.com/video.abc123/example",
    "title": "Sunset beach highlights",
    "uploader": "example-model",
    "channelUrl": "https://www.xvideos.com/pornstars/example-model",
    "durationSeconds": 2669,
    "views": 1840233,
    "tags": ["beach", "sunset", "travel"],
    "uploadDate": "2024-06-18",
    "thumbnailUrl": "https://cdn.xvideos-cdn.com/videos/thumbs/example.jpg",
    "availableFormats": [
        { "quality": "240p", "width": 426, "height": 240, "contentType": "video/mp4", "mediaUrl": "https://.../video_low.mp4?secure=...", "expiresAt": 1719800000 },
        { "quality": "360p", "width": 640, "height": 360, "contentType": "video/mp4", "mediaUrl": "https://.../video_high.mp4?secure=...", "expiresAt": 1719800000 },
        { "quality": "720p", "width": 1280, "height": 720, "contentType": "application/x-mpegURL", "mediaUrl": "https://.../hls-720p.m3u8", "expiresAt": 1719800000 }
    ],
    "mp4Low": "https://.../video_low.mp4?secure=...",
    "mp4High": "https://.../video_high.mp4?secure=...",
    "hlsUrl": "https://.../hls.m3u8",
    "hlsRenditions": [
        { "resolution": "1280x720", "name": "720p", "width": 1280, "height": 720, "url": "https://.../hls-720p.m3u8" }
    ],
    "mediaExpiresAt": 1719800000,
    "downloadUrl": "https://api.apify.com/v2/key-value-stores/abc/records/98765432.mp4",
    "kvStoreKey": "98765432.mp4",
    "sourceType": "pornstar",
    "fetchedAt": "2026-07-04T12:00:00+00:00",
    "status": "ok",
    "error": null
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `videoId` | string | Xvideos video ID for the row (its exact form can vary by source type) |
| `sourceUrl` | string | The video's watch-page URL — the same across sources, so the best key for deduplicating a video collected more than one way |
| `title` | string | Video title |
| `uploader` | string | Uploader / model / channel display name |
| `channelUrl` | string | Uploader or channel page URL when available |
| `durationSeconds` | number | Exact video length in seconds |
| `views` | number | Precise view count |
| `tags` | string\[] | Tags / keywords listed on the video |
| `uploadDate` | string | Publish date when shown |
| `thumbnailUrl` | string | Poster / thumbnail image URL |
| `sourceType` | string | How the row was found: `video`, `pornstar`, `channel`, `playlist`, or `search` |
| `fetchedAt` | string | ISO timestamp of when the media links were resolved |

#### Media Links

| Field | Type | Description |
|-------|------|-------------|
| `mp4Low` | string | Direct 240p MP4 link |
| `mp4High` | string | Direct 360p MP4 link |
| `hlsUrl` | string | HLS master playlist link |
| `hlsRenditions` | array | Per-quality HLS variants — each with `resolution`, `name`, `width`, `height`, and `url` |
| `availableFormats` | array | Every media variant in one list — each with `quality`, `width`, `height`, `contentType`, `mediaUrl`, and `expiresAt` |
| `mediaExpiresAt` | number | Unix timestamp when the signed media links stop working |

#### Download & Status Fields

| Field | Type | Description |
|-------|------|-------------|
| `downloadUrl` | string | Direct link to the saved file — present only when file download is on |
| `kvStoreKey` | string | Storage key of the saved file — present only when file download is on |
| `status` | string | `ok` when the video resolved, or `failed` when the page couldn't be loaded |
| `error` | string | Short reason when `status` is `failed` |

### Tips for Best Results

- **Start with one video** — run a single video link first to confirm the output shape matches what you need, then scale up to pornstar pages, channels, playlists, and search.
- **Download promptly, because links expire** — Xvideos media links are signed and stop working within a few hours; check `mediaExpiresAt` on each row, or turn on file download so the actual MP4 is saved into storage before the link goes stale. Very large videos (over ~230 MB) aren't saved as files — those rows still carry their direct links, so grab them from `mp4High`/`hlsUrl` right away.
- **Use the per-source cap to sample big catalogs** — set `maxVideosPerSource` low to grab a representative slice of a prolific model or channel without pulling their entire library.
- **Set `maxResults` to bound cost** — it counts individual videos, so a run capped at 200 stops at exactly 200 videos no matter how large the source pages are.
- **Leave file download off unless you need the actual files** — direct media links plus full metadata cover most workflows and finish faster; turn download on only when you want the files saved in storage.
- **Combine sources in one run** — video links, pornstar and channel pages, playlists, and a search keyword can all go into the same job; results stream into one dataset with `sourceType` on every row.
- **Prefer HLS renditions for higher quality** — the single-file MP4 links top out at 360p; for 480p or 720p, use the entries in `hlsRenditions` or `availableFormats`.

### Pricing

**From $2.50 per 1,000 results** — a flat pay-per-result rate, with real file downloads included at no surcharge. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.28 | $0.265 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |

A "result" is one collected video — each resolved video is a single result. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Turning on file download saves the actual files at the same per-result price, with no extra charge.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is intended for lawful use such as personal backup, archiving of content you have the right to save, and legitimate research. Xvideos hosts adult content, so use is strictly limited to adults (18+) in jurisdictions where such material is legal. Respect copyright and the rights of the performers and creators whose videos you collect — collect only content that is publicly available and that you are permitted to access, and use it for personal or otherwise authorized purposes only. You are responsible for complying with all applicable laws, with Xvideos' Terms of Service, and with the rights and privacy of any person depicted. Do not redistribute, misrepresent, or otherwise use downloaded content in ways that infringe those rights or any law, and do not use the data for harassment or any unlawful purpose. You alone are responsible for how you use the content you collect.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Xvideos links. A single video link resolves to one row. A pornstar/model page, channel page, or playlist/gallery link automatically collects every video on it. You can mix different link types, and optionally add a search below. At least one link or a search is needed to produce results.

## `searchQuery` (type: `string`):

Optional. Search Xvideos for a keyword and collect the videos that match. Use this on its own or alongside the links above.

## `downloadFiles` (type: `boolean`):

When on, the real video files are saved to this run's storage and each row gets a ready-to-use download link — handy because Xvideos media links expire quickly. Very large videos (above ~230 MB) are skipped for download to keep runs fast and reliable, but their direct media links are still included in the results. When off (the default), you get the direct media links and full metadata only, which is faster and cheaper.

## `maxResults` (type: `integer`):

The most videos to collect in total, across every link and search. Each video is one result. Lower this to keep runs small and predictable.

## `maxVideosPerSource` (type: `integer`):

For pornstar, channel, playlist, and search sources: the most videos to pull from a single one. Ignored for direct video links.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.xvideos.com/video.abc123/example"
  ],
  "downloadFiles": false,
  "maxResults": 100,
  "maxVideosPerSource": 50
}
```

# Actor output Schema

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

Table of collected videos with title, uploader, duration, source link, and download link.

## `detail` (type: `string`):

Full per-video detail including tags, views, thumbnail, available media formats, and storage key.

# 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 = {
    "startUrls": [
        "https://www.xvideos.com/video.abc123/example"
    ],
    "downloadFiles": false,
    "maxResults": 100,
    "maxVideosPerSource": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/xvideos-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 = {
    "startUrls": ["https://www.xvideos.com/video.abc123/example"],
    "downloadFiles": False,
    "maxResults": 100,
    "maxVideosPerSource": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/xvideos-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 '{
  "startUrls": [
    "https://www.xvideos.com/video.abc123/example"
  ],
  "downloadFiles": false,
  "maxResults": 100,
  "maxVideosPerSource": 50
}' |
apify call solidcode/xvideos-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Xvideos Video Downloader",
        "description": "[💰 $2.5 / 1K] Download videos from Xvideos. Paste video links, pornstar, channel, or playlist pages, or a search term and get one row per video with direct media links, details, and optional file downloads.",
        "version": "1.0",
        "x-build-id": "HbNdvof7hMKupAnzh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~xvideos-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-xvideos-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/solidcode~xvideos-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-xvideos-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/solidcode~xvideos-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-xvideos-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",
                "properties": {
                    "startUrls": {
                        "title": "Video, pornstar, channel, or playlist links",
                        "type": "array",
                        "description": "Paste one or more Xvideos links. A single video link resolves to one row. A pornstar/model page, channel page, or playlist/gallery link automatically collects every video on it. You can mix different link types, and optionally add a search below. At least one link or a search is needed to produce results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Search Xvideos",
                        "type": "string",
                        "description": "Optional. Search Xvideos for a keyword and collect the videos that match. Use this on its own or alongside the links above."
                    },
                    "downloadFiles": {
                        "title": "Download the actual video files",
                        "type": "boolean",
                        "description": "When on, the real video files are saved to this run's storage and each row gets a ready-to-use download link — handy because Xvideos media links expire quickly. Very large videos (above ~230 MB) are skipped for download to keep runs fast and reliable, but their direct media links are still included in the results. When off (the default), you get the direct media links and full metadata only, which is faster and cheaper.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Maximum videos",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The most videos to collect in total, across every link and search. Each video is one result. Lower this to keep runs small and predictable.",
                        "default": 100
                    },
                    "maxVideosPerSource": {
                        "title": "Maximum videos per page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "For pornstar, channel, playlist, and search sources: the most videos to pull from a single one. Ignored for direct video links.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
