# TikTok Scraper - Profiles, Videos, Hashtags & Sounds (`trev0n/tiktok-scraper`) Actor

Scrape TikTok at scale: user profiles & stats, video metadata, download URLs, hashtag feeds and sound feeds. Great for social listening, influencer research, trend tracking and lead generation.

- **URL**: https://apify.com/trev0n/tiktok-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Social media, Lead generation, Videos
- **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.

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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## 🎵 TikTok Scraper — Profiles, Videos, Hashtags & Sounds

🎯 **Pull clean, structured TikTok data — creator stats, video metadata, hashtag feeds and trending sounds — without lifting a finger.**

This scraper collects **ready-to-use data** from TikTok: full user profiles (followers, likes, bio, verification), rich video metadata (captions, play/like/comment counts, music, download links), the videos posted under any hashtag or challenge, and the videos using any sound. Perfect for influencer research, social listening, trend tracking and lead generation.

### 🚀 What Does It Do?

This scraper automatically gathers TikTok data and hands it back as a clean dataset you can export anywhere. No manual browsing, no copy-pasting — just set what you want and hit Start.

💡 **Two ways to use it:**

1. **🔍 Discovery Mode** — Drop in usernames, hashtags, sound URLs or video links and let the scraper pull everything.
2. **📋 Direct URL Mode** — Already have a list of TikTok URLs? Paste them in and each one is recognized automatically.

### 👥 Who Is This For?

| 🏢 Use Case                | 💬 How It Helps                                                               |
| -------------------------- | ----------------------------------------------------------------------------- |
| 📣 **Marketers & Brands**  | Track hashtag campaigns and see which creators and videos are driving reach   |
| 🌟 **Influencer Agencies** | Pull follower counts, engagement and posting history to vet and rank creators |
| 📈 **Trend Analysts**      | Monitor trending sounds and hashtags to catch viral moments early             |
| 🛍️ **Social Sellers**      | Find creators and videos in your niche for outreach and partnerships          |
| 🔬 **Researchers**         | Build datasets of public TikTok content for analysis at scale                 |

### ✨ Features

- 👤 **Full Creator Profiles** — Followers, following, total likes, video count, bio, links and verification status
- 🎬 **Rich Video Metadata** — Caption, hashtags, mentions, play/like/comment/share counts, duration and cover images
- ⬇️ **Download Links** — Direct video URLs, including a watermark-free stream link
- 🎵 **Sound Details** — Track title, author, duration and every video using a sound
- 🔖 **Hashtag & Challenge Feeds** — Every video posted under a tag
- 🔁 **Monitoring Mode** — Only get what's _new or changed_ since your last run — perfect for cheap daily tracking
- 🔔 **Instant Alerts** — Optional Telegram, Discord, Slack or webhook pings when fresh content appears
- 🎛️ **Smart Filters** — Choose profile stats vs. full video feeds, cap results per source, and set a global limit
- ⚡ **Fast & Scalable** — Pull thousands of videos per run
- 🧹 **Automatic Deduplication** — Never get the same item twice in one run
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

### 🎛️ Filters & Options

| Option                     | What It Does                                         |
| -------------------------- | ---------------------------------------------------- |
| 👤 **Profiles**            | Usernames or profile URLs to scrape                  |
| 🎚️ **Profile Scrape Type** | Return creator stats & bio, or their full video feed |
| 🎬 **Video URLs**          | Specific video/photo links to pull full metadata for |
| 🔖 **Hashtags**            | Tag names or /tag/ URLs to pull their video feeds    |
| 🎵 **Sound URLs**          | Music links to pull the videos using each sound      |
| 🔁 **Monitoring Mode**     | Only output new / changed items vs. the previous run |
| 🔢 **Max Results**         | Control how many items to extract per run            |
| 🔗 **Direct URLs**         | Optionally provide specific TikTok URLs to scrape    |

### 📦 What You Get (Output Fields)

#### 👤 Profile

| Field          | Example                                |
| -------------- | -------------------------------------- |
| username       | `tiktok`                               |
| nickname       | `TikTok`                               |
| verified       | `true`                                 |
| followerCount  | `94700000`                             |
| followingCount | `0`                                    |
| heartCount     | `461500000`                            |
| videoCount     | `1465`                                 |
| signature      | `the destination for mobile videos 📱` |
| profileUrl     | `https://www.tiktok.com/@tiktok`       |

#### 🎬 Video

| Field        | Example                                                    |
| ------------ | ---------------------------------------------------------- |
| id           | `7106594312292453675`                                      |
| url          | `https://www.tiktok.com/@tiktok/video/7106594312292453675` |
| description  | `how many frogs did you find? 🐸`                          |
| hashtags     | `["minecraft"]`                                            |
| playCount    | `564000`                                                   |
| diggCount    | `98700`                                                    |
| commentCount | `1334`                                                     |
| shareCount   | `127`                                                      |
| duration     | `15`                                                       |
| downloadUrl  | `https://v16-webapp.tiktok.com/...`                        |

