# LinkedIn Jobs Scraper (`dami_studio/linkedin-jobs-scraper`) Actor

Scrape public LinkedIn jobs without login or cookies. Batch keywords, locations, job URLs, and IDs; filter by date, workplace, experience, and job type; optionally fetch full descriptions. Direct requests first, residential fallback only when blocked.

- **URL**: https://apify.com/dami\_studio/linkedin-jobs-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 linkedin jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are 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

## LinkedIn Jobs Scraper

Collect public LinkedIn job listings without login, cookies, or a LinkedIn account. The actor uses LinkedIn's lightweight public guest jobs endpoints, starts with direct datacenter traffic, and activates rotating Apify residential proxy sessions only after a block or rate limit.

It supports batch keyword and location searches, direct job URLs and IDs, pagination, global deduplication, server-side LinkedIn filters, and optional full job descriptions.

### Why this actor

- No login, cookies, or LinkedIn account.
- Batch every query against every location in one run.
- Mix search results with direct LinkedIn job URLs and IDs.
- Filter by country/location, date posted, workplace type, experience level, and job type.
- Choose fast card-only output or full descriptions and job criteria.
- Deduplicate all jobs globally by LinkedIn job ID.
- Use direct requests first to avoid residential bandwidth cost.
- Receive explicit, uncharged diagnostics for blocked, empty, invalid, or failed sources.

### Input

| Field | Description |
|---|---|
| `searchQueries` | Job titles or keywords. Each query is paired with each location. |
| `locations` | Cities, regions, or countries. Leave empty for an unrestricted location search. |
| `country` | Optional country name appended to every location or used alone. |
| `jobUrls` | Direct public LinkedIn `/jobs/view/` URLs. |
| `jobIds` | Direct numeric LinkedIn job IDs. |
| `datePosted` | `any`, `past24h`, `pastWeek`, or `pastMonth`. |
| `workplaceType` | `any`, `onSite`, `remote`, or `hybrid`. |
| `experienceLevels` | One or more of `internship`, `entry`, `associate`, `midSenior`, `director`, `executive`. |
| `jobTypes` | One or more of `fullTime`, `partTime`, `contract`, `temporary`, `internship`, `volunteer`, `other`. |
| `sortBy` | `relevance` or `recent`. |
| `includeDetails` | Fetch descriptions, seniority, employment type, job function, industries, and applicant text. Direct IDs and URLs always fetch details. |
| `maxItems` | Global unique job limit across every source. Default 100, maximum 5,000. |
| `maxPagesPerSearch` | Per query/location pagination limit. Default 10. |
| `countryCode` | Optional two-letter country for residential fallback, such as `US`, `CA`, `GB`, or `DE`. |
| `proxyConfiguration` | Fallback proxy configuration. It is not used until direct traffic is blocked or rate-limited. |
| `maxProxyRetries` | Fresh residential sessions tried per blocked request. Default 3. |
| `requestTimeoutSecs` | Per-request timeout. Default 20 seconds. |

No field is required. An input with no query, URL, or ID returns exactly one clearly labeled `_sample: true` row and does not charge.

#### Batch search example

This creates four searches: two queries multiplied by two locations.

