# Reddit Comments Scraper (`khadinakbar/reddit-comments-scraper`) Actor

- **URL**: https://apify.com/khadinakbar/reddit-comments-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, AI, MCP servers
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 comment scrapeds

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.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

## Reddit Comments Scraper

Scrape **Reddit comments** from a thread URL, a subreddit, a user profile, or a search keyword — in one actor, auto-detected per input. Returns **one flat record per comment**, with deep nested-reply expansion, scores, depth, author, OP flag, timestamps, awards, and permalinks. Fully managed data sourcing — **no login, no Reddit account, and no API key on your side**. Built for sentiment analysis, AI/LLM training data, and social listening, and ready to call from an AI agent over MCP.

### What you can scrape

Put any mix of these in the `queries` list — each is detected automatically:

| Input type | Example | What you get |
|---|---|---|
| Thread / post URL | `https://www.reddit.com/r/technology/comments/1abcd2e/title/` | Every comment on that thread, full nested reply tree |
| Subreddit | `r/technology` or `technology` | The newest comments across the whole subreddit |
| User profile | `u/spez` or `https://www.reddit.com/user/spez/` | Every comment that user has posted, newest first *(requires Reddit API credentials configured by the author — see How it works)* |
| Keyword | `ChatGPT alternatives` | Comments on the threads matching that search (optionally filtered to comments containing the keyword) |

### When to use it

- **Sentiment & opinion mining** — pull a viral thread and analyze how people actually feel.
- **AI / LLM training data** — clean, flat, deduplicated comment text with metadata.
- **Social listening & brand monitoring** — track what a subreddit or keyword's comments say about a product.
- **Community / user research** — pull a user's full comment history for context.

