# VAS Sheffield Jobs Scraper (`memo23/vassheffield-scraper`) Actor

Scrape voluntary-sector vacancies from jobs.vas.org.uk (Voluntary Action Sheffield) via WP-JSON. Title, sector taxonomy, posted date, external apply URL extracted from listing body, full description. ~25 live vacancies in one request. JSON or CSV out, billed per result

- **URL**: https://apify.com/memo23/vassheffield-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs, Agents, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## VAS Sheffield Jobs Scraper

**Scrape voluntary-sector vacancies from jobs.vas.org.uk — Voluntary Action Sheffield's dedicated jobs board.** Pulls every live vacancy via the public WP-JSON REST API: title, sector taxonomy, posted date, full description HTML, featured image, and the external apply URL extracted from the listing body. JSON or CSV out, no compute charge per run, just per result.

#### How it works

![How VAS Sheffield Jobs Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-vassheffield.png)

#### ✨ Why use this scraper?

Building a Sheffield / South Yorkshire voluntary-sector dashboard? Tracking nonprofit hiring across charities, faith-based orgs, and community groups in the city? Need a clean dataset without manual scrolling?

- 🎯 **Three starting points.** The `/current-vacancies/` page, a direct `/vacancies/<slug>/` URL, or the WP-JSON endpoint — all auto-classified.
- ⚡ **WP-JSON REST API as the data source.** One fetch returns every active vacancy (~25 live at any time).
- 🏷️ **Sector taxonomy inline.** `Administration`, `Community Development`, `Fundraising`, `Project Work`, etc. embedded via WP-JSON `_embed` — no extra HTTP calls.
- 📧 **External apply URL captured.** VAS posts often link out to the org's own ATS / vacancy page — the body's first outbound link is extracted as `externalApplyUrl`.
- 🇬🇧 **Sheffield-specific.** Voluntary Action Sheffield is the city's CVS — every vacancy is local to Sheffield / South Yorkshire.
- 📤 **Clean exports.** One row per vacancy, all fields inline. JSON + CSV exported automatically.

#### 🎯 Use cases

| Team | What they build |
|------|-----------------|
| **Sheffield CVS / regional CVS network** | Cross-region nonprofit recruitment comparisons |
| **Voluntary sector recruiters** | Daily new-vacancy feeds across the city |
| **Workforce strategy / funders** | Sector-by-sector hiring trends in Sheffield voluntary orgs |
| **Researchers** | Sheffield third-sector labour-market datasets |
| **Job aggregators** | External apply URLs (typically charity websites, JotForm, charity ATS) for redirect-and-track |

#### 📥 Supported inputs

| URL pattern | Behaviour |
|---|---|
| `https://jobs.vas.org.uk/current-vacancies/` | **Full listing** — scrapes every live vacancy |
| `https://jobs.vas.org.uk/vacancies/<slug>/` | **Single vacancy** — translates to slug-filtered WP-JSON query |
| `https://jobs.vas.org.uk/wp-json/wp/v2/vacancies` | **WP-JSON endpoint** — pass-through |
| `https://jobs.vas.org.uk/wp-json/wp/v2/vacancies/<id>` | **WP-JSON single record** — translates to `?include=<id>` |

Leave `startUrls` empty to scrape every live vacancy.

**Not supported:** filtering by sector via URL query string; hosts outside `jobs.vas.org.uk`.

#### 🔄 How it works

1. **Classify each `startUrl`** and translate it to the canonical `/wp-json/wp/v2/vacancies` shape.
2. **Fetch the WP-JSON endpoint** — typically just 1 request, since VAS has ~25 vacancies (fits in one page of 100).
3. **Parse each vacancy item** — title, content HTML, `sector` taxonomy, featured-media URL, author, dates.
4. **Extract the apply target** — first outbound `mailto:` → `applyEmail`, else first outbound URL → `externalApplyUrl`.
5. **Push one normalised row per vacancy** to the dataset.

#### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `["https://jobs.vas.org.uk/current-vacancies/"]` | Browser URLs, single-vacancy URLs, or WP-JSON endpoints. Empty = scrape everything. |
| `enrichTaxonomies` | boolean | `true` | When `true`, embeds `sector` term names + featured image via WP-JSON `_embed`. Zero extra HTTP cost. |
| `maxItems` | integer | `1000` | Hard cap on rows pushed (~25 live). |
| `maxConcurrency` / `minConcurrency` | integer | `5` / `1` | Parallel WP-JSON page-fetch limits. |
| `maxRequestRetries` | integer | `5` | Retries before a failed request is given up. |
| `proxy` | object | No proxy | Site does not anti-bot — proxy optional. |

