# Facebook Comments Scraper⚡ (`premiumscraper/facebook-comments-scraper`) Actor

Scrape Facebook post comments and nested replies. Output includes: comment text, author name & profile URL, timestamp, like count, reply count, attachments, and full reply threads. One clean row per comment. Ideal for NLP and sentiment research ✨Facebook Comments Scraper⚡

- **URL**: https://apify.com/premiumscraper/facebook-comments-scraper.md
- **Developed by:** [Premium Scraper](https://apify.com/premiumscraper) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 comment collecteds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Facebook Comments Scraper ⚡ — Full Comment Threads with Nested Replies

**Facebook Comments Scraper** extracts public Facebook comments and their replies from any direct Facebook post, video, photo, or share URL. Each row returned by this Facebook Comments Scraper represents one top-level comment, with all replies nested inside the same row under `all_replies` — giving you the complete conversation thread in a single structured object.

> 💡 **Want to scrape comments from ALL posts on a Facebook profile or page?**
> This **Facebook Comments Scraper** only accepts direct post URLs. To collect comments and replies from every post published on a profile or page, use the **[Facebook Posts Scraper](https://apify.com/premiumscraper/facebook-posts-scraper)** — it accepts profile/page URLs directly and returns all posts with full comment and reply data in one run.

---

### 🤔 Why Use This Facebook Comments Scraper?

When you need detailed comment threads from specific post URLs, this Facebook Comments Scraper gives you the fastest and most structured path. Unlike flat-row exporters, this **Facebook Comments Scraper** preserves the natural thread structure: each comment row contains its own replies nested under `all_replies`, along with full author info, engagement counts, reaction breakdowns, attachments, and timestamps.

---

### ⚙️ How This Facebook Comments Scraper Works

1️⃣ **Provide input** — paste direct Facebook post, video, photo, or share URLs into this Facebook Comments Scraper.
2️⃣ **URL resolution** — the Facebook Comments Scraper normalizes and validates each URL.
3️⃣ **Comment extraction** — top-level comments are fetched with full reply threads and engagement data.
4️⃣ **Nested output** — one dataset row per top-level comment, with `all_replies` nested inside as a sub-level field.
5️⃣ **Billing** — you are charged per top-level comment row pushed by this Facebook Comments Scraper.

> 💡 **To scrape comments in bulk from all posts on a profile, use [Facebook Posts Scraper](https://apify.com/premiumscraper/facebook-posts-scraper) instead of this Facebook Comments Scraper.**

> ⚠️ **Important — Comment Filter affects how many comments and replies you get:** Facebook actively hides a large number of comments and replies when `most_relevant` or `newest` filters are selected. If you want to get the maximum number of comments and replies available on a post, always set **Comment Ordering to `All comments`**. With other filters, you may receive far fewer results than what is publicly visible on the post.

---

### 📦 What Data Does This Facebook Comments Scraper Return?

This **Facebook Comments Scraper** returns one row per top-level comment. Each row from this Facebook Comments Scraper includes:

#### Comment-Level Fields

| Field | Type | Description |
|-------|------|-------------|
| `type` | string | Always `comment` in this Facebook Comments Scraper |
| `number` | integer | Sequential row number across the whole run |
| `source_post_number` | integer | Order of the source post URL |
| `source_post_url` | string | Normalized source post URL |
| `post_summary` | object | Compact post metadata: post ID, permalink, created_at, message_text, profile name/ID/URL, verified flag, engagement totals, media summary |
| `comment_collection` | object | Source comment collection metadata: request coverage, total/returned counts, and sanitized selected-filter info for the parent post |
| `comment_id` | string | Unique Facebook comment identifier |
| `comment_legacy_fbid` | string | Legacy Facebook comment ID |
| `parent_comment_id` | string | Parent comment ID (null for top-level) |
| `depth` | integer | Thread depth (`0` = top-level comment) |
| `created_at` | string | Comment creation timestamp (ISO 8601) |
| `message_text` | string | Full comment body text |
| `comment_links` | array | Direct URL(s) to this comment |
| `author` | object | See author sub-fields below |
| `engagement` | object | See engagement sub-fields below |
| `reply_details` | object | Reply pagination and count metadata |
| `attachments` | object | Media attached to this comment (images, stickers, etc.) |
| `all_replies` | array | **Nested replies** — each reply has the same fields as a comment row (author, message_text, engagement, created_at, etc.) |

#### Author Sub-Fields (inside `author`)

| Field | Type | Description |
|-------|------|-------------|
| `profile_name` | string | Commenter display name |
| `profile_id` | string | Commenter Facebook user ID |
| `profile_links` | array | Commenter profile URL(s) |
| `profile_picture_links` | array | Commenter profile picture URL(s) |
| `profile_is_verified` | boolean | Whether the commenter is a verified page/profile |

#### Engagement Sub-Fields (inside `engagement`)

| Field | Type | Description |
|-------|------|-------------|
| `reaction_count_total` | integer | Total reactions on this comment |
| `reaction_count_reduced` | string | Reaction count (display text, e.g. `1.2K`) |
| `top_reaction_types` | array | Top reaction type names (e.g. `LIKE`, `LOVE`) |
| `top_reaction_labels` | array | Top reaction labels (e.g. `Like`, `Love`) |
| `top_reactions_breakdown` | array | Per-type reaction count breakdown |
| `reply_count_total` | integer | Total replies to this comment |
| `reply_count_visible` | integer | Replies visible in this Facebook Comments Scraper result |
| `reply_count_hidden` | integer | Replies not collected (beyond limit) |
| `has_more_replies` | boolean | Whether more replies exist beyond the limit |
| `reply_visibility_note` | string | Explanation of reply visibility |

#### Reply Sub-Fields (inside `all_replies[]`)

Each reply in `all_replies` from this Facebook Comments Scraper has the same structure as its parent comment:
`comment_id`, `comment_legacy_fbid`, `parent_comment_id`, `depth`, `created_at`, `message_text`, `comment_links`, `author`, `engagement`, `attachments`

---

### ⚙️ Input Configuration

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `facebook_urls` | URL[] | — | Direct Facebook post, video, photo, or share URLs |
| `comments_limit` | integer | 10 | Max top-level comments to collect per post |
| `include_comment_replies` | boolean | true | Nest replies inside each comment under `all_replies` |
| `comment_replies_limit` | integer | 10 | Max replies to collect per top-level comment |
| `comment_filter` | string | `most_relevant` | Comment ordering: `most_relevant`, `newest`, `all_comments` |

> ⚠️ **`comment_filter` critically affects your results.** Facebook hides a large portion of comments and replies when the filter is set to `most_relevant` or `newest`. To guarantee you receive the maximum number of available comments and replies on each post, always set `comment_filter` to **`all_comments`**. The actor logs a warning at runtime when any other filter is selected.

---

### 🎯 Facebook Comments Scraper Use Cases

- 💬 **Audience sentiment analysis** — understand how audiences react to posts via comment text
- 🔍 **Brand monitoring** — track comments mentioning your brand on public posts
- 📊 **Community research** — analyze comment thread depth and engagement patterns
- 🧠 **NLP & AI training** — build structured comment datasets for language model training
- 📢 **Influencer research** — study audience conversations on influencer posts
- 🎯 **Content strategy** — identify what topics drive the most comments and replies
- 🛡️ **Crisis monitoring** — surface negative comment threads early with this Facebook Comments Scraper
- 📈 **Competitor analysis** — monitor comments on competitor brand posts

---

### 💡 Tips & Best Practices

- ✅ **Replies are nested, not separate rows** — this Facebook Comments Scraper stores each comment's replies inside `all_replies`, keeping the conversation structure intact.
- 🚨 **Always use `comment_filter: all_comments` for maximum results** — `most_relevant` and `newest` filters cause Facebook to hide a large portion of publicly available comments and replies. When you use these filters, you may get only 1–3 replies for a comment that has 20+ replies publicly visible. The actor will log a warning every time a non-`all_comments` filter is used.
- 💰 **Top-level comments are billed** — nested replies in `all_replies` are fetched and bundled for Extra.
- 📌 **Need comments from all posts on a profile?** Use **[Facebook Posts Scraper](https://apify.com/premiumscraper/facebook-posts-scraper)** which accepts a profile URL and returns all posts with their comments — no need to collect individual links before using this Facebook Comments Scraper.
- ⏱️ **Combine with Reactions Scraper** — pair this Facebook Comments Scraper output with the Reactions Scraper for a complete post engagement + conversation dataset.

---

### ❓ Frequently Asked Questions

**Q: Can I use a Facebook profile or page URL with this Facebook Comments Scraper?**
A: No. This **Facebook Comments Scraper** only accepts direct post URLs. To scrape comments from all posts on a profile or page automatically, use **[Facebook Posts Scraper](https://apify.com/premiumscraper/facebook-posts-scraper)**.

**Q: Where are replies stored in this Facebook Comments Scraper?**
A: All replies are nested inside the parent comment row under the `all_replies` field as a structured array. There are no separate reply rows in this Facebook Comments Scraper.

**Q: Why am I getting fewer replies than expected?**
A: This is caused by the `comment_filter` setting. When `most_relevant` or `newest` is selected, Facebook hides most replies and does not provide the pagination token required to fetch more. A comment with 28 replies visible publicly may return only 1–3 in these modes. **Switch `Comment Ordering` to `All comments`** to get the maximum number of replies for each comment. The actor logs a ⚠️ warning at the start of each run if you are not using `all_comments`.

**Q: What author fields are returned per comment?**
A: This Facebook Comments Scraper returns `profile_name`, `profile_id`, `profile_links`, `profile_picture_links`, and `profile_is_verified` inside the `author` field for each comment and reply.

**Q: What engagement fields are returned per comment?**
A: The `engagement` field in this Facebook Comments Scraper includes `reaction_count_total`, `reaction_count_reduced`, `top_reaction_types`, `top_reaction_labels`, `top_reactions_breakdown`, `reply_count_total`, `reply_count_visible`, `reply_count_hidden`, and `has_more_replies`.

**Q: Can this Facebook Comments Scraper fetch comments from private posts?**
A: No. This Facebook Comments Scraper only works with publicly visible Facebook posts.

---

### ⚠️ Limitations

- ⛔ **Public posts only** — this Facebook Comments Scraper cannot access private or friends-only post comments.
- ⛔ **Direct post URLs only** — profile/page URLs are not supported. Use [Facebook Posts Scraper](https://apify.com/premiumscraper/facebook-posts-scraper) for profile-level scraping instead of this Facebook Comments Scraper.
- ⛔ **Comment count may vary** — Facebook does not always expose the full public comment count in this Facebook Comments Scraper.
---

### 🔌 Integration Ideas

- 📊 Feed this Facebook Comments Scraper data into NLP sentiment pipelines.
- ⏰ Schedule periodic runs of this Facebook Comments Scraper on high-traffic posts.
- 📡 Connect via Apify integrations to Slack, Zapier, or Make for automated comment alerts.
- 💾 Archive comment threads over time to track engagement trends.

---

### 🔒 Privacy & Compliance

This **Facebook Comments Scraper** only accesses publicly visible comment data. No authentication is required. This Facebook Comments Scraper does not bypass any Facebook access controls. All internal tokens and proxy connection data are redacted from logs. Users are responsible for ensuring their use of this Facebook Comments Scraper complies with applicable laws and Facebook's terms of service.

# Actor input Schema

## `facebook_urls` (type: `array`):

Direct Facebook post, video, photo, or share URLs. Profile URLs are not supported here - to scrape all posts from a profile with comments use https://apify.com/premiumscraper/facebook-posts-scraper
## `comments_limit` (type: `integer`):

Requested number of top-level comments per source post.
## `include_comment_replies` (type: `boolean`):

Turn on to also export replies as standalone rows.
## `comment_replies_limit` (type: `integer`):

Requested number of replies to fetch per parent comment when replies are enabled.
## `comment_filter` (type: `string`):

Comment ordering used while fetching comments and replies. Use all_comments for maximum reply visibility. most_relevant may hide replies behind a filter Facebook does not expose.

## Actor input object example

```json
{
  "facebook_urls": [
    {
      "url": "https://www.facebook.com/Cristiano/posts/pfbid0Dp9Wrmv1NAkFX1nSkKwLEKftjMSHbDYNBZE7L43y8JnTs77USeJ7cpC5FoGgm3inl"
    }
  ],
  "comments_limit": 10,
  "include_comment_replies": true,
  "comment_replies_limit": 10,
  "comment_filter": "most_relevant"
}
````

# 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 = {
    "facebook_urls": [
        {
            "url": "https://www.facebook.com/Cristiano/posts/pfbid0Dp9Wrmv1NAkFX1nSkKwLEKftjMSHbDYNBZE7L43y8JnTs77USeJ7cpC5FoGgm3inl"
        }
    ],
    "comments_limit": 10,
    "comment_replies_limit": 10,
    "comment_filter": "most_relevant"
};

// Run the Actor and wait for it to finish
const run = await client.actor("premiumscraper/facebook-comments-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 = {
    "facebook_urls": [{ "url": "https://www.facebook.com/Cristiano/posts/pfbid0Dp9Wrmv1NAkFX1nSkKwLEKftjMSHbDYNBZE7L43y8JnTs77USeJ7cpC5FoGgm3inl" }],
    "comments_limit": 10,
    "comment_replies_limit": 10,
    "comment_filter": "most_relevant",
}

# Run the Actor and wait for it to finish
run = client.actor("premiumscraper/facebook-comments-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 '{
  "facebook_urls": [
    {
      "url": "https://www.facebook.com/Cristiano/posts/pfbid0Dp9Wrmv1NAkFX1nSkKwLEKftjMSHbDYNBZE7L43y8JnTs77USeJ7cpC5FoGgm3inl"
    }
  ],
  "comments_limit": 10,
  "comment_replies_limit": 10,
  "comment_filter": "most_relevant"
}' |
apify call premiumscraper/facebook-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Comments Scraper⚡",
        "description": "Scrape Facebook post comments and nested replies. Output includes: comment text, author name & profile URL, timestamp, like count, reply count, attachments, and full reply threads. One clean row per comment. Ideal for NLP and sentiment research ✨Facebook Comments Scraper⚡",
        "version": "1.0",
        "x-build-id": "AfkPWkheLD588k8yf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/premiumscraper~facebook-comments-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-premiumscraper-facebook-comments-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/premiumscraper~facebook-comments-scraper/runs": {
            "post": {
                "operationId": "runs-sync-premiumscraper-facebook-comments-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/premiumscraper~facebook-comments-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-premiumscraper-facebook-comments-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": {
                    "facebook_urls": {
                        "title": "Facebook Post URLs",
                        "type": "array",
                        "description": "Direct Facebook post, video, photo, or share URLs. Profile URLs are not supported here - to scrape all posts from a profile with comments use https://apify.com/premiumscraper/facebook-posts-scraper",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "comments_limit": {
                        "title": "Top-Level Comments Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Requested number of top-level comments per source post.",
                        "default": 10
                    },
                    "include_comment_replies": {
                        "title": "Include Replies",
                        "type": "boolean",
                        "description": "Turn on to also export replies as standalone rows.",
                        "default": true
                    },
                    "comment_replies_limit": {
                        "title": "Replies Per Comment Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Requested number of replies to fetch per parent comment when replies are enabled.",
                        "default": 10
                    },
                    "comment_filter": {
                        "title": "Comment Ordering",
                        "enum": [
                            "most_relevant",
                            "newest",
                            "all_comments"
                        ],
                        "type": "string",
                        "description": "Comment ordering used while fetching comments and replies. Use all_comments for maximum reply visibility. most_relevant may hide replies behind a filter Facebook does not expose.",
                        "default": "most_relevant"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