**When NOT to use it:** if you want post-level data (titles, scores, post bodies, subreddit analytics), use the companion **[reddit-posts-comments-scraper](https://apify.com/khadinakbar/reddit-posts-comments-scraper)** instead. This actor's output unit is always a *comment*.

### Output

One record per comment. Example (`concise` format):

```json
{
  "commentId": "abc123",
  "parentId": "t3_1abcd2e",
  "postId": "1abcd2e",
  "subreddit": "technology",
  "postTitle": "Some interesting thread",
  "postUrl": "https://www.reddit.com/r/technology/comments/1abcd2e/some_thread/",
  "author": "example_user",
  "body": "This is the comment text.",
  "score": 142,
  "depth": 0,
  "isSubmitter": false,
  "isEdited": false,
  "createdAt": "2026-06-02T14:30:00.000Z",
  "permalink": "https://www.reddit.com/r/technology/comments/1abcd2e/some_thread/abc123/",
  "awardsCount": 0,
  "numReplies": 3,
  "inputMode": "subreddit",
  "sourceInput": "r/technology"
}
````

Set `responseFormat` to `detailed` to additionally get `bodyHtml`, `authorFlair`, `controversiality`, `gilded`, `stickied`, and `distinguished`.

### Pricing

**$0.002 per comment** returned, plus a tiny per-run start fee. You are billed only for comments actually written to the dataset, and never beyond your `maxComments` cap — so a 200-comment run costs about **$0.40**. Both pay-per-event and usage-based billing are available; pick whichever suits your volume.

### Input options

| Option | Default | Description |
|---|---|---|
| `queries` | — (required) | List of thread URLs, subreddits, users, or keywords |
| `mode` | `auto` | Force `thread` / `subreddit` / `user` / `search` if auto-detect misreads an input |
| `maxComments` | `200` | Hard cap on comments returned (and billed) this run |
| `sort` | `top` | `top`, `best`, `new`, `controversial`, `old`, `qa` (thread ordering) |
| `includeReplies` | `true` | Walk the full nested reply tree and expand "load more" stubs |
| `maxDepth` | `10` | Maximum reply nesting depth to traverse |
| `responseFormat` | `concise` | `concise` (agent-friendly) or `detailed` (all fields) |
| `filterCommentsByKeyword` | `false` | Keyword mode: return only comments containing the keyword |
| `proxy` | Residential | Proxy config — residential is required and on by default |

### How it works

Comments are sourced through a managed, multi-tier chain, so you never supply credentials or proxies:

1. **Reddit OAuth API** — used when the actor author has configured Reddit API credentials. Cheapest path, and the only one that supports **user** comment history.
2. **ScrapeCreators** — a managed Reddit data API used by default and as the primary fallback. Serves thread, subreddit, and keyword inputs out of the box, with no setup on your side.
3. **SociaVault** — a second managed API used for redundancy if ScrapeCreators is unavailable.

Each comment record carries a `source` field showing which tier served it. The actor walks the full nested reply tree up to `maxDepth` and stops exactly at your `maxComments` cap. **User-comment-history** mode requires Reddit OAuth credentials (configured by the actor author); without them, `user` inputs are skipped with a warning. If every configured source is unavailable, the run finishes with a clear status message and an empty dataset rather than erroring.

### Use from an AI agent (MCP)

This actor is MCP-ready. Exposed through the Apify MCP server, an agent can pass a single Reddit reference (URL, subreddit, user, or keyword) and receive structured comment JSON — ideal for "summarize what people think about X on Reddit" style tasks. Keep `responseFormat: concise` for the smallest, cleanest payloads.

### Related actors

- **[reddit-posts-comments-scraper](https://apify.com/khadinakbar/reddit-posts-comments-scraper)** — post-level data + subreddit analytics.
- **[x-tweet-scraper](https://apify.com/khadinakbar/x-tweet-scraper)** — comments/replies on X (Twitter).
- **[youtube-comments-scraper](https://apify.com/khadinakbar/youtube-comments-scraper)** — comments on YouTube videos.

### FAQ

**Do I need a Reddit account or API key?** No. Data sourcing is fully managed by the actor author — you just provide inputs. (The one exception is user-comment-history mode, which requires Reddit API credentials configured by the author.)

**Can I scrape an entire subreddit's history?** You get the newest comments via the subreddit comment feed (Reddit caps how far back this paginates). For older content, pass specific thread URLs.

**Why didn't I get every single reply on a huge thread?** Reddit collapses very deep branches behind "continue this thread" stubs and caps how many it serves anonymously. The actor expands as many as it can within `maxComments` and `maxDepth`.

**Are deleted/removed comments included?** Deleted comment bodies appear as `[deleted]` / `[removed]` exactly as Reddit returns them.

### Legal & compliance

This actor collects only **publicly available** Reddit content. It does not log in, bypass authentication, or access private/quarantined communities you could not view in a logged-out browser. You are responsible for using scraped data in compliance with Reddit's Terms of Service, the [Reddit User Agreement](https://www.redditinc.com/policies/user-agreement), applicable data-protection laws (GDPR/CCPA), and any rights of the comment authors. Do not use this data to identify, harass, or de-anonymize individuals. Scrape responsibly.

# Actor input Schema

## `queries` (type: `array`):

List of Reddit inputs to scrape comments from. Each item is auto-detected as one of: a thread/post URL (e.g. 'https://www.reddit.com/r/technology/comments/abc123/title/'), a subreddit ('r/technology' or just 'technology'), a user profile ('u/spez' or a full /user/ URL), or a free-text keyword to search ('best mechanical keyboard'). Mixing types in one run is fine. This is NOT for post bodies only — the output unit is always a comment; for post-level subreddit analytics use the reddit-posts-comments-scraper actor.

## `mode` (type: `string`):

How to interpret each item in 'queries'. Leave as 'auto' (default) to detect thread/subreddit/user/keyword per item from its shape. Force a single mode only when auto-detection mis-reads your inputs (e.g. force 'search' to treat a one-word input as a keyword instead of a subreddit). Does NOT change the output shape, only how inputs are routed.

## `maxComments` (type: `integer`):

Maximum number of comments to return across all inputs in this run. The actor stops and billing stops once this cap is reached (you are charged per comment returned). Defaults to 200. Raise it for full-thread or full-subreddit pulls; one viral thread can hold tens of thousands of comments.

## `sort` (type: `string`):

Order in which Reddit returns comments within a thread: 'top' (highest score first, default), 'best' (Reddit confidence ranking), 'new', 'controversial', 'old', or 'qa'. For subreddit and user inputs Reddit always returns newest-first regardless of this value. Affects which comments you get first when 'maxComments' is smaller than the full thread.

## `includeReplies` (type: `boolean`):

When true (default), the actor walks the full reply tree and expands collapsed 'load more comments' / 'continue this thread' stubs to capture deep replies, not just top-level comments. When false, only comments visible in the first response are returned (faster, cheaper, shallower). Only affects thread and keyword-search inputs; subreddit and user feeds are flat by nature.

## `maxDepth` (type: `integer`):

How many reply levels deep to traverse in a thread, where 0 is a top-level comment, 1 is a direct reply, and so on. Defaults to 10. Lower it to cap cost on deeply nested threads; raise it to capture very long back-and-forth chains. Ignored when 'includeReplies' is false or for flat subreddit/user feeds.

## `responseFormat` (type: `string`):

'concise' (default) returns the core comment fields, kept compact for LLM/agent consumption. 'detailed' adds body HTML, author flair, controversiality, gildings, and stickied/distinguished flags. Use 'concise' for sentiment/NLP pipelines and AI agents; use 'detailed' for forensic or moderation analysis. Does not change the number of comments billed.

## `filterCommentsByKeyword` (type: `boolean`):

Only relevant for keyword inputs. When true, the actor returns only comments whose text contains your keyword, instead of every comment on the matched threads. When false (default), it returns all comments on threads that matched your keyword. Has no effect on thread, subreddit, or user inputs.

## `proxy` (type: `object`):

Proxy settings. Defaults to Apify Residential proxies, which are required because Reddit blocks datacenter IPs and rate-limits per IP. Leave as default unless you have a specific reason to override. Datacenter proxies will be blocked by Reddit.

## `redditClientId` (type: `string`):

Optional. Your own Reddit app client ID. Leave blank to use the actor owner-managed Reddit access (recommended; end users and AI agents need nothing). To self-supply, create a free app of type "web app" at https://www.reddit.com/prefs/apps. This is the app ID shown under the app name, NOT your Reddit username.

## `redditClientSecret` (type: `string`):

Optional. The secret paired with your Reddit client ID. Leave blank to use the owner-managed access. Found beside "secret" under your app at reddit.com/prefs/apps. This is NOT your Reddit account password.

## Actor input object example

```json
{
  "queries": [
    "https://www.reddit.com/r/technology/comments/1abcd2e/some_thread/",
    "u/spez",
    "r/MachineLearning",
    "ChatGPT alternatives"
  ],
  "mode": "auto",
  "maxComments": 100,
  "sort": "top",
  "includeReplies": true,
  "maxDepth": 10,
  "responseFormat": "concise",
  "filterCommentsByKeyword": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Structured records saved by this actor.

## `summary` (type: `string`):

Run summary and diagnostic metadata.

# 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 = {
    "queries": [
        "r/technology"
    ],
    "maxComments": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/reddit-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 = {
    "queries": ["r/technology"],
    "maxComments": 100,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/reddit-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 '{
  "queries": [
    "r/technology"
  ],
  "maxComments": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call khadinakbar/reddit-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Reddit Comments Scraper",
        "version": "0.5",
        "x-build-id": "qeno1Lp3QH4U7BR0g"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~reddit-comments-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-reddit-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/khadinakbar~reddit-comments-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-reddit-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/khadinakbar~reddit-comments-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-reddit-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",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Reddit sources (URLs, subreddits, users, or keywords)",
                        "type": "array",
                        "description": "List of Reddit inputs to scrape comments from. Each item is auto-detected as one of: a thread/post URL (e.g. 'https://www.reddit.com/r/technology/comments/abc123/title/'), a subreddit ('r/technology' or just 'technology'), a user profile ('u/spez' or a full /user/ URL), or a free-text keyword to search ('best mechanical keyboard'). Mixing types in one run is fine. This is NOT for post bodies only — the output unit is always a comment; for post-level subreddit analytics use the reddit-posts-comments-scraper actor.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "mode": {
                        "title": "Detection mode",
                        "enum": [
                            "auto",
                            "thread",
                            "subreddit",
                            "user",
                            "search"
                        ],
                        "type": "string",
                        "description": "How to interpret each item in 'queries'. Leave as 'auto' (default) to detect thread/subreddit/user/keyword per item from its shape. Force a single mode only when auto-detection mis-reads your inputs (e.g. force 'search' to treat a one-word input as a keyword instead of a subreddit). Does NOT change the output shape, only how inputs are routed.",
                        "default": "auto"
                    },
                    "maxComments": {
                        "title": "Max comments",
                        "minimum": 1,
                        "maximum": 200000,
                        "type": "integer",
                        "description": "Maximum number of comments to return across all inputs in this run. The actor stops and billing stops once this cap is reached (you are charged per comment returned). Defaults to 200. Raise it for full-thread or full-subreddit pulls; one viral thread can hold tens of thousands of comments.",
                        "default": 200
                    },
                    "sort": {
                        "title": "Comment sort",
                        "enum": [
                            "top",
                            "best",
                            "new",
                            "controversial",
                            "old",
                            "qa"
                        ],
                        "type": "string",
                        "description": "Order in which Reddit returns comments within a thread: 'top' (highest score first, default), 'best' (Reddit confidence ranking), 'new', 'controversial', 'old', or 'qa'. For subreddit and user inputs Reddit always returns newest-first regardless of this value. Affects which comments you get first when 'maxComments' is smaller than the full thread.",
                        "default": "top"
                    },
                    "includeReplies": {
                        "title": "Include nested replies",
                        "type": "boolean",
                        "description": "When true (default), the actor walks the full reply tree and expands collapsed 'load more comments' / 'continue this thread' stubs to capture deep replies, not just top-level comments. When false, only comments visible in the first response are returned (faster, cheaper, shallower). Only affects thread and keyword-search inputs; subreddit and user feeds are flat by nature.",
                        "default": true
                    },
                    "maxDepth": {
                        "title": "Max reply depth",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many reply levels deep to traverse in a thread, where 0 is a top-level comment, 1 is a direct reply, and so on. Defaults to 10. Lower it to cap cost on deeply nested threads; raise it to capture very long back-and-forth chains. Ignored when 'includeReplies' is false or for flat subreddit/user feeds.",
                        "default": 10
                    },
                    "responseFormat": {
                        "title": "Response detail",
                        "enum": [
                            "concise",
                            "detailed"
                        ],
                        "type": "string",
                        "description": "'concise' (default) returns the core comment fields, kept compact for LLM/agent consumption. 'detailed' adds body HTML, author flair, controversiality, gildings, and stickied/distinguished flags. Use 'concise' for sentiment/NLP pipelines and AI agents; use 'detailed' for forensic or moderation analysis. Does not change the number of comments billed.",
                        "default": "concise"
                    },
                    "filterCommentsByKeyword": {
                        "title": "Filter comments by keyword (search mode only)",
                        "type": "boolean",
                        "description": "Only relevant for keyword inputs. When true, the actor returns only comments whose text contains your keyword, instead of every comment on the matched threads. When false (default), it returns all comments on threads that matched your keyword. Has no effect on thread, subreddit, or user inputs.",
                        "default": false
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Defaults to Apify Residential proxies, which are required because Reddit blocks datacenter IPs and rate-limits per IP. Leave as default unless you have a specific reason to override. Datacenter proxies will be blocked by Reddit.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "redditClientId": {
                        "title": "Reddit client ID (optional)",
                        "type": "string",
                        "description": "Optional. Your own Reddit app client ID. Leave blank to use the actor owner-managed Reddit access (recommended; end users and AI agents need nothing). To self-supply, create a free app of type \"web app\" at https://www.reddit.com/prefs/apps. This is the app ID shown under the app name, NOT your Reddit username."
                    },
                    "redditClientSecret": {
                        "title": "Reddit client secret (optional)",
                        "type": "string",
                        "description": "Optional. The secret paired with your Reddit client ID. Leave blank to use the owner-managed access. Found beside \"secret\" under your app at reddit.com/prefs/apps. This is NOT your Reddit account password."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