#### 📊 Output overview

Each scraped vacancy is one **single dataset row** of `type: "job"`. Row count equals vacancy count exactly.

#### 📦 Output sample

```json
{
  "type": "job",
  "source": "jobs.vas.org.uk",
  "jobId": "12345",
  "slug": "administrator-finance-officer",
  "jobUrl": "https://jobs.vas.org.uk/vacancies/administrator-finance-officer/",
  "wpJsonUrl": "https://jobs.vas.org.uk/wp-json/wp/v2/vacancies/12345",
  "title": "Administrator/Finance Officer",
  "description": "<p><a href=\"http://www.thefurnival.org/vacancies\">www.thefurnival.org/vacancies</a></p>",
  "descriptionText": "www.thefurnival.org/vacancies",
  "companyName": null,
  "companyWebsite": "http://www.thefurnival.org/vacancies",
  "companyDomain": "thefurnival.org",
  "location": "Sheffield, South Yorkshire",
  "remote": false,
  "salary": null,
  "sectors": ["Administration", "Community Development"],
  "categories": ["Administration", "Community Development"],
  "employmentTypes": [],
  "contractType": null,
  "status": "publish",
  "postedDate": "2026-05-19T20:14:23Z",
  "modifiedDate": null,
  "applyType": "external",
  "applyUrl": "https://jobs.vas.org.uk/vacancies/administrator-finance-officer/",
  "applyEmail": null,
  "externalApplyUrl": "http://www.thefurnival.org/vacancies",
  "featuredImageUrl": null,
  "authorId": 1,
  "authorName": null,
  "scrapedAt": "2026-05-20T00:13:00.000Z"
}
````

#### 🗂 Key output fields

| Group | Fields |
|---|---|
| **Identifiers** | `type`, `source`, `jobId`, `slug`, `jobUrl`, `wpJsonUrl`, `scrapedAt` |
| **Role** | `title`, `description` (HTML), `descriptionText` (plain) |
| **Dates** | `postedDate` (ISO), `modifiedDate` (ISO) |
| **Employer** | `companyName` (often null — VAS doesn't expose employer field), `companyWebsite` (≈ apply URL), `companyDomain` |
| **Location** | `location` (always Sheffield, South Yorkshire), `remote` |
| **Taxonomies** | `sectors[]`, `categories[]` (mirror of `sectors`), `employmentTypes[]`, `contractType` |
| **Apply flow** | `applyType` (`email` / `external` / `internal`), `applyUrl`, `applyEmail`, `externalApplyUrl` |
| **WordPress meta** | `authorId`, `authorName`, `featuredImageUrl` |

#### ❓ FAQ

**Why is `companyName` always null?**
VAS Sheffield's WP custom post type is plain — it doesn't include WP Job Manager's `_company_name` meta. The employer is usually in the linked external page (e.g. `thefurnival.org/vacancies`). We extract the URL but don't follow it.

**Why is `salary` always null?**
Same reason — no salary meta field. Salary information lives in the PDF or microsite the `externalApplyUrl` points to.

**Can I get the full job spec?**
Not directly — but the `externalApplyUrl` typically links to a charity's vacancy page or a downloadable PDF with the full spec.

**Can I scrape private pages or applicant data?**
No. Only the public WP-JSON endpoint.

**How do I limit results?**
Set `maxItems`. VAS rarely has more than 25 live vacancies, so `maxItems: 100` covers everything safely.

#### 💬 Support

- For issues or feature requests, please use the **Issues** tab on the actor's Apify Console page.
- Author's website: <https://muhamed-didovic.github.io/>
- Email: <muhamed.didovic@gmail.com>

#### 🛠 Additional services

- Custom output shape, additional fields, or one-off datasets: <muhamed.didovic@gmail.com>
- Similar scrapers for other CVS / volunteer hubs (Doing Good Leeds, VA Rotherham, York CVS, Barnsley CVS, BCVS): drop an email.
- For API access (no Apify fee, just usage): <muhamed.didovic@gmail.com>

#### 🔎 Explore more scrapers

See other scrapers at [memo23's Apify profile](https://apify.com/memo23) — covering job boards, real estate, social media, and more.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Voluntary Action Sheffield (VAS), jobs.vas.org.uk, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only the publicly available WP-JSON REST endpoint and public vacancy pages on jobs.vas.org.uk — no authenticated endpoints, recruiter-only features, or content behind a login. Users are responsible for ensuring their use complies with jobs.vas.org.uk's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.

***

### SEO Keywords

vas sheffield scraper, scrape jobs.vas.org.uk, voluntary action sheffield jobs api, sheffield voluntary sector jobs scraper, sheffield charity jobs scraper, south yorkshire charity recruitment data, sheffield third sector jobs api, Apify vas sheffield, sheffield nonprofit jobs scraper, sheffield community sector jobs, wp-json scraper, voluntary sector hiring trends, sheffield volunteer hub api, charityjob alternative scraper, doing good leeds alternative scraper, barnsleycvs alternative scraper, va rotherham alternative scraper, uk cvs jobs scraper, voluntary sector recruitment data uk

# Actor input Schema

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

Supported shapes: `https://jobs.vas.org.uk/current-vacancies/`, `https://jobs.vas.org.uk/vacancies/<slug>/`, `https://jobs.vas.org.uk/wp-json/wp/v2/vacancies`, or `.../vacancies/<id>`. Leave empty to scrape every vacancy.

