# JazzHR Jobs Scraper (`automation-lab/jazzhr-jobs-scraper`) Actor

Extract current public JazzHR jobs with full descriptions, hiring metadata, remote signals, and apply URLs for monitoring, aggregation, recruiting intelligence, and lead generation.

- **URL**: https://apify.com/automation-lab/jazzhr-jobs-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## JazzHR Jobs Scraper

Extract current job postings from public JazzHR career boards hosted on `applytojob.com`. Get stable job IDs, titles, companies, departments, locations, remote signals, employment types, full descriptions, and application URLs in one structured dataset.

The actor accepts a company board or an individual JazzHR job URL. It uses the public server-rendered pages, so normal runs need no login and no browser.

### What does JazzHR Jobs Scraper do?

JazzHR Jobs Scraper turns public company career pages into export-ready job records.

- 🎯 Discover open jobs from a JazzHR company board.
- 📄 Extract full description text and HTML.
- 🏢 Capture company, department, location, and employment type.
- 🌍 Flag postings that mention remote work.
- 🔗 Preserve canonical job, apply, and source-board URLs.
- 🔎 Filter by keyword, location, department, or employment type.
- ♻️ Run repeatedly to synchronize a hiring feed.

It reads postings only. It does not submit applications or collect applicant data.

### Who is it for?

#### Job aggregators

Build or refresh a normalized job feed from companies using JazzHR.

#### Recruiting-intelligence teams

Track where target companies are hiring, which departments are growing, and which locations appear most often.

#### Sales and lead-generation teams

Use fresh hiring activity as a signal for outreach, enrichment, or account prioritization.

#### Labor-market analysts

Export descriptions and metadata to a warehouse for role, skill, location, and demand analysis.

#### Developers

Call one Actor API instead of maintaining selectors, retries, URL normalization, and dataset exports.

### Why use this JazzHR jobs extractor?

Public JazzHR boards are readable, but their pages are designed for job seekers rather than data pipelines. This actor provides a repeatable extraction contract.

- Stable field names across runs
- Canonical URLs and IDs for deduplication
- Both plain text and HTML descriptions
- Global result limits for predictable runs
- Optional filters that fail closed
- Dataset exports in JSON, CSV, Excel, XML, and RSS
- API, webhook, schedule, and MCP compatibility through Apify

### Supported URLs

Use public URLs hosted on `applytojob.com`.

Board URL:

