# EU Tenders Scraper (`datascrapers/eu-tenders-scraper`) Actor

Delivers a structured dataset of EU public procurement notices from TED (Tenders Electronic Daily). Filter tenders by business opportunity, CPV code, buyer country, procedure type, publication date, or keyword, with optional notice details and buyer contacts.

- **URL**: https://apify.com/datascrapers/eu-tenders-scraper.md
- **Developed by:** [Farhan Ali](https://apify.com/datascrapers) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 tender scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/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

**EU Tenders Scraper** creates a structured dataset of EU public procurement notices collected from TED (Tenders Electronic Daily). Each dataset item represents one tender notice and includes its publication number, title, notice type, buyer, buyer country, CPV classification, procedure type, contract nature, place of performance, publication date, submission deadline, and detail URLs; when `fetchDetails` is enabled, it also attaches buyer contacts, document links, and section-level details. Query the source with `fullTextSearch`, `expertQuery`, `buyerName`, CPV codes, buyer country, procedure type, publication dates, or specific `publicationNumbers` and `searchUrls`, cap the result with `maxItems`, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or XML.

### Dataset at a glance

| Property | Value |
|---|---|
| Source | TED (Tenders Electronic Daily) |
| Record unit | One public procurement notice |
| Input methods | `fullTextSearch`, `expertQuery`, `buyerName`, `cpvCodes`, `buyerCountry`, `procedureType`, publication dates, `publicationNumbers`, `searchUrls` |
| Main identifiers | `publicationNumber` |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, HTML, XML |
| Update model | Fresh records per Actor run |
| Pricing | Pay-per-event: $1.00 / 1,000 tenders (standard tier) |

### Coverage and available records

The Actor accepts two complementary query styles in the same run:

- **Structured filters** — `businessOpportunity`, `cpvCodes`, `contractNature`, `placeOfPerformance`, `placeOfProcedure`, `procedureType`, `buyerCountry`, `buyerName`, `legalBasis`, `funding`, `noticeTypes`, `publicationYear`, and a `publicationDateFrom`/`publicationDateTo` range.
- **Direct targeting** — `publicationNumbers` (specific notice numbers), `searchUrls` (TED notice or search-result URLs), and `ojsNumber` (Official Journal supplement number).

Search behavior is further controlled by:

- **`expertQuery`** — a raw TED expert-syntax query that overrides the structured filters.
- **`fullTextSearch`** — free-text search across notices.
- **`language`** — one of 24 EU languages for rendering labels and detail views (default `EN`).
- **`scope`** — `ALL`, `ACTIVE`, or `LATEST` notices.
- **`sortBy`** / **`sortOrder`** — sort by `publication-number`, `publication-date`, or `deadline-receipt-request`, ascending or descending.
- **`onlyLatestVersions`** — return only the most recent version of each notice.

Conditional enrichment is controlled by `fetchDetails` (default `false`). When enabled, each notice is enriched with buyer contacts, document links, table of contents, section text, buyer details, and procedure details. `maxItems` caps the total number of notices returned (`0` = unlimited); `pageSize` (max 100) controls how many results are read per page. Notice detail is not collected when `fetchDetails` is off.

### Data dictionary

| Field | Type | Nullable | Description | Example |
|---|---:|---|---|---|
| `publicationNumber` | string | No | Unique TED notice identifier | `"871151-2025"` |
| `title` | string | No | Notice title | `"France – Agency fuel cards – ..."` |
| `noticeType` | object | Yes | Notice type as `code`/`label` | `{"code":"can-standard","label":"Contract or concession award notice – standard regime"}` |
| `procedureType` | object | Yes | Procedure type as `code`/`label` | `{"code":"open","label":"Open"}` |
| `contractNature` | array | Yes | Contract nature (`supplies`/`services`/`works`) as `code`/`label` objects | `[{"code":"supplies","label":"Supplies"}]` |
| `buyerName` | string | Yes | Buying organisation name | `"SDIS 85"` |
| `buyerNames` | array | Yes | All buyer organisation names | — |
| `buyerCountry` | array | Yes | Buyer country as `code`/`label` objects | `[{"code":"FRA","label":"France"}]` |
| `placeOfPerformance` | array | Yes | NUTS place(s) of performance as `code`/`label` objects | `[{"code":"FRG05","label":"Vendée"}]` |
| `placeOfProcedure` | array | Yes | NUTS place(s) of procedure (BT-727) | — |
| `countryOfBuyer` | array | Yes | Buyer country as an array | — |
| `publicationDate` | string | Yes | Publication date (ISO 8601 with offset) | `"2025-12-31+01:00"` |
| `deadlineReceiptRequest` | string | Yes | Submission deadline; empty string when none | `""` |
| `officialLanguage` | array | Yes | Official language(s) of the notice | — |
| `procedureIdentifier` | string | Yes | Procedure identifier | — |
| `detailUrl` | string | No | Full notice link on TED | `"https://ted.europa.eu/en/notice/-/detail/871151-2025"` |
| `notificationSummary` | string | Yes | Concise notifier summary | `"TED Notice 871151-2025\nFrance – Agency fuel cards …"` |
| `language` | string | Yes | Output language code | `"EN"` |
| `searchQuery` | string | Yes | Search query that produced the row | `"publication-number=871151-2025 SORT BY publication-number DESC"` |
| `appliedFilters` | object | Yes | Echo of the filters applied to the run | — |
| `detailTitle` | string | Yes | Detail page title (present with `fetchDetails`) | — |
| `pdfUrl` | string | Yes | PDF download link | `"https://ted.europa.eu/en/notice/871151-2025/pdf"` |
| `buyerProfileUrls` | array | Yes | Buyer profile URL(s) | `["https://sdis85.e-marchespublics.com"]` |
| `mainClassification` | array | Yes | CPV classification as `code`/`label` objects | `[{"code":"30163100","label":"Agency fuel cards"}]` |
| `translationLanguages` | array | Yes | Available translation languages | — |
| `noticeStandardVersion` | string | Yes | Notice standard/format version | — |
| `tableOfContents` | array | Yes | Notice section headings (present with `fetchDetails`) | — |
| `documentLinks` | object | Yes | Document download links (present with `fetchDetails`) | — |
| `sections` | object | Yes | Full notice section content (present with `fetchDetails`) | — |
| `contacts` | object | Yes | Buyer contact emails/phones (present with `fetchDetails`) | `{"emails":["sajcp@sdis-vendee.fr"]}` |
| `buyerDetails` | array | Yes | Structured buyer details (present with `fetchDetails`) | — |
| `procedureDetails` | array | Yes | Structured procedure details (present with `fetchDetails`) | — |
| `summaryText` | string | Yes | Concise human-readable notice summary | — |

`publicationNumber` is the best stable field for deduplication, with `detailUrl` as a fallback. The `code`/`label` objects and `contacts` object follow TED's structure; fields marked `—` do not have a verified example in the schema.

### Example dataset record

The following representative record was produced by a run with `publicationNumbers: ["871151-2025"]` and `fetchDetails` enabled.

```json
{
  "publicationNumber": "871151-2025",
  "title": "France – Agency fuel cards – Fourniture de cartes carburant et de carburant en vrac pour le SDIS de la Vendée",
  "noticeType": {
    "code": "can-standard",
    "label": "Contract or concession award notice – standard regime"
  },
  "procedureType": { "code": "open", "label": "Open" },
  "contractNature": [{ "code": "supplies", "label": "Supplies" }],
  "buyerName": "SDIS 85",
  "buyerCountry": [{ "code": "FRA", "label": "France" }],
  "placeOfPerformance": [{ "code": "FRG05", "label": "Vendée" }],
  "publicationDate": "2025-12-31+01:00",
  "deadlineReceiptRequest": "",
  "detailUrl": "https://ted.europa.eu/en/notice/-/detail/871151-2025",
  "pdfUrl": "https://ted.europa.eu/en/notice/871151-2025/pdf",
  "mainClassification": [{ "code": "30163100", "label": "Agency fuel cards" }],
  "buyerProfileUrls": ["https://sdis85.e-marchespublics.com"],
  "contacts": { "emails": ["sajcp@sdis-vendee.fr"] },
  "notificationSummary": "TED Notice 871151-2025\nFrance – Agency fuel cards …",
  "searchQuery": "publication-number=871151-2025 SORT BY publication-number DESC"
}
```

### Query and input reference

| Input | Type | Required | Default | Accepted values | Description |
|---|---:|---|---|---|---|
| `fullTextSearch` | string | No | — | free text | Free-text search across notices (maps to FT expert field). |
| `businessOpportunity` | array | No | `["competition"]` | `competition`, `result`, `planning`, `veat`, `dir-awa-pre`, `pmc`, `corr` | Filter by business opportunity type. |
| `cpvCodes` | array | No | — | CPV codes | Common Procurement Vocabulary codes, e.g. `72000000`. |
| `contractNature` | array | No | — | `supplies`, `services`, `works` | Contract nature codes. |
| `placeOfPerformance` | array | No | — | NUTS/country codes | Where work is performed, e.g. `DEU`, `PL911`. |
| `placeOfProcedure` | array | No | — | NUTS/country codes | Place of procedure (BT-727). |
| `procedureType` | array | No | — | `open`, `restricted`, `neg-wo-call`, … | Procedure type codes. |
| `buyerCountry` | array | No | — | ISO 3166-1 alpha-3 | Buyer country codes, e.g. `DEU`, `FRA`, `POL`. |
| `buyerName` | string | No | — | free text | Partial match on buyer organisation name. |
| `publicationYear` | string | No | — | `^\d{4}$` | Filter by publication year, e.g. `2025`. |
| `publicationDateFrom` | string | No | — | `YYYY-MM-DD` | Start of publication date range. |
| `publicationDateTo` | string | No | — | `YYYY-MM-DD` | End of publication date range. |
| `legalBasis` | array | No | — | e.g. `32014L0024` | Legal basis codes. |
| `funding` | array | No | — | e.g. `external-aid-program` | Funding programme codes. |
| `noticeTypes` | array | No | — | notice-type codes | Direct notice-type codes; overrides `businessOpportunity`. |
| `ojsNumber` | string | No | — | supplement number | Official Journal supplement number. |
| `publicationNumbers` | array | No | — | e.g. `871151-2025` | Fetch specific notices by publication number. |
| `searchUrls` | array | No | — | TED URLs | TED notice detail or search-result URLs. |
| `expertQuery` | string | No | — | TED expert syntax | Raw TED expert query; overrides structured filters. |
| `language` | string | No | `EN` | 24 EU codes (`EN`, `DE`, `FR`, … `BG`) | Language for labels and detail rendering. |
| `scope` | string | No | `ALL` | `ALL`, `ACTIVE`, `LATEST` | TED search scope. |
| `onlyLatestVersions` | boolean | No | `false` | `true` / `false` | Return only the latest version of each notice. |
| `sortBy` | string | No | `publication-number` | `publication-number`, `publication-date`, `deadline-receipt-request` | Sort column. |
| `sortOrder` | string | No | `DESC` | `DESC`, `ASC` | Sort direction. |
| `fetchDetails` | boolean | No | `false` | `true` / `false` | Fetch full notice detail page (contacts, documents, sections). |
| `maxItems` | integer | No | `50` | `0` = unlimited | Maximum notices to scrape. |
| `pageSize` | integer | No | `50` | `1`–`100` | Results per page. |
| `proxyConfiguration` | object | No | Apify `RESIDENTIAL` | proxy config | Proxy settings. |

A minimal request and an advanced request:

```json
{ "publicationNumbers": ["871151-2025"], "maxItems": 1 }
```

```json
{
  "businessOpportunity": ["competition"],
  "buyerCountry": ["POL"],
  "publicationYear": "2025",
  "cpvCodes": ["72000000"],
  "language": "EN",
  "fetchDetails": true,
  "maxItems": 20,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

### Retrieve the data through the API

1. Start the Actor with a JSON input.
2. Wait for the run to finish, or use the synchronous `?waitForFinish=` endpoint when appropriate.
3. Read items from the run's default dataset.
4. Paginate or export the dataset.

A Python example using the Apify client:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datascrapers/eu-tenders-scraper").call(
    run_input={"buyerCountry": ["POL"], "publicationYear": "2025", "maxItems": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["publicationNumber"], item["title"])
```

For other languages, use the generated API tab on the Actor page. Never place a real token in a URL or example.

### Data quality and record handling

- **Conditional fields** — `contacts`, `documentLinks`, `sections`, `tableOfContents`, `buyerDetails`, `procedureDetails`, and `detailTitle` are present only when `fetchDetails` is enabled. `deadlineReceiptRequest` is an empty string when no deadline applies.
- **Completeness** — overview-only runs omit the detail fields above; `buyerNames`, `placeOfProcedure`, `countryOfBuyer`, `officialLanguage`, and other secondary fields may be absent for some notices.
- **Deduplication** — each run outputs one row per `publicationNumber` discovered in that run; re-runs can repeat the same notice. Deduplicate across runs on `publicationNumber`.
- **Retries** — individual notices fail soft so a single failed request does not stop the run.
- **Normalization** — `publicationDate` is an ISO 8601 string with offset; `code`/`label` objects carry both the source code and a rendered label. Field names are preserved in camelCase.
- **Raw versus derived** — all fields are source values; the Actor does not translate or derive content beyond the selected `language` rendering.

### Export and pipeline examples

| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API or webhook consumer | Tender monitoring and award history |
| Google Sheets | Apify integration | Weekly procurement watchlists |
| S3 / cloud storage | Scheduled export or integration | Daily notice archives |
| CRM / lead tool | Scheduled run + export | Feed new opportunities to sales |

### Pricing and cost examples

Billing is pay-per-event. Each tender notice written to the dataset triggers the `dataset-item` event ("Tender scraped").

| Event | What counts | Rate (per 1,000) |
|---|---|---|
| `dataset-item` ("Tender scraped") | Each tender notice saved to the dataset | $1.00 |
| `apify-actor-start` | One-time per run | $0.00005 |

Higher Apify plan tiers apply a discount (per 1,000): Bronze $0.90 / Silver $0.80 / Gold (and Platinum/Diamond) $0.70. For this Actor's pay-per-event model, platform usage is not billed separately to the end user beyond the event rates above.

| Records | Estimated base cost |
|---:|---:|
| 1,000 tenders | $1.00 |
| 10,000 tenders | $10.00 |
| 100,000 tenders | $100.00 |

Estimates assume the standard tier and no detail-enrichment surcharge; `fetchDetails` does not add a separate event but increases run time.

### Limitations and responsible data use

- The Actor collects publicly accessible TED (Tenders Electronic Daily) procurement notices only.
- Notice data reflects TED at crawl time and can change or be superseded by later versions.
- Some fields are conditional or empty (see Data quality).
- No historical snapshots are guaranteed unless you store the exported datasets yourself.
- You are responsible for complying with applicable privacy, contractual, and legal requirements when using the data.

### Dataset questions

#### What does one dataset item represent?

One EU public procurement notice from TED, optionally enriched with buyer contacts, document links, and section-level details when `fetchDetails` is enabled.

#### Which field should I use as a unique identifier?

Use `publicationNumber`; fall back to `detailUrl` when it is absent.

#### Are fields nullable or conditional?

Yes. Detail fields such as `contacts`, `documentLinks`, `sections`, `buyerDetails`, and `procedureDetails` appear only when `fetchDetails` is on, and `deadlineReceiptRequest` is an empty string when no deadline applies.

#### Can I combine structured filters with a direct search?

Yes, but `expertQuery` overrides the structured filters, and `noticeTypes` overrides `businessOpportunity` when both are set.

#### What counts as a billable result?

Each tender notice written to the dataset is one `dataset-item` charge, plus a one-time `apify-actor-start` event per run.

#### Does the Actor return historical data?

Notices are read fresh from TED on each run. Historical snapshots are not stored by the Actor, so archive the exported datasets yourself if you need history.

### Related datasets from Data Scrapers

- **FindLaw Scraper** — law firm and attorney records for entity research around legal-service procurement.
- **LinkedIn Company Scraper** — company profiles for buyer and vendor research.
- **Trustpilot Scraper** — vendor reputation reviews for supplier due diligence.
- **Glassdoor Jobs Scraper** — job listings for labour-market analysis.
- **ZipRecruiter Scraper** — job listings for recruitment and talent research.

### Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, the required fields, the expected record volume, and your preferred delivery format.

# Actor input Schema

## `fullTextSearch` (type: `string`):

Free-text search across TED notices (maps to FT expert field). Example: construction software

## `businessOpportunity` (type: `array`):

Filter by business opportunity type. Common values: competition, result, planning, veat, dir-awa-pre, pmc, corr

## `cpvCodes` (type: `array`):

Common Procurement Vocabulary codes, e.g. 72000000 for IT services

## `contractNature` (type: `array`):

Contract nature codes: supplies, services, works

## `placeOfPerformance` (type: `array`):

NUTS or country codes where work is performed, e.g. DEU, POL, PL911

## `placeOfProcedure` (type: `array`):

NUTS or country codes for place of procedure (BT-727 field)

## `procedureType` (type: `array`):

Procedure type codes, e.g. open, restricted, neg-wo-call

## `buyerCountry` (type: `array`):

ISO 3166-1 alpha-3 buyer country codes, e.g. DEU, FRA, POL

## `buyerName` (type: `string`):

Partial match on buyer organisation name

## `publicationYear` (type: `string`):

Filter by publication year, e.g. 2025

## `publicationDateFrom` (type: `string`):

Start of publication date range (YYYY-MM-DD)

## `publicationDateTo` (type: `string`):

End of publication date range (YYYY-MM-DD)

## `legalBasis` (type: `array`):

Legal basis codes, e.g. 32014L0024

## `funding` (type: `array`):

Funding programme codes, e.g. external-aid-program

## `noticeTypes` (type: `array`):

Direct notice-type codes (advanced). Overrides businessOpportunity when both are set.

## `ojsNumber` (type: `string`):

Official Journal supplement number

## `publicationNumbers` (type: `array`):

Fetch specific notices by publication number, e.g. 871151-2025

## `searchUrls` (type: `array`):

TED notice detail or search result URLs. Publication numbers and search params are extracted automatically.

## `expertQuery` (type: `string`):

Raw TED expert search query (overrides structured filters). Example: (buyer-country IN (DEU)) AND (FT ~ (software)) SORT BY publication-number DESC

## `language` (type: `string`):

Language for labels and detail view rendering

## `scope` (type: `string`):

TED search scope

## `onlyLatestVersions` (type: `boolean`):

Return only the latest version of each notice

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

Sort column for search results

## `sortOrder` (type: `string`):

Sort direction

## `fetchDetails` (type: `boolean`):

When enabled, fetches the full notice detail page including buyer contacts, procedure info, document links, and section text. Disabled by default for faster overview-only runs.

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

Maximum number of notices to scrape (0 = unlimited)

## `pageSize` (type: `integer`):

Number of results per search API page (max 100)

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

Proxy settings for anti-bot protection

## Actor input object example

```json
{
  "businessOpportunity": [
    "competition"
  ],
  "language": "EN",
  "scope": "ALL",
  "onlyLatestVersions": false,
  "sortBy": "publication-number",
  "sortOrder": "DESC",
  "fetchDetails": false,
  "maxItems": 50,
  "pageSize": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runStats` (type: `string`):

No description

## `input` (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 = {
    "businessOpportunity": [
        "competition"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datascrapers/eu-tenders-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 = {
    "businessOpportunity": ["competition"],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("datascrapers/eu-tenders-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 '{
  "businessOpportunity": [
    "competition"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call datascrapers/eu-tenders-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datascrapers/eu-tenders-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/c67ob0BdkAtHBWyGB/builds/1f2w5v2QXtQ8a3CKE/openapi.json
