# Craft.co Company Intelligence Scraper (`automation-lab/craft-co-company-intelligence-scraper`) Actor

🏢 Extract public Craft.co company profiles into structured intelligence: financials, executives, operating metrics, offices, sectors, ESG signals, and competitors.

- **URL**: https://apify.com/automation-lab/craft-co-company-intelligence-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Craft.co Company Intelligence Scraper

Turn supplied public Craft.co company profiles into structured, export-ready company intelligence.

The Actor extracts company identity, financial highlights, executives, operating metrics, office locations, sectors, ESG signals, and competitors. Give it exact profile URLs or slugs; receive one consistent JSON record per company.

- 🏢 Track company profiles without copying tables by hand
- 💰 Capture revenue, funding, and summary financial periods
- 👥 Collect key people with titles and visible social links
- 🌍 Export headquarters and office locations
- 📊 Monitor operating metrics and ESG signals
- 🧭 Map named competitors and their sectors

It uses the public company-profile surface only. No Craft account, paid Craft API key, user cookie, or CAPTCHA-solving service is required.

### What does Craft.co Company Intelligence Scraper do?

Craft.co publishes rich public pages for many private and public companies. Those pages are useful to read but awkward to refresh at scale.

This scraper converts each supplied profile into a typed dataset row. It reads the page's embedded structured state rather than guessing from visual positions, preserving nested relationships between the company, executives, financial periods, offices, metrics, and competitors.

The Actor intentionally accepts exact profiles only. It does not promise unverified company search or directory discovery.

### Who is it for?

#### Procurement and supplier-risk teams

Refresh a watchlist of suppliers and compare status, headquarters, sectors, ESG signals, financial changes, and named competitors.

#### Sales and revenue operations

Enrich CRM company records with website, founding year, leadership, sectors, locations, and public financial context.

#### Investors and market researchers

Build repeatable snapshots of financial periods, operating metrics, executive teams, locations, and competitor sets.

#### Data engineers

Schedule profile refreshes and deliver JSON, CSV, Excel, XML, or API data to a warehouse, spreadsheet, or enrichment pipeline.

### Why use this Craft.co scraper?

- ✅ **Structured output:** one stable company entity instead of copied page text
- ✅ **Exact targeting:** URL and slug validation prevents unrelated pages
- ✅ **Fail-closed behavior:** challenge pages are never emitted as paid records
- ✅ **Cost-aware routing:** automatic mode tries direct Chromium before SHADER proxy fallback
- ✅ **Source fidelity:** absent values are omitted, never invented
- ✅ **Apify-native delivery:** schedules, webhooks, datasets, API, Make, Zapier, and MCP

### What company data can I extract?

| Group | Example fields |
|---|---|
| Identity | name, slug, overview, type, status, founded year |
| Web | website, Crunchbase, LinkedIn, X/Twitter, Facebook, Instagram, YouTube |
| Location | headquarters, address, city, state, country, coordinates, office count |
| Classification | sectors and tags |
| Financial | headline revenue, funding, revenue, EBIT, net income, gross profit, period |
| People | executive name, title, public professional links |
| Operations | metric name, value, currency/unit, reporting period |
| Risk context | ESG score and source profile |
| Market map | competitor name, Craft URL, type, sectors |
| Provenance | source URL and scrape timestamp |

Coverage varies by company. The Actor returns what the public profile exposes.

### Input

Use either `companyUrls`, `companySlugs`, or both.

