# Cwjobs UK $1💰 URL Search | Keyword Filtering | Rich Output (`abotapi/cwjobs-scraper`) Actor

From $1/1k. Scrape tech and IT jobs from CWJobs.co.uk into clean, structured data. Search by keyword, location, salary, work type, date, and sort order, or use job/listing URLs. Returns salary, GPS location, full description, dates, and rich employer details.

- **URL**: https://apify.com/abotapi/cwjobs-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Jobs, Lead generation, Developer tools
- **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.
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.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

## CWJobs Scraper - UK Tech Jobs, Salaries, Employers and Company Profiles

Scrape tech and IT job listings from CWJobs.co.uk into clean, structured rows. Search by keyword and location with filters for work type, salary, posting date and sort order, or paste listing and job URLs you already have. Every job comes back with the title, salary, location with GPS, full description, posting and expiry dates, and a rich employer profile (company size, founded year, industry, total jobs, and a profile video where available).

### Why this scraper

- 40+ fields per job, including employer profile data (company size, founded year, industry, jobs count, profile video) that other CWJobs scrapers do not return.
- Listing-first design walks about 25 jobs per request, so it is fast and light on connection usage.
- Structured salary parsing: minimum, maximum, currency and period pulled from the salary band.
- GPS coordinates, postal code and full address on every job that publishes them.
- Two modes: keyword and location search, or direct URL input (listing pages and single job pages).
- Server-side filters for work type, minimum salary, posting date and sort order, all verified to narrow results.
- Resilient connections: automatic retry on refused requests, connection rotation across regions, and a backup route, with a clear warning when a paid proxy is recommended.
- Optional detail fetching: turn it off for a faster, leaner run that still returns the core listing fields.

### Data you get

> Sample shape, values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| jobId | "00000001" |
| externalId | "00000000-0000-0000-0000-000000000000" |
| jobUrl | "https://www.cwjobs.co.uk/job/sample-job-title/sample-employer-job00000001" |
| title | "Sample Senior Software Engineer" |
| description | "Full job description HTML appears here when fetchDetails is on." |
| snippet | "Short preview of the job text from the listing card." |
| workType | "Permanent" |
| employmentType | "FULL_TIME" |
| industry | "IT, IT-Software Development" |
| datePosted | "2026-01-01T00:00:00.000Z" |
| validThrough | "2026-02-01T00:00:00.000Z" |
| postedAgo | "3 days ago" |
| isPremium | true |
| isTopJob | false |
| isFreeListing | false |
| directApply | true |
| applyType | "internal" |
| jobLocationType | "TELECOMMUTE" |
| salaryText | "£60,000 - £70,000 per annum" |
| salaryMin | 60000 |
| salaryMax | 70000 |
| salaryCurrency | "GBP" |
| salaryPeriod | "annum" |
| locationText | "Sample Town, Sample Region, AA1, GB" |
| locationLocality | "Sample Town" |
| locationRegion | "Sample Region" |
| locationPostalCode | "AA1" |
| locationCountry | "GB" |
| latitude | 51.5000 |
| longitude | -0.1000 |
| employerName | "Sample Employer" |
| employerId | 0000000 |
| employerLogoUrl | "https://www.cwjobs.co.uk/CompanyLogos/00000000000000000000000000000000.png" |
| employerProfileUrl | "https://www.cwjobs.co.uk/jobs/sample-employer?cmpId=0000000" |
| companyEmployees | "50 - 199" |
| companyFounded | 1999 |
| companyIndustries | ["IT & Internet"] |
| companyJobsCount | 12 |
| employer | { full nested employer profile, including description and videoUrl } |
| scrapedAt | "2026-01-01T00:00:00.000Z" |

### How to use

Basic keyword and location search:

