# French & EU Tenders Monitor – BOAMP + TED Daily Alerts (`spherical_distinction/fr-eu-tenders-monitor`) Actor

Daily alerts for French (BOAMP, incl. MAPA below EU thresholds) and EU (TED) public tenders in one deduplicated feed. Filter by keyword, CPV, département, value. Award notices with winners. "Only new" mode: pay only for new notices, about $3/month at 20 new notices a day.

- **URL**: https://apify.com/spherical\_distinction/fr-eu-tenders-monitor.md
- **Developed by:** [Baron Sigma](https://apify.com/spherical_distinction) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 tender results

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

## French, EU & UK Public Tenders Monitor 🇫🇷🇪🇺🇬🇧🇳🇱 (BOAMP + TED + Find a Tender + TenderNed) – Appels d'offres

**One EU + UK tender feed**: get every new public tender matching your business in one clean, deduplicated dataset, from four official sources:

- **BOAMP** (Bulletin officiel des annonces des marchés publics – DILA): all French notices, including small contracts below EU thresholds (MAPA).
- **TED** (Tenders Electronic Daily – EU Publications Office): all EU-wide notices above thresholds, any country.
- **Find a Tender** (UK Cabinet Office) – **new**: UK public procurement notices, which are no longer published on TED since Brexit.
- **TenderNed** (Netherlands) – **new**: Dutch notices, including national ones below EU thresholds.

No login, no API key, no HTML scraping: the Actor uses the official open-data APIs, so it doesn't break when a website changes.

| Source | Country | Coverage | Values & winners | Licence | Selected by default |
|---|---|---|---|---|---|
| `boamp` – BOAMP | France | All notices, incl. below EU thresholds | Winners' names (no awarded value) | Licence Ouverte 2.0 | ✅ |
| `ted` – TED | EU/EEA (choose countries) | Above EU thresholds | Estimated & awarded values, winners | Commission Decision 2011/833/EU | ✅ |
| `fts` – Find a Tender | United Kingdom | UK notices (Procurement Act 2023 and older regulations) | Estimated & contract values (GBP), winners | Open Government Licence v3.0 | – |
| `tenderned` – TenderNed | Netherlands | National and EU notices | Not in the open data (use TED with `NLD` for EU awards) | CC0 1.0 | – |

With no `sources` input, the Actor keeps its previous behaviour (BOAMP + TED), so existing schedules and costs don't change. Add `fts` and/or `tenderned` to get the UK and Dutch feeds.

### Key differentiators

- 🔔 **Monitoring mode** – turn on *Only new notices*, schedule the Actor daily, and receive only the tenders you haven't seen yet (Slack, email, Google Sheets, webhooks via Apify integrations). You only pay for new notices.
- 🧹 **One schema for all four sources** – title, buyer, country, departments / NUTS, CPV codes, deadline, estimated value, currency, procedure, winners, links. The `source` field says where each notice comes from.
- ♻️ **Cross-source deduplication** – European notices appear on BOAMP and TED, Dutch EU notices on TenderNed and TED; you get each one once (matched on the eForms notice ID, the TED publication number that TenderNed records, or buyer + title while TED has not published the notice yet). UK notices are not on TED, so there is nothing to deduplicate.
- 🏆 **Award notices with winners** – who won which contract, for how much: perfect for competitor intelligence and for selling to the winners.
- 🎯 **Filters** – keywords (title or full text), CPV codes or prefixes, French departments, EU countries, works / services / supplies, minimum value, still-open calls only. They apply to every source.

### Who is it for?

SMEs and consultants who answer public tenders, bid managers, business developers selling to public buyers or to contract winners, market analysts, journalists and researchers.

### Input examples

**Daily IT tenders alert in France** (the prefilled example; schedule it every morning):

```json
{
  "keywords": ["logiciel", "informatique", "cybersécurité"],
  "noticeTypes": ["contract-notice"],
  "tedCountries": ["FRA"],
  "onlyNew": true,
  "maxResults": 50
}
```

The first run returns the matching notices from the last 3 days (in our test on 27 September 2026: 11 notices, i.e. $0.055). After that, each run returns only notices you have not received yet.

**Construction works in Rhône and Isère above €500k**:

```json
{ "cpvPrefixes": ["45"], "sources": ["boamp"], "boampDepartments": ["69", "38"], "minEstimatedValue": 500000, "publishedWithinDays": 7 }
```

**UK + Netherlands IT tenders feed** (English and Dutch keywords, daily monitor; add `NLD` to TED so Dutch EU notices are deduplicated):

```json
{
  "sources": ["fts", "tenderned", "ted"],
  "tedCountries": ["NLD"],
  "keywords": ["software", "cyber", "ICT", "applicatie"],
  "cpvPrefixes": ["72", "48"],
  "noticeTypes": ["contract-notice"],
  "onlyNew": true,
  "maxResults": 100
}
```

In our test on 27 September 2026 (default 3-day window) this returned 6 open calls (1 from Find a Tender, 5 from TenderNed), i.e. $0.03, in 3 minutes.

**Who won cleaning contracts in Belgium, Luxembourg and France this month?**

```json
{ "noticeTypes": ["award"], "cpvPrefixes": ["90911", "90919"], "sources": ["ted"], "tedCountries": ["FRA", "BEL", "LUX"], "publishedWithinDays": 30 }
```

### Output

Example (real output, trimmed):

```json
{
  "id": "boamp:26-91385",
  "source": "BOAMP",
  "noticeType": "award",
  "noticeTypeLabel": "Résultat de marché",
  "title": "MX26-028 – Externalisation du réseau Wifi et de l'accès Internet des logements de l'Ecole polytechnique",
  "buyerName": "Ecole Polytechnique",
  "buyerCity": "Palaiseau",
  "departments": ["75", "91"],
  "procedure": "Procédure Ouverte",
  "contractTypes": ["services"],
  "cpvCodes": ["72400000"],
  "publicationDate": "2026-09-23",
  "winners": ["SAS Wifirst"],
  "url": "https://www.boamp.fr/pages/avis/?q=idweb:26-91385"
}
```

#### All output fields

`id, source, sourceId, tedPublicationNumber, noticeUuid, procedureId, noticeType, noticeTypeLabel, title, description, buyerName, buyerCity, buyerCountry, departments, nutsCodes, procedure, contractTypes, cpvCodes, categories, publicationDate, deadline, estimatedValue, currency, winners, awardedValue, isEuropean, url, submissionUrl, documentsUrl, scrapedAt, license`

`source` is `BOAMP`, `TED`, `FTS` (Find a Tender) or `TENDERNED`. `noticeType` is normalised across sources: `contract-notice`, `award`, `prior-information`, `correction`, `other` (for example UK *UK4 tender notice* → `contract-notice`, *UK6/UK7 contract award / details* → `award`, TenderNed *Aankondiging gegunde opdracht* → `award`, *Rectificatie* → `correction`). `buyerCountry` uses ISO alpha-3 codes (`FRA`, `GBR`, `NLD`…).

### How much does tender monitoring cost?

You pay only for the notices saved to the dataset (pay per event `tender-result`, the same price for every source), plus a negligible Actor start fee of $0.00005 per run. There are no platform-usage charges. In *Only new notices* mode, notices already delivered by previous runs, and duplicates found on another source, are skipped and **not charged**.

| Use case | Notices | Apify Free / Starter ($0.005 per notice) | Scale ($0.0045) | Business ($0.004) |
|---|---|---|---|---|
| Actor start fee | once per run | $0.00005 | $0.00005 | $0.00005 |
| Prefilled example (one run) | ~10–50 | $0.05–$0.25 | $0.045–$0.23 | $0.04–$0.20 |
| Daily alert, ~20 new notices/day | ~600/month | ~$3/month | ~$2.70/month | ~$2.40/month |
| Historical export | 1,000 | $5 | $4.50 | $4 |
| Historical export | 10,000 | $50 | $45 | $40 |

Apify's Free plan includes **$5 of platform usage every month** (see [apify.com/pricing](https://apify.com/pricing)), about 1,000 notices a month at no cost. A daily schedule adds about $0.0015 a month in start fees. The number of new notices per day depends entirely on your filters and sources: without keyword or CPV filters, Find a Tender published about 1,800 notices and TenderNed about 500 (all notice types) in the 5 days before 27 September 2026. Set *Max results* and the *maximum cost per run* to cap your spend.

#### How does it compare?

Price checked on the vendor's public pricing page on **27 September 2026**. Marchés Online is a full web service (search interface, email alerts, documents), so compare what you need.

| Option | Price (27 Sep 2026) | Source |
|---|---|---|
| This Actor | $0.005 per notice (Free/Starter), no subscription | Pricing tab |
| Marchés Online – Veille Intégrale | €45 excl. VAT/month for 1–5 departments, +€10 per extra department, €200 excl. VAT/month for all areas | [marchesonline.com/veille-integrale](https://www.marchesonline.com/veille-integrale) |

### Good to know

- BOAMP publishes twice a day, 7 days a week; TED publishes on working days. European notices usually appear on BOAMP (and TenderNed) a few days before TED.
- **Find a Tender** only allows a few API requests per minute and has no keyword search, so the Actor pages through all UK notices of the period (100 per request, one request every 5 s, waiting when the API asks it to) and filters them itself. In our tests a 3-day window took about 3 minutes and a 5-day window about 7 minutes (including one 2-minute pause requested by the API); long historical windows take longer.
- **TenderNed**: the Actor uses TenderNed's public publication webservice (listed on data.overheid.nl, CC0). It returns the notice, buyer, deadline, procedure, CPV and NUTS codes and the TED number, but no estimated values and no winners: those are only in TenderNed's XML API, which requires credentials. For Dutch EU-level awards with winners and values, add `NLD` to the TED countries. TenderNed states that this webservice may change without notice.
- Keywords are matched in the notice language: French on BOAMP, English on Find a Tender, Dutch on TenderNed.
- `minEstimatedValue` is compared in the notice's own currency (GBP for UK notices).
- CPV filtering on BOAMP is applied to the CPV codes found in each notice; a few simplified notices without a CPV code will not match a CPV filter (use keywords instead).
- Estimated values are only available when the buyer published them.
- Department filters apply to BOAMP; for TED use countries and the `nutsCodes` output field (UK notices carry ITL/NUTS-style `UK…` codes, Dutch ones `NL…` codes).
- Each source query is limited to the 10 000 most recent matching notices per run – use date windows for bigger historical extracts.

### How to get daily BOAMP tender alerts in Slack or Google Sheets

1. Fill in your filters (keywords, CPV codes, departments…), turn on **Only new notices** and click **Save as a new task**.
2. In Apify Console, open **Schedules**, create a schedule (for example every day at 08:00, Europe/Paris) and add your task to it.
3. In the task's **Integrations** tab, add **Slack** (post a message when a run succeeds) or **Google Sheets** (append the dataset rows to a sheet). Email notifications and webhooks (Make, Zapier, n8n) work the same way.

Each morning the run picks up notices published since the previous runs and sends only the new ones. If nothing new was published, nothing is charged.

### How to find who won a public contract in France (award notices)

Set *Notice types = Awards / results*. Each award notice lists the winners in the `winners` field. TED notices also give the awarded value in `awardedValue` when the buyer published it; BOAMP result notices give winner names but no value in this Actor's output. Example: who won cleaning contracts in France, Belgium and Luxembourg in the last 30 days:

```json
{ "noticeTypes": ["award"], "cpvPrefixes": ["90911", "90919"], "sources": ["ted"], "tedCountries": ["FRA", "BEL", "LUX"], "publishedWithinDays": 30 }
```

Use this for competitor intelligence (who wins in your sector, at what price) or to sell to companies that just won a contract.

### BOAMP, TED, Find a Tender, TenderNed: which tenders appear where?

| | BOAMP | TED |
|---|---|---|
| Publisher | DILA (French official journal) | EU Publications Office |
| Coverage | French public buyers, **including contracts below EU thresholds** (MAPA) | Notices **above EU thresholds**, all EU/EEA countries |
| Frequency | Twice a day, 7 days a week | Working days |
| Overlap | French above-threshold notices appear on **both** | usually a few days after BOAMP |

- **UK**: since 1 January 2021, UK notices go to Find a Tender instead of TED, so UK tenders are only available here through `fts`.
- **Netherlands**: TenderNed publishes all Dutch notices; the above-threshold ones are also sent to TED a few days later.

With *Deduplicate across sources* on (default), each notice is kept once: BOAMP ↔ TED on the eForms notice identifier, TenderNed ↔ TED on the TED publication number (or on buyer + title + notice type before TED has published it). When both copies arrive in the same run, the TED copy is kept because it carries values and winners.

### Use it from Claude, Cursor or any MCP client

Apify exposes public Store Actors as tools through its hosted MCP server at `https://mcp.apify.com` ([docs](https://docs.apify.com/platform/integrations/mcp)). To give your AI assistant just this Actor, add this to your MCP client configuration (for Cursor: `.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=spherical_distinction/fr-eu-tenders-monitor"
    }
  }
}
```

On first connection your browser opens so you can sign in to Apify and approve access (OAuth). You can also skip OAuth by adding `"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }` with your token from Console → Settings → API & Integrations. In **Claude Desktop**, add a custom connector with the same URL. With the Apify CLI: `apify mcp install cursor --tools spherical_distinction/fr-eu-tenders-monitor` (also `claude-code`, `vscode`, `codex`…).

Then just ask, for example: *"Find open UK and Dutch cybersecurity tenders published this week"* or *"Who won cleaning contracts in France last month?"*. Runs are billed to your Apify account at the normal per-notice price. The generic `https://mcp.apify.com` URL (no `tools` parameter) also works: the assistant can then search the Store and call this Actor by name.

### Combine with French Company Leads

Award notices give you the **names** of the winning companies. For French winners, put the name in the *Company name, SIREN, SIRET or VAT number* field of [French Company Leads](https://apify.com/spherical_distinction/french-company-leads) to get its SIREN, VAT number, headcount, revenue, address and directors from official Sirene/RNE data. Chain the two with Apify integrations or webhooks to turn "who just won a contract" into a qualified B2B lead list.

### FAQ

**Do I need an API key or an account on BOAMP, TED, Find a Tender or TenderNed?** No. The Actor uses the official open-data APIs, which need no login.

**Does it download the tender documents (DCE)?** No. It returns notice data and the links (`url`, `submissionUrl`, `documentsUrl` when TED provides them).

**Can I monitor several countries?** Yes. Use `tedCountries` (ISO alpha-3 codes, or `ALL`) for EU notices above thresholds, and add `fts` (UK) and `tenderned` (Netherlands) to `sources`. BOAMP covers France only.

**Can I run several different alerts?** Yes. Save each one as a task. Each set of filters keeps its own "already seen" memory, or you can share one with *Monitor name*.

### Legal

- BOAMP data © DILA, reused under the **Licence Ouverte 2.0** (free reuse including commercial, with attribution).
- TED data © European Union, reuse authorised under **Commission Decision 2011/833/EU**.
- Find a Tender data © Crown copyright, published by the Cabinet Office under the **Open Government Licence v3.0** (free reuse including commercial, with attribution).
- TenderNed data published by TenderNed under **CC0 1.0** (public domain), as stated on data.overheid.nl.
- Every row carries its source and licence in the `license` field. Notices may contain names of contact persons; handle them in line with the GDPR.

This Actor is not affiliated with the DILA, the EU Publications Office, the UK Cabinet Office or TenderNed.

***

### 🇫🇷 En français : veille des marchés publics BOAMP, TED, Royaume-Uni et Pays-Bas

Cet Actor surveille les appels d'offres publics français (BOAMP, y compris les MAPA sous les seuils européens) et européens (TED) et les regroupe dans un seul flux, sans doublons. Vous filtrez par mots-clés, codes CPV, départements, pays, type de marché et montant estimé, puis vous recevez chaque jour uniquement les nouveaux avis grâce au mode « Only new notices », sur Slack, par e-mail ou dans Google Sheets. Vous pouvez aussi ajouter les avis britanniques (Find a Tender, absents de TED depuis le Brexit) et néerlandais (TenderNed). Les avis d'attribution indiquent les attributaires, ce qui est utile pour la veille concurrentielle ou la prospection. Vous payez 0,005 $ par avis livré, soit environ 3 $ par mois pour 20 nouveaux avis par jour, sans abonnement (le plan gratuit Apify inclut 5 $ de crédit par mois).

🇫🇷 **Mots-clés** : veille marchés publics, appels d'offres publics, alerte appel d'offres, BOAMP, TED, JOUE, marchés publics France, avis de marché, avis d'attribution, résultats de marchés, attributaires, MAPA, code CPV, collectivités, veille commerciale secteur public, DCE, alternative à Doubletrade / Marchés Online / France Marchés, appels d'offres Royaume-Uni, Find a Tender, appels d'offres Pays-Bas, TenderNed.

# Actor input Schema

## `keywords` (type: `array`):

Notices matching ANY keyword are returned, e.g. "logiciel", "maintenance informatique", "nettoyage". Tip: use the notice language — French for BOAMP, English for Find a Tender (UK), Dutch for TenderNed; TED titles follow 'Preferred language' when translated. Leave empty for all.

## `keywordScope` (type: `string`):

Title only (precise) or full notice text (broader, noisier).

## `cpvPrefixes` (type: `array`):

Common Procurement Vocabulary codes. A prefix matches all sub-codes: 72 = IT services, 48 = software, 45 = construction works, 90911 = cleaning.

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

Contract notices = open calls for tenders. Awards = results with winners (great for competitor intelligence and sales leads).

## `contractTypes` (type: `array`):

Works (travaux), services, supplies (fournitures). Empty = all.

## `sources` (type: `array`):

BOAMP = all French notices incl. below EU thresholds (MAPA). TED = EU-wide notices above thresholds. Find a Tender = UK notices (not on TED since Brexit). TenderNed = Dutch notices incl. national ones below EU thresholds. Default (empty): BOAMP + TED, as in previous versions.

## `boampDepartments` (type: `array`):

Department codes, e.g. 75, 69, 13, 2A, 971. Applies to BOAMP only (TED uses NUTS codes; see output field nutsCodes).

## `tedCountries` (type: `array`):

ISO 3166 alpha-3 codes, e.g. FRA, BEL, LUX, NLD, DEU. Use ALL for every country. Applies to TED only (Find a Tender is always UK, TenderNed always NL). Add NLD when you also select TenderNed so Dutch EU notices are deduplicated.

## `publishedWithinDays` (type: `integer`):

Look-back window. For daily monitoring use 2–3 together with 'Only new notices'.

## `publishedFrom` (type: `string`):

Overrides the look-back window.

## `openOnly` (type: `boolean`):

Drop calls for tenders whose response deadline has passed.

## `minEstimatedValue` (type: `integer`):

Drop notices with a known estimated value below this amount, compared in the notice's currency (EUR for BOAMP / TED euro notices, GBP for Find a Tender). Notices with no published value are kept (TenderNed never publishes values in its open data).

## `onlyNew` (type: `boolean`):

Remember notices already returned and output only new ones on each run, across all selected sources. Schedule the Actor daily and connect Slack / email / Google Sheets via Apify integrations. You only pay for new notices.

## `monitorName` (type: `string`):

Optional. Runs sharing a monitor name share their 'already seen' memory. By default it is derived from your filters.

## `dedupeAcrossSources` (type: `boolean`):

European notices appear on BOAMP and TED, and Dutch EU notices on TenderNed and TED; keep only one copy (matched on the eForms notice ID, the TED publication number, or buyer + title for TenderNed ↔ TED).

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

Language of TED titles and texts when available.

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

Maximum number of notices to save. You pay per notice.

## Actor input object example

```json
{
  "keywords": [
    "logiciel",
    "informatique",
    "cybersécurité"
  ],
  "keywordScope": "title",
  "noticeTypes": [
    "contract-notice"
  ],
  "sources": [
    "boamp",
    "ted"
  ],
  "tedCountries": [
    "FRA"
  ],
  "publishedWithinDays": 3,
  "openOnly": true,
  "onlyNew": true,
  "dedupeAcrossSources": true,
  "language": "fra",
  "maxResults": 50
}
```

# Actor output Schema

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

All results in the Actor run's default dataset (opens on the Overview view).

## `awards` (type: `string`):

Same dataset, opened on the Awards & winners view.

# 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 = {
    "keywords": [
        "logiciel",
        "informatique",
        "cybersécurité"
    ],
    "noticeTypes": [
        "contract-notice"
    ],
    "tedCountries": [
        "FRA"
    ],
    "onlyNew": true,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("spherical_distinction/fr-eu-tenders-monitor").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 = {
    "keywords": [
        "logiciel",
        "informatique",
        "cybersécurité",
    ],
    "noticeTypes": ["contract-notice"],
    "tedCountries": ["FRA"],
    "onlyNew": True,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("spherical_distinction/fr-eu-tenders-monitor").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 '{
  "keywords": [
    "logiciel",
    "informatique",
    "cybersécurité"
  ],
  "noticeTypes": [
    "contract-notice"
  ],
  "tedCountries": [
    "FRA"
  ],
  "onlyNew": true,
  "maxResults": 50
}' |
apify call spherical_distinction/fr-eu-tenders-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spherical_distinction/fr-eu-tenders-monitor"
        }
    }
}
```

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/6c0dr4YBesNi9W2OC/builds/Ra6fOshb5txfWJIzC/openapi.json
