# Blind Post Scraper - Anonymous Tech Discussions Extractor (`trev0n/blind-post-scraper`) Actor

Extract posts, comments, and discussions from TeamBlind.com - the anonymous professional community for tech workers. Scrape channels, topics, search results, and individual posts.

- **URL**: https://apify.com/trev0n/blind-post-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## 💬 Blind Post Scraper

🎯 **Pull anonymous tech industry conversations, layoff rumors, and salary intel straight off TeamBlind.com — at scale, in seconds.**

This scraper collects posts, comments, polls, channels, and the raw signal behind every Blind discussion. Use it to track what tech workers are _actually_ saying about hiring, comp, layoffs, RTO, your competitors, or your own company — with a clean, structured dataset you can drop into a spreadsheet, BI tool, or LLM.

---

### 🚀 What Does It Do?

This scraper automatically opens any TeamBlind page — a channel, a topic, a search query, or a single post — and pulls every discussion it finds into **structured, ready-to-use data**. No manual browsing, no copy-paste, no login required.

💡 **Two modes of operation:**

1. **🔍 Discovery Mode** — Drop in a channel URL (e.g. `/channels/tech`), a hot/trending feed, or a search query. The scraper walks the listing and returns every post with its title, channel, comment count, and view count.
2. **📋 Direct URL Mode** — Drop in a single post URL and get the full post body, all visible comments and replies, poll results, author nickname, company tag, and engagement metrics.

🔁 You can also flip a switch to combine both — start from a listing and automatically fetch the full body of every post discovered.

---

### 👥 Who Is This For?

| 🏢 Use Case                     | 💬 How It Helps                                                                                                      |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| 📈 **Recruiters & TA Leaders**  | Monitor sentiment about your company, salary expectations, interview leaks, and competitor comp benchmarks           |
| 📊 **Market Researchers**       | Track what's being said about specific products, layoffs, or hiring trends across the tech industry                  |
| 📰 **Journalists & Analysts**   | Source anonymous insider commentary on layoffs, mergers, IPOs, and corporate culture stories                         |
| 🛡️ **Brand & Reputation Teams** | Catch viral threads about your company early — before they make it to LinkedIn or the press                          |
| 🤖 **AI / Data Teams**          | Build training datasets for sentiment models, salary predictors, or conversational AI on real-world tech discussions |
| 🎯 **Competitive Intelligence** | See what employees of rival companies are talking about — comp ranges, RTO complaints, project leaks                 |

---

### ✨ Features

- 🌐 **Any URL Works** — Channels, topics, search results, trending feeds, single posts. Just paste, hit Start
- 💬 **Full Comment Threads** — Every comment with the original poster, replying nickname, company tag, like count, and timestamp
- 📊 **Poll Results** — When a post is a poll, you get the question type, vote counts per option, and total participants
- 🏢 **Company Tags** — Each post and comment carries the verified company of the author (Meta, Google, Apple, Stripe…)
- 📈 **Engagement Metrics** — Views, comment count, and like counts per comment
- 🔎 **Search & Filter Friendly** — Hit a search query URL like `/search?q=anthropic` and pull every result
- 📅 **Timestamps Everywhere** — Both post and comments include the original timestamp from Blind
- ⚡ **Fast & Scalable** — Lightweight HTTP-only architecture means hundreds of posts in minutes, not hours
- 🧹 **Built-in Deduplication** — The scraper automatically skips duplicate posts even when the same post shows up across multiple channels
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

---

### 🎛️ Filters & Options

| Option                         | What It Does                                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------------------ |
| 🔗 **Start URLs**              | Any TeamBlind URL — popular feed, newest feed, channels, company pages, search, single posts     |
| 🔢 **Max Items**               | Cap the run at a specific number of posts. Set to 0 for unlimited (max 10,000)                   |
| 🪄 **Scrape Posts From Lists** | When ON, follow every post link discovered on a listing and return full post detail              |
| 💬 **Scrape Comments**         | Toggle the comments array on or off. Off = much faster, just titles + metadata                   |
| 🔢 **Max Comments Per Post**   | Cap how many comments per post end up in the output (replies count toward the limit). 0 = no cap |
| 🌐 **Proxy Configuration**     | TeamBlind blocks data-center IPs — residential Apify Proxy is the prefilled default              |
| ⚡ **Max Concurrency**         | Run multiple pages in parallel for faster crawls                                                 |

#### 🔗 Supported Start URL Examples

