# B2B Sales Trigger Intelligence Aggregator (`tonyaka_educational_watermill/b2b-sales-trigger-intelligence`) Actor

Monitors a list of target companies for buying signals — funding rounds, hiring surges, and news triggers — and returns a scored intelligence brief per company. Ideal for SDRs, VC analysts, and competitive intelligence teams.

- **URL**: https://apify.com/tonyaka\_educational\_watermill/b2b-sales-trigger-intelligence.md
- **Developed by:** [Tony](https://apify.com/tonyaka_educational_watermill) (community)
- **Categories:** Lead generation, News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## B2B Sales Intelligence Scraper — Company Signal Scoring & Lead Prioritization

Score and prioritize your prospect list by **real buying signals** — funding rounds, hiring surges, executive changes, and news activity — so your sales team reaches out at exactly the right moment.

No subscriptions. No bloated data platforms. Paste a list of companies and get back an A/B/C/D priority grade with a one-sentence rationale for each. At **$0.10 per company**, it's the fastest way to add trigger-based intelligence to any outbound workflow.

---

### What It Does

Given a list of company names (and optionally domains / LinkedIn slugs), this Actor runs a parallel intelligence sweep and returns one structured JSON record per company:

| Signal | What's Collected |
|--------|-----------------|
| **Hiring Velocity** | Job count (30-day), active departments, senior role mix, headcount delta |
| **Funding Activity** | Latest round type, amount, date, lead investors, recency bucket |
| **News & Press** | Article count (30 days), themes (funding / expansion / leadership / product) |
| **Composite Score** | A/B/C/D priority grade + one-sentence rationale explaining the grade |

Results are sorted grade A → D so the highest-priority accounts are always at the top.

---

### Who It's For

**SDRs and AEs** running outbound campaigns who need to know which accounts are in an active buying window right now — not six months ago.

**RevOps and sales ops teams** enriching CRM records or scoring an account list before a campaign launch. Drop the output directly into HubSpot, Salesforce, or any spreadsheet.

**Founders and solo sellers** who do their own prospecting and want the equivalent of a weekly analyst report at a fraction of the cost.

**VC analysts** doing lightweight deal sourcing or monitoring a watchlist of portfolio-adjacent companies for new rounds and leadership changes.

**AI agent builders** connecting this Actor as an MCP tool — it exposes a clean `compact` output mode purpose-built for LLM pipelines.

---

### Pricing

**$0.10 per company profile** — charged against your Apify compute units at run time. No subscription, no seat fees.

This is an introductory rate while the filtering system is actively being tuned. The biggest ongoing challenge in a scraper like this is **cross-contamination** — company names like "Arc," "Forge," "Wave," and "Mesh" appear constantly in unrelated contexts (Intel GPUs, SpaceX rockets, Wi-Fi routers). Filtering these out accurately is a continuous engineering effort, which is reflected in the pricing. If you run it and a specific company seems mis-scored due to irrelevant articles, reach out and a patch is typically deployed within 24 hours.

---

### Quick Start

#### No-Code Input (paste names, one per line)

Open the Actor's **Input** tab, find the **Company List** field, and paste names directly:

````

Salesforce
Notion Labs
Linear
Rippling
Ashby

````

That's all you need. Optional metadata (domain, LinkedIn slug) can be added in the Advanced JSON input for better accuracy.

#### API / JSON Input

```json
{
  "companies": [
    { "name": "Notion Labs", "domain": "notion.so", "linkedinSlug": "notionhq" },
    { "name": "Linear", "domain": "linear.app" },
    { "name": "Figma" }
  ],
  "outputFormat": "compact",
  "maxConcurrency": 3
}
````

`domain`, `linkedinSlug`, and `crunchbaseSlug` are optional but improve signal accuracy. When `crunchbaseSlug` is provided and `domain` is omitted, the Actor resolves the domain automatically from Crunchbase.

***

### Output

#### Compact Format (default — recommended for most use cases)

```json
{
  "companyName": "Notion Labs",
  "domain": "notion.so",
  "grade": "A",
  "score": 72,
  "priorityFlag": true,
  "topSignal": "Series C $275M, 45d ago",
  "rationale": "Grade A — Reach out now. Actively hiring at high velocity (24 roles in 30d); Series C $275M (45d ago) — post-round spend window open; 8 news articles (expansion, product).",
  "runTimestamp": "2026-04-13T14:23:00.000Z",
  "errors": []
}
```

#### Full Format (`outputFormat: "full"`)

Returns the complete signal payload including all job listings, funding round history, article headlines, and score breakdown. Useful for CRM enrichment, deeper analysis, or building custom scoring on top of the raw signals.

```json
{
  "companyName": "Notion Labs",
  "domain": "notion.so",
  "scoreBreakdown": {
    "hiringScore": 28,
    "fundingScore": 30,
    "newsScore": 14,
    "totalScore": 72,
    "grade": "A",
    "rationale": "..."
  },
  "hiringSignal": {
    "jobCount": 41,
    "jobCount30Days": 24,
    "topDepartments": ["Engineering", "Sales", "Product"],
    "seniorRoles": 5,
    "hiringVelocity": "high"
  },
  "fundingSignal": {
    "latestRoundType": "Series C",
    "latestRoundAmountUsd": 275000000,
    "latestRoundDate": "2024-10-15",
    "leadInvestors": ["Sequoia Capital"],
    "daysSinceLastRound": 45,
    "fundingRecency": "recent"
  },
  "newsSignal": {
    "articleCount30Days": 8,
    "keyThemes": ["expansion", "product"],
    "hasExpansionNews": true,
    "hasLeadershipNews": false,
    "hasProductNews": true,
    "overallSentiment": "positive",
    "topHeadlines": ["Notion launches AI meeting notes...", "..."]
  },
  "runTimestamp": "2026-04-13T14:23:00.000Z",
  "errors": []
}
```

***

### Signal Scoring

#### How the A–D Grade Works

| Component | Max Points | Key Drivers |
|-----------|-----------|-------------|
| Hiring | 40 | Job count (30d), senior role mix, department diversity, velocity |
| Funding | 40 | Round recency, round size, lead investor quality |
| News | 20 | Article count, themes (funding/expansion boost), sentiment penalty |
| **Total** | **100** | |

| Grade | Score | Recommended Action |
|-------|-------|--------------------|
| **A** | 70–100 | Reach out now — multiple strong signals |
| **B** | 45–69 | Follow up this week |
| **C** | 20–44 | Monitor — revisit next cycle |
| **D** | 0–19 | Deprioritise — acquired, dormant, or no signal |

`priorityFlag: true` is set for any Grade A company, or any company with a recent funding event (< 6 months) regardless of grade.

***

### Input Options

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `companiesText` | string | — | **No-code input.** One company name per line. Easiest way to get started — no JSON required. |
| `companies` | array | — | **Advanced input.** JSON array with optional `domain`, `linkedinSlug`, `crunchbaseSlug` per company for better accuracy. |
| `outputFormat` | `compact` | `full` | `mcp` | `compact` | `compact` returns grade + rationale (best for most uses). `full` returns all raw signals. `mcp` is for AI agent pipelines. |
| `maxConcurrency` | integer 1–10 | 3 | Companies processed in parallel. Lower values reduce proxy costs. |
| `includeRawSignals` | boolean | false | Attach full job listings, articles, and funding rounds to output. Only applies in `full` mode. |
| `cacheTtlHours` | integer 0–168 | 24 | Re-use cached results within this window. Set to 0 for always-fresh data. |

> **Tip:** We recommend keeping runs to **100 companies or fewer**. For larger prospect lists, split into batches of 100 and use `cacheTtlHours` to avoid re-processing.

***

### Using via MCP (AI Agent Pipelines)

This Actor integrates directly with Claude and other MCP-compatible AI agents via Apify's off-the-shelf MCP server — no custom wrapper needed.

```bash
npm install -g @apify/actors-mcp-server
```

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server"],
      "env": {
        "APIFY_TOKEN": "your-apify-api-token",
        "ACTORS": "<your-apify-username>/b2b-sales-trigger-intelligence"
      }
    }
  }
}
```

Use `outputFormat: "mcp"` when calling from an agent — it returns compact fields plus a pre-rendered plain-text summary sorted grade A → D, optimised for LLM consumption.

***

### Homonym Filtering — The Hard Part

The biggest technical challenge in a news-based signal scraper is **name collision**. Startup names like "Arc," "Forge," "Mesh," "Loop," "Bolt," and "Wave" appear constantly in unrelated contexts — Intel Arc GPUs, SpaceX Falcon rockets, Wi-Fi mesh routers, Boring Company tunnel loops. Without aggressive filtering, these articles inflate scores and produce false positives.

This Actor maintains a continuously-updated collision blocklist (currently 17+ refinement cycles) that detects when a company name appears in the context of a known unrelated entity and rejects those articles before scoring.

Despite this, edge cases exist. The filter is a living system, not a finished product. If you see a company scoring unexpectedly high or low:

1. Check the `rationale` field — it explains exactly which signal drove the grade
2. Check `topHeadlines` in full output to spot-check article relevance
3. Report the issue via the contact form on this Actor's page — patches for specific company names are typically deployed within 24 hours

This transparency and responsiveness is part of what the $0.10/company price reflects.

***

### Architecture

```
src/
├── main.ts               ## Entry point — reads input, drives concurrency
├── orchestrator.ts       ## Per-company sweep — runs scrapers in parallel
├── types.ts              ## TypeScript interfaces
├── config.ts             ## Thresholds, URLs, keyword dictionaries, funding overrides
├── scrapers/
│   ├── newsScraper.ts    ## Google News RSS + homonym collision filtering
│   ├── fundingScraper.ts ## Crunchbase + Google News fallback + public company guard
│   └── jobsScraper.ts    ## ATS boards (Greenhouse/Lever/Ashby) → LinkedIn → Indeed
├── scoring/
│   └── scorer.ts         ## A–D composite scoring model
└── output/
    └── formatter.ts      ## Profile assembly + rationale text generation
```

Each scraper runs independently via `Promise.allSettled`. If LinkedIn is rate-limited, the profile still gets funding and news signals and a valid (reduced) score. Errors are captured in the `errors[]` array — they never fail the run.

***

### Development

```bash
npm install
npm run build
apify run
```

***

### Keywords

B2B sales intelligence, sales trigger data, buying intent signals, lead prioritization, account scoring, prospect enrichment, outbound sales automation, trigger-based selling, company news monitoring, funding alerts, hiring signals, executive change detection, account-based marketing, ABM tools, SDR tools, RevOps automation, CRM enrichment, Salesforce enrichment, HubSpot enrichment, sales prospecting tool, revenue intelligence, pipeline prioritization, intent data alternative, ZoomInfo alternative, Apollo alternative, Crunchbase alternative, VC deal sourcing, competitive intelligence, MCP tool, AI agent sales tool, Apify sales scraper

***

*April 2026 — actively maintained.*

# Actor input Schema

## `companiesText` (type: `string`):

Paste one company name per line. That's all you need — the tool handles the rest.

## `companies` (type: `array`):

Power-user alternative to the text list above. Each entry must have a 'name'. Optionally include 'domain', 'linkedinSlug', or 'crunchbaseSlug' to improve signal matching accuracy. If both this and the text list above are filled in, they are merged.

## `outputFormat` (type: `string`):

What detail level do you want in the results? 'Summary' returns a clean grade + one-line rationale per company — easiest to read. 'Full' returns all raw signals, articles, and scoring breakdown. 'Developer (MCP)' is for connecting this actor to AI agents or pipelines via the MCP protocol.

## `includeRawSignals` (type: `boolean`):

Attach the full list of matched articles, job listings, and funding rounds to each company's output. Only applies when Output Format is 'Full'. Increases result size significantly.

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

How many companies to process at the same time. Higher = faster but uses more resources. Default of 3 is a safe balance for most runs.

## `cacheTtlHours` (type: `integer`):

If you run the same company list within this many hours, the actor will return the previously cached result instead of re-scraping. Set to 0 to always fetch fresh data. Default is 24 hours.

## Actor input object example

```json
{
  "companiesText": "Salesforce\nNotion Labs\nLinear\nRippling\nAshby",
  "companies": [
    {
      "name": "Notion Labs",
      "domain": "notion.so",
      "linkedinSlug": "notionhq"
    },
    {
      "name": "Linear",
      "domain": "linear.app",
      "linkedinSlug": "linear-app"
    }
  ],
  "outputFormat": "compact",
  "includeRawSignals": false,
  "maxConcurrency": 3,
  "cacheTtlHours": 24
}
```

# 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 = {
    "companiesText": `Salesforce
Notion Labs
Linear
Rippling
Ashby`,
    "companies": [
        {
            "name": "Notion Labs",
            "domain": "notion.so",
            "linkedinSlug": "notionhq"
        },
        {
            "name": "Linear",
            "domain": "linear.app",
            "linkedinSlug": "linear-app"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tonyaka_educational_watermill/b2b-sales-trigger-intelligence").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 = {
    "companiesText": """Salesforce
Notion Labs
Linear
Rippling
Ashby""",
    "companies": [
        {
            "name": "Notion Labs",
            "domain": "notion.so",
            "linkedinSlug": "notionhq",
        },
        {
            "name": "Linear",
            "domain": "linear.app",
            "linkedinSlug": "linear-app",
        },
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("tonyaka_educational_watermill/b2b-sales-trigger-intelligence").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 '{
  "companiesText": "Salesforce\\nNotion Labs\\nLinear\\nRippling\\nAshby",
  "companies": [
    {
      "name": "Notion Labs",
      "domain": "notion.so",
      "linkedinSlug": "notionhq"
    },
    {
      "name": "Linear",
      "domain": "linear.app",
      "linkedinSlug": "linear-app"
    }
  ]
}' |
apify call tonyaka_educational_watermill/b2b-sales-trigger-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=tonyaka_educational_watermill/b2b-sales-trigger-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "B2B Sales Trigger Intelligence Aggregator",
        "description": "Monitors a list of target companies for buying signals — funding rounds, hiring surges, and news triggers — and returns a scored intelligence brief per company. Ideal for SDRs, VC analysts, and competitive intelligence teams.",
        "version": "0.1",
        "x-build-id": "XRSZT9tHSDogfoYa3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tonyaka_educational_watermill~b2b-sales-trigger-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tonyaka_educational_watermill-b2b-sales-trigger-intelligence",
                "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/tonyaka_educational_watermill~b2b-sales-trigger-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-tonyaka_educational_watermill-b2b-sales-trigger-intelligence",
                "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/tonyaka_educational_watermill~b2b-sales-trigger-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-tonyaka_educational_watermill-b2b-sales-trigger-intelligence",
                "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": {
                    "companiesText": {
                        "title": "Company List",
                        "type": "string",
                        "description": "Paste one company name per line. That's all you need — the tool handles the rest."
                    },
                    "companies": {
                        "title": "Companies (Advanced — JSON with optional metadata)",
                        "type": "array",
                        "description": "Power-user alternative to the text list above. Each entry must have a 'name'. Optionally include 'domain', 'linkedinSlug', or 'crunchbaseSlug' to improve signal matching accuracy. If both this and the text list above are filled in, they are merged.",
                        "items": {
                            "type": "object",
                            "required": [
                                "name"
                            ],
                            "properties": {
                                "name": {
                                    "title": "Company Name",
                                    "type": "string",
                                    "description": "Company name (e.g. 'Salesforce', 'Notion Labs')"
                                },
                                "domain": {
                                    "title": "Domain",
                                    "type": "string",
                                    "description": "Primary domain (e.g. 'salesforce.com'). Improves signal matching."
                                },
                                "linkedinSlug": {
                                    "title": "LinkedIn Slug",
                                    "type": "string",
                                    "description": "LinkedIn company slug from URL (e.g. 'salesforce' from linkedin.com/company/salesforce)"
                                },
                                "crunchbaseSlug": {
                                    "title": "Crunchbase Slug",
                                    "type": "string",
                                    "description": "Crunchbase org slug (e.g. 'salesforce-com')"
                                }
                            }
                        }
                    },
                    "outputFormat": {
                        "title": "Output Format",
                        "enum": [
                            "compact",
                            "full",
                            "mcp"
                        ],
                        "type": "string",
                        "description": "What detail level do you want in the results? 'Summary' returns a clean grade + one-line rationale per company — easiest to read. 'Full' returns all raw signals, articles, and scoring breakdown. 'Developer (MCP)' is for connecting this actor to AI agents or pipelines via the MCP protocol.",
                        "default": "compact"
                    },
                    "includeRawSignals": {
                        "title": "Include Raw Signal Data",
                        "type": "boolean",
                        "description": "Attach the full list of matched articles, job listings, and funding rounds to each company's output. Only applies when Output Format is 'Full'. Increases result size significantly.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Parallel Processing (1–10)",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many companies to process at the same time. Higher = faster but uses more resources. Default of 3 is a safe balance for most runs.",
                        "default": 3
                    },
                    "cacheTtlHours": {
                        "title": "Re-use Cached Results (hours)",
                        "minimum": 0,
                        "maximum": 168,
                        "type": "integer",
                        "description": "If you run the same company list within this many hours, the actor will return the previously cached result instead of re-scraping. Set to 0 to always fetch fresh data. Default is 24 hours.",
                        "default": 24
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