## `enrichTaxonomies` (type: `boolean`):

When enabled (recommended), each row carries the decoded `sector` term names (e.g. `Administration`, `Community Development`) plus featured image URL. No extra HTTP requests — uses WP-JSON `_embed`.

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

Hard cap on rows pushed. VAS Sheffield typically lists ~25 live vacancies — set to 100+ to scrape everything.

## `maxConcurrency` (type: `integer`):

Maximum WP-JSON pages fetched in parallel.

## `minConcurrency` (type: `integer`):

Minimum WP-JSON pages fetched in parallel.

## `maxRequestRetries` (type: `integer`):

Number of retries before a failed WP-JSON request is given up.

## `proxy` (type: `object`):

jobs.vas.org.uk does not anti-bot — proxy is optional. Defaults to no proxy.

## Actor input object example

```json
{
  "startUrls": [
    "https://jobs.vas.org.uk/current-vacancies/"
  ],
  "enrichTaxonomies": true,
  "maxItems": 1000,
  "maxConcurrency": 5,
  "minConcurrency": 1,
  "maxRequestRetries": 5,
  "proxy": {
    "useApifyProxy": 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 = {
    "startUrls": [
        "https://jobs.vas.org.uk/current-vacancies/"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/vassheffield-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 = {
    "startUrls": ["https://jobs.vas.org.uk/current-vacancies/"],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/vassheffield-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 '{
  "startUrls": [
    "https://jobs.vas.org.uk/current-vacancies/"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call memo23/vassheffield-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "VAS Sheffield Jobs Scraper",
        "description": "Scrape voluntary-sector vacancies from jobs.vas.org.uk (Voluntary Action Sheffield) via WP-JSON. Title, sector taxonomy, posted date, external apply URL extracted from listing body, full description. ~25 live vacancies in one request. JSON or CSV out, billed per result",
        "version": "0.0",
        "x-build-id": "T3Rt4tJp8fNiE5eHd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~vassheffield-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-vassheffield-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/memo23~vassheffield-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-vassheffield-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/memo23~vassheffield-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-vassheffield-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": {
                    "startUrls": {
                        "title": "jobs.vas.org.uk URLs",
                        "type": "array",
                        "description": "Supported shapes: `https://jobs.vas.org.uk/current-vacancies/`, `https://jobs.vas.org.uk/vacancies/<slug>/`, `https://jobs.vas.org.uk/wp-json/wp/v2/vacancies`, or `.../vacancies/<id>`. Leave empty to scrape every vacancy.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichTaxonomies": {
                        "title": "Embed sector taxonomy + featured media",
                        "type": "boolean",
                        "description": "When enabled (recommended), each row carries the decoded `sector` term names (e.g. `Administration`, `Community Development`) plus featured image URL. No extra HTTP requests — uses WP-JSON `_embed`.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Maximum vacancies to scrape",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on rows pushed. VAS Sheffield typically lists ~25 live vacancies — set to 100+ to scrape everything.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum WP-JSON pages fetched in parallel.",
                        "default": 5
                    },
                    "minConcurrency": {
                        "title": "Min concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Minimum WP-JSON pages fetched in parallel.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of retries before a failed WP-JSON request is given up.",
                        "default": 5
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "jobs.vas.org.uk does not anti-bot — proxy is optional. Defaults to no proxy.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
