# TheCrawler — Scrape Everything from Any Page (`accurate_pouch/the-crawler`) Actor

Scrape any webpage with JS rendering (Playwright) or fast HTTP (Cheerio). Extract text, links, images, meta, headings, tables, JSON-LD, emails, phones, OG/Twitter cards, social links. LLM-ready markdown with heading-aware chunking. CSS selectors, recursive crawling, URL filtering. $0.003/page.

- **URL**: https://apify.com/accurate\_pouch/the-crawler.md
- **Developed by:** [Manchitt Sanan](https://apify.com/accurate_pouch) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Universal Web Scraper — Extract Everything from Any Page

Scrape any webpage and extract every data point: text content, links, images, meta tags, headings (h1-h6), HTML tables, JSON-LD structured data, email addresses, and phone numbers. CSS selector targeting for specific content. Recursive crawling to follow internal links. $0.003/page.

---

### What it extracts per page

| Data | Description |
|------|-------------|
| **Text** | All visible text (scripts/styles stripped), up to 50K chars |
| **Links** | Every `<a>` tag — href, anchor text, internal/external flag |
| **Images** | Every `<img>` — src, alt text, width, height |
| **Meta tags** | All `<meta>` — description, og:title, keywords, robots, etc |
| **Headings** | All h1-h6 with level and text |
| **Tables** | HTML tables as structured arrays (headers + rows) |
| **JSON-LD** | Schema.org structured data from `<script type="application/ld+json">` |
| **Emails** | Email addresses found anywhere in the HTML |
| **Phones** | Phone numbers (7+ digits) found in the HTML |
| **Selected** | Content matching your CSS selector |

Every extraction type can be toggled on/off.

---

### Quick start

Scrape a single page:
```json
{
    "urls": ["https://example.com"]
}
````

Crawl a site (follow links):

```json
{
    "urls": ["https://example.com"],
    "maxDepth": 2,
    "maxPages": 50
}
```

Target specific content:

```json
{
    "urls": ["https://example.com"],
    "cssSelector": ".main-content"
}
```

***

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `urls` | array | *(required)* | URLs to scrape |
| `extractText` | boolean | `true` | Visible text content |
| `extractLinks` | boolean | `true` | All links with anchor text |
| `extractImages` | boolean | `true` | All images with alt/dimensions |
| `extractMeta` | boolean | `true` | Meta tags |
| `extractHeadings` | boolean | `true` | h1-h6 headings |
| `extractTables` | boolean | `true` | HTML tables as arrays |
| `extractStructuredData` | boolean | `true` | JSON-LD schema.org data |
| `extractEmails` | boolean | `true` | Email addresses |
| `extractPhones` | boolean | `true` | Phone numbers |
| `cssSelector` | string | *(optional)* | Target specific element |
| `maxDepth` | integer | `0` | 0 = listed URLs only. 1+ = follow links |
| `maxPages` | integer | `100` | Max pages to scrape total |
| `dryRun` | boolean | `false` | Scrape without charges |

***

### Pricing

**$0.003 per page scraped** (pay-per-event pricing).

- Errors and dry runs are never charged.
- 100 pages = $0.30
- 1,000 pages = $3.00

***

### Performance

- Uses CheerioCrawler — pure HTTP, no headless browser
- Fast: 100-500 pages/minute depending on target site
- Low memory: 256MB handles most scraping jobs

***

### Limitations

- **No JavaScript rendering.** This scraper reads the initial HTML response. Content injected by JavaScript (React, Vue, Angular SPAs) won't be captured. For JS-heavy sites, use a Playwright-based scraper.
- **Email/phone extraction** uses regex — may include false positives from code snippets or malformed patterns.
- **Tables** are extracted as flat text arrays. Complex nested tables may not parse correctly.
- **Rate limiting.** Crawlee handles basic rate limiting, but aggressive crawling may trigger bot protection.

***

### Related Tools by manchittlab

- **[Broken Link Checker](https://apify.com/accurate_pouch/broken-link-checker)** — Find broken links across your website.
- **[Email Validator Pro](https://apify.com/accurate_pouch/email-validator)** — Validate extracted emails with SMTP check.
- **[Tech Stack Detector](https://apify.com/accurate_pouch/tech-stack-detector)** — Detect what technology a site uses.
- **[Lighthouse Auditor](https://apify.com/accurate_pouch/lighthouse-auditor)** — Performance and SEO audits.
- **[Sitemap Analyzer](https://apify.com/accurate_pouch/sitemap-analyzer)** — Parse and validate XML sitemaps.
- **[DNS/WHOIS Suite](https://apify.com/accurate_pouch/dns-whois-suite)** — DNS records + RDAP domain lookup.

# Actor input Schema

## `urls` (type: `array`):

List of URLs to scrape.

## `extractText` (type: `boolean`):

Extract visible text content (scripts/styles removed).

## `extractLinks` (type: `boolean`):

Extract all links with href, anchor text, and internal/external flag.

## `extractImages` (type: `boolean`):

Extract all images with src, alt text, dimensions.

## `extractMeta` (type: `boolean`):

Extract all meta tags (description, og:title, keywords, etc).

## `extractHeadings` (type: `boolean`):

Extract all h1-h6 headings with their level.

## `extractTables` (type: `boolean`):

Extract HTML tables as structured data (headers + rows).

## `extractStructuredData` (type: `boolean`):

Extract JSON-LD structured data (schema.org).

## `extractEmails` (type: `boolean`):

Find email addresses in the page HTML.

## `extractPhones` (type: `boolean`):

Find phone numbers in the page HTML.

## `cssSelector` (type: `string`):

Target specific content. Returns matching text in selectedContent field. Example: .product-price, #main-content, article

## `maxDepth` (type: `integer`):

0 = scrape listed URLs only. 1+ = follow internal links to that depth.

## `maxPages` (type: `integer`):

Maximum total pages to scrape (including followed links).

## `usePlaywright` (type: `boolean`):

Render JavaScript with a real browser. Required for SPAs (React, Vue, Angular), dynamic content, and sites that load data via JS. Uses more compute than default Cheerio mode.

## `waitForSelector` (type: `string`):

CSS selector to wait for before extracting. Only works with Playwright enabled. Example: .product-list, #content-loaded

## `waitForMs` (type: `integer`):

Milliseconds to wait after page load before extracting. Only works with Playwright enabled. Useful for lazy-loading content.

## `extractMarkdown` (type: `boolean`):

Convert page content to clean Markdown. Strips navigation, footers, and boilerplate when stripBoilerplate is enabled. Ideal for LLM/RAG pipelines.

## `stripBoilerplate` (type: `boolean`):

Remove nav, header, footer, sidebar, and ads before markdown conversion. Keeps only main content.

## `chunkSize` (type: `integer`):

Split markdown into chunks of this size. Each chunk includes section heading, index, and content hash. Set to 0 to disable chunking.

## `chunkOverlap` (type: `integer`):

Character overlap between consecutive chunks. Prevents losing context at chunk boundaries. Typical: 10-20% of chunk size.

## `includeGlobs` (type: `array`):

Only follow links matching these glob patterns when crawling. Example: https://example.com/blog/\*\*

## `excludeGlobs` (type: `array`):

Skip links matching these glob patterns. Example: **/login/**, **/admin/**

## `proxyUrl` (type: `string`):

HTTP/SOCKS proxy URL for requests. Format: http://user:pass@host:port or socks5://user:pass@host:port. Use Apify Proxy or your own.

## `searchQuery` (type: `string`):

Search Google and scrape the top results. Leave URLs empty to use search mode. Example: 'best project management tools 2026'

## `searchLimit` (type: `integer`):

Maximum number of search results to scrape (default: 10).

## `actions` (type: `array`):

Actions to perform before extraction. Requires Playwright enabled. JSON array. Types: click (selector), fill (selector + value), scroll (pixels), wait (ms), screenshot. Example: \[{"type":"click","selector":".load-more"},{"type":"scroll","pixels":2000}]

## `dryRun` (type: `boolean`):

Scrape pages but don't charge.

## Actor input object example

```json
{
  "urls": [
    "https://example.com"
  ],
  "extractText": true,
  "extractLinks": true,
  "extractImages": true,
  "extractMeta": true,
  "extractHeadings": true,
  "extractTables": true,
  "extractStructuredData": true,
  "extractEmails": true,
  "extractPhones": true,
  "maxDepth": 0,
  "maxPages": 100,
  "usePlaywright": false,
  "waitForMs": 0,
  "extractMarkdown": false,
  "stripBoilerplate": true,
  "chunkSize": 0,
  "chunkOverlap": 200,
  "searchLimit": 10,
  "dryRun": false
}
```

# 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 = {
    "urls": [
        "https://example.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("accurate_pouch/the-crawler").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 = { "urls": ["https://example.com"] }

# Run the Actor and wait for it to finish
run = client.actor("accurate_pouch/the-crawler").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 '{
  "urls": [
    "https://example.com"
  ]
}' |
apify call accurate_pouch/the-crawler --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TheCrawler — Scrape Everything from Any Page",
        "description": "Scrape any webpage with JS rendering (Playwright) or fast HTTP (Cheerio). Extract text, links, images, meta, headings, tables, JSON-LD, emails, phones, OG/Twitter cards, social links. LLM-ready markdown with heading-aware chunking. CSS selectors, recursive crawling, URL filtering. $0.003/page.",
        "version": "0.1",
        "x-build-id": "2bhTgRkcX6PCgzLsH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/accurate_pouch~the-crawler/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-accurate_pouch-the-crawler",
                "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/accurate_pouch~the-crawler/runs": {
            "post": {
                "operationId": "runs-sync-accurate_pouch-the-crawler",
                "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/accurate_pouch~the-crawler/run-sync": {
            "post": {
                "operationId": "run-sync-accurate_pouch-the-crawler",
                "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": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "URLs to Scrape",
                        "type": "array",
                        "description": "List of URLs to scrape.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "extractText": {
                        "title": "Extract Text",
                        "type": "boolean",
                        "description": "Extract visible text content (scripts/styles removed).",
                        "default": true
                    },
                    "extractLinks": {
                        "title": "Extract Links",
                        "type": "boolean",
                        "description": "Extract all links with href, anchor text, and internal/external flag.",
                        "default": true
                    },
                    "extractImages": {
                        "title": "Extract Images",
                        "type": "boolean",
                        "description": "Extract all images with src, alt text, dimensions.",
                        "default": true
                    },
                    "extractMeta": {
                        "title": "Extract Meta Tags",
                        "type": "boolean",
                        "description": "Extract all meta tags (description, og:title, keywords, etc).",
                        "default": true
                    },
                    "extractHeadings": {
                        "title": "Extract Headings",
                        "type": "boolean",
                        "description": "Extract all h1-h6 headings with their level.",
                        "default": true
                    },
                    "extractTables": {
                        "title": "Extract Tables",
                        "type": "boolean",
                        "description": "Extract HTML tables as structured data (headers + rows).",
                        "default": true
                    },
                    "extractStructuredData": {
                        "title": "Extract JSON-LD",
                        "type": "boolean",
                        "description": "Extract JSON-LD structured data (schema.org).",
                        "default": true
                    },
                    "extractEmails": {
                        "title": "Extract Emails",
                        "type": "boolean",
                        "description": "Find email addresses in the page HTML.",
                        "default": true
                    },
                    "extractPhones": {
                        "title": "Extract Phone Numbers",
                        "type": "boolean",
                        "description": "Find phone numbers in the page HTML.",
                        "default": true
                    },
                    "cssSelector": {
                        "title": "CSS Selector",
                        "type": "string",
                        "description": "Target specific content. Returns matching text in selectedContent field. Example: .product-price, #main-content, article"
                    },
                    "maxDepth": {
                        "title": "Crawl Depth",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "0 = scrape listed URLs only. 1+ = follow internal links to that depth.",
                        "default": 0
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum total pages to scrape (including followed links).",
                        "default": 100
                    },
                    "usePlaywright": {
                        "title": "Enable JS Rendering (Playwright)",
                        "type": "boolean",
                        "description": "Render JavaScript with a real browser. Required for SPAs (React, Vue, Angular), dynamic content, and sites that load data via JS. Uses more compute than default Cheerio mode.",
                        "default": false
                    },
                    "waitForSelector": {
                        "title": "Wait for Selector",
                        "type": "string",
                        "description": "CSS selector to wait for before extracting. Only works with Playwright enabled. Example: .product-list, #content-loaded"
                    },
                    "waitForMs": {
                        "title": "Wait (ms)",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Milliseconds to wait after page load before extracting. Only works with Playwright enabled. Useful for lazy-loading content.",
                        "default": 0
                    },
                    "extractMarkdown": {
                        "title": "Extract Markdown",
                        "type": "boolean",
                        "description": "Convert page content to clean Markdown. Strips navigation, footers, and boilerplate when stripBoilerplate is enabled. Ideal for LLM/RAG pipelines.",
                        "default": false
                    },
                    "stripBoilerplate": {
                        "title": "Strip Boilerplate",
                        "type": "boolean",
                        "description": "Remove nav, header, footer, sidebar, and ads before markdown conversion. Keeps only main content.",
                        "default": true
                    },
                    "chunkSize": {
                        "title": "Chunk Size (chars)",
                        "minimum": 0,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Split markdown into chunks of this size. Each chunk includes section heading, index, and content hash. Set to 0 to disable chunking.",
                        "default": 0
                    },
                    "chunkOverlap": {
                        "title": "Chunk Overlap (chars)",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Character overlap between consecutive chunks. Prevents losing context at chunk boundaries. Typical: 10-20% of chunk size.",
                        "default": 200
                    },
                    "includeGlobs": {
                        "title": "Include URL Patterns",
                        "type": "array",
                        "description": "Only follow links matching these glob patterns when crawling. Example: https://example.com/blog/**",
                        "items": {
                            "type": "string"
                        }
                    },
                    "excludeGlobs": {
                        "title": "Exclude URL Patterns",
                        "type": "array",
                        "description": "Skip links matching these glob patterns. Example: **/login/**, **/admin/**",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyUrl": {
                        "title": "Proxy URL",
                        "type": "string",
                        "description": "HTTP/SOCKS proxy URL for requests. Format: http://user:pass@host:port or socks5://user:pass@host:port. Use Apify Proxy or your own."
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search Google and scrape the top results. Leave URLs empty to use search mode. Example: 'best project management tools 2026'"
                    },
                    "searchLimit": {
                        "title": "Search Results Limit",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of search results to scrape (default: 10).",
                        "default": 10
                    },
                    "actions": {
                        "title": "Browser Actions (Playwright only)",
                        "type": "array",
                        "description": "Actions to perform before extraction. Requires Playwright enabled. JSON array. Types: click (selector), fill (selector + value), scroll (pixels), wait (ms), screenshot. Example: [{\"type\":\"click\",\"selector\":\".load-more\"},{\"type\":\"scroll\",\"pixels\":2000}]"
                    },
                    "dryRun": {
                        "title": "Dry Run",
                        "type": "boolean",
                        "description": "Scrape pages but don't charge.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