```json
{
  "mode": "search",
  "keywords": ["javascript"],
  "locations": ["london"],
  "maxPages": 3
}
````

Search with filters (permanent roles, at least £60k per year, posted in the last week, newest first):

```json
{
  "mode": "search",
  "keywords": ["data engineer", "devops"],
  "locations": ["london", "manchester"],
  "workType": "permanent",
  "minSalary": 60000,
  "salaryPeriod": "annual",
  "postedWithin": "7",
  "sortBy": "date",
  "maxPages": 5,
  "maxListings": 200
}
```

Lean run, no detail fetching (faster, fewer connections):

```json
{
  "mode": "search",
  "keywords": ["python"],
  "locations": ["remote"],
  "fetchDetails": false,
  "maxPages": 2
}
```

Direct URL input (listing pages and a single job page in one run):

```json
{
  "mode": "url",
  "urls": [
    "https://www.cwjobs.co.uk/jobs/javascript/in-london",
    "https://www.cwjobs.co.uk/jobs/devops/in-manchester",
    "https://www.cwjobs.co.uk/job/sample-job-title/sample-employer-job00000001"
  ],
  "maxPages": 2
}
```

### Input parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| mode | string | "search" | "search" builds listing pages from your keywords and locations; "url" takes URLs you already have. |
| keywords | array | \["javascript"] | Search mode. Job keywords or titles, one per line. Empty lists every job in the chosen locations. |
| locations | array | \["london"] | Search mode. Locations, one per line (e.g. "london", "remote"). Empty searches the whole UK. |
| workType | string | "any" | Filter by contract type: any, permanent, contract, temporary. |
| minSalary | integer | (none) | Only jobs paying at least this amount in the period below. |
| salaryPeriod | string | "annual" | Period for the minimum salary: annual, daily, hourly. |
| postedWithin | string | "any" | Only jobs posted within: any, 1, 3, 7 or 14 days. |
| sortBy | string | "relevance" | "relevance" (site default) or "date" (most recent first). |
| urls | array | (example) | URL mode. Listing URLs or single job URLs. |
| fetchDetails | boolean | true | Open each job page for the full description, GPS, dates, work type and employer profile. Turn off for a leaner run. |
| maxPages | integer | 1 | Listing pages to walk per search or URL (about 25 jobs per page). |
| maxListings | integer | 0 | Maximum jobs across all searches. 0 means unlimited (bounded by maxPages). |
| proxy | object | Residential GB | Connection settings. Residential (United Kingdom) is recommended. |

### Output example

> Sample shape, values are illustrative placeholders, not from a live listing.

```json
{
  "rowType": "job",
  "listingUrl": "https://www.cwjobs.co.uk/jobs/javascript/in-london",
  "jobId": "00000001",
  "externalId": "00000000-0000-0000-0000-000000000000",
  "jobUrl": "https://www.cwjobs.co.uk/job/sample-job-title/sample-employer-job00000001",
  "title": "Sample Senior Software Engineer",
  "description": "Full job description HTML appears here when fetchDetails is on.",
  "workType": "Permanent",
  "industry": "IT, IT-Software Development",
  "datePosted": "2026-01-01T00:00:00.000Z",
  "validThrough": "2026-02-01T00:00:00.000Z",
  "directApply": true,
  "applyType": "internal",
  "salaryText": "£60,000 - £70,000 per annum",
  "salaryMin": 60000,
  "salaryMax": 70000,
  "salaryCurrency": "GBP",
  "salaryPeriod": "annum",
  "locationText": "Sample Town, Sample Region, AA1, GB",
  "locationPostalCode": "AA1",
  "latitude": 51.5000,
  "longitude": -0.1000,
  "employerName": "Sample Employer",
  "employerId": 0000000,
  "companyEmployees": "50 - 199",
  "companyFounded": 1999,
  "companyIndustries": ["IT & Internet"],
  "companyJobsCount": 12,
  "employer": {
    "name": "Sample Employer",
    "employees": "50 - 199",
    "founded": 1999,
    "industries": ["IT & Internet"],
    "jobsCount": 12,
    "description": "Company profile description appears here.",
    "videoUrl": "https://player.vimeo.com/video/000000000"
  },
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}
```

### Plan requirement

CWJobs admits clean UK residential connections most reliably. Apify Residential with country United Kingdom is recommended and is the default. Datacenter connections also work, but a share of datacenter addresses are refused, so the actor retries automatically on a fresh connection; expect a few retries on datacenter. Residential proxy access is included on the Apify Starter plan and above. On the free plan, pick a residential proxy if your account includes it, otherwise the run may return few or no results.

# Actor input Schema

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

How to choose jobs. 'Search' builds listing pages from your keywords and locations. 'Direct URLs' takes CWJobs listing or job URLs you already have.

## `keywords` (type: `array`):

Search mode only. Job keywords or titles, one per line (e.g. 'javascript', 'devops', 'data engineer'). Leave empty to list every job in the chosen locations. Each keyword is combined with each location.

## `locations` (type: `array`):

Search mode only. Locations, one per line (e.g. 'london', 'manchester', 'remote'). Leave empty to search the whole UK. Each location is combined with each keyword.

## `workType` (type: `string`):

Filter by contract type. 'Any' applies no filter.

## `minSalary` (type: `integer`):

Only jobs paying at least this amount (in the salary period below). Leave empty for no salary filter.

## `salaryPeriod` (type: `string`):

The period the minimum salary applies to.

## `postedWithin` (type: `string`):

Only jobs posted within this many days. 'Any time' applies no filter.

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

Result ordering. 'Most recent' sorts by posting date (newest first); 'Relevance' is the site default.

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

URL mode only. CWJobs listing URLs (e.g. https://www.cwjobs.co.uk/jobs/javascript/in-london) or direct job URLs (e.g. https://www.cwjobs.co.uk/job/...-job12345678). Multi-URL supported. Filter fields above are ignored in URL mode; pagination starts at the page in the URL and walks forward.

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

Open each job page for the full description, GPS coordinates, posting and expiry dates, work type, and the rich employer profile (company size, founded year, industry, total jobs, video). Turn off for a faster, leaner run that returns only the fields visible on the listing page.

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

How many listing pages to walk per search or URL (about 25 jobs per page).

## `maxListings` (type: `integer`):

Maximum number of jobs to scrape across all searches. Set 0 for unlimited (bounded by Max listing pages).

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

CWJobs admits UK residential connections reliably. Apify Residential (United Kingdom) is recommended. Datacenter also works but a portion of datacenter IPs are refused, so the actor automatically retries on a fresh connection; expect a few retries. The actor rotates connections, falls back across countries, and uses a backup route if the primary keeps getting refused.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "javascript"
  ],
  "locations": [
    "london"
  ],
  "workType": "any",
  "salaryPeriod": "annual",
  "postedWithin": "any",
  "sortBy": "relevance",
  "urls": [
    "https://www.cwjobs.co.uk/jobs/javascript/in-london"
  ],
  "fetchDetails": true,
  "maxPages": 1,
  "maxListings": 0,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "keywords": [
        "javascript"
    ],
    "locations": [
        "london"
    ],
    "urls": [
        "https://www.cwjobs.co.uk/jobs/javascript/in-london"
    ],
    "maxPages": 1,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/cwjobs-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 = {
    "keywords": ["javascript"],
    "locations": ["london"],
    "urls": ["https://www.cwjobs.co.uk/jobs/javascript/in-london"],
    "maxPages": 1,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/cwjobs-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 '{
  "keywords": [
    "javascript"
  ],
  "locations": [
    "london"
  ],
  "urls": [
    "https://www.cwjobs.co.uk/jobs/javascript/in-london"
  ],
  "maxPages": 1,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call abotapi/cwjobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cwjobs UK $1💰 URL Search | Keyword Filtering | Rich Output",
        "description": "From $1/1k. Scrape tech and IT jobs from CWJobs.co.uk into clean, structured data. Search by keyword, location, salary, work type, date, and sort order, or use job/listing URLs. Returns salary, GPS location, full description, dates, and rich employer details.",
        "version": "1.0",
        "x-build-id": "G74kvk7AnmM4prq4E"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~cwjobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-cwjobs-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/abotapi~cwjobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-cwjobs-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/abotapi~cwjobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-cwjobs-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": "Start mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "How to choose jobs. 'Search' builds listing pages from your keywords and locations. 'Direct URLs' takes CWJobs listing or job URLs you already have.",
                        "default": "search"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Search mode only. Job keywords or titles, one per line (e.g. 'javascript', 'devops', 'data engineer'). Leave empty to list every job in the chosen locations. Each keyword is combined with each location.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Search mode only. Locations, one per line (e.g. 'london', 'manchester', 'remote'). Leave empty to search the whole UK. Each location is combined with each keyword.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "workType": {
                        "title": "Work type",
                        "enum": [
                            "any",
                            "permanent",
                            "contract",
                            "temporary"
                        ],
                        "type": "string",
                        "description": "Filter by contract type. 'Any' applies no filter.",
                        "default": "any"
                    },
                    "minSalary": {
                        "title": "Minimum salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only jobs paying at least this amount (in the salary period below). Leave empty for no salary filter."
                    },
                    "salaryPeriod": {
                        "title": "Salary period",
                        "enum": [
                            "annual",
                            "daily",
                            "hourly"
                        ],
                        "type": "string",
                        "description": "The period the minimum salary applies to.",
                        "default": "annual"
                    },
                    "postedWithin": {
                        "title": "Posted within",
                        "enum": [
                            "any",
                            "1",
                            "3",
                            "7",
                            "14"
                        ],
                        "type": "string",
                        "description": "Only jobs posted within this many days. 'Any time' applies no filter.",
                        "default": "any"
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Result ordering. 'Most recent' sorts by posting date (newest first); 'Relevance' is the site default.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "Job or listing URLs",
                        "type": "array",
                        "description": "URL mode only. CWJobs listing URLs (e.g. https://www.cwjobs.co.uk/jobs/javascript/in-london) or direct job URLs (e.g. https://www.cwjobs.co.uk/job/...-job12345678). Multi-URL supported. Filter fields above are ignored in URL mode; pagination starts at the page in the URL and walks forward.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full job details",
                        "type": "boolean",
                        "description": "Open each job page for the full description, GPS coordinates, posting and expiry dates, work type, and the rich employer profile (company size, founded year, industry, total jobs, video). Turn off for a faster, leaner run that returns only the fields visible on the listing page.",
                        "default": true
                    },
                    "maxPages": {
                        "title": "Max listing pages per search",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "How many listing pages to walk per search or URL (about 25 jobs per page).",
                        "default": 1
                    },
                    "maxListings": {
                        "title": "Max jobs",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of jobs to scrape across all searches. Set 0 for unlimited (bounded by Max listing pages).",
                        "default": 0
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "CWJobs admits UK residential connections reliably. Apify Residential (United Kingdom) is recommended. Datacenter also works but a portion of datacenter IPs are refused, so the actor automatically retries on a fresh connection; expect a few retries. The actor rotates connections, falls back across countries, and uses a backup route if the primary keeps getting refused.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "GB"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
