# Company Expansion Keyword Monitor (`coregent/company-expansion-keyword-monitor`) Actor

Monitor public company websites, newsrooms, blogs, careers pages, and announcements for expansion keywords - hiring, funding, launch, partnership, market entry, office, and acquisition signals. One flat, CSV-ready row per matched signal with a transparent score. No login or cookies.

- **URL**: https://apify.com/coregent/company-expansion-keyword-monitor.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Categories:** Lead generation, News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 expansion-signal-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

## Company Expansion Keyword Monitor

![Company Expansion Keyword Monitor](https://raw.githubusercontent.com/coregentdevspace/company-expansion-keyword-monitor-assets/main/thumbnail-company-expansion-keyword-monitor.png)

Monitor public company websites, **newsrooms, blogs, careers pages, and announcements** for **expansion keywords** — hiring, funding, product launch, partnership, market entry, new offices, and acquisitions. You give it company domains and/or specific page URLs; it returns **one flat, CSV-ready row per matched signal** with the matched keyword, a snippet, a signal category, and a transparent **signal score** (0–100).

Built for **B2B sales, lead generation, agencies, market researchers, and competitor-intelligence** teams who want pre-classified buying/expansion signals without configuring a generic crawler or writing keyword rules from scratch.

- ✅ **No login, no cookies, no API keys.** Public HTML only.
- ✅ **One row per matched signal**, classified into a category.
- ✅ **Transparent, non-AI scoring** you can audit field-by-field.
- ✅ **Shallow, targeted discovery** — homepage plus likely signal pages, bounded per company.

---

### What it does

For every company domain or URL the actor:

1. **Normalizes** the input (domain → homepage; URLs are fetched directly). Plain company names without a domain are skipped in V1.
2. **Fetches** the start page over plain HTTP and, if enabled, **shallow-discovers** likely expansion pages on the same domain (news, press, blog, careers, about, locations, investors, announcements), bounded by `maxPagesPerCompany`.
3. **Matches** your selected keyword groups + custom keywords against the visible page text.
4. **Scores** each matched category with a transparent `signal_score` and emits one flat row per signal, including a snippet and reason tags.

It does **not** do deep crawling, login/session scraping, browser rendering, contact/email enrichment, AI summaries, or historical diffing.

---

### Input

| Field                    | Type             | Default                     | Description                                                                                                 |
| ------------------------ | ---------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `startUrls`              | array of strings | `[]`                        | Exact company/announcement page URLs to monitor (max 500).                                                  |
| `companies`              | array of strings | `[]`                        | Company domains or website URLs. Plain names without a domain are warned + skipped in V1.                   |
| `enableShallowDiscovery` | boolean          | `true`                      | Discover likely expansion pages from each company homepage.                                                 |
| `maxPagesPerCompany`     | integer          | `10`                        | Pages fetched per company/domain, incl. the start page (1–50).                                              |
| `maxResults`             | integer          | `100`                       | Global cap on saved signal rows (1–10000).                                                                  |
| `keywordGroups`          | array of strings | all 8 groups                | `expansion`, `hiring`, `funding`, `partnership`, `product_launch`, `market_entry`, `office`, `acquisition`. |
| `customKeywords`         | array of strings | `[]`                        | Your own expansion keywords/phrases (max 100, ≤80 chars each).                                              |
| `matchMode`              | string           | `phrase`                    | `phrase` (case-insensitive substring) or `word_boundary` (whole word).                                      |
| `minSignalScore`         | integer          | `20`                        | Drop matches below this score (0–100).                                                                      |
| `includeSnippet`         | boolean          | `true`                      | Include a short snippet around the matched keyword.                                                         |
| `deduplicate`            | boolean          | `true`                      | Merge/skip duplicate signals.                                                                               |
| `proxyConfiguration`     | object           | `{ "useApifyProxy": true }` | Datacenter, no proxy, or custom proxy URLs. Apify Residential rejected at startup.                          |

You must provide at least one valid URL or domain across `startUrls` / `companies`.

#### Example inputs

**1. Monitor company homepages + a newsroom for the default expansion signals**

```json
{
    "companies": ["canva.com", "atlassian.com"],
    "startUrls": ["https://www.canva.com/newsroom/"],
    "enableShallowDiscovery": true,
    "maxPagesPerCompany": 10,
    "maxResults": 100,
    "minSignalScore": 30,
    "proxyConfiguration": { "useApifyProxy": true }
}
````

**2. Build a funding/office watchlist with your own keywords**

```json
{
    "companies": ["stripe.com", "notion.so"],
    "keywordGroups": ["funding", "office", "market_entry"],
    "customKeywords": ["new regional headquarters", "expanding into Australia"],
    "matchMode": "word_boundary",
    "minSignalScore": 40,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

**3. Minimal run — just give it companies**

```json
{ "companies": ["canva.com", "https://www.atlassian.com/company/news"] }
```

***

### Output

One flat row per matched company/page/keyword signal:

- **Identity/source**: `input_value`, `company_domain`, `company_name_guess`, `source_url`, `canonical_url`, `page_title`, `page_type` (`home`/`news`/`press`/`blog`/`careers`/`locations`/`investors`/`about`/`other`), `http_status`
- **Match**: `signal_category`, `matched_keyword`, `match_snippet`, `matched_count`, `first_match_text_hash`
- **Scoring**: `signal_score` (0–100), `signal_label` (`weak`/`moderate`/`strong`/`very_strong`), `reason_tags`
- **Runtime**: `scraped_at`

#### Expansion signals — all fields (table view)

![Expansion signals output, all fields, table view](https://raw.githubusercontent.com/coregentdevspace/company-expansion-keyword-monitor-assets/main/company-expansion-keyword-monitor-output-all-fields-table-view.png)

#### Sample record

Real output — an **office-expansion** signal detected on Stripe's newsroom (one of several categories the same page produced — see the run note below):

```json
{
    "input_value": "https://stripe.com/newsroom/news",
    "company_domain": "stripe.com",
    "company_name_guess": "Stripe",
    "source_url": "https://stripe.com/newsroom/news",
    "canonical_url": "https://stripe.com/newsroom/news",
    "page_title": "Stripe Newsroom: The Latest News & Announcements",
    "page_type": "press",
    "signal_category": "office",
    "matched_keyword": "new headquarters",
    "match_snippet": "…Corporate Stripe opens new headquarters in Dublin as Ireland's internet economy surges October 9, 2025 Product Stripe launches new products…",
    "matched_count": 1,
    "signal_score": 65,
    "signal_label": "strong",
    "reason_tags": "press_page|multiple_keywords|new_office_signal|multiple_categories",
    "first_match_text_hash": "3c58acf7",
    "http_status": 200,
    "scraped_at": "2026-06-17T05:38:16.273Z"
}
```

> From that single Stripe newsroom page the run produced distinct rows for `office`, `partnership`, `product_launch`, `market_entry`, `acquisition`, `funding`, and `expansion` — each its own commercially-distinct signal with its own keyword, snippet, and score.

A **run summary** is stored in the default key-value store under `RUN_SUMMARY` with counters such as `inputs_total`, `pages_fetched`, `raw_matches_found`, `results_saved`, `duplicates_removed`, `filtered_out`, and `charged_events`.

***

### Signal score

A transparent 0–100 weighted sum (see PRD §7), based only on visible public fields:

- `+20` for any selected keyword match
- `+10` if the keyword appears in the page title or H1
- `+10` if the page type is `press`, `news`, `careers`, `locations`, or `investors`
- `+10` if at least 3 related keywords appear on the page
- `+15` if the category is high-intent (`funding`, `market_entry`, `office`, `acquisition`, `partnership`, `product_launch`)
- `+10` if the page looks recent (visible date or URL year/month within ~18 months)
- `+10` if multiple expansion categories appear on the same page
- `+15` if a custom keyword matched

Labels: `0–24 weak`, `25–49 moderate`, `50–74 strong`, `75–100 very_strong`.

***

### Pricing

**Pay Per Event.** One event, `expansion-signal-result`, is charged **only after** a valid, unique signal row is successfully pushed to the dataset. Duplicate signals, filtered-out matches, failed pages, blocked requests, and skipped invalid inputs are **never** charged. The actor honours your per-run spending limit and stops cleanly when it is reached.

***

#### 🚦 Proxy policy

Use **Apify Datacenter** proxy or **no proxy** for normal runs — both work reliably for public company pages at this actor's conservative concurrency.

**Apify Residential proxy is not supported.** The actor fails at startup if `apifyProxyGroups` includes `RESIDENTIAL`. Reason: in pay-per-event actors, residential bandwidth (~$8/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's **Custom proxy URLs** field — that traffic goes through your provider, not Apify, and is unaffected:

```
http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777
```

***

### Notes & limitations

- **Public HTML only, HTTP-first.** No headless browser in V1, so pages that render their entire body in client-side JavaScript may yield little visible text.
- **Shallow by design.** Discovery follows only likely-signal links from the homepage, bounded by `maxPagesPerCompany` — it is not a whole-site crawler.
- **Plain company names** (no domain) are skipped in V1; supply a domain or URL.
- `phrase` mode is a case-insensitive substring match (broad recall); use `word_boundary` for stricter whole-word matching.
- This actor is built to clone into specialised variants (funding monitor, office-expansion monitor, product-launch monitor, partnership monitor).

# Actor input Schema

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

Exact company pages or announcement/newsroom URLs to monitor, for example "https://www.canva.com/newsroom/". Each URL is fetched directly and may trigger shallow same-domain discovery if enabled. Max 500.

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

Company domains or website URLs, for example "canva.com" or "https://atlassian.com". Domains are converted to their homepage. Plain company names without a domain are warned and skipped in V1.

## `enableShallowDiscovery` (type: `boolean`):

Discover likely expansion pages (news, press, blog, careers, about, locations, investors, announcements) from each company homepage by following only relevant same-domain links.

## `maxPagesPerCompany` (type: `integer`):

Stop discovery after fetching this many pages per company/domain (includes the start page). Range 1-50.

## `maxResults` (type: `integer`):

Global cap on saved valid unique signal rows. The run stops saving once this many rows are pushed. Range 1-10000.

## `keywordGroups` (type: `array`):

Expansion signal categories to match. Unknown groups are ignored with a warning. If empty, all default groups are used.

## `customKeywords` (type: `array`):

Your own expansion keywords or short phrases, matched alongside the selected groups. Max 100, each up to 80 characters.

## `matchMode` (type: `string`):

"Phrase" does a case-insensitive substring match. "Word boundary" uses stricter whole-word matching.

## `minSignalScore` (type: `integer`):

Drop matches scoring below this threshold (0-100). Filtered-out rows are not saved or charged.

## `includeSnippet` (type: `boolean`):

Include a short text snippet around the matched keyword. No extra page visits.

## `deduplicate` (type: `boolean`):

Merge/skip duplicate signals so you are not charged twice for the same company/page/keyword match.

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

Apify Proxy configuration. Defaults to Apify Proxy enabled. Apify Residential is NOT supported and will fail the run at startup; if you need residential routing, supply your own provider via Custom proxy URLs (proxyUrls).

## Actor input object example

```json
{
  "startUrls": [
    "https://www.canva.com/newsroom/"
  ],
  "companies": [
    "canva.com",
    "atlassian.com"
  ],
  "enableShallowDiscovery": true,
  "maxPagesPerCompany": 10,
  "maxResults": 100,
  "keywordGroups": [
    "expansion",
    "hiring",
    "funding",
    "partnership",
    "product_launch",
    "market_entry",
    "office",
    "acquisition"
  ],
  "customKeywords": [
    "new regional headquarters",
    "expanding into Australia"
  ],
  "matchMode": "phrase",
  "minSignalScore": 20,
  "includeSnippet": true,
  "deduplicate": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Flat table view with one row per matched company/page/keyword signal: company identity, source/canonical URL, page title and type, matched expansion category and keyword, snippet, transparent signal score, label, and reason tags.

# 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": [
        "https://www.canva.com/newsroom/"
    ],
    "companies": [
        "canva.com",
        "atlassian.com"
    ],
    "keywordGroups": [
        "expansion",
        "hiring",
        "funding",
        "partnership",
        "product_launch",
        "market_entry",
        "office",
        "acquisition"
    ],
    "customKeywords": [
        "new regional headquarters",
        "expanding into Australia"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("coregent/company-expansion-keyword-monitor").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": ["https://www.canva.com/newsroom/"],
    "companies": [
        "canva.com",
        "atlassian.com",
    ],
    "keywordGroups": [
        "expansion",
        "hiring",
        "funding",
        "partnership",
        "product_launch",
        "market_entry",
        "office",
        "acquisition",
    ],
    "customKeywords": [
        "new regional headquarters",
        "expanding into Australia",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("coregent/company-expansion-keyword-monitor").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": [
    "https://www.canva.com/newsroom/"
  ],
  "companies": [
    "canva.com",
    "atlassian.com"
  ],
  "keywordGroups": [
    "expansion",
    "hiring",
    "funding",
    "partnership",
    "product_launch",
    "market_entry",
    "office",
    "acquisition"
  ],
  "customKeywords": [
    "new regional headquarters",
    "expanding into Australia"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call coregent/company-expansion-keyword-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=coregent/company-expansion-keyword-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Company Expansion Keyword Monitor",
        "description": "Monitor public company websites, newsrooms, blogs, careers pages, and announcements for expansion keywords - hiring, funding, launch, partnership, market entry, office, and acquisition signals. One flat, CSV-ready row per matched signal with a transparent score. No login or cookies.",
        "version": "1.0",
        "x-build-id": "irCXxnXzFxOueHD8V"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/coregent~company-expansion-keyword-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-coregent-company-expansion-keyword-monitor",
                "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/coregent~company-expansion-keyword-monitor/runs": {
            "post": {
                "operationId": "runs-sync-coregent-company-expansion-keyword-monitor",
                "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/coregent~company-expansion-keyword-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-coregent-company-expansion-keyword-monitor",
                "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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Exact company pages or announcement/newsroom URLs to monitor, for example \"https://www.canva.com/newsroom/\". Each URL is fetched directly and may trigger shallow same-domain discovery if enabled. Max 500.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "companies": {
                        "title": "Companies (domains or website URLs)",
                        "type": "array",
                        "description": "Company domains or website URLs, for example \"canva.com\" or \"https://atlassian.com\". Domains are converted to their homepage. Plain company names without a domain are warned and skipped in V1.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "enableShallowDiscovery": {
                        "title": "Enable shallow discovery",
                        "type": "boolean",
                        "description": "Discover likely expansion pages (news, press, blog, careers, about, locations, investors, announcements) from each company homepage by following only relevant same-domain links.",
                        "default": true
                    },
                    "maxPagesPerCompany": {
                        "title": "Max pages per company",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Stop discovery after fetching this many pages per company/domain (includes the start page). Range 1-50.",
                        "default": 10
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Global cap on saved valid unique signal rows. The run stops saving once this many rows are pushed. Range 1-10000.",
                        "default": 100
                    },
                    "keywordGroups": {
                        "title": "Keyword groups",
                        "type": "array",
                        "description": "Expansion signal categories to match. Unknown groups are ignored with a warning. If empty, all default groups are used.",
                        "default": [
                            "expansion",
                            "hiring",
                            "funding",
                            "partnership",
                            "product_launch",
                            "market_entry",
                            "office",
                            "acquisition"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "customKeywords": {
                        "title": "Custom keywords",
                        "type": "array",
                        "description": "Your own expansion keywords or short phrases, matched alongside the selected groups. Max 100, each up to 80 characters.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "matchMode": {
                        "title": "Match mode",
                        "enum": [
                            "phrase",
                            "word_boundary"
                        ],
                        "type": "string",
                        "description": "\"Phrase\" does a case-insensitive substring match. \"Word boundary\" uses stricter whole-word matching.",
                        "default": "phrase"
                    },
                    "minSignalScore": {
                        "title": "Minimum signal score",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Drop matches scoring below this threshold (0-100). Filtered-out rows are not saved or charged.",
                        "default": 20
                    },
                    "includeSnippet": {
                        "title": "Include snippet",
                        "type": "boolean",
                        "description": "Include a short text snippet around the matched keyword. No extra page visits.",
                        "default": true
                    },
                    "deduplicate": {
                        "title": "Deduplicate signals",
                        "type": "boolean",
                        "description": "Merge/skip duplicate signals so you are not charged twice for the same company/page/keyword match.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy configuration. Defaults to Apify Proxy enabled. Apify Residential is NOT supported and will fail the run at startup; if you need residential routing, supply your own provider via Custom proxy URLs (proxyUrls).",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