```json
{
  "searchQueries": ["software engineer", "data engineer"],
  "locations": ["Toronto, Ontario", "Vancouver, British Columbia"],
  "country": "Canada",
  "datePosted": "pastWeek",
  "workplaceType": "remote",
  "experienceLevels": ["entry", "associate", "midSenior"],
  "jobTypes": ["fullTime", "contract"],
  "sortBy": "recent",
  "includeDetails": false,
  "maxItems": 100
}
````

#### Direct job example

```json
{
  "jobUrls": [
    "https://www.linkedin.com/jobs/view/example-role-1234567890"
  ],
  "jobIds": ["9876543210"],
  "maxItems": 10
}
```

### Output

Each successful real job row contains:

- `jobId`, `title`, `company`, `companyUrl`, and `companyLogo`
- `location`, `salary`, `postedAt`, and `postedText`
- `workplaceType`, `employmentType`, and `seniorityLevel`
- `jobFunction`, `industries`, and `applicants`
- `description` and `descriptionHtml` when details are fetched
- canonical LinkedIn `url`
- `sourceType`, `searchQuery`, `searchLocation`, and `detailFetched`

Example:

```json
{
  "ok": true,
  "sourceType": "search",
  "jobId": "1234567890",
  "title": "Senior Software Engineer",
  "company": "Example Company",
  "companyUrl": "https://www.linkedin.com/company/example",
  "companyLogo": "https://media.licdn.com/example.png",
  "location": "Toronto, Ontario, Canada",
  "salary": null,
  "postedAt": "2026-07-24",
  "postedText": "1 day ago",
  "workplaceType": "remote",
  "employmentType": "Full-time",
  "seniorityLevel": "Mid-Senior level",
  "jobFunction": ["Engineering"],
  "industries": ["Software Development"],
  "applicants": "25 applicants",
  "description": "Build reliable systems...",
  "descriptionHtml": "<p>Build reliable systems...</p>",
  "url": "https://www.linkedin.com/jobs/view/1234567890",
  "searchQuery": "software engineer",
  "searchLocation": "Toronto, Ontario, Canada",
  "detailFetched": true
}
```

LinkedIn does not expose every field on every job. Card-only searches usually leave detail fields as `null` or empty arrays. Enable `includeDetails` when those fields matter.

### Pricing and cost control

The intended pay-per-event price is **$0.0008 per successful `job` row**, below the current $0.001/job benchmark. The actor calls the `job` billing event only after a real row is successfully written to the dataset.

Sample rows, no-result rows, blocked requests, parse failures, invalid direct jobs, and network errors are diagnostic output and are not charged.

The default search mode downloads only small guest-search HTML fragments. Full detail pages are much larger, so `includeDetails` is off by default. Direct traffic is tried first; residential traffic is a fallback, not a baseline cost. This keeps the $0.0008 target viable for normal batched searches while still providing recovery when LinkedIn blocks a cloud IP.

Residential proxy cost depends on response size and the customer's Apify plan. Keep `includeDetails` off for high-volume discovery, use narrow date filters, and set a matching `countryCode` only when fallback is needed.

### Diagnostics

Diagnostic rows have `ok: false`, `_diagnostic: true`, and an `errorCode`:

- `BLOCKED` or `RATE_LIMITED`: direct traffic and configured residential retries were exhausted.
- `NO_RESULTS`: LinkedIn returned an empty result page for that query/location.
- `NOT_FOUND`: a direct job no longer exists or is not public.
- `PARSE_ERROR`: LinkedIn returned HTML without the expected public job structure.
- `NETWORK` or `SERVER_ERROR`: a transient request failure.

Diagnostics never trigger the `job` billing event. A failed source does not prevent other batch sources from completing.

### Limits and responsible use

This actor accesses public guest job pages only. It does not log in, use cookies, bypass private access controls, or collect private profile data. LinkedIn can change or throttle its public endpoints. Use reasonable limits, respect applicable law and LinkedIn's terms, and process personal data only when you have a lawful basis.

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles or keywords. Every query is searched against every location. Leave empty when using direct job URLs or IDs.

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

Cities, regions, or countries. Every location is combined with every query. Leave empty for an unrestricted location search.

## `country` (type: `string`):

Optional country name appended to each search location, for example Canada or United States. It is also used alone when no location is supplied.

## `jobUrls` (type: `array`):

Public LinkedIn /jobs/view/ URLs to fetch directly. URLs and IDs are deduplicated with search results.

## `jobIds` (type: `array`):

Numeric LinkedIn job IDs to fetch directly.

## `datePosted` (type: `string`):

LinkedIn's server-side posting-age filter.

## `workplaceType` (type: `string`):

LinkedIn's server-side on-site, remote, or hybrid filter.

## `experienceLevels` (type: `array`):

Optional LinkedIn server-side experience filters. Select one or more.

## `jobTypes` (type: `array`):

Optional LinkedIn server-side employment-type filters.

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

Sort search results by relevance or newest first.

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

Fetch each job detail page for description, seniority, employment type, job function, industries, and applicant count. Direct URLs and IDs always fetch details. Turning this off makes searches faster and cheaper.

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

Maximum unique real job rows across all searches, URLs, and IDs.

## `maxPagesPerSearch` (type: `integer`):

Safety limit for each query/location combination. LinkedIn currently returns about 10 jobs per guest page.

## `countryCode` (type: `string`):

Optional two-letter country code used only if LinkedIn blocks direct traffic and the actor activates residential fallback, for example US, CA, GB, or DE.

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

The actor starts without a proxy. This configuration is created only after LinkedIn blocks or rate-limits a direct request. Residential is the recommended fallback.

## `maxProxyRetries` (type: `integer`):

Maximum fresh residential sessions tried for one blocked request.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each lightweight LinkedIn guest endpoint request.

## Actor input object example

```json
{
  "searchQueries": [
    "software engineer",
    "data analyst"
  ],
  "locations": [
    "Toronto, Ontario",
    "New York, New York"
  ],
  "country": "Canada",
  "jobUrls": [
    "https://www.linkedin.com/jobs/view/1234567890"
  ],
  "jobIds": [
    "1234567890"
  ],
  "datePosted": "any",
  "workplaceType": "any",
  "sortBy": "relevance",
  "includeDetails": false,
  "maxItems": 100,
  "maxPagesPerSearch": 10,
  "countryCode": "CA",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxProxyRetries": 3,
  "requestTimeoutSecs": 20
}
```

# Actor output Schema

## `results` (type: `string`):

One normalized row per real LinkedIn job. Sample and diagnostic rows are explicitly labeled and are never charged.

# 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 = {
    "searchQueries": [
        "software engineer"
    ],
    "locations": [
        "Toronto, Ontario"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/linkedin-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 = {
    "searchQueries": ["software engineer"],
    "locations": ["Toronto, Ontario"],
}

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/linkedin-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 '{
  "searchQueries": [
    "software engineer"
  ],
  "locations": [
    "Toronto, Ontario"
  ]
}' |
apify call dami_studio/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Jobs Scraper",
        "description": "Scrape public LinkedIn jobs without login or cookies. Batch keywords, locations, job URLs, and IDs; filter by date, workplace, experience, and job type; optionally fetch full descriptions. Direct requests first, residential fallback only when blocked.",
        "version": "0.1",
        "x-build-id": "CREgubKOTaqDIgxOf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dami_studio~linkedin-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dami_studio-linkedin-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/dami_studio~linkedin-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dami_studio-linkedin-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/dami_studio~linkedin-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dami_studio-linkedin-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",
                "properties": {
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Job titles or keywords. Every query is searched against every location. Leave empty when using direct job URLs or IDs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Cities, regions, or countries. Every location is combined with every query. Leave empty for an unrestricted location search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country filter",
                        "type": "string",
                        "description": "Optional country name appended to each search location, for example Canada or United States. It is also used alone when no location is supplied."
                    },
                    "jobUrls": {
                        "title": "Direct LinkedIn job URLs",
                        "type": "array",
                        "description": "Public LinkedIn /jobs/view/ URLs to fetch directly. URLs and IDs are deduplicated with search results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobIds": {
                        "title": "Direct LinkedIn job IDs",
                        "type": "array",
                        "description": "Numeric LinkedIn job IDs to fetch directly.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "datePosted": {
                        "title": "Date posted",
                        "enum": [
                            "any",
                            "past24h",
                            "pastWeek",
                            "pastMonth"
                        ],
                        "type": "string",
                        "description": "LinkedIn's server-side posting-age filter.",
                        "default": "any"
                    },
                    "workplaceType": {
                        "title": "Workplace type",
                        "enum": [
                            "any",
                            "onSite",
                            "remote",
                            "hybrid"
                        ],
                        "type": "string",
                        "description": "LinkedIn's server-side on-site, remote, or hybrid filter.",
                        "default": "any"
                    },
                    "experienceLevels": {
                        "title": "Experience levels",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional LinkedIn server-side experience filters. Select one or more.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "internship",
                                "entry",
                                "associate",
                                "midSenior",
                                "director",
                                "executive"
                            ],
                            "enumTitles": [
                                "Internship",
                                "Entry level",
                                "Associate",
                                "Mid-Senior level",
                                "Director",
                                "Executive"
                            ]
                        }
                    },
                    "jobTypes": {
                        "title": "Job types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional LinkedIn server-side employment-type filters.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "fullTime",
                                "partTime",
                                "contract",
                                "temporary",
                                "internship",
                                "volunteer",
                                "other"
                            ],
                            "enumTitles": [
                                "Full-time",
                                "Part-time",
                                "Contract",
                                "Temporary",
                                "Internship",
                                "Volunteer",
                                "Other"
                            ]
                        }
                    },
                    "sortBy": {
                        "title": "Sort",
                        "enum": [
                            "relevance",
                            "recent"
                        ],
                        "type": "string",
                        "description": "Sort search results by relevance or newest first.",
                        "default": "relevance"
                    },
                    "includeDetails": {
                        "title": "Fetch full job details",
                        "type": "boolean",
                        "description": "Fetch each job detail page for description, seniority, employment type, job function, industries, and applicant count. Direct URLs and IDs always fetch details. Turning this off makes searches faster and cheaper.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum unique real job rows across all searches, URLs, and IDs.",
                        "default": 100
                    },
                    "maxPagesPerSearch": {
                        "title": "Maximum pages per search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Safety limit for each query/location combination. LinkedIn currently returns about 10 jobs per guest page.",
                        "default": 10
                    },
                    "countryCode": {
                        "title": "Residential proxy country",
                        "pattern": "^[A-Za-z]{2}$",
                        "type": "string",
                        "description": "Optional two-letter country code used only if LinkedIn blocks direct traffic and the actor activates residential fallback, for example US, CA, GB, or DE."
                    },
                    "proxyConfiguration": {
                        "title": "Blocked-request fallback proxy",
                        "type": "object",
                        "description": "The actor starts without a proxy. This configuration is created only after LinkedIn blocks or rate-limits a direct request. Residential is the recommended fallback.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "maxProxyRetries": {
                        "title": "Residential rotations after blocking",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum fresh residential sessions tried for one blocked request.",
                        "default": 3
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout",
                        "minimum": 5,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Timeout for each lightweight LinkedIn guest endpoint request.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