```json
{
  "companyUrls": [
    { "url": "https://craft.co/google" },
    { "url": "https://craft.co/craft" }
  ],
  "companySlugs": ["microsoft"],
  "maxCompanies": 3,
  "proxyMode": "AUTO"
}
````

| Field | Type | Default | Purpose |
|---|---:|---:|---|
| `companyUrls` | array | sample URL | Exact public Craft.co profile URLs |
| `companySlugs` | string array | empty | Profile slugs such as `google` |
| `maxCompanies` | integer | 10 | Hard output/cost cap, maximum 100 |
| `proxyMode` | enum | `AUTO` | `AUTO`, `DIRECT`, or `SHADER` |
| `navigationTimeoutSecs` | integer | 45 | Per-route browser timeout, 15–120 seconds |

URLs must use `craft.co` and contain exactly one company slug path.

### Output

One dataset row represents one company profile.

```json
{
  "sourceUrl": "https://craft.co/google",
  "slug": "google",
  "name": "Google",
  "overview": "Google is a technology company...",
  "type": "subsidiary",
  "status": "active",
  "foundedYear": 1998,
  "website": "https://www.google.com/",
  "headquarters": {
    "address": "1600 Amphitheatre Parkway",
    "city": "Mountain View",
    "state": "CA",
    "country": "United States",
    "countryCode": "US",
    "isHeadquarters": true
  },
  "locationCount": 116,
  "sectors": ["Technology", "adtech", "cloud"],
  "headlineFinancial": {
    "kind": "revenue",
    "value": 401426000000,
    "currencySymbol": "$",
    "period": "FY, 2025"
  },
  "keyPeople": [
    {
      "name": "Sundar Pichai",
      "title": "CEO",
      "linkedin": "https://www.linkedin.com/in/sundarpichai/"
    }
  ],
  "competitors": [
    {
      "name": "Pinterest",
      "slug": "pinterest",
      "url": "https://craft.co/pinterest",
      "type": "public",
      "sectors": ["Technology"]
    }
  ],
  "scrapedAt": "2026-07-22T00:00:00.000Z"
}
```

Numbers remain numbers for filtering and analysis. Nested arrays preserve useful detail.

### How to scrape Craft.co company profiles

1. Open the Actor input page.
2. Paste one or more exact Craft.co company profile URLs.
3. Alternatively, enter known company slugs.
4. Keep `maxCompanies` low for the first run.
5. Leave connection strategy on `AUTO`.
6. Click **Start**.
7. Preview the company intelligence dataset.
8. Export it or connect an integration.

Duplicate URLs and slugs are removed before browser work begins.

### How much does it cost to extract Craft.co company data?

The Actor uses pay-per-event pricing: a **$0.001 start charge** plus one charge for each successfully saved company profile.

| Apify tier | Price per company profile |
|---|---:|
| Free | $0.0036586 |
| Bronze | $0.0031814 |
| Silver | $0.0024815 |
| Gold | $0.0019088 |
| Platinum | $0.0012725 |
| Diamond | $0.00089078 |

A one-company Bronze run costs about $0.0041814 before any platform-specific rounding. You are not charged an item event for blocked, invalid, or unparseable profiles. `maxCompanies` is a hard cap that helps control spend.

Prices were derived from a representative 1,024 MB cloud run and the standard 70% target-margin formula. The current Actor pricing tab remains authoritative.

### Connection modes and anti-bot handling

`AUTO` is recommended. It starts with direct browser delivery, which is cheapest and often works, then makes one bounded attempt through a fresh SHADER proxy session if needed.

`DIRECT` never uses an Apify proxy. Choose it when you need predictable zero proxy traffic and know the source is accessible.

`SHADER` uses proxy rotation from the first request. Choose it when direct requests from your environment consistently receive a challenge.

The Actor blocks images, fonts, and media while keeping scripts needed for structured state.

### Profile validation and data quality

A successful HTTP response alone is not enough. Before saving a row, the Actor verifies:

- the page exposes Craft's embedded application state;
- the state contains the requested company entity;
- the company has both a display name and slug;
- the page is not an anti-bot challenge;
- arrays and references resolve into typed records.

If every route fails, the run exits non-zero instead of reporting false success with zero useful data.

### Scheduling a company watchlist

Create an Apify schedule with a stable input list. Daily, weekly, monthly, or quarterly refreshes work well depending on the workflow.

A practical supplier-monitoring pipeline is:

1. Store approved supplier Craft slugs in the task input.
2. Run weekly.
3. Send the resulting dataset to cloud storage or a database.
4. Compare financial, leadership, status, ESG, and location fields against the prior snapshot.
5. Alert only on meaningful changes.

Craft profile freshness depends on Craft's own update cycle.

### Integrations

#### Google Sheets

Send each profile row to a shared research or vendor-risk sheet. Flatten selected nested values in the receiving automation when necessary.

#### Make and Zapier

Trigger runs from CRM changes, then map website, sectors, headquarters, executives, and headline financials into account fields.

#### Webhooks

Use an Actor run-finished webhook to start validation, diffing, or warehouse ingestion as soon as a dataset is ready.

#### Cloud storage and warehouses

Export JSON or CSV to Amazon S3, Google Cloud Storage, Azure, Snowflake, BigQuery, or your own ETL service.

### API usage with cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~craft-co-company-intelligence-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companySlugs":["google"],"maxCompanies":1,"proxyMode":"AUTO"}'
```

