# Kalibrr Job Scraper | Monitoring, Contacts & Alerts (`corvuslab/kalibrr-scraper`) Actor

Scrape jobs from Kalibrr (Philippines & Indonesia) with salary, company intel, qualifications, and contact extraction. Built-in incremental monitoring with change-feed and Telegram/Slack/Discord notifications.

- **URL**: https://apify.com/corvuslab/kalibrr-scraper.md
- **Developed by:** [Corvuslab](https://apify.com/corvuslab) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

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/actors/running/actors-in-store.md#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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### What does Kalibrr Job Scraper do?

Kalibrr Job Scraper extracts structured job listings from **Kalibrr**, the leading recruitment platform in the **Philippines and Indonesia**. Each record comes with the job title, company intelligence, salary range, qualifications, and work-arrangement flags — ready to export as JSON, CSV, Excel, or to pull via the API. With built-in **incremental monitoring** and **notifications**, it is the easiest way to track Southeast Asian talent markets on a schedule without re-scraping everything every time.

Give it a search keyword (e.g. `developer, marketing`) and optional filters — country, job function, employment type, seniority level, remote/hybrid — and it returns every matching listing as a clean, typed record. For each job you get the title, company name and industry, location, salary, tenure, experience level, publish and closing dates, and a direct link. Turn on **Fetch full details** to also pull the full description (text, HTML or Markdown), qualifications, education requirements, preferred courses, licenses, perks, skills, employer response rate, and apply URL. You can also paste Kalibrr job URLs directly instead of running a keyword search.

> New to Apify? You can sign up for free and use the included monthly platform credit to try this Actor.

**Why this scraper**

- ⚡ **Fast & low-cost** — lightweight HTTP requests with no browser overhead, so large runs stay cheap.
- 🧾 **Rich, typed records** — 63 structured fields per job, not raw HTML.
- ♻️ **Cheap to monitor** — incremental mode re-scrapes only what changed (see below).
- 🔔 **Notifications built in** — Telegram, Slack, Discord or any webhook.
- 🤖 **AI- & API-ready** — compact output, MCP-friendly, one-click integrations.

***

### 📚 What data can you extract from Kalibrr?

Every record carries **65 fields**, grouped like this:

| Group | What you get |
|---|---|
| **Core listing** | `title`, `searchKeyword`, `detailFetched`, `contentHash`, `isVerifiedAdvertiser`, `jobFunction`, `tenure`, `experienceLevel`, `educationLevel`, `numberOfOpenings`, `isHybrid`, `isOpenToFreshGrads` …and 20 more |
| **Employer signals** | `companyWebsite`, `companyIndustry`, `isVerifiedAdvertiser`, `responseRate` |
| **Company** | `company`, `companyIndustry`, `companyWebsite`, `companyLogo`, `companyDescription` |
| **Pay & budget** | `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`, `salaryIsPublic`, `responseRate` |
| **Location** | `location`, `addressLine`, `city`, `region`, `country`, `isRemote` |
| **Description** | `description`, `descriptionHtml`, `descriptionMarkdown`, `qualificationsHtml`, `qualificationsText`, `dutiesText` |
| **Dates & change tracking** | `publishDate`, `closingDate`, `updatedAt`, `changeType` |

Every field is nullable — missing values come back as `null`. **Compact mode** returns
the core fields only for lean AI/MCP payloads, and **`excludeEmptyFields`** drops empties
entirely.

### ✨ Key features

- 🔎 **Search or URL scraping** — run a keyword + filter search, or paste Kalibrr job URLs directly.
- 🌏 **Philippines & Indonesia** — switch between Kalibrr's two country pools with one setting.
- 🧾 **67 structured fields** — title, company, salary, location, tenure, seniority, qualifications, education range, perks, skills, response rate, and more.
- 🎚️ **Rich filters** — country, job function (20 categories), employment type, seniority level, remote, hybrid, open-to-fresh-graduates, and sort order — all applied server-side.
- 🧠 **Full details** — description in text / HTML / Markdown, qualifications, education requirements, preferred courses, licenses, relocation flag, and video URLs.
- 🏢 **Company intelligence** — industry, website, logo, verified-advertiser status and company description on every record.
- ♻️ **Incremental monitoring** — schedule it and get only what changed (NEW / UPDATED / EXPIRED); unchanged items are skipped before their page is even fetched.
- 🔔 **Notifications** — Telegram, Slack, Discord or any webhook (n8n / Make / Zapier).
- 🤖 **AI-ready** — compact + drop-empty output modes keep payloads small for LLMs and MCP.

***

### 🚀 How to scrape Kalibrr

1. Open the actor and enter a **search keyword** (e.g. `developer`) and/or pick filters — or paste a Kalibrr job URL.
2. Choose a **market** (Philippines or Indonesia) and set **Max results**.
3. Choose whether to **fetch full details** (on by default — adds description, qualifications, education requirements, and more).
4. (Optional) Turn on **incremental mode** and a **notification** channel, then **Schedule** it.
5. Click **Start**.
6. Download the data as **JSON, CSV or Excel**, or pull it from the **API**.

New to Apify? Create a free account — it comes with monthly credit, no credit card required.

***

### ⚙️ Input

Configure it in the visual editor — no code needed — or pass JSON via the API.

| Field | What it does |
|---|---|
| `query` | Keyword search (comma-separate for multiple searches). Leave empty to retrieve all active jobs. |
| `startUrls` | Scrape specific Kalibrr job URLs directly. |
| `market` | Country pool to search: Philippines or Indonesia. |
| `jobFunction` | Filter by job function — 22 categories from Accounting to Writing. |
| `tenure` | Employment type: Full time, Part time, Contractual, Freelance. |
| `experienceLevel` | Seniority: Intern/OJT, Entry Level, Associate, Mid-Senior, Director/Executive. |
| `isRemote` / `isHybrid` | Return only remote or hybrid listings. |
| `isOpenToFreshGrads` | Return only jobs open to fresh graduates. |
| `sortBy` | `relevance` (site order) or `newest` — newest re-orders the whole matching set by publish date before applying Max results. |
| `includeDetails` | Fetch each job's detail page for richer fields (on by default). |
| `descriptionFormat` | Which description format(s) to include: `all`, `text`, `html` or `markdown`. |
| `compact` | Return only core fields — ideal for AI agents and MCP clients. |
| `incrementalMode` | Emit only what changed since the last run. |
| `maxResults` | Cap the number of records (0 = unlimited). |

...and **30 inputs** in total — the table shows the essentials; the rest cover notification channels, output/AI modes and advanced tuning, all in the visual editor.

#### Example inputs

**Basic keyword search (Philippines):**

```json
{ "query": "developer", "market": "PH", "maxResults": 100 }
```

**Filtered search for remote IT jobs in Indonesia:**

```json
{
  "query": "data analyst",
  "market": "ID",
  "jobFunction": "IT and Software",
  "isRemote": true,
  "maxResults": 50
}
```

**Incremental monitoring with Slack notifications:**

```json
{
  "query": "marketing",
  "market": "PH",
  "incrementalMode": true,
  "slackWebhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
  "maxResults": 0
}
```

***

### 📤 Output

Each item in the dataset is one **job listing**. Every record includes the core fields; enabling **Fetch full details** (on by default) adds the description, qualifications, education requirements, perks, skills, and more. Here is a real example record:

```json
{
  "id": "271050",
  "title": "Junior Developer",
  "url": "https://www.kalibrr.com/c/moongig/jobs/271050/junior-developer",
  "source": "kalibrr.com",
  "searchKeyword": "developer",
  "scrapedAt": "2026-09-02T10:13:25.208922+00:00",
  "company": "Moongig",
  "companyIndustry": "Information Technology / IT",
  "companyWebsite": "http://www.moongig.xyz",
  "isVerifiedAdvertiser": true,
  "city": "Makati",
  "region": "Metro Manila",
  "country": "Philippines",
  "location": "Makati, Metro Manila",
  "jobFunction": "IT and Software",
  "tenure": "Full time",
  "experienceLevel": "Entry Level",
  "educationLevel": "Bachelor's degree",
  "numberOfOpenings": 1,
  "isRemote": false,
  "isHybrid": true,
  "isOpenToFreshGrads": true,
  "publishDate": "2026-09-01T05:01:00.606013+00:00",
  "closingDate": "2026-09-14T16:00:00+00:00",
  "responseRate": 49.05,
  "description": "Moongig is a rapidly growing digital healthcare talent platform ...",
  "qualificationsText": "* Write clean, documented code ...",
  "educationLevelMin": "Bachelor's degree",
  "educationLevelMax": "Doctorate",
  "acceptWillingToRelocate": true,
  "applyUrl": "https://www.kalibrr.com/c/moongig/jobs/271050/junior-developer",
  "extractedEmails": [],
  "extractedPhones": [],
  "extractedUrls": ["http://www.moongig.xyz"],
  "socialProfiles": {}
}
```

Each record can also include `descriptionHtml` and `descriptionMarkdown` — choose the format with the **Description format** input. When incremental mode is on, records carry a `changeType` field (`NEW` / `UPDATED` / `EXPIRED`).

#### Data fields

- **Core** — id, title, url, source, company, location, jobFunction, tenure, experienceLevel, salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryIsPublic, publishDate, closingDate, scrapedAt.

> **On salary:** roughly a quarter of Kalibrr jobs carry a salary figure. `salaryIsPublic` tells you whether the site displays that figure on the job page — useful when you are comparing advertised pay against what employers actually submit.

- **Location** — addressLine, city, region, country.
- **Details** (with `includeDetails`) — description (text / HTML / Markdown), qualificationsHtml, qualificationsText, dutiesText, educationLevel, educationLevelMin, educationLevelMax, educationFields, preferredCourses, licenses, monthsWorkExperience, minAge, maxAge, sex, acceptWillingToRelocate, videoUrls, numberOfOpenings, responseRate, perks, perksOther, skills, applyUrl.
- **Company** — company, companyIndustry, companyWebsite, companyLogo, companyDescription, isVerifiedAdvertiser.
- **Contacts** — extractedEmails, extractedPhones, extractedUrls, socialProfiles. Kalibrr routes applications through its own platform, so employers rarely publish a direct email or phone; these fields are populated when one does appear, and are empty otherwise.
- **Monitoring** — changeType, isRepost, repostOfId, repostDetectedAt, isFeatured, repostCode, contentHash.

Every field is present in standard mode (missing values are `null`); **compact mode** returns the core fields only, for lean AI/MCP payloads. With **`excludeEmptyFields`** enabled, null/empty fields are omitted entirely.

***

### ♻️ How to monitor Kalibrr with incremental mode

Schedule the actor and turn on **incremental mode**: each run compares against the last and emits only **NEW / UPDATED / EXPIRED** records — unchanged items are skipped *before* their detail page is fetched, so a scheduled watch costs a fraction of a full re-scrape.

Here is what that means in real money, using the live size and churn of the Kalibrr board:

| Market | Active jobs | New jobs per day |
|---|---|---|
| 🇵🇭 Philippines | ~810 | ~22 (2.7 %) |
| 🇮🇩 Indonesia | ~1,210 | ~40 (3.3 %) |

**Watching the whole Philippine board:**

| Approach | Billable records / day | Cost / day | Cost / month | You save |
|---|---|---|---|---|
| Full re-scrape, once a day | 810 | $1.42 | **$42.67** | — |
| ♻️ Incremental, once a day | ~30 | $0.058 | **$1.72** | **96 %** |
| ♻️ Incremental, every hour | ~30 (spread over 24 runs) | $0.173 | **$5.17** | **88 %** |

**Watching both markets:**

| Approach | Billable records / day | Cost / month | You save |
|---|---|---|---|
| Full re-scrape, once a day | 2,020 | **$106.20** | — |
| ♻️ Incremental, once a day | ~70 | **$3.83** | **96 %** |

The first run seeds the baseline and bills in full. The second run usually picks up a small remainder that the site's search index hid from the first pass; from then on it settles to genuine churn only. Active-job counts and new-job rates are measured from the live board; the "~30 / ~70 per day" figures add an allowance for edits to existing posts (closing date, salary, work arrangement) on top of the measured new-job rate.

A job that briefly disappears from the site's search index — which happens, because the index reorders as you page through it — is **not** re-billed as new when it comes back, and is not reported as expired until it has been genuinely absent for three consecutive runs.

***

### 🔔 How to set up Kalibrr alerts

Get pinged the moment a matching record appears. Fill in only the channels you want:

| Channel | What to configure |
|---|---|
| ✈️ **Telegram** | `telegramToken` (from @BotFather) + `telegramChatId` |
| 💬 **Slack** | `slackWebhookUrl` (Incoming Webhook URL) |
| 🎮 **Discord** | `discordWebhookUrl` (channel webhook URL) |
| 🪝 **Webhook** | `webhookUrl` receives structured JSON — ideal for n8n / Make / Zapier |

Credentials are secret inputs — encrypted at rest, masked in the UI and never written to the
run log. Every channel fires independently, so a broken channel can't stop the scrape or the
others. Pair **incremental mode** with **notify only about changes** to hear only about
genuinely new records, with no duplicates across runs.

### 💡 What can you do with Kalibrr data?

- **Lead generation** — extract recruiter emails and phone numbers from job descriptions to build targeted outreach lists across the Philippines and Indonesia.
- **Market & competitive research** — track which companies are hiring, in which functions, at what seniority levels, and how salary ranges compare across Metro Manila, Cebu, Jakarta and beyond.
- **Vacancy monitoring** — schedule it with incremental mode + notifications for a live change-feed of new, updated and expired jobs in your niche.
- **Talent-market analytics** — measure demand by job function, tenure type, remote/hybrid share, and fresh-graduate openness to understand workforce trends.
- **Enrichment & aggregation** — feed clean job data into your own app, dashboard, spreadsheet or data warehouse.
- **AI agents & pipelines** — compact output plugs straight into LLM/MCP workflows for automated candidate matching or market briefings.

***

### 💰 How much does it cost to scrape Kalibrr?

This Actor uses the **pay-per-event** pricing model: a small fee at run start plus a per-record fee. It runs on lightweight HTTP requests with no browser overhead, so the underlying platform cost is minimal.

See the Actor's **Pricing** tab for exact current prices.

***

### 🔌 Integrations & export

Export to **JSON, CSV, Excel** or an HTML table, or pull from the **REST API** and the **JavaScript / Python** clients. Runs on a **schedule**, connects to **Google Sheets, Slack, Make, Zapier and n8n**, and works as an **MCP tool** for AI agents — compact mode keeps token usage small.

***

### 🔗 Using the API

You can run this Actor from your own code. Example with the Apify Python client:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "query": "developer",
    "market": "PH",
    "maxResults": 50,
}

