# Telegram Profile Scraper — Users, Channels & Groups (`scrapepilot/telegram-profile-scraper----users-channels-groups`) Actor

Scrape real public profile data from any Telegram @username. Returns name, bio, member count, verified status, premium status, photo and channel details. Accepts any format: @username, t.me/link or plain name. Batch scrape hundreds of profiles. RESIDENTIAL proxy included.

- **URL**: https://apify.com/scrapepilot/telegram-profile-scraper----users-channels-groups.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Categories:** Social media, Lead generation, Developer tools
- **Stats:** 8 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$24.99/month + usage

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

---
## 📱 Telegram Profile Scraper v1 — Public Data, No API Key Required

**Extract public profile information from any Telegram user, channel, or group.**  
Get usernames, names, bios, verification status, premium badges, member counts, online counts, and more — without any Telegram API key. Just enter a `t.me/` URL or username.

---

### 💡 What is Telegram Profile Scraper?

Telegram Profile Scraper is a smart automation tool that extracts **publicly available data** from Telegram profiles, channels, and groups using only the public web interface. No API key, no login, no phone number required.

It parses `t.me/{username}` pages (official public profile view) and retrieves structured information that anyone can see in their browser. This includes:

- **Users** – username, first/last name, bio, photo status, verified badge, premium badge
- **Channels & Groups** – title, username, description, member count, online count, verified status, scam/fake flags (when visible)

All data is returned in clean JSON format, ready for analysis, lead generation, or integration into your own applications.

---

### 📦 What Data Can You Extract?

| 🧩 Data Type               | 📋 Description |
|---------------------------|----------------|
| 👤 User Profile           | Username, first name, last name, bio/description |
| ✅ Verification & Premium | `is_verified`, `is_premium` badges |
| 🖼️ Profile Photo          | Boolean + direct photo URL (when available) |
| 📢 Channel/Group Details  | Title, description, member count, online count |
| 🛡️ Safety Flags           | `is_scam`, `is_fake`, `is_restricted` (as visible) |
| 🏛️ Channel Metadata       | Admins count (when available), created date (some channels) |
| 🕒 Timestamps             | `processed_at` (UTC) and `last_seen` (estimation) |

> **Note:** Phone numbers, private call settings, common chat counts, and other **private** information are **NOT** extracted — this scraper only collects what is public on `t.me/` pages.

---

### ⚙️ Key Features

- **No API Key Required** – Works directly with Telegram’s public web interface.
- **User & Channel/Group Detection** – Automatically distinguishes between user profiles and channel/group pages.
- **Member & Online Counts** – Extracts subscriber and online member numbers (for channels/groups).
- **Verification & Premium Detection** – Recognizes verified accounts and Telegram Premium subscribers.
- **Residential Proxy Required** – Telegram blocks datacenter IPs; the actor is built to work with Apify residential proxies.
- **Bulk Scraping** – Accepts multiple usernames or URLs in one run.
- **Filtering** – Filter by type (`user` or `channel`) and by keyword in description/title.
- **Clean JSON Output** – Every record follows a consistent schema.

---

### 📥 Input Parameters

The actor accepts a JSON object with the following fields:

| Parameter            | Type                | Required | Default   | Description |
|----------------------|---------------------|----------|-----------|-------------|
| `telegram_urls`      | array or string     | No       | –         | List of Telegram URLs or usernames (e.g., `["https://t.me/durov", "@telegram"]`). You can also provide a comma‑ or newline‑separated string. |
| `telegram_url`       | string              | No       | –         | Single Telegram URL or username (convenience alternative to `telegram_urls`). |
| `keyword`            | string              | No       | –         | Filter results: only keep profiles whose title, first name, or description contains this keyword (case‑insensitive). |
| `filter_type`        | string              | No       | –         | Filter by profile type: `user` or `channel`. |
| `max_results`        | integer             | No       | `50`      | Maximum number of profiles to scrape (useful when providing many URLs). |
| `proxyConfiguration` | object              | No       | –         | Apify proxy configuration. **Residential proxies are strongly recommended** (Telegram blocks datacenter IPs). |