For longer lists, start an asynchronous run and poll its status or use a webhook.

### API usage with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/craft-co-company-intelligence-scraper').call({
    companyUrls: [{ url: 'https://craft.co/google' }],
    maxCompanies: 1,
    proxyMode: 'AUTO',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/craft-co-company-intelligence-scraper").call(
    run_input={
        "companySlugs": ["google", "microsoft"],
        "maxCompanies": 2,
        "proxyMode": "AUTO",
    }
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

Keep tokens in environment variables or a secrets manager.

### Use with Apify MCP

Connect the Actor to Claude Code or another MCP client through Apify MCP.

#### Claude Code setup

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/craft-co-company-intelligence-scraper"
```

#### Claude Desktop, Cursor, and VS Code setup

Add this JSON block to the MCP configuration used by Claude Desktop, Cursor, or VS Code:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/craft-co-company-intelligence-scraper"
    }
  }
}
```

Example prompts:

- “Extract the public Craft profile for Google and summarize its latest revenue, executives, and operating metrics.”
- “Refresh these supplier Craft slugs and flag changes in status, headquarters, and ESG score.”
- “Build a competitor table from these three exact Craft company profiles.”

### Tips for reliable runs

- 🎯 Prefer exact profile URLs when a company name is ambiguous.
- 🧪 Test one profile before scheduling a large watchlist.
- 💸 Set `maxCompanies` to the number you actually need.
- 🛡️ Keep `AUTO` unless logs show a reason to force a route.
- ⏱️ Raise the timeout only for consistently slow pages.
- 🔁 Retry transient source failures later rather than creating duplicate runs immediately.
- 📦 Preserve nested JSON when executive, metric, or location details matter.

### Limitations

- Input is exact profile URLs or slugs; no general company-name search is included.
- Data availability and freshness are controlled by Craft.co.
- Some profiles omit financials, ESG data, executives, social links, or precise addresses.
- Craft can change its page structure or anti-bot controls.
- A company may have many locations or financial periods, producing large nested records.
- The Actor does not access Craft's paid GraphQL API or private platform.
- It does not infer missing values from third-party sources.

### Legal and ethical use

This Actor extracts public company-profile data. You are responsible for ensuring your use complies with applicable laws, contracts, database rights, and Craft.co's terms.

Do not use the output for unlawful discrimination, harassment, spam, or attempts to identify sensitive personal information. Apply reasonable schedules and limits. Avoid collecting more data than your workflow needs.

Public availability does not remove your compliance obligations.

### Troubleshooting

#### “Add at least one company URL or company slug”

The input contained no targets. Add `companyUrls`, `companySlugs`, or both.

#### “Only craft.co company profile URLs are supported”

A URL used another domain. Supply an exact `https://craft.co/<company-slug>` profile.

#### “Expected a Craft.co company profile URL with one slug”

The URL was a search, comparison, news, or deeper page rather than a company profile.

#### Direct route failed

Use `AUTO` so the Actor can attempt SHADER recovery. Check logs for the status, timeout, or challenge reason.

#### Run failed with no output

Every requested profile failed validation. This is intentional fail-closed behavior. Verify the slugs in a browser, try a small input later, or force SHADER mode.

### FAQ

#### Does it need my Craft.co login?

No. V1 reads anonymous public company profile pages only.

#### Can I enter a plain company name?

No. Enter a known Craft slug or exact profile URL. This avoids ambiguous matches and false company resolution.

#### Are failed profiles billed as results?

No. The item event is charged only after a validated record is pushed to the dataset.

#### Why are some fields absent?

Craft coverage varies. The Actor omits unavailable optional values rather than guessing or returning misleading placeholders.

#### Can I extract multiple companies?

Yes. Combine URLs and slugs and set `maxCompanies` up to 100.

#### Can I monitor changes?

Yes. Schedule the same watchlist and compare datasets over time in your preferred database, spreadsheet, or automation.

#### Is every office returned?

The Actor resolves the office references embedded in the loaded public profile. Coverage reflects what Craft supplies on that page.

### Related company intelligence scrapers