run = client.actor("corvuslab/kalibrr-scraper").call(run_input=run_input)

print("Results: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

The Actor also works with the JavaScript/TypeScript client, the Apify CLI and the REST API.

***

### ❓ FAQ

**Do I need a proxy or login?** No — it runs out of the box with no login required; Apify Proxy is available under Advanced for high-volume runs.

**Which countries does it cover?** Kalibrr operates in the **Philippines** and **Indonesia**. Switch between them with the Market input.

**Can I get only new items on a schedule?** Yes — turn on incremental mode and schedule it; each run emits only what changed and can notify your channel.

**What formats can I export?** JSON, CSV, Excel, HTML table, or via the API.

**Is it good for AI agents?** Yes — enable compact mode; the output is MCP-friendly with lean payloads.

**How many records can I get?** As many as the search returns — set `maxResults` (0 = unlimited).

**Can it notify me when new jobs appear?** Yes — add a Telegram, Slack, Discord or generic webhook target under Notifications, and combine with incremental mode so you only get pinged about new and updated listings.

**Is scraping Kalibrr legal?** This actor collects only **publicly available** data on Kalibrr. You are responsible for how you use the extracted data — in particular any personal information — and for complying with the site's terms and applicable law (including the GDPR where it applies). Not affiliated with, endorsed by, or sponsored by Kalibrr Inc.

***

**Keywords:** Kalibrr scraper · Kalibrr API · Kalibrr jobs · Philippines job scraper · Indonesia job scraper · Kalibrr data extractor · Southeast Asia jobs · job board scraper · Kalibrr job listings · recruitment data · job monitoring · lead generation · export jobs to CSV · export jobs to Excel · no-code scraper · MCP tool for AI agents · Kalibrr.com scraper · job market research

# Actor input Schema

## `query` (type: `string`):

Keywords to search for. Separate multiple searches with commas — each runs as its own search and results are merged and de-duplicated. Leave empty to retrieve all active jobs.

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

Paste Kalibrr job URLs to scrape specific listings directly, e.g. https://www.kalibrr.com/c/accenture-inc/jobs/123456/role-title

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

Maximum number of records to return. Set 0 for unlimited (bounded by how many the search has).

## `ignoreUrlFailures` (type: `boolean`):

Skip URLs that cannot be interpreted instead of failing the whole run.

## `market` (type: `string`):

Which country's job pool to search. Kalibrr runs separate pools per country domain.

## `jobFunction` (type: `string`):

Filter by job function / industry category.

## `tenure` (type: `string`):

Filter by employment type.

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

Filter by seniority / work experience level.

## `isRemote` (type: `boolean`):

When enabled, returns only fully remote (work-from-home) listings.

## `isHybrid` (type: `boolean`):

When enabled, returns only hybrid (part-remote, part-office) listings.

## `isOpenToFreshGrads` (type: `boolean`):

When enabled, returns only jobs explicitly open to fresh graduates.

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

Order of results. Newest first re-orders the whole matching result set by publish date before applying Max results, so you get the genuinely newest jobs.

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

Fetch each job's detail endpoint for the richer fields. Turn off for the fastest, cheapest runs.

## `descriptionFormat` (type: `string`):

Which representation(s) of description and qualifications to include.

## `compact` (type: `boolean`):

Emit only the core fields. Ideal for AI agents and MCP clients.

## `excludeEmptyFields` (type: `boolean`):

Remove null, empty-string and empty-array fields from each record.

## `incrementalMode` (type: `boolean`):

Track state between runs and tag every record with a changeType (NEW / UPDATED / UNCHANGED / EXPIRED).

## `stateKey` (type: `string`):

Stable name for the tracked search. Leave empty to derive one automatically from your search settings.

## `emitUnchanged` (type: `boolean`):

Also emit records that have not changed since the previous run.

## `emitExpired` (type: `boolean`):

Emit records for jobs present last run but gone now.

## `telegramToken` (type: `string`):

Bot token from @BotFather.

## `telegramChatId` (type: `string`):

Chat or channel ID, e.g. "-100123456789" or "@yourchannel".

## `slackWebhookUrl` (type: `string`):

Slack incoming-webhook URL.

## `discordWebhookUrl` (type: `string`):

Discord incoming-webhook URL.

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

Any HTTPS endpoint. Receives a JSON POST with the matched records — works with n8n, Make and Zapier.

## `webhookHeaders` (type: `object`):

Extra headers for the webhook request, e.g. {"Authorization": "Bearer xyz"}.

## `notificationLimit` (type: `integer`):

How many records to include in each notification message.

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

Optional. No proxy needed by default — Kalibrr's API works on direct HTTP.

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

How many times to retry a failed request before giving up on it.

## Actor input object example

```json
{
  "query": "developer, software engineer",
  "maxResults": 25,
  "ignoreUrlFailures": true,
  "market": "PH",
  "jobFunction": "",
  "tenure": "",
  "experienceLevel": "",
  "isRemote": false,
  "isHybrid": false,
  "isOpenToFreshGrads": false,
  "sortBy": "relevance",
  "includeDetails": true,
  "descriptionFormat": "all",
  "compact": false,
  "excludeEmptyFields": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "notificationLimit": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxRequestRetries": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `allItems` (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 = {
    "query": "developer"
};

// Run the Actor and wait for it to finish
const run = await client.actor("corvuslab/kalibrr-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 = { "query": "developer" }

# Run the Actor and wait for it to finish
run = client.actor("corvuslab/kalibrr-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "developer"
}' |
apify call corvuslab/kalibrr-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corvuslab/kalibrr-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/jqdL3R3Bq98EXpfYt/builds/HPuujbTFkk0IeERcg/openapi.json