| Type                   | URL                                                               | What You Get                                                                                      |
| ---------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| 🔥 **Popular feed**    | `https://www.teamblind.com/?sort=pop`                             | The current top stories across the whole site                                                     |
| 🆕 **Newest feed**     | `https://www.teamblind.com/?sort=id`                              | The most recently posted threads, freshly published                                               |
| 🏷️ **Channel / topic** | `https://www.teamblind.com/channels/tech`                         | Every post in a topic channel — `tech`, `career`, `layoffs`, `hr`, `india-news`, `bay-area`, etc. |
| 🏢 **Company page**    | `https://www.teamblind.com/company/Meta`                          | Posts from a specific company channel — Meta, Google, Apple, Amazon, Microsoft, Stripe, anything  |
| 🏆 **Best-of**         | `https://www.teamblind.com/best/2026`                             | The editor-picked best threads of the year                                                        |
| 🔎 **Search query**    | `https://www.teamblind.com/?q=anthropic`                          | Every post matching a keyword — drop in any query you'd type into Blind's search bar              |
| 📄 **Single post**     | `https://www.teamblind.com/post/anthropic-hiring-freeze-clzz04de` | Full body, comments, poll, author/company tag and engagement stats for that one post              |

---

### 📦 What You Get (Output Fields)

Every post is exported as a clean JSON record. List-mode runs return a compact summary; detail-mode runs return the full body, comments, and poll data.

#### Post Identity

| Field   | Example                                                             |
| ------- | ------------------------------------------------------------------- |
| title   | `"Anthropic hiring freeze?"`                                        |
| url     | `"https://www.teamblind.com/post/anthropic-hiring-freeze-clzz04de"` |
| channel | `"Tech Industry"`                                                   |
| author  | `"fccukMeta"`                                                       |
| company | `"Meta"`                                                            |

#### Body

| Field       | Example                                                                                                                                                                                                                                 |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | `"Recruiter just mentioned to be there is some unexpected pause and they are waiting to clear up some things..."`                                                                                                                       |
| content     | `"Recruiter just mentioned to be there is some unexpected pause and they are waiting to clear up some things.\n\nIs it true?\n\nEdit: Looks its random and very few got cancelled. Just my usual bad luck I guess\n\n#tech #anthropic"` |
| imageUrl    | `null`                                                                                                                                                                                                                                  |

#### Engagement

| Field        | Example                      |
| ------------ | ---------------------------- |
| views        | `8870`                       |
| comments     | `72`                         |
| commentCount | `72`                         |
| postedAt     | `"2026-04-26T23:00:00.000Z"` |

#### Comments (detail mode)

Each entry in the `comments` array carries:

| Field           | Example                                              |
| --------------- | ---------------------------------------------------- |
| id              | `50511212`                                           |
| author          | `"shinchan66"`                                       |
| company         | `"HashiCorp"`                                        |
| text            | `"Confirmed. Anthropic is now pivoting to footware"` |
| likes           | `77`                                                 |
| timestamp       | `"Apr 27, 2026"`                                     |
| isOp            | `false`                                              |
| parentCommentId | `50511212`                                           |

#### Poll (detail mode, if present)

| Field        | Example                                                                                         |
| ------------ | ----------------------------------------------------------------------------------------------- |
| hasPoll      | `true`                                                                                          |
| pollType     | `"single"`                                                                                      |
| participants | `843`                                                                                           |
| options      | `[{"text": "Yes, hiring is paused", "votes": 451}, {"text": "No, just a rumor", "votes": 392}]` |

#### Metadata

| Field     | Example                                     |
| --------- | ------------------------------------------- |
| sourceUrl | `"https://www.teamblind.com/channels/tech"` |
| scrapedAt | `"2026-05-01T18:30:11.482Z"`                |

---

### 📊 Example Output