```text
https://advatixinc.applytojob.com/apply/jobs/
````

Individual job URL:

```text
https://advatixinc.applytojob.com/apply/jobs/details/jSt7FUN1oE
```

You can supply several boards and detail URLs in the same run. Unsupported domains are rejected before extraction.

### How to scrape JazzHR jobs

1. Open the Actor input page.
2. Add one or more JazzHR board or job URLs.
3. Choose a small maximum number of jobs for your first run.
4. Keep **Include full descriptions** enabled when you need job text.
5. Optionally enter filters.
6. Click **Start**.
7. Open the Dataset tab to preview or export the records.

For recurring monitoring, create an Apify schedule and send the finished dataset to your database or automation tool.

### Input

| Field | Type | Required | Description |
|---|---|---:|---|
| `startUrls` | array | Yes | Public JazzHR board or job-detail URLs |
| `maxItems` | integer | No | Maximum matching jobs saved across all sources |
| `includeDetails` | boolean | No | Include description text and HTML; default `true` |
| `keyword` | string | No | Search title, company, metadata, and description |
| `location` | string | No | Location substring, such as `Remote` or `CA` |
| `department` | string | No | Department substring, such as `Engineering` |
| `employmentType` | string | No | Employment type substring, such as `Full Time` |
| `proxyConfiguration` | object | No | Optional Apify Proxy settings for unusual boards |

Filters are case-insensitive. When a requested field is absent, that posting does not match that filter.

### Example input

```json
{
  "startUrls": [
    { "url": "https://advatixinc.applytojob.com/apply/jobs/" }
  ],
  "maxItems": 10,
  "includeDetails": true,
  "location": "Remote"
}
```

To extract one posting, paste its detail URL and set `maxItems` to `1`.

### Output data

Each dataset row represents one public JazzHR job posting.

| Field | Description |
|---|---|
| `jobId` | Stable ID from the JazzHR detail URL |
| `title` | Public job title |
| `company` | Hiring company shown on the posting |
| `department` | Department or business unit |
| `location` | Location text shown by JazzHR |
| `isRemote` | Boolean remote-work signal |
| `employmentType` | Employment type shown on the posting |
| `rawMeta` | Original combined metadata line |
| `descriptionText` | Clean plain-text description and requirements |
| `descriptionHtml` | Original useful description HTML |
| `jobUrl` | Canonical public job URL |
| `applyUrl` | Public page where a candidate can begin applying |
| `sourceBoard` | Canonical company board URL |
| `companySlug` | Company subdomain on `applytojob.com` |
| `scrapedAt` | ISO 8601 extraction timestamp |

### Example output

```json
{
  "jobId": "jSt7FUN1oE",
  "title": "Access Guard",
  "company": "Advatix, Inc.",
  "department": "Fulfillment Center",
  "location": "Trenton, NJ",
  "isRemote": false,
  "employmentType": "Full Time",
  "rawMeta": "Fulfillment Center - Trenton, NJ - Full Time",
  "descriptionText": "Access Guard (Gate) Role Summary: ...",
  "descriptionHtml": "<p><strong>Access Guard...</strong></p>",
  "jobUrl": "https://advatixinc.applytojob.com/apply/jobs/details/jSt7FUN1oE",
  "applyUrl": "https://advatixinc.applytojob.com/apply/jobs/details/jSt7FUN1oE",
  "sourceBoard": "https://advatixinc.applytojob.com/apply/jobs/",
  "companySlug": "advatixinc",
  "scrapedAt": "2026-07-20T00:00:00.000Z"
}
```

Actual descriptions are not truncated.

### How much does it cost to scrape JazzHR jobs?

This Actor uses pay-per-event pricing: **$0.005 per run** plus a charge for each job saved. The BRONZE price is **$0.0001156 per job**; canonical plan tiers range from $0.00013294 (FREE) down to $0.000032367 (DIAMOND). You never pay per discovered job that is filtered out or fails extraction.

Start with `maxItems: 5` to measure your exact workload. The Apify run page shows the charge total before you automate larger syncs.

Platform compute and proxy use are handled by Apify according to your account and Actor pricing display. Direct HTTP is the default; a proxy is optional.

### Filtering jobs

Use `keyword` for broad matching across titles, companies, metadata, and descriptions.

Use field filters when you need a narrower feed:

- `location: "Remote"` for remotely labeled roles
- `department: "Sales"` for sales-team hiring
- `employmentType: "Part Time"` for part-time roles
- `keyword: "warehouse"` for title or description matches

Multiple filters use AND logic. A job must satisfy every supplied filter.

### Monitoring new JazzHR jobs

A practical monitoring workflow is:

1. Run the actor on a schedule.
2. Save `companySlug + jobId` as your unique key.
3. Compare the new dataset with your existing records.
4. Trigger alerts only for unseen IDs.
5. Mark missing IDs as possibly closed after confirmation in a later run.

Use `scrapedAt` as observation time, not as the posting publication date.

### Tips for reliable runs

- Prefer the canonical `/apply/jobs/` board URL.
- Keep the first run small while validating filters.
- Use full details when text analysis matters.
- Disable details only when you want a lighter metadata feed.
- Deduplicate downstream with both host and `id`.
- Treat `rawMeta` as the source of truth when a custom company template formats metadata unusually.
- Add proxy settings only if a particular company board rejects direct access.

### Integrations

#### Google Sheets

Export CSV or connect Apify to a spreadsheet workflow for recruiter review.

#### Webhooks

Send a run-finished webhook to your ingestion service, then fetch the default dataset.

#### Make and Zapier

Trigger enrichment, CRM updates, notifications, or lead-scoring automations after each scheduled run.

#### Data warehouses

Load JSON records into BigQuery, Snowflake, PostgreSQL, or object storage. Use `jobId` and `companySlug` as the natural key.

#### Slack and email alerts

Compare IDs with the prior snapshot and notify a channel when new matching roles appear.

### JavaScript API example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/jazzhr-jobs-scraper').call({
  startUrls: [{ url: 'https://advatixinc.applytojob.com/apply/jobs/' }],
  maxItems: 10,
  includeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Python API example

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/jazzhr-jobs-scraper').call(run_input={
    'startUrls': [{'url': 'https://advatixinc.applytojob.com/apply/jobs/'}],
    'maxItems': 10,
    'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### cURL API example

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~jazzhr-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "startUrls": [{"url":"https://advatixinc.applytojob.com/apply/jobs/"}],
    "maxItems": 10,
    "includeDetails": true
  }'
```

