# BuiltWith Domain Tech Stack Scraper (`fetch_cat/builtwith-domain-tech-stack-scraper`) Actor

Detect website technologies from domain lists for sales, SEO, martech, and competitive-intelligence workflows. Export categorized tech stack rows.

- **URL**: https://apify.com/fetch\_cat/builtwith-domain-tech-stack-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / 1,000 item extracteds

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

## Website Technology Stack Detector

Detect technologies exposed by public websites from a list of domains or URLs. The Actor inspects the homepage response once and combines headers, cookie names, metadata, script sources, stylesheet links, and HTML markers into one row per detected technology.

Use it for lead enrichment, migration research, martech audits, SEO reviews, and competitor monitoring. It is an independent detector: it does not scrape or query a third-party technology database.

### Ready-to-run examples

| Example | Use it to |
| --- | --- |
| [Detect ecommerce platforms and payment tools](https://apify.com/fetch_cat/builtwith-domain-tech-stack-scraper/examples/detect-ecommerce-platforms) | Check public storefronts for visible ecommerce and payment signals. |
| [Audit a SaaS marketing technology stack](https://apify.com/fetch_cat/builtwith-domain-tech-stack-scraper/examples/audit-saas-marketing-stack) | Find visible analytics, tag management, advertising, marketing, and support tools. |
| [Compare website frameworks, CMS, and hosting](https://apify.com/fetch_cat/builtwith-domain-tech-stack-scraper/examples/compare-web-frameworks) | Compare public CMS, JavaScript framework, library, UI, and hosting signals. |

### What does Website Technology Stack Detector do?

- 60+ curated detections across CMS, ecommerce, analytics, advertising, marketing, support, payments, frameworks, hosting, CDN, web servers, and consent tools
- deterministic confidence, safe evidence labels, and versions when a public signal exposes one
- validated redirects, bounded retries, anti-bot challenge detection, and private-network protection
- resumable progress for larger lists, with completed in-flight domains recovered from the dataset to prevent duplicate item charges
- one dataset row per technology, plus free status rows for no-match and request-error outcomes

### Who is it for?

- sales and growth teams enriching lead lists with visible platform signals
- agencies comparing client and competitor website stacks
- developers routing domains by framework, hosting, or infrastructure
- ecommerce and martech teams auditing storefront, payment, analytics, and support tools

### Input settings

| Field | Description |
| --- | --- |
| `domains` | Required public domains or HTTP(S) URLs. Bare domains try HTTPS first. |
| `maxDomains` | Safety cap after duplicate targets are removed; default `3`. |
| `includeCategories` | Optional multiselect category filter. |
| `maxRunSeconds` | Processing budget from 45 to 300 seconds; default `300`. |
| `resumeFromCheckpoint` | Resume matching work from the same default key-value store; default `true`. |
| `proxyConfiguration` | Optional proxy settings; direct connections are the default. |

### Example input

```json
{
  "domains": ["wordpress.org", "shopify.com", "vercel.com"],
  "maxDomains": 3,
  "includeCategories": ["CMS", "Ecommerce", "Hosting"]
}
````

Credentials, custom ports, IP literals, single-label/local hosts, and redirects to private or reserved networks are rejected.

### Output fields

| Field | Description |
| --- | --- |
| `domain`, `normalizedDomain` | Original target and normalized hostname. |
| `sourceUrl`, `finalUrl` | Requested and final validated public URL. |
| `statusCode`, `redirectCount` | Response status and redirect count. |
| `technologyName`, `category`, `subcategory` | Detected product and classification. |
| `confidence`, `version` | Rule strength and public version when available. |
| `evidenceType`, `evidenceDetail`, `sourceSection` | Safe explanation of the strongest signal. |
| `pageTitle`, `description`, `vendorUrl` | Page and technology context. |
| `scrapedAt` | Detection time in ISO 8601 format. |
| `error` | Present only on an uncharged no-match or request-error row. |

### Example output

```json
{
  "domain": "wordpress.org",
  "normalizedDomain": "wordpress.org",
  "sourceUrl": "https://wordpress.org/",
  "finalUrl": "https://wordpress.org/",
  "statusCode": 200,
  "redirectCount": 0,
  "pageTitle": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
  "technologyName": "WordPress",
  "category": "CMS",
  "subcategory": "Content management system",
  "description": "Open-source content management system.",
  "vendorUrl": "https://wordpress.org/",
  "confidence": 96,
  "version": null,
  "evidenceType": "link",
  "evidenceDetail": "WordPress asset path",
  "sourceSection": "link: WordPress asset path",
  "firstDetected": null,
  "lastDetected": null,
  "scrapedAt": "2026-07-20T12:00:00.000Z"
}
```

`confidence` is the strength assigned to the matched rule, not a statistical probability. `firstDetected` and `lastDetected` remain nullable compatibility fields because a live passive scan has no historical database. Raw cookies, headers, page snippets, IDs, and keys are never copied into evidence fields.

### How detection works

The Actor downloads the public page HTML without executing JavaScript. It evaluates several passive signal families and keeps the strongest deterministic match for each technology. Framework relationships can add an implied row—for example, a strong Next.js signal can imply React—unless a stronger direct React signal already exists.

This bounded approach is faster and less failure-prone than launching a browser for every domain. It also means technologies loaded only after interaction, consent, client-side network calls, login, or bot checks may not be visible. GraphQL is detected when an Apollo Client signal is present; the Actor does not probe arbitrary `/graphql` endpoints because unrelated websites do not share a safe, stable GraphQL contract.

### Pricing

Pricing is pay per event:

- one `start` event per new run workflow: **$0.005**
- one `item` event per detected technology row
- no item charge for no-match or request-error status rows

| Plan | Price per detected technology |
| --- | ---: |
| FREE | $0.000041683 |
| BRONZE | $0.000036246 |
| SILVER | $0.000028272 |
| GOLD | $0.000021748 |
| PLATINUM | $0.000014498 |
| DIAMOND | $0.000010149 |

Because domains expose different numbers of technologies, use a small `maxDomains` on your first run to estimate result volume.

### API usage

#### Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/builtwith-domain-tech-stack-scraper').call({
  domains: ['wordpress.org', 'shopify.com'],
  maxDomains: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/builtwith-domain-tech-stack-scraper').call(run_input={
    'domains': ['wordpress.org', 'shopify.com'],
    'maxDomains': 2,
})
print(client.dataset(run['defaultDatasetId']).list_items().items)
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/fetch_cat~builtwith-domain-tech-stack-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"domains":["wordpress.org","shopify.com"],"maxDomains":2}'
```

### MCP and automation

Use the Actor through Apify MCP at:

```text
https://mcp.apify.com/?tools=fetch_cat/builtwith-domain-tech-stack-scraper
```

Claude Code setup:

```bash
claude mcp add apify-tech-detector "https://mcp.apify.com/?tools=fetch_cat/builtwith-domain-tech-stack-scraper"
```

Claude Desktop or another compatible client can use:

```json
{
  "mcpServers": {
    "apify-tech-detector": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/builtwith-domain-tech-stack-scraper"
    }
  }
}
```

Example agent prompts:

- “Detect ecommerce and payment technologies for these domains.”
- “Compare the CMS and hosting stack across this competitor list.”
- “Return domains where HubSpot, Klaviyo, or Intercom is visible.”

For recurring monitoring, save the input as an Apify Task and schedule it. A task that needs to continue a checkpoint must reuse the same default key-value store.

### FAQ

**Why did I get `No technologies detected`?** The page was reachable, but none of the configured signatures matched the public response. The website may still use server-side or dynamically loaded tools.

**Why did I get a request-error row?** DNS, transport, HTTP, content-type, response-size, redirect safety, or anti-bot validation prevented analysis. A proxy may help with access blocks, but it cannot reveal technology hidden behind login or client interaction.

**Why is a version null?** Versions are returned only when the matched response itself exposes a short, validated version string. The Actor does not download JavaScript bundles solely to infer versions.

**Can it scan internal sites?** No. This public-web Actor intentionally blocks local, private, reserved, credentialed, IP-literal, and custom-port targets.

### Support

If a public website produces an unexpected result, open an Actor issue and include the Apify run ID or run URL, the input JSON, expected output, actual output, and one reproducible public URL. Remove tokens, credentials, customer data, and private URLs before posting.

### Responsible use

Use the Actor only on public websites and comply with applicable terms, laws, and outreach rules. Keep request volume reasonable. Technology signals can be incomplete or stale, so validate consequential decisions with the website owner or another authorized source.

### Related Actors

- [WHOIS & RDAP Domain Lookup](https://apify.com/fetch_cat/whois-rdap-domain-lookup) — add registration and domain-status data
- [Email MX Deliverability Verifier](https://apify.com/fetch_cat/email-mx-deliverability-verifier) — validate public mail infrastructure
- [Google Maps Lead Finder](https://apify.com/fetch_cat/google-maps-lead-finder) — build local-business lead lists before enrichment

# Actor input Schema

## `domains` (type: `array`):

Public domain names or HTTP(S) URLs. Bare domains try HTTPS first and use HTTP only after a transport failure. Credentials, custom ports, IP addresses, and private hosts are rejected.

## `maxDomains` (type: `integer`):

Safety cap applied after duplicate targets are removed.

## `includeCategories` (type: `array`):

Return only technologies in these categories. Leave empty to detect every supported category.

## `maxRunSeconds` (type: `integer`):

Actor-managed time budget. Work checkpoints about 30 seconds before this limit so a rerun with the same storage can resume safely.

## `resumeFromCheckpoint` (type: `boolean`):

Continue a matching interrupted run when the same default key-value store is reused.

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

Optional proxy configuration. Direct connections are the default; enable a proxy only when target websites block your requests.

## Actor input object example

```json
{
  "domains": [
    "wordpress.org",
    "shopify.com",
    "vercel.com"
  ],
  "maxDomains": 3,
  "maxRunSeconds": 300,
  "resumeFromCheckpoint": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "domains": [
        "wordpress.org",
        "shopify.com",
        "vercel.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/builtwith-domain-tech-stack-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 = { "domains": [
        "wordpress.org",
        "shopify.com",
        "vercel.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/builtwith-domain-tech-stack-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 '{
  "domains": [
    "wordpress.org",
    "shopify.com",
    "vercel.com"
  ]
}' |
apify call fetch_cat/builtwith-domain-tech-stack-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/builtwith-domain-tech-stack-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BuiltWith Domain Tech Stack Scraper",
        "description": "Detect website technologies from domain lists for sales, SEO, martech, and competitive-intelligence workflows. Export categorized tech stack rows.",
        "version": "0.1",
        "x-build-id": "AoJGt0e3XqvULHLF9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~builtwith-domain-tech-stack-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-builtwith-domain-tech-stack-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/fetch_cat~builtwith-domain-tech-stack-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-builtwith-domain-tech-stack-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/fetch_cat~builtwith-domain-tech-stack-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-builtwith-domain-tech-stack-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "domains"
                ],
                "properties": {
                    "domains": {
                        "title": "Domains or URLs",
                        "minItems": 1,
                        "maxItems": 10000,
                        "type": "array",
                        "description": "Public domain names or HTTP(S) URLs. Bare domains try HTTPS first and use HTTP only after a transport failure. Credentials, custom ports, IP addresses, and private hosts are rejected.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 2048
                        }
                    },
                    "maxDomains": {
                        "title": "Maximum domains",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Safety cap applied after duplicate targets are removed.",
                        "default": 3
                    },
                    "includeCategories": {
                        "title": "Include only categories",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Return only technologies in these categories. Leave empty to detect every supported category.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "A/B Testing",
                                "Advertising",
                                "Analytics",
                                "CDN",
                                "CMS",
                                "Consent Management",
                                "Customer Support",
                                "Ecommerce",
                                "Hosting",
                                "JavaScript Frameworks",
                                "JavaScript Libraries",
                                "Marketing Automation",
                                "Payments",
                                "Programming Languages",
                                "Tag Management",
                                "UI Frameworks",
                                "Web Frameworks",
                                "Web Servers"
                            ]
                        }
                    },
                    "maxRunSeconds": {
                        "title": "Maximum processing time",
                        "minimum": 45,
                        "maximum": 300,
                        "type": "integer",
                        "description": "Actor-managed time budget. Work checkpoints about 30 seconds before this limit so a rerun with the same storage can resume safely.",
                        "default": 300
                    },
                    "resumeFromCheckpoint": {
                        "title": "Resume unfinished work",
                        "type": "boolean",
                        "description": "Continue a matching interrupted run when the same default key-value store is reused.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy configuration. Direct connections are the default; enable a proxy only when target websites block your requests.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
