# AIJobs.net Scraper (`automation-lab/aijobs-scraper`) Actor

Scrape AI/ML/Data Science job listings from aijobs.net. Filter by keyword, experience level, and remote status. Extracts salary, skills, company, tasks, and apply URLs.

- **URL**: https://apify.com/automation-lab/aijobs-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, NaN 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 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

## AIJobs.net Scraper

Extract AI, ML, and Data Science job listings from [aijobs.net](https://aijobs.net) — the dedicated job board with 50,000+ AI-focused positions worldwide. Get job titles, companies, salaries, required skills, perks, seniority levels, and more — no login required.

### What does it do?

AIJobs.net Scraper retrieves job listings from aijobs.net and fetches full job detail pages to give you comprehensive, structured data. You can filter by keyword (e.g., `Python`, `LLM`, `machine learning`), experience level (Entry / Mid / Senior / Expert), and remote status. The scraper paginates automatically and returns up to your specified limit.

For each job, the actor extracts:

- 🏷️ **Job title and company name** with company profile URL
- 💰 **Salary range** (when disclosed — e.g., "USD 160K–300K")
- 📍 **Location** and **remote flag**
- 🎓 **Seniority level** (Entry-level, Mid-level, Senior-level, Expert)
- 🛠️ **Skills / tech stack** (Python, LLM, AWS, FastAPI, etc.)
- 🎁 **Perks and benefits** (Remote work, Mentoring, Flexible hours, etc.)
- 📋 **Job responsibilities / tasks** from the detail page
- 🎓 **Education requirements**
- 🔗 **Direct apply URL** (ready for automating applications)
- 🕒 **Posted time** (e.g., "8h ago", "20d ago")

### Who is it for?

#### 🏢 Recruiters and talent acquisition teams
Build talent pipelines and benchmark what AI roles are being posted. Monitor which companies are hiring, what salaries they offer, and what skills they require — all without manually browsing the site.

#### 📊 Labor market researchers and analysts
Track AI job market trends over time. Compare seniority distributions, remote vs on-site ratios, salary ranges by location, and in-demand skills across thousands of listings.

#### 🤖 Job aggregator developers
Feed structured AI job data into your own job board, HR platform, newsletter, or recommendation engine. The output is clean JSON — no HTML parsing required on your side.

#### 💼 Job seekers and career coaches
Automate job discovery. Export listings to a spreadsheet, filter by skills you have or want to learn, and track fresh postings daily.

#### 🏗️ Salary benchmarking tools
Extract disclosed salary data across AI roles to power compensation analytics, offer calculators, or regional salary comparison dashboards.

### Why use this scraper?

- ✅ **No authentication required** — scrapes publicly accessible listings
- ✅ **No browser needed** — pure HTTP + HTML parsing (fast and cheap)
- ✅ **Keyword + seniority + remote filters** — server-side filtering means you get only the jobs you need
- ✅ **Full detail pages included** — company, tasks, education, apply URL (not just list data)
- ✅ **Handles pagination automatically** — get up to thousands of listings in one run
- ✅ **Clean structured output** — flat JSON ready for spreadsheets, databases, or APIs

### 📦 What data does it extract?

| Field | Description | Example |
|-------|-------------|---------|
| `url` | Job detail page URL | `https://aijobs.net/job/ai-engineer-mts-remote-107552/` |
| `title` | Job title | `AI Engineer (MTS)` |
| `company` | Company name | `micro1` |
| `companyUrl` | Company profile on aijobs.net | `https://aijobs.net/company/micro1-12373/` |
| `salaryRange` | Disclosed salary range | `USD 160K-300K` |
| `seniority` | Experience level | `Mid-level` |
| `jobType` | Full Time / Part Time | `Full Time` |
| `location` | Location text | `Remote`, `San Francisco, CA` |
| `isRemote` | Remote job flag | `true` |
| `isFeatured` | Featured/sponsored listing | `false` |
| `skills` | Tech stack tags | `["Python", "LLM", "FastAPI"]` |
| `perks` | Benefits and perks | `["Remote work", "Mentoring"]` |
| `postedAt` | Relative post time | `8h ago` |
| `tasks` | Job responsibilities | `["Build LLM pipelines", ...]` |
| `education` | Required education | `["Bachelor of Science"]` |
| `roles` | Role tags | `["AI Engineer", "ML Engineer"]` |
| `applyUrl` | Direct apply link | `https://aijobs.net/job/VhH.../apply/` |
| `description` | Meta description | `"Architect and develop..."` |

### 💰 How much does it cost to scrape AI jobs from aijobs.net?

This actor uses **pay-per-result (PPE) pricing** — you only pay for data you actually extract.

| Plan | Start fee | Cost per 1,000 jobs |
|------|-----------|---------------------|
| FREE | $0.005 | $0.067 |
| BRONZE | $0.005 | $0.058 |
| SILVER | $0.005 | $0.046 |
| GOLD | $0.005 | $0.035 |
| PLATINUM | $0.005 | $0.023 |
| DIAMOND | $0.005 | $0.016 |

**Typical run costs (BRONZE plan):**
- 10 jobs with detail pages: ~$0.006 total (start fee $0.005 + 10 × $0.000058)
- 50 jobs with detail pages: ~$0.008 total
- 100 jobs with detail pages: ~$0.011 total

**Free plan estimate:** Apify's free plan gives $5/month in platform credits, which covers roughly 85,000+ job extractions per month at BRONZE pricing.

The start fee ($0.005 one-time per run) covers actor initialization regardless of result count.

### 🚀 How to use it

#### Step 1 — Open the actor
Go to [apify.com/automation-lab/aijobs-scraper](https://apify.com/automation-lab/aijobs-scraper) and click **Try for free**.

#### Step 2 — Configure your search
Fill in the input fields:
1. **Search keyword** — the skill or technology to filter by (e.g., `LLM`, `PyTorch`, `MLOps`). Leave empty for all AI jobs.
2. **Experience level** — Entry-level, Mid-level, Senior-level, or Expert.
3. **Remote jobs only** — toggle on to get only remote listings.
4. **Max results** — how many jobs to extract (default: 50).
5. **Include job details** — enable to fetch company names, tasks, and apply URLs.

#### Step 3 — Run
Click **Save & Run**. Results appear in the **Dataset** tab.

#### Step 4 — Export
Download as JSON, CSV, Excel, or XML from the dataset view, or connect via API.

### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchKeyword` | String | — | Keyword filter (e.g., `Python`, `LLM`) |
| `experienceLevel` | String | — | `EN` = Entry, `MI` = Mid, `SE` = Senior, `EX` = Expert |
| `remoteOnly` | Boolean | `false` | Filter for remote jobs only |
| `maxResults` | Integer | `50` | Max job listings to return |
| `includeJobDetails` | Boolean | `true` | Fetch full detail page (company, tasks, apply URL) |
| `maxRequestRetries` | Integer | `3` | Retries per failed request |

### 📤 Output example

```json
{
  "url": "https://aijobs.net/job/ai-engineer-mts-remote-107552/",
  "title": "AI Engineer (MTS)",
  "company": "micro1",
  "companyUrl": "https://aijobs.net/company/micro1-12373/",
  "salaryRange": "USD 160K-300K",
  "seniority": "Mid-level",
  "jobType": "",
  "location": "Remote",
  "isRemote": true,
  "isFeatured": true,
  "skills": ["API Development", "AWS", "FastAPI", "LLM", "Python"],
  "perks": ["Mentoring", "Open source contributions", "Remote work"],
  "postedAt": "8h ago",
  "tasks": [
    "Architect and develop scalable AI systems",
    "Build APIs for AI platforms",
    "Develop and integrate LLMs and multimodal AI systems"
  ],
  "education": ["Bachelor of Science", "Master of Science"],
  "roles": ["AI Engineer", "Machine Learning Engineer"],
  "applyUrl": "https://aijobs.net/job/VhHQynwS4G3fRGH/apply/",
  "description": "Architect and develop scalable AI systems; Build APIs for AI platforms..."
}
````

### 💡 Tips

- **Use specific skill keywords** like `LLM`, `Kubernetes`, or `PyTorch` for targeted results. Broad searches return 50k+ jobs — narrow it down.
- **Set `includeJobDetails: false`** for faster, cheaper runs when you only need title, salary, location, and skills from list pages.
- **Combine filters** — `experienceLevel: SE` + `remoteOnly: true` for senior remote roles.
- **Run daily with a small `maxResults`** to monitor new postings. Combine with webhooks to get Slack notifications.
- **Salary data is not always disclosed** — some companies hide it; the `salaryRange` field will be empty for those listings.
- **Company names may be truncated** — some companies display partially on the site. The `companyUrl` always resolves to the correct company page.

### 🔗 Integrations

#### Export to Google Sheets

Use Apify's [Google Sheets integration](https://apify.com/apify/google-sheets-import-export) to stream extracted jobs directly into a spreadsheet for team review or further filtering.

#### Feed a job recommendation engine

Use the structured `skills` and `roles` arrays to match job listings against candidate profiles in your internal database or ATS.

#### Daily job alert pipeline

Schedule this actor to run every morning with your target keyword. Combine with the [Send Email](https://apify.com/apify/send-email) actor to receive new listings in your inbox before most applicants see them.

#### Salary benchmarking dashboard

Export monthly snapshots of `salaryRange` + `location` + `seniority` to build a live AI salary benchmark tool. Visualise in Tableau, Google Data Studio, or Power BI.

#### ATS/CRM enrichment

Use `companyUrl` + company name to enrich your HR system with the companies actively hiring in AI — useful for targeted outreach and pipeline generation.

### 🔌 API usage

#### Node.js (Apify Client)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('automation-lab/aijobs-scraper').call({
  searchKeyword: 'LLM',
  experienceLevel: 'MI',
  remoteOnly: true,
  maxResults: 100,
  includeJobDetails: true,
});

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

#### Python (Apify Client)

```python
from apify_client import ApifyClient

client = ApifyClient(token="YOUR_APIFY_TOKEN")

run = client.actor("automation-lab/aijobs-scraper").call(run_input={
    "searchKeyword": "LLM",
    "experienceLevel": "MI",
    "remoteOnly": True,
    "maxResults": 100,
    "includeJobDetails": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~aijobs-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchKeyword": "LLM",
    "experienceLevel": "MI",
    "remoteOnly": true,
    "maxResults": 100,
    "includeJobDetails": true
  }'
```

### 🤖 MCP (Claude AI) integration

Use this actor directly from **Claude Code**, **Claude Desktop**, **Cursor**, or **VS Code** via the Apify MCP server.

#### Claude Code (terminal)

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

Then in Claude:

> "Use the aijobs-scraper to find remote senior Python ML engineer jobs and give me the top 10 with salary ranges."

> "Scrape 50 LLM engineer job listings from aijobs.net and tell me the most common required skills."

> "Get entry-level AI jobs posted today and export them to a CSV."

#### Claude Desktop / Cursor / VS Code

Add to your MCP config file (`claude_desktop_config.json` or `.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=automation-lab/aijobs-scraper",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

### ⚖️ Legality

This actor scrapes publicly accessible job listings from aijobs.net — the same data visible to any browser visitor without logging in. It respects normal HTTP request patterns and does not bypass authentication.

Before use, review [aijobs.net's Terms of Service](https://aijobs.net/terms/). Use responsibly:

- Do not flood the site with excessive concurrent requests
- Cache data locally rather than re-scraping the same listings repeatedly
- Do not use scraped data to misrepresent job postings or contact companies without permission

### ❓ FAQ

**Does this require an aijobs.net account?**
No. All scraped data is publicly accessible without authentication.

**How many jobs can I extract?**
The site lists 50,000+ jobs. Pagination supports all available pages. Set `maxResults` to your desired limit.

**How fresh is the data?**
Each run fetches live data — as fresh as aijobs.net's current listings. Jobs posted "8h ago" will reflect the actual posting time.

**Why are some salary fields empty?**
Many companies on aijobs.net do not disclose salary ranges. The `salaryRange` field will be an empty string for those listings.

**The filter returned some jobs outside my experience level — why?**
aijobs.net's server-side filter returns the closest matches. Some borderline listings may appear.

**My run succeeded but returned fewer items than `maxResults` — why?**
The site may have fewer matching listings than your requested limit. Try a broader keyword or remove experience level filter.

**Can I scrape job detail pages without visiting them?**
Set `includeJobDetails: false` to skip detail page fetches. You'll get list-only data (title, salary, skills, location, seniority) at roughly half the request cost.

### 🔎 Related scrapers

- [LinkedIn Jobs Scraper](https://apify.com/automation-lab/linkedin-jobs-scraper) — scrape LinkedIn job postings at scale
- [Indeed Scraper](https://apify.com/automation-lab/indeed-scraper) — extract job listings from Indeed
- [Glassdoor Jobs Scraper](https://apify.com/automation-lab/glassdoor-jobs-scraper) — Glassdoor job and salary data

# Actor input Schema

## `searchKeyword` (type: `string`):

Filter jobs by keyword (e.g., <code>Python</code>, <code>LLM</code>, <code>machine learning</code>). Leave empty to get all AI/ML jobs.

## `experienceLevel` (type: `string`):

Filter by seniority level.

## `remoteOnly` (type: `boolean`):

When enabled, only return remote job listings.

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

Maximum number of job listings to return.

## `includeJobDetails` (type: `boolean`):

Fetch full job detail pages to get company name, responsibilities, education requirements, and the apply URL. Recommended. Doubles the number of HTTP requests.

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

Number of retry attempts per failed request.

## Actor input object example

```json
{
  "searchKeyword": "LLM",
  "experienceLevel": "MI",
  "remoteOnly": false,
  "maxResults": 20,
  "includeJobDetails": true,
  "maxRequestRetries": 3
}
```

# 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 = {
    "searchKeyword": "LLM",
    "experienceLevel": "MI",
    "remoteOnly": false,
    "maxResults": 20,
    "includeJobDetails": true,
    "maxRequestRetries": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/aijobs-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 = {
    "searchKeyword": "LLM",
    "experienceLevel": "MI",
    "remoteOnly": False,
    "maxResults": 20,
    "includeJobDetails": True,
    "maxRequestRetries": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/aijobs-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 '{
  "searchKeyword": "LLM",
  "experienceLevel": "MI",
  "remoteOnly": false,
  "maxResults": 20,
  "includeJobDetails": true,
  "maxRequestRetries": 3
}' |
apify call automation-lab/aijobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AIJobs.net Scraper",
        "description": "Scrape AI/ML/Data Science job listings from aijobs.net. Filter by keyword, experience level, and remote status. Extracts salary, skills, company, tasks, and apply URLs.",
        "version": "0.1",
        "x-build-id": "XcEzEvLpRuWsT6MbX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~aijobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-aijobs-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~aijobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-aijobs-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~aijobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-aijobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchKeyword": {
                        "title": "🔍 Search keyword",
                        "type": "string",
                        "description": "Filter jobs by keyword (e.g., <code>Python</code>, <code>LLM</code>, <code>machine learning</code>). Leave empty to get all AI/ML jobs."
                    },
                    "experienceLevel": {
                        "title": "🎓 Experience level",
                        "enum": [
                            "EN",
                            "MI",
                            "SE",
                            "EX"
                        ],
                        "type": "string",
                        "description": "Filter by seniority level."
                    },
                    "remoteOnly": {
                        "title": "🌍 Remote jobs only",
                        "type": "boolean",
                        "description": "When enabled, only return remote job listings.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "📦 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of job listings to return.",
                        "default": 50
                    },
                    "includeJobDetails": {
                        "title": "📋 Include job details",
                        "type": "boolean",
                        "description": "Fetch full job detail pages to get company name, responsibilities, education requirements, and the apply URL. Recommended. Doubles the number of HTTP requests.",
                        "default": true
                    },
                    "maxRequestRetries": {
                        "title": "🔁 Max request retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of retry attempts per failed request.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