Poll the returned run ID, then download items from its `defaultDatasetId`.

### Use JazzHR Jobs Scraper with MCP

Connect Apify Actors to AI tools through the Apify MCP server.

#### Claude Code

```bash
claude mcp add --transport http apify https://mcp.apify.com/?tools=automation-lab/jazzhr-jobs-scraper
```

#### Claude Desktop and Cursor

Add this `mcpServers` JSON to Claude Desktop or Cursor and provide your token through the client environment:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=automation-lab/jazzhr-jobs-scraper"
    }
  }
}
```

#### VS Code

Open the MCP configuration command in VS Code, add an HTTP server, and use:

```text
https://mcp.apify.com/?tools=automation-lab/jazzhr-jobs-scraper
```

Example prompts:

- “Extract the first 20 jobs from this JazzHR board and summarize hiring by department.”
- “Find remote roles on these JazzHR boards and return company, title, and apply URL.”
- “Compare employment types across these company career pages.”

In Claude Desktop or another MCP client, configure the Apify MCP server and authorize your Apify account. The actor then appears as a callable tool.

### Data quality

The actor reads semantic JazzHR elements and preserves the original metadata line. Company-specific templates can omit fields or use unexpected punctuation, so optional fields may be absent.

`isRemote` is a text signal derived from location, metadata, and the opening section of the description. It is not a legal classification of the employer's work policy.

The apply URL is the public job detail page containing JazzHR's Apply action. The actor does not click or submit that action.

### Error handling

A closed or malformed individual posting is skipped with a warning when other jobs can still be extracted. The run fails when every discovered job fails extraction, rather than reporting misleading success with an empty dataset.

A valid board with no open positions returns a clear no-jobs error. A valid filtered run can return zero rows when no posting matches.

HTTP retries are bounded. This avoids long loops on unavailable customer boards.

### Limitations

- Only public JazzHR pages on `applytojob.com` are supported.
- The actor does not access private JazzHR recruiter accounts.
- It does not submit applications.
- It cannot recover fields a company does not publish.
- Custom templates may format department, location, and employment type differently.
- Closed postings may disappear between board discovery and detail extraction.
- Publication dates are not inferred when JazzHR does not show them.

### Is it legal to scrape JazzHR jobs?

The actor extracts publicly visible job advertisements intended for job seekers. Public availability does not remove your responsibility to use data lawfully.

Review the target site's terms, applicable database and privacy laws, and your intended use. Do not use the actor to discriminate, spam individuals, submit applications automatically, or collect applicant information. Store only the data you need and apply appropriate retention controls.

This information is general guidance, not legal advice.

### FAQ

#### Does it require a JazzHR login?

No. It reads public company boards and job pages.

#### Can I scrape several companies at once?

Yes. Add several board URLs to `startUrls`; `maxItems` applies across the full run.

#### Can I extract one job only?

Yes. Supply its `/apply/jobs/details/{id}` URL and set `maxItems` to `1`.

#### Why did my filter return zero jobs?

Check the exact public metadata and try a shorter substring. All supplied filters must match, and missing fields fail closed.

#### Why is a description missing?

Confirm `includeDetails` is `true`. If it is, the company may not publish a description or the job may have closed.

#### Why did a board fail?

Verify that it is a public `applytojob.com` JazzHR board. For a customer-specific network restriction, try Apify Proxy settings. The default direct route works for normal public boards.

#### How do I avoid duplicates?

Use the combination of `companySlug` and `jobId`, or use the canonical `jobUrl`.

#### Does the actor detect removed jobs?

It returns the current public set. Compare scheduled snapshots to detect IDs that no longer appear.

### Related scrapers

Build broader recruiting-data workflows with other actors from automation-lab:

- [Greenhouse Jobs Scraper](https://apify.com/automation-lab/greenhouse-jobs-scraper) for Greenhouse career boards
- [LinkedIn Jobs Scraper](https://apify.com/automation-lab/linkedin-jobs-scraper) for LinkedIn job search workflows

Use ATS-specific scrapers when you need stable source IDs and detailed career-site fields, then normalize records in your downstream pipeline.

### Support

If a public JazzHR board uses a template this actor does not parse correctly, open an issue from the Actor page. Include the public board URL, a small input example, and the run ID. Do not include applicant or private recruiter information.

# Actor input Schema

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

Public company board URLs such as https://company.applytojob.com/apply/jobs/ or individual JazzHR job detail URLs.

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

Maximum number of matching job records saved across all supplied boards.

## `includeDetails` (type: `boolean`):

Include descriptionText and descriptionHtml from each job detail page.

## `keyword` (type: `string`):

Keep jobs containing this text in the title, company, metadata, or description.

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

Case-insensitive location substring, for example Remote, New York, or CA.

## `department` (type: `string`):

Case-insensitive department substring, for example Engineering or Sales.

## `employmentType` (type: `string`):

Case-insensitive employment type substring, for example Full Time or Part Time.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy settings for customer boards that restrict direct access. Direct HTTP is used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://advatixinc.applytojob.com/apply/jobs/"
    }
  ],
  "maxItems": 5,
  "includeDetails": true
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://advatixinc.applytojob.com/apply/jobs/"
        }
    ],
    "maxItems": 5,
    "includeDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/jazzhr-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://advatixinc.applytojob.com/apply/jobs/" }],
    "maxItems": 5,
    "includeDetails": True,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/jazzhr-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://advatixinc.applytojob.com/apply/jobs/"
    }
  ],
  "maxItems": 5,
  "includeDetails": true
}' |
apify call automation-lab/jazzhr-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "JazzHR Jobs Scraper",
        "description": "Extract current public JazzHR jobs with full descriptions, hiring metadata, remote signals, and apply URLs for monitoring, aggregation, recruiting intelligence, and lead generation.",
        "version": "0.1",
        "x-build-id": "dg0JvNvO16MonDAHs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~jazzhr-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-jazzhr-jobs-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/automation-lab~jazzhr-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-jazzhr-jobs-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/automation-lab~jazzhr-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-jazzhr-jobs-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "🎯 JazzHR board or job URLs",
                        "type": "array",
                        "description": "Public company board URLs such as https://company.applytojob.com/apply/jobs/ or individual JazzHR job detail URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of matching job records saved across all supplied boards.",
                        "default": 20
                    },
                    "includeDetails": {
                        "title": "Include full descriptions",
                        "type": "boolean",
                        "description": "Include descriptionText and descriptionHtml from each job detail page.",
                        "default": true
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keep jobs containing this text in the title, company, metadata, or description."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Case-insensitive location substring, for example Remote, New York, or CA."
                    },
                    "department": {
                        "title": "Department",
                        "type": "string",
                        "description": "Case-insensitive department substring, for example Engineering or Sales."
                    },
                    "employmentType": {
                        "title": "Employment type",
                        "type": "string",
                        "description": "Case-insensitive employment type substring, for example Full Time or Part Time."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy settings for customer boards that restrict direct access. Direct HTTP is used by default."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
