# NIJobs Scraper - Jobs, Descriptions & GPS (`abotapi/nijobs-scraper`) Actor

Scrape NIJobs.com job listings across Northern Ireland into clean structured data. Search by keyword, location, salary, posted date, or paste listing/search URLs. Extract 60+ fields, including title, company, salary, skills, description, employment type, industry, GPS, address, dates, and apply URL.

- **URL**: https://apify.com/abotapi/nijobs-scraper.md
- **Developed by:** [Abot API](https://apify.com/abotapi) (community)
- **Categories:** Jobs, Developer tools, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 job 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

## NIJobs Scraper

Collect job listings from nijobs.com across Northern Ireland and turn them into clean, structured rows. Search by keyword and town with filters, or paste results-page URLs. Every record carries the job title, the hiring company (name, profile URL, logo), the location, the salary text, the posting and closing dates, the highlighted skills, and a snippet. Turn on detail enrichment and each record also gets the full job description, the employment type, the industry, the work type and contract type, the exact GPS coordinate, the full postal address, and the apply URL.

### Why This Scraper?

- 60+ fields per job, on a stable schema, so the output drops straight into any pipeline.
- Full job description (both HTML and plain text), plus employment type, industry, work type and contract type.
- Exact GPS coordinate (latitude and longitude) and the full postal address (town, county, postcode, country).
- Hiring company name, profile URL and logo, with sponsored / highlighted / work-from-home flags.
- Two ways to run: search by keyword + location with filters, or paste results-page URLs.
- Four sort orders (relevance, most recent, salary high-to-low, salary low-to-high), a posted-within filter, and a minimum-salary filter by year / day / hour.
- Forward pagination and a single clear Max items cap.

### Data You Get

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

| Field | Example |
| --- | --- |
| id | 100000000 |
| title | Software Developer |
| companyName | Example Tech Ltd |
| companyUrl | https://www.nijobs.com/jobs/example-tech |
| location | Belfast, County Antrim |
| salary | £30,000 - £40,000 |
| employmentType | FULL_TIME |
| workType | Permanent |
| industry | IT, IT-Software Development |
| datePosted | 2026-01-01T09:00:00Z |
| validThrough | 2026-02-01T22:00:00Z |
| skills | ["C#", "SQL"] |
| latitude | 54.59728 |
| longitude | -5.93012 |
| addressLocality | Belfast |
| addressRegion | County Antrim |
| postalCode | BT1 1AA |
| description | We are looking for a passionate Software Developer ... |
| applyUrl | https://www.nijobs.com/job/software-developer/example-tech-job100000000 |
| url | https://www.nijobs.com/job/software-developer/example-tech-job100000000 |

### How to Use

Search by keyword with filters:

```json
{
  "mode": "search",
  "keywords": ["Software Developer", "Data Analyst"],
  "location": "Belfast",
  "postedWithin": "7",
  "minSalary": 30000,
  "salaryPeriod": "annual",
  "sortBy": "date",
  "fetchDetails": true,
  "maxItems": 50
}
````

Search all of Northern Ireland by keyword:

```json
{
  "mode": "search",
  "keywords": ["Nurse"],
  "sortBy": "salary-desc",
  "maxItems": 30
}
```

Paste results-page URLs:

```json
{
  "mode": "url",
  "urls": [
    "https://www.nijobs.com/jobs/software-developer/in-belfast",
    "https://www.nijobs.com/jobs/accountant"
  ],
  "maxPages": 3,
  "maxItems": 100
}
```

### Input Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| mode | string | `search` builds searches from keywords + location + filters; `url` reads pasted results-page URLs. |
| keywords | array | Job titles or keywords to search (search mode). Each keyword runs its own search. |
| location | string | Optional town, city or county in Northern Ireland to narrow the search (search mode). |
| postedWithin | string | Only jobs posted within `any`, `1`, `3`, `7` or `14` days (search mode). |
| minSalary | integer | Minimum salary, read together with Salary period (search mode). |
| salaryPeriod | string | `annual`, `daily` or `hourly` — which rate Minimum salary refers to (search mode). |
| sortBy | string | `relevance`, `date`, `salary-desc` or `salary-asc` (search mode). |
| urls | array | Results-page URLs to read (url mode). The keyword/location/filter fields are ignored in this mode. |
| fetchDetails | boolean | Fetch each job page to add the full description, GPS, full postal address, employment type, industry, work type and apply URL. Default true. |
| maxPages | integer | Optional per-search page ceiling. Empty or 0 means unlimited; it does not cap the run. |
| maxItems | integer | The single hard cap on total jobs. Default 50; 0 means unlimited. |
| proxy | object | Proxy configuration. The default works on any Apify plan. |
| mcpConnectors | array | Optional MCP connectors to pipe results into your apps (Notion, Linear, Airtable, Apify). |
| notionParentPageUrl | string | Notion page under which item pages are created (Notion connector only). |
| maxNotifyListings | integer | Cap on items written to each connector per run. Does not affect the dataset. |

### Output Example

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

```json
{
  "id": 100000000,
  "title": "Software Developer",
  "companyName": "Example Tech Ltd",
  "companyUrl": "https://www.nijobs.com/jobs/example-tech",
  "companyLogoUrl": "https://www.nijobs.com/CompanyLogos/example.png",
  "location": "Belfast, County Antrim",
  "salary": "£30,000 - £40,000",
  "employmentType": "FULL_TIME",
  "workType": "Permanent",
  "contractType": "",
  "industry": "IT, IT-Software Development",
  "datePosted": "2026-01-01T09:00:00Z",
  "validThrough": "2026-02-01T22:00:00Z",
  "skills": ["C#", "SQL"],
  "textSnippet": "We are looking for a passionate Software Developer to join our team.",
  "description": "We are looking for a passionate Software Developer to join our team. You will work on ...",
  "latitude": 54.59728,
  "longitude": -5.93012,
  "addressLocality": "Belfast",
  "addressRegion": "County Antrim",
  "postalCode": "BT1 1AA",
  "addressCountry": "GB",
  "isSponsored": false,
  "isHighlighted": false,
  "workFromHome": "",
  "applyUrl": "https://www.nijobs.com/job/software-developer/example-tech-job100000000",
  "url": "https://www.nijobs.com/job/software-developer/example-tech-job100000000",
  "scrapedAt": "2026-01-01T00:00:00Z"
}
```

### Company Reviews

nijobs.com does **not** publish company reviews or employer ratings. The company profile pages show only company details and current vacancies — there is no review body, star rating, or review count anywhere in the public site, and there is no reviews endpoint. The output therefore includes the placeholder fields `companyRating`, `companyReviewCount` and `companyReviews` on a stable schema, but they are always empty because the site exposes no such data. If nijobs.com adds employer reviews in the future, these fields are ready to carry them.

### Send results into your apps (MCP connectors)

Optionally pipe each result into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the `mcpConnectors` field. Each connector receives a condensed, human-readable summary per item (title plus key fields); the complete record always stays in the dataset. Supported connectors include Notion, Linear, Airtable and Apify. For Notion, set `notionParentPageUrl` to the page under which item pages should be created, and use `maxNotifyListings` to cap how many items are written per run.

### Plan Requirement

This actor runs on any Apify plan, including the free tier.

# Actor input Schema

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

search = build searches from keywords + location + filters. url = paste one or more nijobs results-page URLs.

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

Job titles or keywords to search, e.g. Software Developer, Accountant, Nurse. Each keyword runs its own search. Only applies when mode = search.

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

Optional town, city or county in Northern Ireland to narrow the search, e.g. Belfast, Londonderry, County Antrim. Leave empty to search all of Northern Ireland. Only applies when mode = search.

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

Only return jobs posted within this many days. Only applies when mode = search.

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

Only return jobs at or above this salary. Read together with Salary period (annual / daily / hourly). Only applies when mode = search.

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

Which salary rate the Minimum salary value refers to. Only applies when mode = search and Minimum salary is set.

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

Result ordering. Only applies when mode = search.

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

Paste one or more nijobs results-page URLs (e.g. https://www.nijobs.com/jobs/software-developer/in-belfast). Multi-URL supported. The keyword/location/filter fields above are ignored in this mode.

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

Fetch each job page to add the full job description, geo coordinates, full postal address, employment type, industry, work type / contract type, validity window and the apply URL. Adds one request per job. Leave on for the richest output.

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

Optional safety stop on how many result pages to read per keyword/URL. This does NOT cap the run: leave it empty (or 0) for unlimited pages and the run is bounded solely by Max items. Set a value only if you also want a per-search page ceiling.

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

The run's single hard cap: maximum total jobs across all searches. Defaults to 50. Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.

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

Connection used for requests. The default works on any Apify plan, including the free tier.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "Software Developer"
  ],
  "postedWithin": "any",
  "salaryPeriod": "annual",
  "sortBy": "relevance",
  "urls": [
    "https://www.nijobs.com/jobs/software-developer"
  ],
  "fetchDetails": true,
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  },
  "maxNotifyListings": 50
}
```

# 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": [
        "Software Developer"
    ],
    "urls": [
        "https://www.nijobs.com/jobs/software-developer"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/nijobs-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": ["Software Developer"],
    "urls": ["https://www.nijobs.com/jobs/software-developer"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/nijobs-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": [
    "Software Developer"
  ],
  "urls": [
    "https://www.nijobs.com/jobs/software-developer"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call abotapi/nijobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NIJobs Scraper - Jobs, Descriptions & GPS",
        "description": "Scrape NIJobs.com job listings across Northern Ireland into clean structured data. Search by keyword, location, salary, posted date, or paste listing/search URLs. Extract 60+ fields, including title, company, salary, skills, description, employment type, industry, GPS, address, dates, and apply URL.",
        "version": "1.0",
        "x-build-id": "1AGqfp0C8c1pPw9T8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~nijobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-nijobs-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~nijobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-nijobs-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~nijobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-nijobs-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": "Search mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "search = build searches from keywords + location + filters. url = paste one or more nijobs results-page URLs.",
                        "default": "search"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Job titles or keywords to search, e.g. Software Developer, Accountant, Nurse. Each keyword runs its own search. Only applies when mode = search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional town, city or county in Northern Ireland to narrow the search, e.g. Belfast, Londonderry, County Antrim. Leave empty to search all of Northern Ireland. Only applies when mode = search."
                    },
                    "postedWithin": {
                        "title": "Posted within",
                        "enum": [
                            "any",
                            "1",
                            "3",
                            "7",
                            "14"
                        ],
                        "type": "string",
                        "description": "Only return jobs posted within this many days. Only applies when mode = search.",
                        "default": "any"
                    },
                    "minSalary": {
                        "title": "Minimum salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return jobs at or above this salary. Read together with Salary period (annual / daily / hourly). Only applies when mode = search."
                    },
                    "salaryPeriod": {
                        "title": "Salary period",
                        "enum": [
                            "annual",
                            "daily",
                            "hourly"
                        ],
                        "type": "string",
                        "description": "Which salary rate the Minimum salary value refers to. Only applies when mode = search and Minimum salary is set.",
                        "default": "annual"
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "date",
                            "salary-desc",
                            "salary-asc"
                        ],
                        "type": "string",
                        "description": "Result ordering. Only applies when mode = search.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "Results-page URLs",
                        "type": "array",
                        "description": "Paste one or more nijobs results-page URLs (e.g. https://www.nijobs.com/jobs/software-developer/in-belfast). Multi-URL supported. The keyword/location/filter fields above are ignored in this mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full detail from each job page",
                        "type": "boolean",
                        "description": "Fetch each job page to add the full job description, geo coordinates, full postal address, employment type, industry, work type / contract type, validity window and the apply URL. Adds one request per job. Leave on for the richest output.",
                        "default": true
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional safety stop on how many result pages to read per keyword/URL. This does NOT cap the run: leave it empty (or 0) for unlimited pages and the run is bounded solely by Max items. Set a value only if you also want a per-search page ceiling."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The run's single hard cap: maximum total jobs across all searches. Defaults to 50. Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.",
                        "default": 20
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Connection used for requests. The default works on any Apify plan, including the free tier."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