Combine company-profile intelligence with source-specific datasets when your workflow needs another perspective:

- [Owler Scraper](https://apify.com/automation-lab/owler-scraper) for revenue estimates, funding, and competitor context
- [Glassdoor Scraper](https://apify.com/automation-lab/glassdoor-scraper) for employer reputation and workplace signals
- [Crunchbase Scraper](https://apify.com/automation-lab/crunchbase-scraper) for funding and organization research
- [LinkedIn Company Scraper](https://apify.com/automation-lab/linkedin-company-scraper) for professional company presence

Check each Actor's current input and output contract before building a combined pipeline.

### Support

If a valid public Craft company profile repeatedly fails, open an Actor issue and include:

- the exact profile URL;
- a redacted input;
- the run ID;
- the connection mode;
- the relevant error log lines.

Do not include API tokens, private credentials, or confidential watchlists.

# Actor input Schema

## `companyUrls` (type: `array`):

Exact public company profile URLs, such as https://craft.co/google. Search and directory URLs are not supported.

## `companySlugs` (type: `array`):

Craft.co profile slugs without the domain, such as google or microsoft.

## `maxCompanies` (type: `integer`):

Hard cap on company records produced in this run.

## `proxyMode` (type: `string`):

AUTO tries a direct browser session first and uses Apify SHADER proxy only when needed. DIRECT avoids proxy use. SHADER always uses proxy rotation.

## `navigationTimeoutSecs` (type: `integer`):

Maximum time allowed for each browser route attempt.

## Actor input object example

```json
{
  "companyUrls": [
    {
      "url": "https://craft.co/google"
    }
  ],
  "companySlugs": [],
  "maxCompanies": 1,
  "proxyMode": "AUTO",
  "navigationTimeoutSecs": 20
}
```

# Actor output Schema

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

Dataset containing one structured record for each successfully extracted Craft.co company profile.

# 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 = {
    "companyUrls": [
        {
            "url": "https://craft.co/google"
        }
    ],
    "companySlugs": [],
    "maxCompanies": 1,
    "proxyMode": "AUTO",
    "navigationTimeoutSecs": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/craft-co-company-intelligence-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 = {
    "companyUrls": [{ "url": "https://craft.co/google" }],
    "companySlugs": [],
    "maxCompanies": 1,
    "proxyMode": "AUTO",
    "navigationTimeoutSecs": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/craft-co-company-intelligence-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 '{
  "companyUrls": [
    {
      "url": "https://craft.co/google"
    }
  ],
  "companySlugs": [],
  "maxCompanies": 1,
  "proxyMode": "AUTO",
  "navigationTimeoutSecs": 20
}' |
apify call automation-lab/craft-co-company-intelligence-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/craft-co-company-intelligence-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Craft.co Company Intelligence Scraper",
        "description": "🏢 Extract public Craft.co company profiles into structured intelligence: financials, executives, operating metrics, offices, sectors, ESG signals, and competitors.",
        "version": "0.1",
        "x-build-id": "hzRlRTOJlrx7J4U7c"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~craft-co-company-intelligence-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-craft-co-company-intelligence-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/automation-lab~craft-co-company-intelligence-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-craft-co-company-intelligence-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/automation-lab~craft-co-company-intelligence-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-craft-co-company-intelligence-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "companyUrls": {
                        "title": "🏢 Craft.co company profile URLs",
                        "type": "array",
                        "description": "Exact public company profile URLs, such as https://craft.co/google. Search and directory URLs are not supported.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "companySlugs": {
                        "title": "Company slugs",
                        "type": "array",
                        "description": "Craft.co profile slugs without the domain, such as google or microsoft.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxCompanies": {
                        "title": "Maximum companies",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Hard cap on company records produced in this run.",
                        "default": 10
                    },
                    "proxyMode": {
                        "title": "Connection strategy",
                        "enum": [
                            "AUTO",
                            "DIRECT",
                            "SHADER"
                        ],
                        "type": "string",
                        "description": "AUTO tries a direct browser session first and uses Apify SHADER proxy only when needed. DIRECT avoids proxy use. SHADER always uses proxy rotation.",
                        "default": "AUTO"
                    },
                    "navigationTimeoutSecs": {
                        "title": "Navigation timeout (seconds)",
                        "minimum": 15,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Maximum time allowed for each browser route attempt.",
                        "default": 45
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