#### 🎵 Music

| Field      | Example               |
| ---------- | --------------------- |
| id         | `7106594280055130923` |
| title      | `original sound`      |
| authorName | `TikTok`              |
| duration   | `15`                  |

### 📊 Example Output

```json
{
    "resultType": "video",
    "id": "7106594312292453675",
    "url": "https://www.tiktok.com/@tiktok/video/7106594312292453675",
    "type": "video",
    "description": "how many frogs did you find? 🐸 check out tiktok's #Minecraft community today!",
    "createTime": "2022-06-07T18:55:31.000Z",
    "hashtags": ["minecraft"],
    "mentions": ["gorillo"],
    "diggCount": 98700,
    "commentCount": 1334,
    "shareCount": 127,
    "playCount": 564000,
    "collectCount": 58574,
    "duration": 15,
    "cover": "https://p16-sign.tiktokcdn-us.com/...",
    "playUrl": "https://v16-webapp.tiktok.com/...",
    "downloadUrl": "https://v16-webapp.tiktok.com/...",
    "author": {
        "username": "tiktok",
        "nickname": "TikTok",
        "verified": true,
        "followerCount": 94700000
    },
    "music": {
        "id": "7106594280055130923",
        "title": "original sound",
        "authorName": "TikTok",
        "duration": 15
    },
    "scrapedAt": "2026-07-07T12:00:00.000Z"
}
````

### 📋 Dataset Views

The Apify Console gives you **3 ready-made table views** to browse your results:

| View            | What It Shows                                                       |
| --------------- | ------------------------------------------------------------------- |
| 📊 **Overview** | Type, user, caption and the key engagement numbers at a glance      |
| 🎬 **Videos**   | Every video with plays, likes, comments, duration and download link |
| 👤 **Profiles** | Creator stats — followers, likes, video count and bio               |

### ❓ FAQ

**🤔 What can I scrape?**
Creator profiles and stats, individual videos, a creator's full video feed, hashtag/challenge feeds and the videos using any sound.

**🤔 Do I get download links?**
Yes — each video includes direct video URLs, including a watermark-free stream link.

**🤔 Can I track a hashtag or creator over time?**
Yes — turn on Monitoring Mode and each run only returns what's new or changed, keeping recurring runs cheap. You can also get a Telegram/Discord/Slack/webhook alert when fresh content appears.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
For fresh data, run daily or weekly. You can schedule automatic runs on Apify with just a few clicks.

**🤔 Does it work with proxies?**
Yes — residential proxies are recommended for the best results, and the scraper works with Apify's built-in proxy service out of the box.

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (by date, view threshold, region or verified-only creators)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication
- 🌐 Scraping from other social platforms alongside TikTok

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from TikTok. It does not access private accounts, bypass authentication, or collect personal data beyond what any visitor can see. Please use the data responsibly and in compliance with applicable laws and platform terms of service.

# Actor input Schema

## `profiles` (type: `array`):

TikTok usernames (with or without @) or profile URLs. By default the scraper returns each user's stats & bio. Set 'Profile scrape type' to 'posts' to fetch their video feed instead.

## `profileScrapeType` (type: `string`):

For the 'Profiles' input: 'details' returns follower/like/video counts & bio (fast, no browser). 'posts' loads each creator's video feed (uses the browser engine).

## `postURLs` (type: `array`):

TikTok video or photo URLs (or bare numeric IDs). Returns full video metadata, music, stats and download URLs.

## `hashtags` (type: `array`):

Hashtag names (with or without #) or /tag/ URLs. Returns the videos posted under each hashtag / challenge.

## `musicURLs` (type: `array`):

TikTok music (sound) URLs or IDs. Returns the videos that use each sound.

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

Mixed list of TikTok URLs — profiles, videos, hashtags or sounds. Each is auto-classified. Use this instead of the typed inputs above if you already have URLs.

## `resultsPerPage` (type: `integer`):

Maximum videos/users to collect per profile feed, hashtag, sound or search query.

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

Global cap across the whole run. 0 means unlimited.

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

How many sources to process in parallel. Browser tasks are automatically kept to a lower concurrency.

## `enableIncremental` (type: `boolean`):

Only output NEW / UPDATED / REAPPEARED items vs. the previous run. Great for cheap recurring monitoring of a profile, hashtag or sound.

## `stateKey` (type: `string`):

Name for the saved baseline. Leave empty to derive one from the first source. Use a stable key to monitor the same target over time.

## `emitUnchanged` (type: `boolean`):

Also output items whose content did not change since the last run.

## `emitExpired` (type: `boolean`):

Output an EXPIRED record when a previously-seen item disappears from the source.

## `skipReposts` (type: `boolean`):

Drop a NEW item whose content matches a recently expired one (same content, fresh ID).

## `notifications` (type: `object`):

Optional webhook / Telegram / Discord / Slack ping when incremental mode finds new or updated items.

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

Leave on automatic: the scraper picks the right proxy tier per request (residential only where TikTok requires it). Set explicit groups or custom proxies to override for ALL requests.

## Actor input object example

```json
{
  "profiles": [
    "tiktok",
    "https://www.tiktok.com/@nba"
  ],
  "profileScrapeType": "details",
  "resultsPerPage": 100,
  "maxItems": 1000,
  "maxConcurrency": 8,
  "enableIncremental": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "skipReposts": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "profiles": [
        "tiktok",
        "https://www.tiktok.com/@nba"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/tiktok-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 = { "profiles": [
        "tiktok",
        "https://www.tiktok.com/@nba",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("trev0n/tiktok-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 '{
  "profiles": [
    "tiktok",
    "https://www.tiktok.com/@nba"
  ]
}' |
apify call trev0n/tiktok-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Scraper - Profiles, Videos, Hashtags & Sounds",
        "description": "Scrape TikTok at scale: user profiles & stats, video metadata, download URLs, hashtag feeds and sound feeds. Great for social listening, influencer research, trend tracking and lead generation.",
        "version": "1.0",
        "x-build-id": "uqU0OF780owLFuPBd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trev0n~tiktok-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trev0n-tiktok-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/trev0n~tiktok-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trev0n-tiktok-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/trev0n~tiktok-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trev0n-tiktok-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",
                "properties": {
                    "profiles": {
                        "title": "Profiles (usernames or URLs)",
                        "type": "array",
                        "description": "TikTok usernames (with or without @) or profile URLs. By default the scraper returns each user's stats & bio. Set 'Profile scrape type' to 'posts' to fetch their video feed instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "profileScrapeType": {
                        "title": "Profile scrape type",
                        "enum": [
                            "details",
                            "posts"
                        ],
                        "type": "string",
                        "description": "For the 'Profiles' input: 'details' returns follower/like/video counts & bio (fast, no browser). 'posts' loads each creator's video feed (uses the browser engine).",
                        "default": "details"
                    },
                    "postURLs": {
                        "title": "Video URLs",
                        "type": "array",
                        "description": "TikTok video or photo URLs (or bare numeric IDs). Returns full video metadata, music, stats and download URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "hashtags": {
                        "title": "Hashtags",
                        "type": "array",
                        "description": "Hashtag names (with or without #) or /tag/ URLs. Returns the videos posted under each hashtag / challenge.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "musicURLs": {
                        "title": "Sound / music URLs",
                        "type": "array",
                        "description": "TikTok music (sound) URLs or IDs. Returns the videos that use each sound.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs (any TikTok URL)",
                        "type": "array",
                        "description": "Mixed list of TikTok URLs — profiles, videos, hashtags or sounds. Each is auto-classified. Use this instead of the typed inputs above if you already have URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "resultsPerPage": {
                        "title": "Results per source",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum videos/users to collect per profile feed, hashtag, sound or search query.",
                        "default": 100
                    },
                    "maxItems": {
                        "title": "Max results (total)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Global cap across the whole run. 0 means unlimited.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many sources to process in parallel. Browser tasks are automatically kept to a lower concurrency.",
                        "default": 8
                    },
                    "enableIncremental": {
                        "title": "Incremental / monitoring mode",
                        "type": "boolean",
                        "description": "Only output NEW / UPDATED / REAPPEARED items vs. the previous run. Great for cheap recurring monitoring of a profile, hashtag or sound.",
                        "default": false
                    },
                    "stateKey": {
                        "title": "State key",
                        "type": "string",
                        "description": "Name for the saved baseline. Leave empty to derive one from the first source. Use a stable key to monitor the same target over time."
                    },
                    "emitUnchanged": {
                        "title": "Emit unchanged items",
                        "type": "boolean",
                        "description": "Also output items whose content did not change since the last run.",
                        "default": false
                    },
                    "emitExpired": {
                        "title": "Emit expired items",
                        "type": "boolean",
                        "description": "Output an EXPIRED record when a previously-seen item disappears from the source.",
                        "default": false
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Drop a NEW item whose content matches a recently expired one (same content, fresh ID).",
                        "default": false
                    },
                    "notifications": {
                        "title": "Notifications",
                        "type": "object",
                        "description": "Optional webhook / Telegram / Discord / Slack ping when incremental mode finds new or updated items."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Leave on automatic: the scraper picks the right proxy tier per request (residential only where TikTok requires it). Set explicit groups or custom proxies to override for ALL requests.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
