# Goodmoves Scraper (`crawlerbros/goodmoves-scraper`) Actor

Scrape charity, nonprofit and public sector job listings from Goodmoves - Scotland's leading third-sector job board. Search by keyword, location, sector, role, workplace type and more.

- **URL**: https://apify.com/crawlerbros/goodmoves-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Agents, Automation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

## Goodmoves Jobs Scraper

Scrape charity, nonprofit and third-sector job listings from [Goodmoves](https://goodmoves.org) — Scotland's leading platform for third-sector recruitment, also covering England and Wales. Extract job titles, organisations, salaries, locations, closing dates, working patterns, and application details from thousands of live vacancies.

### Features

- **Search mode** — Filter by keyword, location with mileage radius (5 / 10 / 25 / 50 miles), sector, role, workplace type (Remote / Hybrid / On site), working pattern, region, and salary range.
- **Direct URL mode** — Pass one or more Goodmoves vacancy URLs to scrape specific listings.
- **Rich output** — 23 fields per listing including vacancy ID, organisation profile, structured salary data, hours per week, recruitment pack PDF URL, and application email.
- **Pagination** — Automatically pages through all search results up to the `maxItems` cap.
- **Reliable retries** — Automatic retry with back-off on transient HTTP errors (429, 5xx).
- **No proxy or authentication required** — Works on the Apify free plan with no configuration beyond your search filters.

### Input

| Field | Type | Description |
|---|---|---|
| `mode` | select | **search** (filter-based) or **byUrl** (direct vacancy URLs) |
| `startUrls` | list | Vacancy URLs for `byUrl` mode (e.g. `https://goodmoves.org/vacancy/…`). **Required when `mode` is `byUrl`.** |
| `keywords` | string | Job title, skills, or organisation name |
| `location` | string | Town, city, or postcode to search near (UK/Scotland). Resolved to coordinates via free geocoding — see `radius`. |
| `radius` | select | Search radius around `location`: 5 / 10 / 25 / 50 miles (default 10). Only applied when `location` is set. |
| `sector` | select | Charitable sector (Health, Environment, Youth, etc.) |
| `role` | select | Job role category (Fundraising, Management, IT, etc.) |
| `workplaceType` | select | Remote / Hybrid / On site |
| `workingPattern` | select | Full time / Part time / Management Board |
| `region` | select | Geographic region (Edinburgh & Lothians, Glasgow & Clyde, etc.) |
| `sortBy` | select | Sort order: Relevance / Closing soon / Newest / Oldest / Salary high-low |
| `salaryMin` | integer | Minimum salary (£) |
| `salaryMax` | integer | Maximum salary (£) |
| `maxItems` | integer | Maximum number of listings to return (default: 20) |

#### Example input

```json
{
  "mode": "search",
  "keywords": "fundraising manager",
  "location": "Edinburgh",
  "radius": "25",
  "sector": "health",
  "workplaceType": "Hybrid",
  "maxItems": 50
}
````

### Output

Each item in the dataset represents one job listing. Fields are omitted when not available.

| Field | Type | Description |
|---|---|---|
| `vacancyId` | string | Unique Goodmoves vacancy identifier |
| `title` | string | Job title |
| `organization` | string | Hiring organisation name |
| `organizationDescription` | string | Organisation summary |
| `organizationLogoUrl` | string | Organisation logo image URL |
| `organizationUrl` | string | Link to the organisation's Goodmoves profile |
| `sectors` | list | Charitable sector tags (e.g. `["Health", "Social Care"]`) |
| `roles` | list | Role category tags (e.g. `["Fundraising", "Management"]`) |
| `employmentType` | string | Employment type (e.g. `"Full time"`) |
| `workplaceType` | string | Workplace arrangement (`Remote`, `Hybrid`, or `On site`) |
| `salaryText` | string | Human-readable salary (e.g. `"£48,000 – £54,000"`) |
| `salaryMinGbp` | integer | Minimum salary in £ |
| `salaryMaxGbp` | integer | Maximum salary in £ |
| `location` | string | Job location (city, region, country) |
| `postcode` | string | Postcode for the role |
| `hoursPerWeek` | integer | Weekly hours |
| `datePosted` | string | Date the vacancy was published (ISO 8601) |
| `closingDate` | string | Application closing date (ISO 8601) |
| `description` | string | Full job description text |
| `applicationEmail` | string | Contact email for applications |
| `recruitmentPackUrl` | string | URL to the recruitment pack PDF |
| `jobUrl` | string | Canonical URL of the vacancy on Goodmoves |
| `scrapedAt` | string | Timestamp when the record was scraped (UTC ISO 8601) |

#### Example output

```json
{
  "vacancyId": "a0h3z00000GpnMaAAJ",
  "title": "Director of Income Generation and Communications",
  "organization": "Ayrshire Cancer Support",
  "organizationDescription": "Ayrshire Cancer Support is dedicated to improving the lives of those affected by cancer.",
  "organizationLogoUrl": "https://storage.googleapis.com/acs-logo.png",
  "organizationUrl": "https://goodmoves.org/organisation/ayrshire-cancer-support",
  "sectors": ["Health"],
  "roles": ["Development", "Fundraising", "Communications & Marketing", "Management"],
  "employmentType": "Full time",
  "workplaceType": "Hybrid",
  "salaryText": "£48,000 – £54,000",
  "salaryMinGbp": 48000,
  "salaryMaxGbp": 54000,
  "location": "Ayr, Carrick and Cumnock, South Ayrshire, Scotland",
  "postcode": "KA8 8LD",
  "hoursPerWeek": 35,
  "datePosted": "2026-06-10T14:45:00",
  "closingDate": "2026-06-25T16:00:00",
  "description": "We are looking for an experienced Director to lead our income generation...",
  "applicationEmail": "director@ayrshirecs.org.uk",
  "jobUrl": "https://goodmoves.org/vacancy/a0h3z00000GpnMaAAJ/director-of-income-generation",
  "scrapedAt": "2026-06-10T15:30:00Z"
}
```

### FAQs

**Which jobs does Goodmoves list?**
Goodmoves specialises in third-sector roles — charities, social enterprises, housing associations, and community organisations. The majority of listings are based in Scotland, with a growing number from England and Wales.

**How many jobs can I scrape?**
Set `maxItems` to control the maximum number of results. A keyword search typically returns hundreds to thousands of matches. The scraper paginates automatically.

**Does this require authentication or cookies?**
No. All Goodmoves job listings are publicly accessible without a login. This scraper uses no credentials and no paid proxy tier.

**Why are some fields missing from a record?**
Fields are only included when Goodmoves provides data for them. For example, `applicationEmail` is only present if an email address appears on the vacancy page, and `salaryText` is only present if the posting includes salary information.

**Can I scrape a specific job listing?**
Yes — set `mode` to `byUrl` and supply one or more Goodmoves vacancy URLs in `startUrls`. `startUrls` is required in this mode; the run stops with a clear status message if it's left empty.

**How does the location + radius filter work?**
Goodmoves only applies its location filter server-side when the search is paired with map coordinates (normally supplied by a JS location-picker widget on the live site). This scraper resolves `location` to coordinates itself using the free OpenStreetMap Nominatim geocoding service (no API key, no extra cost) and passes them straight through with your chosen `radius`. If a location can't be resolved (e.g. a typo or a non-UK place), the run continues without the location filter and the run's status message explains why.

**How often is data updated?**
The scraper fetches live data from Goodmoves each time it runs. For up-to-date listings, schedule the actor to run daily.

# Actor input Schema

## `mode` (type: `string`):

How to find jobs.

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

One or more Goodmoves vacancy URLs (https://goodmoves.org/vacancy/…).

## `keywords` (type: `string`):

Search terms — job title, skills, or organisation name.

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

Town, city or postcode to search near (UK/Scotland). Resolved to coordinates via free geocoding — see `radius`.

## `radius` (type: `string`):

Distance around `location` to include results. Only applied when `location` is set; ignored otherwise.

## `sector` (type: `string`):

Filter by charitable sector.

## `role` (type: `string`):

Filter by job role category.

## `workplaceType` (type: `string`):

Filter by work arrangement.

## `workingPattern` (type: `string`):

Filter by employment pattern.

## `region` (type: `string`):

Filter to a specific geographic region.

## `sortBy` (type: `string`):

Order of search results.

## `salaryMin` (type: `integer`):

Only return jobs with salary at or above this value.

## `salaryMax` (type: `integer`):

Only return jobs with salary at or below this value.

## `maxItems` (type: `integer`):

Maximum number of job listings to return.

## Actor input object example

```json
{
  "mode": "search",
  "startUrls": [],
  "radius": "10",
  "sector": "all",
  "role": "all",
  "workplaceType": "all",
  "workingPattern": "all",
  "region": "all",
  "sortBy": "relevance",
  "maxItems": 20
}
```

# 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 = {
    "mode": "search",
    "startUrls": [],
    "radius": "10",
    "sector": "all",
    "role": "all",
    "workplaceType": "all",
    "workingPattern": "all",
    "region": "all",
    "sortBy": "relevance",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/goodmoves-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 = {
    "mode": "search",
    "startUrls": [],
    "radius": "10",
    "sector": "all",
    "role": "all",
    "workplaceType": "all",
    "workingPattern": "all",
    "region": "all",
    "sortBy": "relevance",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/goodmoves-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 '{
  "mode": "search",
  "startUrls": [],
  "radius": "10",
  "sector": "all",
  "role": "all",
  "workplaceType": "all",
  "workingPattern": "all",
  "region": "all",
  "sortBy": "relevance",
  "maxItems": 20
}' |
apify call crawlerbros/goodmoves-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Goodmoves Scraper",
        "description": "Scrape charity, nonprofit and public sector job listings from Goodmoves - Scotland's leading third-sector job board. Search by keyword, location, sector, role, workplace type and more.",
        "version": "1.0",
        "x-build-id": "ioQZeemp0Wh0SQT32"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~goodmoves-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-goodmoves-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/crawlerbros~goodmoves-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-goodmoves-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/crawlerbros~goodmoves-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-goodmoves-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byUrl"
                        ],
                        "type": "string",
                        "description": "How to find jobs.",
                        "default": "search"
                    },
                    "startUrls": {
                        "title": "Start URLs (mode=byUrl)",
                        "type": "array",
                        "description": "One or more Goodmoves vacancy URLs (https://goodmoves.org/vacancy/…).",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Search terms — job title, skills, or organisation name."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Town, city or postcode to search near (UK/Scotland). Resolved to coordinates via free geocoding — see `radius`."
                    },
                    "radius": {
                        "title": "Search Radius (requires location)",
                        "enum": [
                            "5",
                            "10",
                            "25",
                            "50"
                        ],
                        "type": "string",
                        "description": "Distance around `location` to include results. Only applied when `location` is set; ignored otherwise.",
                        "default": "10"
                    },
                    "sector": {
                        "title": "Sector",
                        "enum": [
                            "all",
                            "animals",
                            "arts-culture-sport",
                            "children-early-years",
                            "community-development-social-enterprise",
                            "disability",
                            "environment",
                            "equality-law",
                            "health",
                            "housing-homelessness",
                            "international-development",
                            "learning",
                            "local",
                            "local-infrastructure-organisation",
                            "older-people",
                            "other",
                            "regeneration-enterprise",
                            "social-care",
                            "volunteers",
                            "youth"
                        ],
                        "type": "string",
                        "description": "Filter by charitable sector.",
                        "default": "all"
                    },
                    "role": {
                        "title": "Role",
                        "enum": [
                            "all",
                            "administration",
                            "board-membership-trustee",
                            "carer-professions",
                            "communications-marketing",
                            "development",
                            "facilities",
                            "finance-accountancy",
                            "fundraising",
                            "healthcare-professionals",
                            "human-resources",
                            "information-technology",
                            "information-advice-advocacy",
                            "management",
                            "other",
                            "policy-research",
                            "retail-sales",
                            "senior-appointments"
                        ],
                        "type": "string",
                        "description": "Filter by job role category.",
                        "default": "all"
                    },
                    "workplaceType": {
                        "title": "Workplace Type",
                        "enum": [
                            "all",
                            "Remote",
                            "Hybrid",
                            "On site"
                        ],
                        "type": "string",
                        "description": "Filter by work arrangement.",
                        "default": "all"
                    },
                    "workingPattern": {
                        "title": "Working Pattern",
                        "enum": [
                            "all",
                            "full-time",
                            "part-time",
                            "management-board"
                        ],
                        "type": "string",
                        "description": "Filter by employment pattern.",
                        "default": "all"
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "all",
                            "edinburgh-lothians",
                            "glasgow-clyde",
                            "tayside",
                            "central-scotland",
                            "fife",
                            "highlands",
                            "ayrshire-arran",
                            "dumfries-galloway",
                            "grampian",
                            "argyll-bute",
                            "scottish-borders",
                            "na-h-eileanan-siar",
                            "london",
                            "east-midlands",
                            "south-central",
                            "south-west",
                            "west-midlands"
                        ],
                        "type": "string",
                        "description": "Filter to a specific geographic region.",
                        "default": "all"
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "closing_soon",
                            "newest",
                            "oldest",
                            "salary_high",
                            "salary_low"
                        ],
                        "type": "string",
                        "description": "Order of search results.",
                        "default": "relevance"
                    },
                    "salaryMin": {
                        "title": "Min Salary (£)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Only return jobs with salary at or above this value."
                    },
                    "salaryMax": {
                        "title": "Max Salary (£)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Only return jobs with salary at or below this value."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of job listings to return.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