```json
{
    "title": "Anthropic hiring freeze?",
    "url": "https://www.teamblind.com/post/anthropic-hiring-freeze-clzz04de",
    "channel": "Tech Industry",
    "author": "fccukMeta",
    "company": "Meta",
    "description": "Recruiter just mentioned to be there is some unexpected pause and they are waiting to clear up some things.",
    "content": "Recruiter just mentioned to be there is some unexpected pause and they are waiting to clear up some things.\n\nIs it true?\n\nEdit: Looks its random and very few got cancelled. Just my usual bad luck I guess\n\n#tech #anthropic",
    "imageUrl": null,
    "commentCount": 72,
    "comments": [
        {
            "id": 50511212,
            "author": "shinchan66",
            "company": "HashiCorp",
            "text": "Confirmed. Anthropic is now pivoting to footware",
            "likes": 77,
            "timestamp": "Apr 27, 2026",
            "isOp": false
        },
        {
            "id": 50515676,
            "author": "curochfu",
            "company": "Snap",
            "text": "Claude Clogs",
            "likes": 5,
            "timestamp": "Apr 27, 2026",
            "isOp": false,
            "parentCommentId": 50511212
        },
        {
            "id": 50508018,
            "author": "ah7fvc",
            "company": "Netflix",
            "text": "Confirmed. AI got cancelled",
            "likes": 34,
            "timestamp": "Apr 27, 2026",
            "isOp": false
        }
    ],
    "poll": {
        "hasPoll": false
    },
    "views": 8870,
    "postedAt": "2026-04-26T23:00:00.000Z",
    "sourceUrl": "https://www.teamblind.com/post/anthropic-hiring-freeze-clzz04de",
    "scrapedAt": "2026-05-01T19:23:08.947Z"
}
````

***

### 📋 Dataset Views

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

| View            | What It Shows                                                                                |
| --------------- | -------------------------------------------------------------------------------------------- |
| 📊 **Overview** | Title, channel, author, company, comment count, view count, URL — perfect for quick scanning |
| 📋 **Detailed** | Every field — full body, all comments, poll results, timestamps, source URL                  |

***

### ❓ FAQ

**🤔 Do I need a Blind account to use this?**
No. The scraper works on publicly available pages — no login, no cookies, no credentials needed.

**🤔 Will I get banned or rate-limited?**
Apify Proxy with residential IPs is recommended for larger runs. For small jobs (a few channels or posts) you usually don't need a proxy at all.

**🤔 How many comments per post will I get?**
You get the full set of comments and replies that Blind itself shows on the post page — typically every visible top-level comment along with its nested replies.

**🤔 Can I scrape company-specific channels (Meta, Google, Stripe…)?**
Yes — paste any channel or company URL and the scraper handles it like any other listing.

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

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

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

***

### 🛠️ Need Custom Filters or Features?

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

Whether you need:

- 🎯 Additional filters (specific companies, channels, keyword matching, date ranges, minimum likes/views thresholds)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication and change tracking
- 🌐 Scraping from other anonymous community platforms alongside TeamBlind (e.g. Glassdoor, Levels.fyi, Layoffs.fyi)

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

***

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from TeamBlind.com. It does not access private data, bypass authentication, scrape members-only channels, or interact with any user account. Please use the data responsibly and in compliance with applicable laws and TeamBlind's terms of service.

# Actor input Schema

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

List of TeamBlind.com URLs to scrape. Supports the home feed (https://www.teamblind.com/?sort=pop or ?sort=id), channels (e.g. /channels/tech), company pages (e.g. /company/Meta), best-of feeds (e.g. /best/2026), search queries (e.g. /?q=apple), and individual post pages (e.g. /post/anthropic-hiring-freeze-clzz04de).

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

Maximum number of posts to scrape. Set to 0 for unlimited.

## `scrapePostsFromLists` (type: `boolean`):

When enabled, the scraper follows every post link found on a list page and pulls the full post body, comments and poll data. Disable to keep listing-only output (faster and cheaper).

## `scrapeComments` (type: `boolean`):

When enabled, extracts comments from post detail pages. Disabling this significantly improves speed.

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

Maximum number of comments (including replies) to extract per post. Set to 0 to keep every comment that the page provides.

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

Proxy settings. TeamBlind blocks data-center IPs aggressively, so the prefill uses Apify residential proxies. You can switch to other providers if you have your own.

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

Maximum number of pages to process in parallel. Higher values increase speed but use more resources.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.teamblind.com/?sort=pop"
    }
  ],
  "maxItems": 100,
  "scrapePostsFromLists": false,
  "scrapeComments": false,
  "maxComments": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxConcurrency": 5
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.teamblind.com/?sort=pop"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/blind-post-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 = {
    "startUrls": [{ "url": "https://www.teamblind.com/?sort=pop" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("trev0n/blind-post-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 '{
  "startUrls": [
    {
      "url": "https://www.teamblind.com/?sort=pop"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call trev0n/blind-post-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Blind Post Scraper - Anonymous Tech Discussions Extractor",
        "description": "Extract posts, comments, and discussions from TeamBlind.com - the anonymous professional community for tech workers. Scrape channels, topics, search results, and individual posts.",
        "version": "1.0",
        "x-build-id": "1nao69y45e6sq3t1A"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trev0n~blind-post-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trev0n-blind-post-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/trev0n~blind-post-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trev0n-blind-post-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/trev0n~blind-post-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trev0n-blind-post-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of TeamBlind.com URLs to scrape. Supports the home feed (https://www.teamblind.com/?sort=pop or ?sort=id), channels (e.g. /channels/tech), company pages (e.g. /company/Meta), best-of feeds (e.g. /best/2026), search queries (e.g. /?q=apple), and individual post pages (e.g. /post/anthropic-hiring-freeze-clzz04de).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of posts to scrape. Set to 0 for unlimited.",
                        "default": 100
                    },
                    "scrapePostsFromLists": {
                        "title": "Scrape Full Post Details From Lists",
                        "type": "boolean",
                        "description": "When enabled, the scraper follows every post link found on a list page and pulls the full post body, comments and poll data. Disable to keep listing-only output (faster and cheaper).",
                        "default": false
                    },
                    "scrapeComments": {
                        "title": "Scrape Comments",
                        "type": "boolean",
                        "description": "When enabled, extracts comments from post detail pages. Disabling this significantly improves speed.",
                        "default": false
                    },
                    "maxComments": {
                        "title": "Max Comments Per Post",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of comments (including replies) to extract per post. Set to 0 to keep every comment that the page provides.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. TeamBlind blocks data-center IPs aggressively, so the prefill uses Apify residential proxies. You can switch to other providers if you have your own."
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of pages to process in parallel. Higher values increase speed but use more resources.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
