# LinkedIn Verified Hiring Signals (`kamerozkan/linkedin-hiring-signals`) Actor

Monitor public LinkedIn company jobs for new, changed, reopened, and safely confirmed closed roles. Optionally merge official apply URLs, live status, confidence, and ghost-job risk into one automation-ready dataset.

- **URL**: https://apify.com/kamerozkan/linkedin-hiring-signals.md
- **Developed by:** [Kamer Ozkan](https://apify.com/kamerozkan) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 company monitoreds

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 Verified Hiring Signals

Turn public LinkedIn company jobs into a reliable change feed: new openings, edits,
reopenings, and safely confirmed closures. Optionally add the official application
URL, current job status, verification confidence, and ghost-job risk to the same row.

No LinkedIn login or cookies are required from the user.
Apify Proxy is enabled by default to isolate company sessions and improve reliability.

### What you get

- `new` — first time a job is seen
- `changed` — title, location, company, URL, or posting date changed
- `reopened` — a previously closed job reappeared
- `closed` — absent from the configured number of complete scans
- `current` — unchanged open job when full-snapshot mode is enabled
- official apply URL and ATS provider when verification is enabled
- `low`, `review`, `high`, or `unknown` ghost-job risk
- signed HTTPS webhook delivery for Slack relays, Make, Zapier, n8n, CRMs, and data pipelines

Unlike snapshot scrapers, repeated runs only return changes. State is preserved per
watchlist so the dataset is ready for alerts, recruiting intelligence, sales triggers,
and hiring-market research.

Set `emitCurrentSnapshot: true` when a full open-jobs snapshot is more useful than a
changes-only feed.

### Quick start

```json
{
  "companies": [
    "https://www.linkedin.com/company/tiny-spec-inc/"
  ],
  "stateNamespace": "auto",
  "closureConfirmationScans": 2,
  "verifyApplyLinks": true,
  "verificationMaxTotalChargeUsd": 2
}
````

Accepted company inputs:

- `https://www.linkedin.com/company/tiny-spec-inc/`
- LinkedIn company jobs/search URLs containing `f_C`
- numeric LinkedIn company IDs such as `30920`

Use the company's current canonical LinkedIn URL. If LinkedIn silently redirects
an obsolete slug to an unrelated company, the Actor rejects it instead of
returning a valid-looking dataset for the wrong organization.

Saved Tasks using `stateNamespace: "auto"` are isolated automatically. API callers
should set one stable, unique namespace per independent watchlist.
Each run accepts up to 100 companies. Split larger portfolios across Tasks with
different namespaces so every shard has an independent state and reliability score.
Companies with 1,000 or more open LinkedIn jobs are not supported by this version;
the Actor fails clearly instead of returning a misleading partial inventory.

### One dataset, including verification

Official apply-link verification no longer creates a disconnected final result.
The verification Actor runs as an enrichment step and the selected fields are merged
into this Actor's default dataset:

```json
{
  "eventType": "new",
  "detectedAt": "2026-07-26T10:00:00.000Z",
  "companyId": "30920",
  "companyName": "Slack",
  "companyUrl": "https://www.linkedin.com/company/tiny-spec-inc/",
  "jobId": "4440979323",
  "title": "Circular Center Program Manager",
  "jobTitle": "Circular Center Program Manager",
  "location": "United States",
  "jobUrl": "https://www.linkedin.com/jobs/view/4440979323",
  "postedAt": "2026-07-25",
  "firstSeenAt": "2026-07-26T10:00:00.000Z",
  "lastSeenAt": "2026-07-26T10:00:00.000Z",
  "changedFields": [],
  "source": "linkedin_public_jobs",
  "verificationStatus": "completed",
  "officialApplyUrl": "https://jobs.example.com/apply/123",
  "applyMethod": "OFFSITE",
  "jobStatus": "ACTIVE",
  "safeToPublish": true,
  "reviewRequired": false,
  "verificationConfidence": 0.98,
  "sourceProvider": "greenhouse",
  "companyWebsite": "https://example.com/",
  "verifiedAt": "2026-07-26T10:01:00.000Z",
  "verificationEvidence": ["official_inventory_match"],
  "ghostJobRisk": "low"
}
```

Closed rows use `verificationStatus: "not_applicable"`. If verification is disabled,
rows use `not_requested`; failures and cost-limit skips are also explicit.
When verification is enabled, at least 95% of submitted jobs must receive a result
by default. Otherwise the run fails without committing state, webhooks, or
company-scan billing, allowing a safe retry of the same events.

Verification is performed by
`kamerozkan/linkedin-job-apply-link-verifier`, which currently charges $0.004
per completed job decision. `maxJobsToVerify` and `verificationMaxTotalChargeUsd`
are hard cost guards; verification is off by default.

### Pricing

- Company monitored: $0.01 per company scan
- Dataset output: $0.00001 per event row
- Actor start: $0.00005
- Optional verification child Actor: $0.004 per completed job decision

Platform usage for this monitoring Actor is included in its event pricing.

### Daily monitoring

For production:

1. Configure the companies and save the input as an Apify Task.
2. Schedule the Task hourly or daily.
3. Leave `stateNamespace` on `auto` to isolate each saved Task, or set a stable custom value.
4. Use a unique namespace when testing so production history is not changed.

Daily is the best default. Hourly runs suit fast sales or recruiting alerts.
Runs sharing the same state store and namespace are protected by a renewable,
crash-safe lease. If schedules overlap, the later run waits briefly for the first;
if the lease stays busy, it exits before scanning, company charging, emitting
events, or touching state. A hard crash releases the lease automatically within
90 seconds.

### Webhook delivery

Set `webhookUrl` to an HTTPS endpoint. Every non-empty run sends enriched events in
batches. Add `webhookSecret` to receive an HMAC-SHA256 signature:

```text
x-hiring-signals-signature: sha256=<hex digest of the exact request body>
```

The webhook retries each batch three times. A failed batch remains in a durable
outbox inside the watchlist state store and is replayed with the same delivery ID,
body, and signature on the next run. Delivery status and pending batch counts are
included in the `OUTPUT` summary. A webhook failure never deletes dataset output
or silently drops an alert.

### Closure safety and pagination

LinkedIn's public guest endpoint can return variable page sizes. This Actor:

- reads the public search page's reported total as a coverage target
- forces LinkedIn's Worldwide scope instead of inheriting the crawler IP's country
- captures the larger first-page result set before requesting fragments
- keeps a stable cookie jar and proxy session for each company
- advances by the page size actually returned
- bypasses stale edge-cache fragments so pagination offsets are honored
- confirms an empty terminal page twice
- retries repeated or no-progress pages
- retries transient company failures up to eight times with a fresh network session
- uses all eight attempts when necessary to seek a closure-safe inventory
- fails fast on permanent invalid/removed company URLs instead of wasting retry sessions
- rejects canonical slug mismatches instead of silently scanning a different company
- unions complementary retry inventories so transient page shifts do not create gaps
- treats challenge pages and unverified empty HTML as incomplete, never as zero jobs
- marks capped or unstable scans as incomplete
- never closes a missing job after an incomplete scan
- does not charge the primary company-scan event for incomplete scans
- charges completed company scans only after dataset, outbox, and watchlist state commit
- requires two complete missing scans by default before emitting `closed`
- fails the run quality gate below 95% usable company coverage while preserving partial output
- enforces a 95% fully closure-safe gate by default with `strictClosureQualityGate`

This favors false-negative closures over false positives.

The run-level success rate accepts a terminal snapshot only when it is complete or
has at least 98% of LinkedIn's reported inventory. A 98–99.99% snapshot is useful
for additions and analytics but remains `complete: false`, so it can never advance
missing-job counters or emit closures. `closureSafeRate` reports the stricter
fully-complete rate separately.

### Privacy-minimized output

The output schema excludes recruiter names, personal profile links, emails, phone
numbers, applicant identities, and raw job descriptions. It processes company job
listings and job lifecycle facts.

This is privacy-minimized by design, not a blanket legal guarantee. Users remain
responsible for applicable law, contractual terms, and how they use the output.

### Run summary

The `OUTPUT` key-value-store record reports:

- requested, successful, failed, complete, and incomplete company scans
- completion rate, total scan attempts, fetched pages, and retry recoveries
- jobs seen and events emitted by type
- verification run and merged-result counts
- webhook delivery counts and failures
- durable webhook outbox pending/replayed counts
- state-lease ownership
- rolling 30-day scan and closure-safe SLOs; the window becomes mature after
  seven samples spanning at least six days
- pay-per-event billing counters

### Local development

```bash
npm install
npm run check
npx apify-cli validate-schema
```

# Actor input Schema

## `companies` (type: `array`):

LinkedIn company URLs, company jobs URLs, or numeric LinkedIn company IDs.

## `maxJobsPerCompany` (type: `integer`):

Safety limit. A scan that reaches this limit is treated as incomplete and will never close missing jobs. Companies with 1,000 or more open jobs are not supported by this version.

## `closureConfirmationScans` (type: `integer`):

Number of complete consecutive scans in which a job must be absent before it is marked closed.

## `emitInitialSnapshot` (type: `boolean`):

Emit existing jobs as new when a company is monitored for the first time.

## `emitCurrentSnapshot` (type: `boolean`):

Also emit unchanged open jobs as current. Leave off for a changes-only feed; enable for full snapshots and health checks.

## `stateStoreName` (type: `string`):

Named key-value store used to preserve job history between runs.

## `stateNamespace` (type: `string`):

Separates independent watchlists. "auto" isolates each saved Task automatically; API callers should set a stable unique value per watchlist.

## `closedJobRetentionDays` (type: `integer`):

How long closed jobs remain in state so reopenings can be detected.

## `maxConcurrency` (type: `integer`):

Number of companies scanned in parallel.

## `strictClosureQualityGate` (type: `boolean`):

Fail the run when fewer than 95% of company inventories are fully complete. Partial output remains available, but incomplete scans never advance closure state.

## `verifyApplyLinks` (type: `boolean`):

Enrich new, changed, and reopened jobs with official apply URLs, status, confidence, and ghost-job risk. Results are merged into this Actor's main dataset.

## `strictVerificationQualityGate` (type: `boolean`):

When verification is enabled, fail safely if fewer than 95% of submitted jobs receive a verifier result. Failed verification never commits state, webhooks, or company-scan billing, so a retry can recover the same events.

## `verifierActorId` (type: `string`):

Actor ID or username/name used when premium verification is enabled.

## `maxJobsToVerify` (type: `integer`):

Cost guardrail for official apply-link verification in one run.

## `verificationMaxTotalChargeUsd` (type: `number`):

Maximum pay-per-event charge allowed for the child verification run. The default covers up to 500 results at the current $0.004 per verified job price.

## `webhookUrl` (type: `string`):

Optional HTTPS endpoint that receives the enriched event rows after each run. Empty runs do not send a webhook.

## `webhookSecret` (type: `string`):

Optional secret used to sign the exact request body with HMAC-SHA256 in the x-hiring-signals-signature header.

## `webhookBatchSize` (type: `integer`):

Maximum event rows sent in each webhook request.

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

Optional proxy. Each company scan keeps one stable proxy session and cookie jar for reliable pagination.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/tiny-spec-inc/"
  ],
  "maxJobsPerCompany": 1000,
  "closureConfirmationScans": 2,
  "emitInitialSnapshot": true,
  "emitCurrentSnapshot": false,
  "stateStoreName": "linkedin-hiring-signals-state",
  "stateNamespace": "auto",
  "closedJobRetentionDays": 90,
  "maxConcurrency": 3,
  "strictClosureQualityGate": true,
  "verifyApplyLinks": false,
  "strictVerificationQualityGate": true,
  "verifierActorId": "kamerozkan/linkedin-job-apply-link-verifier",
  "maxJobsToVerify": 500,
  "verificationMaxTotalChargeUsd": 2,
  "webhookBatchSize": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `events` (type: `string`):

