# Checkatrade Scraper (`khadinakbar/checkatrade-scraper`) Actor

Search and extract public Checkatrade tradesperson profiles with contact, service, rating, and review data.

- **URL**: https://apify.com/khadinakbar/checkatrade-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, Automation, AI
- **Stats:** 1 total users, 0 monthly users, 87.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 tradesperson records

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

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

## What's an Apify Actor?

Actors are 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

## Checkatrade Scraper

Extract public Checkatrade tradesperson profiles into a clean, deduplicated dataset for UK local-market research, lead-list building, and directory analysis. Give the actor a trade and a UK location such as `Plumber` and `London`, paste an existing Checkatrade search URL, or provide direct profile URLs. It returns one validated record per public profile rather than a mixture of search cards and partial pages.

Use this actor when you need public business names, Checkatrade profile URLs, public phone numbers and websites, ratings, review counts, service labels, service areas, and visible profile descriptions. It is designed for agencies, local-market researchers, CRM operations teams, and AI agents preparing a shortlist of UK trades businesses.

Do not use it for private contact information, email discovery, a complete historical review archive, booking availability, or sources outside Checkatrade. The actor never guesses missing fields and records `null` where a profile does not expose a value.

### What you receive

Every dataset row represents one public Checkatrade profile and has a stable, flat shape:

| Field                              | Meaning                                       |
| ---------------------------------- | --------------------------------------------- |
| `businessName`                     | Public business or tradesperson name          |
| `profileUrl`                       | Canonical Checkatrade profile URL             |
| `phone`, `website`                 | Public contact fields when shown              |
| `rating`, `reviewCount`            | Public reputation indicators                  |
| `services`, `areasServed`          | Public skills and coverage labels             |
| `locality`, `region`, `postalCode` | Public location fields where supplied         |
| `reviews`                          | Up to ten visible recent reviews when enabled |
| `scrapedAt`                        | ISO 8601 extraction timestamp                 |

Records are validated before they are saved and billed. A profile without a stable business name or canonical Checkatrade profile URL is skipped instead of being turned into a thin, billable record.

### Inputs

#### Search by trade and location

Use `trade` plus `location` for the simplest workflow:

```json
{
    "trade": "Electrician",
    "location": "Manchester",
    "maxResults": 50,
    "minRating": 9,
    "minReviews": 10,
    "requirePhone": true
}
````

The actor converts that input to a Checkatrade search, discovers profile links, follows pagination where Checkatrade exposes it, and visits the discovered profiles. `maxResults` is a whole-run cap, so it is the primary control for both volume and billable result count.

#### Use a copied Checkatrade search URL

Use `searchUrls` for a search already configured in your browser. This is useful for Checkatrade category URLs or other site filters not represented by the simple trade/location inputs.

```json
{
    "searchUrls": ["https://www.checkatrade.com/Search/Plumber/in/London"],
    "maxResults": 100
}
```

#### Enrich direct profile URLs

Use `directUrls` when your workflow already has Checkatrade profile links. This mode avoids listing-page discovery and is ideal for refreshing an existing dataset.

```json
{
    "directUrls": ["https://www.checkatrade.com/trades/exampleltd"],
    "extractReviews": true
}
```

Only `checkatrade.com` URLs are accepted. Invalid or unsupported URLs are ignored, and a run with no valid search or profile input exits with the actionable `INVALID_INPUT` outcome rather than failing silently.

### Filters and depth

Set `requirePhone` to keep only profiles that expose a public phone number. `minRating` uses Checkatrade's public 0–10 scale, and `minReviews` filters by total public review count. Turn on `extractReviews` when you need a compact sample of visible review content; it returns at most ten recent review objects per profile and is not a complete review-history export.

`scrapeDetails` is enabled by default. That keeps search results useful by enriching each discovered profile rather than returning brittle listing-card fragments. This actor does not enrich email addresses, scrape hidden data, or attempt to bypass an unavailable public profile.

### Pricing

This actor uses **Pay per event + Apify platform usage**. Current event pricing is declared in the actor configuration and shown in the Apify Pricing tab.

| Event               |    Price | When it applies                                 |
| ------------------- | -------: | ----------------------------------------------- |
| Actor start         | $0.00005 | Once when a run begins                          |
| Tradesperson record |   $0.008 | Once per validated row persisted to the dataset |

For example, a run that saves 25 profiles has $0.20005 in actor-event charges, plus Apify's underlying platform usage. No tradesperson event is charged for duplicates, filter misses, malformed records, or failed pages. Set `maxResults` to keep the maximum event component predictable; a 100-result run has an event-charge ceiling of about $0.80 plus usage.

### Outcomes and recovery

Each run writes a compact `OUTPUT` record and a detailed `RUN_SUMMARY` record. They make the result machine-readable even when a run contains no dataset rows.

- `COMPLETE`: all advertised work produced valid records.
- `PARTIAL`: useful records were saved, but some pages or records were skipped.
- `VALID_EMPTY`: the input was valid but no public profile met the requested filters.
- `INVALID_INPUT`: amend the trade/location or provide valid Checkatrade URLs.
- `UPSTREAM_FAILED`: Checkatrade could not be reached reliably and no usable record was produced.

If a run returns `UPSTREAM_FAILED`, retry later with a smaller `maxResults`, a direct profile URL, or a different Checkatrade search URL. The run summary includes safe request and validation counters; it does not contain proxy credentials or other secrets.

### API and agent use

The actor is intended to be easy for an AI agent to route: use it for Checkatrade tradesperson profiles, not for Google Maps, Trustpilot, job listings, or general UK company enrichment. The recommended agent call is a narrow query such as “find up to 20 London electricians rated 9+ with public phone numbers.”

After a run, read the default dataset for rows and the default key-value store's `OUTPUT` record for the terminal outcome. Use `RUN_SUMMARY` when an automation needs counters, warning messages, or charged-event counts. When an output is truncated by `maxResults`, narrow the location or run a separate search for the next trade/location segment.

### Responsible use

Only use public data for legitimate, lawful purposes. Respect applicable privacy, marketing, and data-protection requirements, including UK GDPR and PECR where relevant. Verify any information before contacting a business, and do not treat public directory data as consent to unsolicited communications.

# Actor input Schema

## `trade` (type: `string`):

The Checkatrade trade to find, such as 'Plumber' or 'Electrician'. Pair it with a UK location to create a Checkatrade search URL. Defaults to 'Plumber'. This is not a profile URL; use directUrls for existing profiles.

## `location` (type: `string`):

The UK town, city, postcode, or postcode area to search, such as 'London' or 'SW1A'. Combined with trade unless searchUrls is supplied. Defaults to 'London'. This is not a country selector or proxy setting.

## `searchUrls` (type: `array`):

Optional Checkatrade search-result URLs copied from a browser, for example 'https://www.checkatrade.com/Search/Plumber/in/London'. Each URL is crawled and paginated. Leave empty to use trade and location. Do not paste profile URLs here; put those in directUrls.

## `directUrls` (type: `array`):

Optional individual Checkatrade tradesperson profile URLs, such as 'https://www.checkatrade.com/trades/exampleltd'. Each is scraped directly and bypasses search discovery. Leave empty for a trade/location search. Do not include URLs from other directories.

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

Maximum validated tradesperson records to return across the entire run. Each persisted record is one billable tradesperson event. Defaults to 100 and accepts 1 through 1000. This is not a page limit because one page can contain multiple profiles.

## `scrapeDetails` (type: `boolean`):

Controls full-profile enrichment for profiles discovered from Checkatrade search pages. Keep this enabled to return contact, service, rating, and review fields from the profile. Defaults to true. Direct profile URLs are always handled as detailed profiles.

## `extractReviews` (type: `boolean`):

Include up to ten visible recent review objects for each returned profile. This adds review body, author when public, rating, and date when available. Defaults to false to keep items compact. This does not claim to return a profile's complete review history.

## `requirePhone` (type: `boolean`):

When enabled, excludes profiles without a public phone number. Use it for phone-first outreach lists. Defaults to false so all valid public profiles remain eligible. It does not infer or enrich hidden contact information.

## `minRating` (type: `number`):

Minimum public Checkatrade rating from 0 to 10. Profiles without a rating or below this threshold are excluded when a value above zero is used. Defaults to 0. This is not a star rating out of five.

## `minReviews` (type: `integer`):

Minimum number of public reviews a profile must show before it is returned. Profiles without enough reviews are excluded when this is above zero. Defaults to 0. This is a filter, not the number of review objects to extract.

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

Optional Apify proxy configuration used for public Checkatrade requests. The default uses the RESIDENTIAL group for consistent UK directory access. Leave the default unless you operate an approved custom proxy. This does not alter the location searched above.

## Actor input object example

```json
{
  "trade": "Electrician",
  "location": "Manchester",
  "searchUrls": [
    "https://www.checkatrade.com/Search/Plumber/in/London"
  ],
  "directUrls": [
    "https://www.checkatrade.com/trades/exampleltd"
  ],
  "maxResults": 100,
  "scrapeDetails": true,
  "extractReviews": false,
  "requirePhone": false,
  "minRating": 9,
  "minReviews": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `output` (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 = {
    "trade": "Plumber",
    "location": "London",
    "searchUrls": [],
    "directUrls": [],
    "maxResults": 20,
    "scrapeDetails": true,
    "extractReviews": false,
    "requirePhone": false,
    "minRating": 0,
    "minReviews": 0,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "groups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/checkatrade-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 = {
    "trade": "Plumber",
    "location": "London",
    "searchUrls": [],
    "directUrls": [],
    "maxResults": 20,
    "scrapeDetails": True,
    "extractReviews": False,
    "requirePhone": False,
    "minRating": 0,
    "minReviews": 0,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "groups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/checkatrade-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 '{
  "trade": "Plumber",
  "location": "London",
  "searchUrls": [],
  "directUrls": [],
  "maxResults": 20,
  "scrapeDetails": true,
  "extractReviews": false,
  "requirePhone": false,
  "minRating": 0,
  "minReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call khadinakbar/checkatrade-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Checkatrade Scraper",
        "description": "Search and extract public Checkatrade tradesperson profiles with contact, service, rating, and review data.",
        "version": "1.4",
        "x-build-id": "fNg30FylyvVtmgwqQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~checkatrade-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-checkatrade-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/khadinakbar~checkatrade-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-checkatrade-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/khadinakbar~checkatrade-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-checkatrade-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": {
                    "trade": {
                        "title": "Trade or service",
                        "type": "string",
                        "description": "The Checkatrade trade to find, such as 'Plumber' or 'Electrician'. Pair it with a UK location to create a Checkatrade search URL. Defaults to 'Plumber'. This is not a profile URL; use directUrls for existing profiles.",
                        "default": "Plumber"
                    },
                    "location": {
                        "title": "UK location or postcode",
                        "type": "string",
                        "description": "The UK town, city, postcode, or postcode area to search, such as 'London' or 'SW1A'. Combined with trade unless searchUrls is supplied. Defaults to 'London'. This is not a country selector or proxy setting.",
                        "default": "London"
                    },
                    "searchUrls": {
                        "title": "Checkatrade search URLs",
                        "type": "array",
                        "description": "Optional Checkatrade search-result URLs copied from a browser, for example 'https://www.checkatrade.com/Search/Plumber/in/London'. Each URL is crawled and paginated. Leave empty to use trade and location. Do not paste profile URLs here; put those in directUrls.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "directUrls": {
                        "title": "Checkatrade profile URLs",
                        "type": "array",
                        "description": "Optional individual Checkatrade tradesperson profile URLs, such as 'https://www.checkatrade.com/trades/exampleltd'. Each is scraped directly and bypasses search discovery. Leave empty for a trade/location search. Do not include URLs from other directories.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum profiles",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum validated tradesperson records to return across the entire run. Each persisted record is one billable tradesperson event. Defaults to 100 and accepts 1 through 1000. This is not a page limit because one page can contain multiple profiles.",
                        "default": 100
                    },
                    "scrapeDetails": {
                        "title": "Scrape profile details",
                        "type": "boolean",
                        "description": "Controls full-profile enrichment for profiles discovered from Checkatrade search pages. Keep this enabled to return contact, service, rating, and review fields from the profile. Defaults to true. Direct profile URLs are always handled as detailed profiles.",
                        "default": true
                    },
                    "extractReviews": {
                        "title": "Include recent reviews",
                        "type": "boolean",
                        "description": "Include up to ten visible recent review objects for each returned profile. This adds review body, author when public, rating, and date when available. Defaults to false to keep items compact. This does not claim to return a profile's complete review history.",
                        "default": false
                    },
                    "requirePhone": {
                        "title": "Only profiles with phone numbers",
                        "type": "boolean",
                        "description": "When enabled, excludes profiles without a public phone number. Use it for phone-first outreach lists. Defaults to false so all valid public profiles remain eligible. It does not infer or enrich hidden contact information.",
                        "default": false
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Minimum public Checkatrade rating from 0 to 10. Profiles without a rating or below this threshold are excluded when a value above zero is used. Defaults to 0. This is not a star rating out of five.",
                        "default": 0
                    },
                    "minReviews": {
                        "title": "Minimum review count",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Minimum number of public reviews a profile must show before it is returned. Profiles without enough reviews are excluded when this is above zero. Defaults to 0. This is a filter, not the number of review objects to extract.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy configuration used for public Checkatrade requests. The default uses the RESIDENTIAL group for consistent UK directory access. Leave the default unless you operate an approved custom proxy. This does not alter the location searched above.",
                        "default": {
                            "useApifyProxy": true,
                            "groups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