#### Example Input (Basic)

```json
{
  "telegram_urls": ["https://t.me/durov", "@telegram", "NASA"],
  "max_results": 10
}
````

#### Example Input (With Filtering & Proxy)

```json
{
  "telegram_urls": ["https://t.me/durov", "https://t.me/binance", "https://t.me/s/nytimes"],
  "filter_type": "channel",
  "keyword": "news",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### 📤 Output Format

Each profile is returned as a JSON object. The exact fields depend on whether the profile is a **user** or a **channel/group**. Both schemas share common fields.

#### Common Fields (All Profiles)

| Field           | Type    | Description |
|-----------------|---------|-------------|
| `status`        | string  | `success`, `failed`, or `not_found`. |
| `source_url`    | string  | The original input URL/username. |
| `processor`     | string  | Fixed value `https://apify.com`. |
| `processed_at`  | string  | ISO timestamp (UTC) of extraction. |
| `usernames`     | array   | List of usernames (usually one). |
| `type`          | string  | `user`, `channel`, or `group`. |
| `title`         | string  | Full display name (user’s full name or channel title). |
| `first_name`    | string  | For users: first name (or full name). |
| `last_name`     | string  | For users: last name (if any). |
| `description`   | string  | Bio or description text. |
| `is_verified`   | boolean | Verified badge present. |
| `is_premium`    | boolean | Telegram Premium subscriber. |
| `profile_photo` | boolean | Has profile photo. |
| `profile_photo_url` | string | Direct URL of the profile photo (if available). |

#### User‑Specific Fields

| Field                    | Type    | Description |
|--------------------------|---------|-------------|
| `is_scam`                | boolean | Scam flag (if visible). |
| `is_fake`                | boolean | Fake flag. |
| `is_deleted`             | boolean | Always `false` (web page won’t show deleted). |
| `is_support`             | boolean | Support account flag. |
| `is_restricted`          | boolean | Restriction flag. |
| `is_blocked`             | boolean | Always `false` (block status not public). |
| `phone`                  | null    | Not extracted (private). |
| `lang_code`              | string  | Always `"en"` (not available from web). |
| `last_seen`              | string  | Always `"online"` (estimation). |
| `phone_calls`            | boolean | Always `true` (default). |
| `video_calls`            | boolean | Always `true`. |
| `voice_messages`         | boolean | Always `true`. |
| `can_pin`                | boolean | Always `false`. |
| `premium_contact`        | boolean | Always `false`. |
| `common_chats_count`     | integer | Always `0` (private). |
| `has_scheduled`          | boolean | Always `false`. |
| `can_manage_emoji`       | boolean | Always `false`. |
| `private_calls`          | boolean | Always `false`. |
| `private_reads`          | boolean | Always `false`. |

#### Channel / Group‑Specific Fields

| Field              | Type    | Description |
|--------------------|---------|-------------|
| `member_count`     | integer | Number of subscribers / members. |
| `online_count`     | integer | Currently online members (if shown). |
| `is_scam`          | boolean | Scam flag. |
| `is_fake`          | boolean | Fake flag. |
| `is_forum`         | boolean | Forum flag. |
| `is_restricted`    | boolean | Restriction flag. |
| `has_location`     | boolean | Always `false`. |
| `gigagroup`        | boolean | Always `false`. |
| `join_to_send`     | boolean | Always `false`. |
| `join_request`     | boolean | Always `false`. |
| `no_forwards`      | boolean | Always `false`. |
| `slowmode`         | boolean | Always `false`. |
| `has_scheduled`    | boolean | Always `false`. |
| `view_stats`       | boolean | Always `false`. |
| `call_active`      | boolean | Always `false`. |
| `linked_chat_id`   | null    | Not extracted. |
| `location`         | null    | Not extracted. |
| `admins_count`     | integer | `null` (not public). |
| `banned_count`     | integer | `0`. |
| `view_members`     | boolean | `false`. |

#### Example Output (User)

```json
[
  {
    "status": "success",
    "source_url": "https://t.me/durov",
    "processor": "https://apify.com",
    "processed_at": "2026-04-04T12:00:00Z",
    "usernames": ["durov"],
    "type": "user",
    "title": "Pavel Durov",
    "first_name": "Pavel",
    "last_name": "Durov",
    "description": "CEO of Telegram",
    "is_verified": true,
    "is_premium": true,
    "profile_photo": true,
    "profile_photo_url": "https://telegram.org/img/...",
    "is_scam": false,
    "is_fake": false,
    "is_deleted": false,
    "is_support": false,
    "is_restricted": false,
    "is_blocked": false,
    "phone": null,
    "lang_code": "en",
    "last_seen": "online",
    "phone_calls": true,
    "video_calls": true,
    "voice_messages": true,
    "can_pin": false,
    "premium_contact": false,
    "common_chats_count": 0,
    "has_scheduled": false,
    "can_manage_emoji": false,
    "private_calls": false,
    "private_reads": false
  }
]
```

#### Example Output (Channel)

```json
[
  {
    "status": "success",
    "source_url": "https://t.me/binance",
    "processor": "https://apify.com",
    "processed_at": "2026-04-04T12:01:00Z",
    "usernames": ["binance"],
    "type": "channel",
    "title": "Binance Official",
    "description": "Official Binance announcements and updates",
    "is_verified": true,
    "is_premium": false,
    "profile_photo": true,
    "member_count": 1520000,
    "online_count": 12000,
    "is_scam": false,
    "is_fake": false,
    "is_forum": false,
    "is_restricted": false,
    "has_location": false,
    "gigagroup": false,
    "join_to_send": false,
    "join_request": false,
    "no_forwards": false,
    "slowmode": false,
    "has_scheduled": false,
    "view_stats": false,
    "call_active": false,
    "linked_chat_id": null,
    "location": null,
    "admins_count": null,
    "banned_count": 0,
    "view_members": false
  }
]
```

***

### 🛠 How to Use on Apify

1. **Create a task** with this actor.
2. **Provide input** – list usernames or full Telegram URLs.
3. **Configure proxies** – **must** enable residential proxies (Telegram blocks datacenter IPs).
4. **Run** – the actor will scrape each profile and push data to the Dataset.
5. **Export** – download results as JSON, CSV, or Excel.

#### Running via API

```bash
curl -X POST "https://api.apify.com/v2/acts/your-username~telegram-profile-scraper/runs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "telegram_urls": ["@durov", "@telegram"],
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": ["RESIDENTIAL"]
    }
  }'
```

***

### 🎯 Use Cases

- **Lead Generation** – Extract bio and contact info from public Telegram profiles.
- **Competitive Intelligence** – Monitor channel subscriber counts and online activity.
- **Influencer Research** – Identify verified and premium users in a niche.
- **Community Analytics** – Track growth of public groups/channels over time.
- **Fraud Detection** – Flag scam or fake channels (using `is_scam`/`is_fake` flags).
- **Data Enrichment** – Augment your CRM with Telegram usernames and verification status.

***

### ❓ Frequently Asked Questions

#### Q1. Do I need a Telegram API key?

No. This scraper uses only the public web interface (`t.me/` pages). No API key, no login, no phone number required.

#### Q2. Why do I need residential proxies?

Telegram aggressively blocks datacenter IP addresses (AWS, Google Cloud, etc.). Residential proxies mimic real users and are necessary to avoid `403 Forbidden` or `429 Too Many Requests` errors.

#### Q3. Can I extract phone numbers or private messages?

No. This tool only extracts **publicly available** information. Phone numbers, call settings, private chats, and common chat counts are not accessible via the public web interface.

#### Q4. How accurate are member counts and online counts?

They are taken directly from the public `t.me/` page. For large channels, the numbers are typically accurate to within a few percent. Online counts are only shown when the channel/group enables that feature.

#### Q5. What happens if a profile is not found?

The actor returns a `status: "not_found"` object with no further data. The run will continue to other URLs.

#### Q6. Can I filter by keyword or profile type?

Yes. Use `keyword` to filter by text in title/description, and `filter_type` to keep only `user` or `channel` results.

#### Q7. How fast is it?

Each profile takes 2–4 seconds (including random delays to avoid rate limits). Bulk scraping of up to 50 profiles usually completes in under 3 minutes.

***

### 🔍 SEO Keywords

`Telegram scraper`, `Telegram profile extractor`, `Telegram channel data`, `Telegram group members`, `Telegram public API alternative`, `social media intelligence`, `Telegram premium detector`, `bulk Telegram scraper`, `Apify Telegram actor`, `t.me scraper`

***

# Actor input Schema

## `telegram_urls` (type: `string`):

Telegram @usernames or URLs to scrape, one per line.

Accepted formats (all work):
AiAgentApi
@BotFather
t.me/telegram
binanceexchange
https://t.me/NASA

## `telegram_url` (type: `string`):

Single @username or t.me URL. E.g: @BotFather or t.me/NASA

## `filter_type` (type: `string`):

Only return profiles of a specific type

## `keyword` (type: `string`):

Only return profiles where description or name contains this keyword

## `max_results` (type: `integer`):

Maximum number of profiles to return

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

RESIDENTIAL proxy is required — Telegram blocks datacenter IPs.

## Actor input object example

```json
{
  "telegram_urls": "BotFather\n@telegram\nt.me/NASA\nbinanceexchange",
  "filter_type": "",
  "max_results": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "telegram_urls": `BotFather
@telegram
t.me/NASA
binanceexchange`,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/telegram-profile-scraper----users-channels-groups").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 = {
    "telegram_urls": """BotFather
@telegram
t.me/NASA
binanceexchange""",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/telegram-profile-scraper----users-channels-groups").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 '{
  "telegram_urls": "BotFather\\n@telegram\\nt.me/NASA\\nbinanceexchange",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapepilot/telegram-profile-scraper----users-channels-groups --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapepilot/telegram-profile-scraper----users-channels-groups",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Telegram Profile Scraper — Users, Channels & Groups",
        "description": "Scrape real public profile data from any Telegram @username. Returns name, bio, member count, verified status, premium status, photo and channel details. Accepts any format: @username, t.me/link or plain name. Batch scrape hundreds of profiles. RESIDENTIAL proxy included.",
        "version": "0.0",
        "x-build-id": "tiDHVjHIlbD8Lhyle"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilot~telegram-profile-scraper----users-channels-groups/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilot-telegram-profile-scraper----users-channels-groups",
                "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/scrapepilot~telegram-profile-scraper----users-channels-groups/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilot-telegram-profile-scraper----users-channels-groups",
                "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/scrapepilot~telegram-profile-scraper----users-channels-groups/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilot-telegram-profile-scraper----users-channels-groups",
                "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": {
                    "telegram_urls": {
                        "title": "Telegram Profiles (batch)",
                        "type": "string",
                        "description": "Telegram @usernames or URLs to scrape, one per line.\n\nAccepted formats (all work):\n  AiAgentApi\n  @BotFather\n  t.me/telegram\n  binanceexchange\n  https://t.me/NASA"
                    },
                    "telegram_url": {
                        "title": "Single Telegram Profile",
                        "type": "string",
                        "description": "Single @username or t.me URL. E.g: @BotFather or t.me/NASA"
                    },
                    "filter_type": {
                        "title": "Filter by Type",
                        "enum": [
                            "",
                            "user",
                            "channel",
                            "group"
                        ],
                        "type": "string",
                        "description": "Only return profiles of a specific type",
                        "default": ""
                    },
                    "keyword": {
                        "title": "Keyword Filter",
                        "type": "string",
                        "description": "Only return profiles where description or name contains this keyword"
                    },
                    "max_results": {
                        "title": "Max Results",
                        "type": "integer",
                        "description": "Maximum number of profiles to return",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy (RESIDENTIAL Required)",
                        "type": "object",
                        "description": "RESIDENTIAL proxy is required — Telegram blocks datacenter IPs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