New, changed, reopened, and confirmed closed jobs, optionally enriched with official apply URLs and ghost-job risk.

## `summary` (type: `string`):

Coverage, completeness, and error summary for this run.

# 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 = {
    "companies": [
        "https://www.linkedin.com/company/tiny-spec-inc/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kamerozkan/linkedin-hiring-signals").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 = { "companies": ["https://www.linkedin.com/company/tiny-spec-inc/"] }

# Run the Actor and wait for it to finish
run = client.actor("kamerozkan/linkedin-hiring-signals").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 '{
  "companies": [
    "https://www.linkedin.com/company/tiny-spec-inc/"
  ]
}' |
apify call kamerozkan/linkedin-hiring-signals --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Verified Hiring Signals",
        "description": "Monitor public LinkedIn company jobs for new, changed, reopened, and safely confirmed closed roles. Optionally merge official apply URLs, live status, confidence, and ghost-job risk into one automation-ready dataset.",
        "version": "0.2",
        "x-build-id": "N8N7CoPudVusSoPTr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kamerozkan~linkedin-hiring-signals/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kamerozkan-linkedin-hiring-signals",
                "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/kamerozkan~linkedin-hiring-signals/runs": {
            "post": {
                "operationId": "runs-sync-kamerozkan-linkedin-hiring-signals",
                "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/kamerozkan~linkedin-hiring-signals/run-sync": {
            "post": {
                "operationId": "run-sync-kamerozkan-linkedin-hiring-signals",
                "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": [
                    "companies"
                ],
                "properties": {
                    "companies": {
                        "title": "Companies",
                        "minItems": 1,
                        "maxItems": 100,
                        "type": "array",
                        "description": "LinkedIn company URLs, company jobs URLs, or numeric LinkedIn company IDs.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "maxJobsPerCompany": {
                        "title": "Maximum jobs per company",
                        "minimum": 25,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Safety limit. A scan that reaches this limit is treated as incomplete and will never close missing jobs. Companies with 1,000 or more open jobs are not supported by this version.",
                        "default": 1000
                    },
                    "closureConfirmationScans": {
                        "title": "Closure confirmation scans",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of complete consecutive scans in which a job must be absent before it is marked closed.",
                        "default": 2
                    },
                    "emitInitialSnapshot": {
                        "title": "Emit first-seen jobs",
                        "type": "boolean",
                        "description": "Emit existing jobs as new when a company is monitored for the first time.",
                        "default": true
                    },
                    "emitCurrentSnapshot": {
                        "title": "Include current open jobs",
                        "type": "boolean",
                        "description": "Also emit unchanged open jobs as current. Leave off for a changes-only feed; enable for full snapshots and health checks.",
                        "default": false
                    },
                    "stateStoreName": {
                        "title": "State store name",
                        "type": "string",
                        "description": "Named key-value store used to preserve job history between runs.",
                        "default": "linkedin-hiring-signals-state"
                    },
                    "stateNamespace": {
                        "title": "Watchlist namespace",
                        "type": "string",
                        "description": "Separates independent watchlists. \"auto\" isolates each saved Task automatically; API callers should set a stable unique value per watchlist.",
                        "default": "auto"
                    },
                    "closedJobRetentionDays": {
                        "title": "Closed-job retention",
                        "minimum": 7,
                        "maximum": 730,
                        "type": "integer",
                        "description": "How long closed jobs remain in state so reopenings can be detected.",
                        "default": 90
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Number of companies scanned in parallel.",
                        "default": 3
                    },
                    "strictClosureQualityGate": {
                        "title": "Require 95% closure-safe coverage",
                        "type": "boolean",
                        "description": "Fail the run when fewer than 95% of company inventories are fully complete. Partial output remains available, but incomplete scans never advance closure state.",
                        "default": true
                    },
                    "verifyApplyLinks": {
                        "title": "Verify official apply links",
                        "type": "boolean",
                        "description": "Enrich new, changed, and reopened jobs with official apply URLs, status, confidence, and ghost-job risk. Results are merged into this Actor's main dataset.",
                        "default": false
                    },
                    "strictVerificationQualityGate": {
                        "title": "Require 95% verification coverage",
                        "type": "boolean",
                        "description": "When verification is enabled, fail safely if fewer than 95% of submitted jobs receive a verifier result. Failed verification never commits state, webhooks, or company-scan billing, so a retry can recover the same events.",
                        "default": true
                    },
                    "verifierActorId": {
                        "title": "Apply Link Verifier Actor",
                        "type": "string",
                        "description": "Actor ID or username/name used when premium verification is enabled.",
                        "default": "kamerozkan/linkedin-job-apply-link-verifier"
                    },
                    "maxJobsToVerify": {
                        "title": "Maximum jobs to verify",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cost guardrail for official apply-link verification in one run.",
                        "default": 500
                    },
                    "verificationMaxTotalChargeUsd": {
                        "title": "Verification cost limit",
                        "minimum": 0.004,
                        "maximum": 100,
                        "type": "number",
                        "description": "Maximum pay-per-event charge allowed for the child verification run. The default covers up to 500 results at the current $0.004 per verified job price.",
                        "default": 2
                    },
                    "webhookUrl": {
                        "title": "Webhook URL",
                        "type": "string",
                        "description": "Optional HTTPS endpoint that receives the enriched event rows after each run. Empty runs do not send a webhook."
                    },
                    "webhookSecret": {
                        "title": "Webhook signing secret",
                        "type": "string",
                        "description": "Optional secret used to sign the exact request body with HMAC-SHA256 in the x-hiring-signals-signature header."
                    },
                    "webhookBatchSize": {
                        "title": "Webhook batch size",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum event rows sent in each webhook request.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy. Each company scan keeps one stable proxy session and cookie jar for reliable pagination.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
