# NHS Jobs Scraper (`unfenced-group/nhsjobs-uk-scraper`) Actor

Scrape NHS Jobs for structured UK healthcare listings. Filter by pay band, staff group, contract type, location. No API key needed.

- **URL**: https://apify.com/unfenced-group/nhsjobs-uk-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.79 / 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

## NHS Jobs Scraper

![Banner](https://i.imgur.com/VcCeZDl.png)

Extract structured job listings from [NHS Jobs](https://www.jobs.nhs.uk) — the official recruitment platform for the UK's National Health Service, with over 60,000 active vacancies across hospitals, GP practices, mental health trusts, community care, and NHS support services. No API key required.

---

### Why this scraper?

#### 🏥 Complete NHS Job Board Coverage
Access the full NHS Jobs database — clinical, administrative, scientific, and medical roles across England, Wales, Scotland, and Northern Ireland.

#### 🎯 NHS-Specific Filters
Filter by NHS pay band (Band 2–9, Consultant, VSM), staff group (Nursing & Midwifery, Allied Health, Medical & Dental, and more), contract type, and working pattern in a single run.

#### 📄 Full Job Descriptions
Optionally fetch complete job summaries, main duties, responsibilities, and employer information from each listing's detail page.

#### 💷 Structured Salary & Pay Band Data
Salary strings are parsed into `salaryMin`, `salaryMax`, `salaryPeriod`, and `currency` fields. NHS-specific `paySchemeType` (e.g. *Agenda for change*) and `payBand` (e.g. *Band 6*) are extracted directly from each listing.

#### 🔁 Repost Detection
Cross-run deduplication tracks job IDs for 90 days — `isRepost: true` flags re-advertised vacancies, and `originalPublishDate` shows when they first appeared.

#### 📍 Location & Distance Search
Search by city, postcode, or region with configurable distance radii (5–100 miles). Results include structured `city` and `postcode` fields extracted from the listing.

---

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQuery` | string | `""` | Keywords to search, e.g. `"nurse"`, `"radiographer"`, `"consultant"` |
| `location` | string | `""` | City, town, county, or postcode, e.g. `"London"`, `"Manchester"`, `"SW1A 1AA"` |
| `distance` | integer | — | Search radius in miles: `5`, `10`, `20`, `30`, `50`, `100` |
| `contractTypes` | array | `[]` | Filter by contract: `"Permanent"`, `"Fixed-Term"`, `"Locum"`, `"Bank"`, etc. |
| `workingPatterns` | array | `[]` | Filter: `"full-time"`, `"part-time"`, `"remote-working"`, `"flexible-working"`, etc. |
| `staffGroups` | array | `[]` | NHS staff group: `"NURSING_AND_MIDWIFERY_REGD"`, `"MEDICAL_AND_DENTAL"`, etc. |
| `payBands` | array | `[]` | NHS pay band: `"BAND_5"`, `"BAND_6"`, `"CONSULTANT"`, `"VERY_SENIOR_MANAGER"`, etc. |
| `sortBy` | string | `"publicationDateDesc"` | Sort order: `"publicationDateDesc"`, `"closingDate"`, `"salaryAsc"`, `"salaryDesc"` |
| `maxResults` | integer | `100` | Maximum number of results to return |
| `fetchDetails` | boolean | `true` | Fetch full job description and contact details from each listing |
| `skipReposts` | boolean | `false` | Skip jobs already seen in previous runs |
| `daysOld` | integer | — | Only return jobs posted within this many days |
| `startUrls` | array | `[]` | Scrape specific NHS Jobs listing URLs directly |
| `requestDelayMs` | integer | `1000` | Minimum delay between requests (ms) |

---

### Output schema

Each result contains:

```json
{
    "id": "A2026-26-0001",
    "url": "https://www.jobs.nhs.uk/candidate/jobadvert/A2026-26-0001",
    "title": "Staff Nurse",
    "company": "University College London Hospitals NHS Foundation Trust",
    "location": "London WC1E 6BT",
    "city": "London",
    "postcode": "WC1E 6BT",
    "country": "GB",
    "salaryRaw": "£35,964 - £43,780 per annum",
    "salaryMin": 35964,
    "salaryMax": 43780,
    "salaryPeriod": "YEAR",
    "currency": "GBP",
    "contractType": "Permanent",
    "workingPattern": "Full-time",
    "publishDate": "2026-04-28",
    "publishDateISO": "2026-04-28",
    "closingDate": "2026-05-15",
    "closingDateISO": "2026-05-15",
    "referenceNumber": "A2026-26-0001",

    "paySchemeType": "Agenda for change",
    "payBand": "Band 6",
    "salaryDetail": "£35,964 - £43,780 per annum including HCAS",
    "fullAddress": "235 Euston Road, London, WC1E 6BT",
    "tracJobReference": "UCL-26-0001",
    "employerWebsite": "https://www.uclh.nhs.uk",

    "contactTitle": "Recruitment Team",

    "descriptionHtml": "<h2>Job summary</h2><p>...</p>",
    "descriptionText": "Job summary ...",
    "descriptionMarkdown": "### Job summary\n\n...",
    "summary": "First 200 characters of the job description...",

    "contentHash": "a1b2c3d4e5f60718",
    "source": "jobs.nhs.uk",
    "scrapedAt": "2026-05-06T12:00:00.000Z",
    "isRepost": false,
    "originalPublishDate": null,
    "originalUrl": null
}
````

#### Field reference

| Field | Source | Notes |
|---|---|---|
| `id` | List page | NHS Jobs reference number (e.g. `C9395-26-0262`) |
| `url` | List page | Canonical detail page URL |
| `title` | List + detail | Job title |
| `company` | List + detail | NHS trust or employer name |
| `location` | List | Raw location string as shown on listing |
| `city` | List | City/town parsed from location |
| `postcode` | List | UK postcode parsed from location |
| `country` | Constant | Always `"GB"` |
| `salaryRaw` | List | Raw salary string, e.g. `"£39,959 to £48,117 a year"` |
| `salaryMin` | Parsed | Minimum salary as integer |
| `salaryMax` | Parsed | Maximum salary as integer |
| `salaryPeriod` | Parsed | `"YEAR"`, `"MONTH"`, `"WEEK"`, `"DAY"`, or `"HOUR"` |
| `currency` | Constant | Always `"GBP"` |
| `contractType` | List + detail | e.g. `"Permanent"`, `"Fixed-Term"`, `"Secondment"` |
| `workingPattern` | List + detail | e.g. `"Full-time"`, `"Part-time"`, `"Flexible working"` |
| `publishDate` | List + detail | Publication date (ISO `YYYY-MM-DD`) |
| `closingDate` | List + detail | Application closing date (ISO `YYYY-MM-DD`) |
| `referenceNumber` | List | Same as `id` |
| `paySchemeType` | Detail only | NHS pay scheme, e.g. `"Agenda for change"`, `"Medical and dental"` |
| `payBand` | Detail only | NHS Agenda for Change band, e.g. `"Band 5"`, `"Band 8a"` |
| `salaryDetail` | Detail only | Full salary string from detail page (may include HCAS supplements) |
| `fullAddress` | Detail only | Employer's full address as comma-separated string |
| `tracJobReference` | Detail only | TRAC system reference number |
| `employerWebsite` | Detail only | Employer's website URL |
| `contactTitle` | Detail only | Job title of the hiring contact |
| `descriptionHtml` | Detail only | Full job description as HTML |
| `descriptionText` | Detail only | Full job description as plain text |
| `descriptionMarkdown` | Detail only | Full job description as Markdown |
| `summary` | Detail only | First 200 characters of plain-text description |
| `contentHash` | Generated | MD5 hash of the job ID for deduplication |
| `source` | Constant | Always `"jobs.nhs.uk"` |
| `scrapedAt` | Generated | ISO 8601 timestamp of when the run started |
| `isRepost` | Dedup | `true` if this job was seen in a previous run |
| `originalPublishDate` | Dedup | First publish date seen (populated when `isRepost: true`) |
| `originalUrl` | Dedup | Original URL (populated when `isRepost: true`) |

> **Note:** Fields marked *Detail only* are `null` when `fetchDetails: false`.

***

### Example inputs

#### 1. Band 6 nurses in London

```json
{
    "searchQuery": "nurse",
    "location": "London",
    "distance": 20,
    "payBands": ["BAND_6"],
    "maxResults": 200,
    "fetchDetails": true
}
```

#### 2. All new listings since yesterday

```json
{
    "sortBy": "publicationDateDesc",
    "daysOld": 1,
    "maxResults": 500,
    "fetchDetails": false
}
```

#### 3. Permanent Allied Health roles

```json
{
    "contractTypes": ["Permanent"],
    "staffGroups": ["ALLIED_HEALTH_PROF"],
    "maxResults": 300,
    "fetchDetails": true
}
```

#### 4. Regional search

```json
{
    "location": "Birmingham",
    "distance": 30,
    "staffGroups": ["ALLIED_HEALTH_PROF"],
    "sortBy": "closingDate",
    "maxResults": 150
}
```

#### 5. Specific listings by URL

```json
{
    "startUrls": [
        { "url": "https://www.jobs.nhs.uk/candidate/jobadvert/A2026-26-0001" }
    ],
    "fetchDetails": true
}
```

***

### 💰 Pricing

**$0.79 per 1,000 results** — you only pay for successfully retrieved listings.
Failed retries and filtered reposts are never charged.

| Results | Cost |
|---------|------|
| 100 | ~$0.08 |
| 1,000 | ~$0.79 |
| 10,000 | ~$7.90 |
| 100,000 | ~$79.00 |

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Use the **Max results** cap in the input to control your spend exactly.

***

### Performance

| Run size | Mode | Approx. time |
|---|---|---|
| 100 results | `fetchDetails: false` | ~30 seconds |
| 100 results | `fetchDetails: true` | ~3 minutes |
| 1,000 results | `fetchDetails: false` | ~5 minutes |
| 1,000 results | `fetchDetails: true` | ~25 minutes |
| 10,000 results | `fetchDetails: false` | ~50 minutes |

***

### Known limitations

- A maximum of 10 results are available per search page; deep pagination (1,000+ results) requires additional time.
- Job descriptions are only available in full when `fetchDetails: true` is set.
- The NHS Jobs platform does not expose salary data for all listings — some roles show `"Depends on experience"` or `"See advert"`.
- Vacancies from devolved nations (Scotland, Wales, Northern Ireland) may have limited availability depending on the trust's recruitment platform.

***

### Technical details

- **Source:** jobs.nhs.uk — Official NHS recruitment platform for England and devolved nations
- **Architecture:** HTTP-only, JSON-HTML (regex on stable `id`/`data-test` attributes used by NHS's own E2E tests)
- **Memory:** 256 MB
- **Repost storage:** KeyValueStore `nhsjobs-uk-job-dedup`, 90-day TTL
- **Retry:** Automatic retry on network errors, exponential backoff, 3 attempts per request

***

### Additional services

Need a custom actor, additional filters, scheduled runs, or integration support?
Send an email to <info@unfencedgroup.nl> — we build on request.

***

*Built by [unfenced-group](https://apify.com/unfenced-group) · Issues? Open a ticket or send a message.*

# Actor input Schema

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

Keyword(s) to search for, e.g. 'nurse', 'consultant', 'radiographer'.

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

City, town, county, or postcode to search in, e.g. 'London', 'Manchester', 'SW1A 1AA'.

## `distance` (type: `integer`):

Search radius in miles from the location. Options: 5, 10, 20, 30, 50, 100.

## `contractTypes` (type: `array`):

Filter by contract type. Leave empty for all types.

## `workingPatterns` (type: `array`):

Filter by working pattern. Leave empty for all patterns.

## `staffGroups` (type: `array`):

Filter by NHS staff group. Leave empty for all groups.

## `payBands` (type: `array`):

Filter by NHS Agenda for Change pay band. Leave empty for all bands.

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

Sort results by this field.

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

Maximum number of job listings to return.

## `fetchDetails` (type: `boolean`):

Fetch full job description, responsibilities, and extended details from each job's detail page. Slower but richer output.

## `skipReposts` (type: `boolean`):

Skip jobs already seen in previous runs (based on 90-day history).

## `daysOld` (type: `integer`):

Only return jobs posted within this many days. Leave empty for no date filter.

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

Optional list of specific NHS Jobs listing URLs to scrape directly.

## `requestDelayMs` (type: `integer`):

Minimum delay between requests in milliseconds. Increase to be more polite to the server.

## Actor input object example

```json
{
  "searchQuery": "",
  "location": "",
  "contractTypes": [],
  "workingPatterns": [],
  "staffGroups": [],
  "payBands": [],
  "sortBy": "publicationDateDesc",
  "maxResults": 100,
  "fetchDetails": true,
  "skipReposts": false,
  "startUrls": [],
  "requestDelayMs": 1000
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/nhsjobs-uk-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/nhsjobs-uk-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 '{}' |
apify call unfenced-group/nhsjobs-uk-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NHS Jobs Scraper",
        "description": "Scrape NHS Jobs for structured UK healthcare listings. Filter by pay band, staff group, contract type, location. No API key needed.",
        "version": "0.0",
        "x-build-id": "c0z987k6PcfIUTAdb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~nhsjobs-uk-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-nhsjobs-uk-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/unfenced-group~nhsjobs-uk-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-nhsjobs-uk-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/unfenced-group~nhsjobs-uk-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-nhsjobs-uk-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": {
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword(s) to search for, e.g. 'nurse', 'consultant', 'radiographer'.",
                        "default": ""
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, town, county, or postcode to search in, e.g. 'London', 'Manchester', 'SW1A 1AA'.",
                        "default": ""
                    },
                    "distance": {
                        "title": "Distance (miles)",
                        "type": "integer",
                        "description": "Search radius in miles from the location. Options: 5, 10, 20, 30, 50, 100."
                    },
                    "contractTypes": {
                        "title": "Contract types",
                        "type": "array",
                        "description": "Filter by contract type. Leave empty for all types.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "workingPatterns": {
                        "title": "Working patterns",
                        "type": "array",
                        "description": "Filter by working pattern. Leave empty for all patterns.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "staffGroups": {
                        "title": "Staff groups",
                        "type": "array",
                        "description": "Filter by NHS staff group. Leave empty for all groups.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "payBands": {
                        "title": "NHS Pay Bands",
                        "type": "array",
                        "description": "Filter by NHS Agenda for Change pay band. Leave empty for all bands.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "publicationDateDesc",
                            "closingDate",
                            "salaryAsc",
                            "salaryDesc"
                        ],
                        "type": "string",
                        "description": "Sort results by this field.",
                        "default": "publicationDateDesc"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of job listings to return.",
                        "default": 100
                    },
                    "fetchDetails": {
                        "title": "Fetch detail pages",
                        "type": "boolean",
                        "description": "Fetch full job description, responsibilities, and extended details from each job's detail page. Slower but richer output.",
                        "default": true
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Skip jobs already seen in previous runs (based on 90-day history).",
                        "default": false
                    },
                    "daysOld": {
                        "title": "Max age (days)",
                        "type": "integer",
                        "description": "Only return jobs posted within this many days. Leave empty for no date filter."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional list of specific NHS Jobs listing URLs to scrape directly.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "requestDelayMs": {
                        "title": "Request delay (ms)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum delay between requests in milliseconds. Increase to be more polite to the server.",
                        "default": 1000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
