# Arabic & Hijri Date Toolkit for AI Agents (`dodiabak/arabic-hijri-toolkit`) Actor

Umm al-Qura Hijri↔Gregorian conversion, Saudi/GCC business days with official Saudi holidays, Arabic text normalization, transliteration, SAR amount-to-words (tafqit) and Arabic/English day & month names. Batch, fast, structured JSON.

- **URL**: https://apify.com/dodiabak/arabic-hijri-toolkit.md
- **Developed by:** [Dodi Abak](https://apify.com/dodiabak) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Arabic & Hijri Date Toolkit for AI Agents

**One fast, low-cost Actor for the Arabic and Saudi data tasks that LLMs and scripts often get wrong:** Umm al-Qura Hijri ↔ Gregorian conversion, Saudi/GCC business days with official Saudi holidays, Arabic text normalization, Arabic → Latin transliteration, SAR amount-to-words (tafqit) in Arabic and English, and Arabic/English day and month names.

Send a batch of items and get one clean, structured JSON result per item. Every result includes a one-line `summary` an AI agent can quote directly. It needs no proxies, no browser and no external APIs, so it runs at 128–256 MB and finishes in seconds.

> 🇸🇦 النسخة العربية في أسفل الصفحة.

### What can this Actor do?

| Operation | What you send | What you get back |
| --- | --- | --- |
| `gregorianToHijri` | `"2026-10-19"` | `1448-05-08`, Arabic and English month and day names, formatted strings, month length |
| `hijriToGregorian` | `"1448-09-01"` | `2027-02-08`, plus all names. Rejects days that don't exist (e.g. 30 in a 29-day month). |
| `dateNames` | any date, either calendar | `الاثنين / Monday`, `أكتوبر` (Gulf usage), `تشرين الأول` (Levantine usage), `جمادى الأولى / Jumada al-Ula` |
| `businessDays` | `{start, end}`, `{start, addBusinessDays}` or `{date}` | count of working days, the date N working days away, or "is this a working day?" with the reason and the next working day |
| `normalizeText` | Arabic text | text without tashkeel and tatweel, with unified alef, yaa and taa marbuta, digits converted (Arabic-Indic ↔ Western ↔ Persian), plus a count of every change |
| `transliterate` | Arabic text | Latin text in a **simple** ASCII scheme (`Mohammed bin Abdulaziz Al-Qahtani`) or **ALA-LC** (`Muḥammad ibn ʻAbd al-ʻAzīz al-Qaḥṭānī`), with per-word confidence |
| `amountToWords` | `1250.75`, `"1,250.75"`, `"١٬٢٥٠٫٧٥"` | `فقط ألف ومائتان وخمسون ريالاً سعودياً وخمس وسبعون هللةً لا غير` and `One thousand two hundred fifty Saudi riyals and seventy-five halalas only` |

You can **mix operations in one run**: any item can be an object with its own `"operation"`.

### Why use it?

- **Correct Umm al-Qura dates.** LLMs often guess Hijri dates, and arithmetic ("Kuwaiti") converters can be a day or more off the official Saudi calendar. This Actor uses the Umm al-Qura tables (1300–1599 AH = 12 Nov 1882 – 6 Dec 2173) built into the ICU library (the calendar engine behind Node.js, Chrome and Android).
- **Saudi business days that follow the law.** Eid al-Fitr, Eid al-Adha, Founding Day and National Day are computed from the rules in the Saudi Labor Law regulations, not a hand-typed list.
- **Clean Arabic for search and RAG.** Normalize names, addresses and documents before matching, deduplication or embedding.
- **Invoices and cheques.** Grammatically correct Arabic tafqit (number/noun gender agreement, dual, plural, accusative, construct forms) plus English.
- **Agent-friendly.** Structured fields, stable error codes, a `summary` line, and one result per input item.

### How to use it

1. Click **Try for free** (or open the Input tab).
2. Pick an **Operation** and paste your **Items**. The prefilled example runs one item of each type.
3. Click **Start**. Results appear in the **Output** tab, with views for Overview, Dates, Business days, Text and Amounts. Export as JSON, CSV, Excel or via the API.

#### Input example

```json
{
  "operation": "gregorianToHijri",
  "items": [
    "2026-10-19",
    { "operation": "hijriToGregorian", "date": "1448-09-01" },
    { "operation": "businessDays", "start": "2026-03-18", "addBusinessDays": 5 },
    { "operation": "businessDays", "start": "2026-03-01", "end": "2026-03-31" },
    { "operation": "businessDays", "date": "2026-10-23", "country": "AE" },
    { "operation": "normalizeText", "text": "إِنَّ الْمُعَلِّمَــــةَ فِي الْمَدْرَسَةِ الأُولَى ١٢٣" },
    { "operation": "transliterate", "text": "محمد بن عبد العزيز القحطاني", "scheme": "ala-lc" },
    { "operation": "amountToWords", "amount": "15,750.25" }
  ]
}
```

**Date formats:** `YYYY-MM-DD`, `YYYY/MM/DD`, `DD/MM/YYYY`, an optional `هـ`/`AH` or `م`/`AD` suffix, Arabic-Indic digits, or `{ "year": 1448, "month": 5, "day": 8 }`. With `dateNames` and `businessDays`, years up to 1650 are read as Hijri and years from 1700 as Gregorian. Set `"calendar": "hijri"` or `"gregorian"` on an item to force one.

**Options** (top level, or per item to override): `country` (`SA`, `AE`, `QA`, `KW`, `BH`, `OM`), `weekendDays`, `includeOfficialHolidays`, `compensateWeekendOverlap`, `customHolidays`, `normalization` switches, `transliterationScheme` (`simple` or `ala-lc`), `capitalize`, `guessShortVowels`, `chequeStyle`, `includeSaudiAdjective`, `arabicDigitsInFormatted`.

#### Output example

```json
{
  "index": 0,
  "operation": "gregorianToHijri",
  "ok": true,
  "input": "2026-10-19",
  "gregorianDate": "2026-10-19",
  "hijriDate": "1448-05-08",
  "hijriMonthLength": 30,
  "hijriMonthNameAr": "جمادى الأولى",
  "hijriMonthNameEn": "Jumada al-Ula",
  "weekdayAr": "الاثنين",
  "weekdayEn": "Monday",
  "gregorianMonthNameAr": "أكتوبر",
  "gregorianMonthNameArLevant": "تشرين الأول",
  "formattedHijriAr": "الاثنين 8 جمادى الأولى 1448 هـ",
  "formattedGregorianEn": "Monday, 19 October 2026",
  "summary": "2026-10-19 = Monday, 8 Jumada al-Ula 1448 AH / الاثنين 8 جمادى الأولى 1448 هـ",
  "error": null
}
```

```json
{
  "operation": "businessDays",
  "mode": "addBusinessDays",
  "country": "SA",
  "startDate": "2026-03-18",
  "addBusinessDays": 5,
  "resultDate": "2026-03-29",
  "resultHijriDate": "1447-10-10",
  "holidaysInRange": [{ "date": "2026-03-19", "name": "Eid al-Fitr holiday (day 1 of 4)", "nameAr": "إجازة عيد الفطر (اليوم 1 من 4)", "source": "official-rule" }],
  "summary": "5 business days after 2026-03-18 in SA is Sunday 2026-03-29 (1447-10-10 AH)."
}
```

Bad items don't fail the run. They come back with `"ok": false` and an error such as `{"code": "INVALID_DATE", "message": "2026-02-30 is not a valid Gregorian date."}`.

### Use it with AI agents (Apify MCP server)

Add the Apify MCP server to Claude Desktop, Cursor, VS Code, or any MCP client, and load this Actor as a tool:

```
https://mcp.apify.com?tools=actors,dodiabak/arabic-hijri-toolkit
```

Your agent can then call it directly. Example prompts:

- *"What is today's date in the Hijri calendar, and is it a working day in Riyadh?"*
- *"Add 15 Saudi business days to 2026-05-20 and list the holidays skipped."*
- *"Write 48,250.50 SAR in Arabic words for this invoice."*
- *"Transliterate these 200 Arabic customer names for our CRM."*

Tip for agents: put many items in **one** run. It's cheaper and faster than many single-item runs.

#### API, Make, Zapier, n8n

Use the standard Apify API (`run-sync-get-dataset-items`) or any Apify integration. Example:

```bash
curl -X POST "https://api.apify.com/v2/acts/dodiabak~arabic-hijri-toolkit/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"operation":"amountToWords","items":[1250.75, 99]}'
```

### How much does it cost?

This Actor uses **pay per event**: you pay **$0.001 per result**, which is **$1 per 1,000 items**, plus Apify's small standard start fee. There are no proxies or browsers, so there are no hidden compute costs. A batch of 100 dates costs about $0.10. You can cap spending with *Max cost per run*. The Actor never produces more results than your limit allows.

### FAQ

**How accurate is the Hijri conversion?** It follows the official Umm al-Qura tables for 1300–1599 AH. Dates outside that range are rejected rather than estimated. Religious dates (start of Ramadan, Eid, Day of Arafat) are announced by moon sighting and can differ from Umm al-Qura by a day.

**Which Saudi holidays are included?** For the private and non-profit sectors, the HRSD Implementing Regulations of the Labor Law, Article 24, provide:

- Eid al-Fitr: 4 days starting the day after 29 Ramadan (Umm al-Qura)
- Eid al-Adha: 4 days starting on the Day of Arafat
- Founding Day: 22 February
- National Day: 23 September

These are built in for 2022–2076. Turn on `compensateWeekendOverlap` to add the days granted when a holiday falls on the weekend. They are placed on the next working days; the regulation allows before or after.

**What about government holidays or other GCC countries?** Government-sector holidays are set each year by royal order and are usually longer, so they are **not** built in. For UAE, Qatar, Kuwait, Bahrain and Oman, only the weekend is built in, because Islamic holidays there are announced each year. Add announced dates with `customHolidays` (Gregorian or Hijri), and the result includes a warning to remind you.

**Why does a transliterated word say `"method": "guessed"`?** Arabic is usually written without short vowels. Common names, families and Saudi/GCC places come from a built-in dictionary (`"dictionary"`). Text with tashkeel is read exactly (`"vocalized"`). Other words are spelled by rule and flagged so you know to check them.

**Is my data stored?** Only in your own Apify run dataset. The Actor makes no external calls.

### Limitations

- Umm al-Qura range: 1300–1599 AH (12 Nov 1882 – 6 Dec 2173). Built-in Saudi holidays: 2022–2076.
- Actual Eid and Arafat dates follow official moon-sighting announcements and may shift by a day. Pass the announced dates in `customHolidays` when exact payroll accuracy matters.
- The holiday rules cover the Saudi private and non-profit sectors only. Company-specific days off are not included.
- Transliteration of unvocalized text outside the dictionary is approximate. The Actor does no named-entity recognition or machine translation.
- Amount-to-words covers 0 to 999,999,999,999.99 SAR, rounded to the nearest halala.
- Up to 10,000 items per run, 100,000 characters per text for normalization and 20,000 for transliteration.

### Sources

- Umm al-Qura calendar: ICU `islamic-umalqura` calendar data (Unicode CLDR/ICU), as shipped in Node.js.
- Saudi holidays: [HRSD, Holidays and Leaves](https://www.hrsd.gov.sa/en/knowledge-centre/articles/322); [Implementing Regulations of the Labor Law (PDF)](https://www.hrsd.gov.sa/sites/default/files/2023-02/The%20Implementing%20Regulations%20of%20Labor%20Law%20and%20its%20Annexes.pdf), Art. 24; [HRSD awareness guide (2025)](https://www.hrsd.gov.sa/sites/default/files/2025-12/awareness-guide-on-the-rights-and-duties-of-employers-and-workers---1-.pdf) (Founding Day, 22 Feb).
- Transliteration: [ALA-LC Arabic romanization table](https://www.loc.gov/catdir/cpso/romanization/arabic.pdf) (Library of Congress).

Found a wrong result or need another country or feature? Open an issue in the **Issues** tab. Fixes usually ship within days.

***

### 🇸🇦 أداة التاريخ الهجري واللغة العربية لوكلاء الذكاء الاصطناعي

أداة سريعة ومنخفضة التكلفة تنفّذ المهام العربية والسعودية التي تخطئ فيها النماذج اللغوية كثيراً، وتعيد نتائج JSON منظّمة لكل عنصر:

- **تحويل التاريخ** من الميلادي إلى الهجري والعكس وفق **تقويم أم القرى** الرسمي (من 1300 إلى 1599هـ)، مع أسماء الأيام والأشهر بالعربية والإنجليزية.
- **حساب أيام العمل** في السعودية ودول الخليج. تشمل الأداة إجازات القطاع الخاص الرسمية في المملكة وفق المادة 24 من اللائحة التنفيذية لنظام العمل: عيد الفطر 4 أيام تبدأ من اليوم التالي لـ29 رمضان، وعيد الأضحى 4 أيام تبدأ من يوم عرفة، ويوم التأسيس في 22 فبراير، واليوم الوطني في 23 سبتمبر.
- **تطبيع النص العربي**: إزالة التشكيل والتطويل، وتوحيد الألف والياء والتاء المربوطة، وتحويل الأرقام بين الهندية والعربية (الغربية).
- **النقحرة (الكتابة بالحروف اللاتينية)** بنظام مبسّط أو بنظام ALA-LC المعتمد في مكتبة الكونغرس، مع قاموس للأسماء والعائلات والمدن الشائعة.
- **تفقيط المبالغ بالريال السعودي** بالعربية الفصحى الصحيحة وبالإنجليزية، مثل: «فقط ألف ومائتان وخمسون ريالاً سعودياً وخمس وسبعون هللةً لا غير».

**السعر:** 0.001 دولار لكل نتيجة، أي دولار واحد لكل 1,000 عنصر.

**ملاحظات:** قد تختلف مواعيد الأعياد الفعلية يوماً واحداً بسبب رؤية الهلال. إجازات القطاع الحكومي وإجازات دول الخليج الأخرى غير مضمّنة، ويمكن إضافتها عبر حقل `customHolidays`.

# Changelog

This Actor's version history is a separate document: https://apify.com/dodiabak/arabic-hijri-toolkit/changelog.md

# Actor input Schema

## `operation` (type: `string`):

Default operation for items that do not set their own "operation" field.

## `items` (type: `array`):

Up to 10,000 items. Strings/numbers, e.g. "2026-10-19", "1448-05-08", "مَرْحَباً", 1250.75. Or objects: {"operation":"hijriToGregorian","date":"1448-09-01"}, {"operation":"businessDays","start":"2026-03-18","addBusinessDays":5}, {"operation":"businessDays","start":"2026-03-01","end":"2026-03-31"}, {"operation":"businessDays","date":"2026-09-23"}, {"operation":"transliterate","text":"محمد بن عبد العزيز"}, {"operation":"amountToWords","amount":"1,250.75"}. Dates: YYYY-MM-DD or DD/MM/YYYY, Arabic-Indic digits allowed; years ≤ 1650 are read as Hijri.

## `arabicDigitsInFormatted` (type: `boolean`):

Write ٢٠٢٦ instead of 2026 in the formatted Arabic date strings. ISO fields always use Western digits.

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

Weekend preset and (for SA) built-in holidays.

## `weekendDays` (type: `array`):

Override the weekend: day numbers 0–6 (0 = Sunday, 5 = Friday, 6 = Saturday). Leave empty to use the country preset.

## `includeOfficialHolidays` (type: `boolean`):

Eid al-Fitr (4 days from the day after 29 Ramadan), Eid al-Adha (4 days from the Day of Arafat), Founding Day (22 Feb), National Day (23 Sep). Computed from the Umm al-Qura calendar for 2022–2076.

## `compensateWeekendOverlap` (type: `boolean`):

The regulation grants equivalent days off before or after a holiday that falls on the weekly rest. If enabled, they are added on the next working days after the holiday (check the official announcement for the exact days).

## `customHolidays` (type: `array`):

Extra non-working days (Gregorian or Hijri), e.g. \["2026-12-03", {"date": "1448-10-01", "name": "Eid (announced)"}].

## `maxHolidaysListed` (type: `integer`):

Limit the holidaysInRange list for long ranges.

## `normalization` (type: `object`):

Switches for normalizeText. digits: "western" | "arabic-indic" | "persian" | "keep".

## `transliterationScheme` (type: `string`):

simple = ASCII practical spelling (Mohammed, Al-Qahtani). ala-lc = Library of Congress ALA-LC romanization with diacritics (Muḥammad, al-Qaḥṭānī).

## `capitalize` (type: `string`):

Capitalize every word (names), only the first, or none.

## `guessShortVowels` (type: `string`):

Arabic usually omits short vowels. auto = guess for the simple scheme only; results are flagged method="guessed". Text with tashkeel is always read exactly.

## `chequeStyle` (type: `boolean`):

Wrap Arabic words in فقط … لا غير and append "only" in English, as on Saudi cheques and invoices.

## `includeSaudiAdjective` (type: `boolean`):

Use ريال سعودي / ريالاً سعودياً instead of plain ريال.

## Actor input object example

```json
{
  "operation": "gregorianToHijri",
  "items": [
    "2026-10-19",
    {
      "operation": "hijriToGregorian",
      "date": "1448-09-01"
    },
    {
      "operation": "businessDays",
      "start": "2026-03-18",
      "addBusinessDays": 5
    },
    {
      "operation": "businessDays",
      "start": "2026-03-01",
      "end": "2026-03-31"
    },
    {
      "operation": "normalizeText",
      "text": "إِنَّ الْمُعَلِّمَــــةَ فِي الْمَدْرَسَةِ الأُولَى ١٢٣"
    },
    {
      "operation": "transliterate",
      "text": "محمد بن عبد العزيز القحطاني"
    },
    {
      "operation": "amountToWords",
      "amount": "15,750.25"
    },
    {
      "operation": "dateNames",
      "date": "2026-09-23"
    }
  ],
  "arabicDigitsInFormatted": false,
  "country": "SA",
  "weekendDays": [],
  "includeOfficialHolidays": true,
  "compensateWeekendOverlap": false,
  "customHolidays": [],
  "maxHolidaysListed": 50,
  "normalization": {
    "removeTashkeel": true,
    "removeTatweel": true,
    "unifyAlef": true,
    "unifyYaa": true,
    "unifyTaaMarbuta": true,
    "unifyHamza": false,
    "unifyPersianLetters": true,
    "digits": "western",
    "collapseWhitespace": true
  },
  "transliterationScheme": "simple",
  "capitalize": "words",
  "guessShortVowels": "auto",
  "chequeStyle": true,
  "includeSaudiAdjective": true
}
```

# Actor output Schema

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

No description

## `dates` (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 = {
    "items": [
        "2026-10-19",
        {
            "operation": "hijriToGregorian",
            "date": "1448-09-01"
        },
        {
            "operation": "businessDays",
            "start": "2026-03-18",
            "addBusinessDays": 5
        },
        {
            "operation": "businessDays",
            "start": "2026-03-01",
            "end": "2026-03-31"
        },
        {
            "operation": "normalizeText",
            "text": "إِنَّ الْمُعَلِّمَــــةَ فِي الْمَدْرَسَةِ الأُولَى ١٢٣"
        },
        {
            "operation": "transliterate",
            "text": "محمد بن عبد العزيز القحطاني"
        },
        {
            "operation": "amountToWords",
            "amount": "15,750.25"
        },
        {
            "operation": "dateNames",
            "date": "2026-09-23"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dodiabak/arabic-hijri-toolkit").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 = { "items": [
        "2026-10-19",
        {
            "operation": "hijriToGregorian",
            "date": "1448-09-01",
        },
        {
            "operation": "businessDays",
            "start": "2026-03-18",
            "addBusinessDays": 5,
        },
        {
            "operation": "businessDays",
            "start": "2026-03-01",
            "end": "2026-03-31",
        },
        {
            "operation": "normalizeText",
            "text": "إِنَّ الْمُعَلِّمَــــةَ فِي الْمَدْرَسَةِ الأُولَى ١٢٣",
        },
        {
            "operation": "transliterate",
            "text": "محمد بن عبد العزيز القحطاني",
        },
        {
            "operation": "amountToWords",
            "amount": "15,750.25",
        },
        {
            "operation": "dateNames",
            "date": "2026-09-23",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("dodiabak/arabic-hijri-toolkit").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 '{
  "items": [
    "2026-10-19",
    {
      "operation": "hijriToGregorian",
      "date": "1448-09-01"
    },
    {
      "operation": "businessDays",
      "start": "2026-03-18",
      "addBusinessDays": 5
    },
    {
      "operation": "businessDays",
      "start": "2026-03-01",
      "end": "2026-03-31"
    },
    {
      "operation": "normalizeText",
      "text": "إِنَّ الْمُعَلِّمَــــةَ فِي الْمَدْرَسَةِ الأُولَى ١٢٣"
    },
    {
      "operation": "transliterate",
      "text": "محمد بن عبد العزيز القحطاني"
    },
    {
      "operation": "amountToWords",
      "amount": "15,750.25"
    },
    {
      "operation": "dateNames",
      "date": "2026-09-23"
    }
  ]
}' |
apify call dodiabak/arabic-hijri-toolkit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dodiabak/arabic-hijri-toolkit"
        }
    }
}
```

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/FcOq72RpsDFo0aGzF/builds/fx0cNwqpqc1Nmj6jd/openapi.json
