# EU Tenders Scraper (TED) – Public Procurement, Awards & Winners (`flarewow/eu-tenders-ted-scraper`) Actor

Scrape EU public procurement from TED: open tenders, contract awards with winners, prices and number of bids, buyer intelligence (incumbents, past winners), tender-to-award linking, EUR values, monitoring.

- **URL**: https://apify.com/flarewow/eu-tenders-ted-scraper.md
- **Developed by:** [FlareWOW](https://apify.com/flarewow) (community)
- **Categories:** Lead generation, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.50 / 1,000 notices

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 (TED): Public Procurement, Awards & Winners

Search **all EU public procurement** published on **TED (Tenders Electronic Daily)**, the official journal for every public tender above the EU thresholds. That is hundreds of billions of euros a year across 27 EU countries, the EEA, the UK, Switzerland and candidate countries. You can scrape three kinds of notices:

- **open tenders** you can bid on, with deadlines, buyer contacts and document links
- **contract awards**, showing who won, for how much, how many companies bid and the price compared with the estimate
- **planning notices**, which give months of early warning

Each tender can also include **buyer intelligence**: who won this buyer's previous contracts in your sector (the likely incumbent), at what prices, and how much competition there was.

This uses the official TED API, so there is no login, no API key and no blocking.

🌍 [English](#eu-tenders-scraper-ted-public-procurement-awards--winners) · [Deutsch](#-deutsch) · [Polski](#-polski) · [Français](#-français) · [Español](#-español) · [Italiano](#-italiano) · [Nederlands](#-nederlands) · [Português](#-português)

![Open EU tenders with buyer intelligence](https://api.apify.com/v2/key-value-stores/BgjaeUWAvCuvhM9UX/records/screen-tenders.png)

### What makes this TED scraper different

Other TED scrapers return a list of notices. This actor tells you **whether a tender is worth bidding on**.

- 🧠 **Buyer intelligence (incumbent detection).** For each tender you get the buyer's past awards in the same CPV sector:

  - the **likely incumbent**
  - the **top 5 winners**, with number of wins and total value
  - the **average number of bids** (low / medium / high competition)
  - the **median contract value**
  - the **last 5 awards**, with winner, value and number of bids

  You know who you are up against before you buy the documents.
- 🔗 **Tender ↔ award linking.** Notices of the same procedure are linked automatically:
  - tenders get a status (**open / closed / awarded**) and the award result once it is published
  - awards get the original tender, the estimate, **savings vs. estimate** and **days from tender to award**
- 🏆 **Award details:**
  - every winner with **country, company size, national ID / VAT** and email
  - award value, **number of tenders received** (also from SMEs and foreign companies)
  - lowest and highest bid
  - decision and contract dates
- 💶 **Values in EUR.** Values in PLN, CZK, SEK, HUF, RON, DKK and other currencies are converted with official ECB reference rates, so you can compare across countries.
- ⏰ **Deadline-aware.** Each tender has the exact submission deadline with time zone, **days left** and an open / closed flag. You can filter to *only open* or *deadline within N days*.
- 📇 **Buyer contacts:** contact point, email, phone, website and national ID, plus the **procurement documents** link and the **e-submission** link.
- 🔎 **Precise search:**
  - keywords in any EU language (with exclusions)
  - **CPV codes or prefixes** (language-independent)
  - buyer countries and **NUTS regions**
  - works / supplies / services, procedure type
  - min / max value, EU-funded, SME-suitable
  - buyer names, and **competitor names or VAT IDs** to track who wins what
- 🤖 **AI analysis (optional).** The AI translates the title, description and lots into **any of 25 languages**, writes a **3-sentence summary** and extracts **key requirements** such as references, certificates and deposits. Give it your **company profile** and it scores every tender **0–100 for fit**, with a one-line reason, so you can read German, Polish or French tenders in your own language and sort them by relevance.
- ✏️ **Corrections & deadline changes.** Changed notices are flagged (`isCorrection`, `changeReason`). When the deadline moved, you get `previousDeadline` and `deadlineChanged`, so your daily alert also tells you about extensions.
- 🧩 **One row per lot (optional).** Multi-lot tenders can be split into one row per lot, with lot ID, title and value.
- 🔔 **Monitoring.** Schedule it daily with *Only new notices*. You get only what was published since the last run, and you are never charged twice.
- 🌐 **Readable in your language.** The notice title with country and CPV label comes in 22 EU languages. The original title and description are kept as published.
- 🤖 **AI-ready.** Clean JSON for CRMs, Slack alerts, dashboards or LLMs. Works with Claude, ChatGPT or Cursor through the [Apify MCP server](https://mcp.apify.com).

![Contract awards with winners, prices and number of bids](https://api.apify.com/v2/key-value-stores/BgjaeUWAvCuvhM9UX/records/screen-awards.png)

### How to use

1. Choose **what** to find: keywords and/or CPV codes, such as `72000000` for IT services or `45` for construction.
2. Choose **where**: buyer countries, optionally NUTS regions.
3. Choose **notice types**: *Tenders* to bid, *Awards* for market and competitor intelligence, *Planning* for early warning.
4. Optionally turn on **Only open tenders** and **Buyer intelligence**.
5. Run it, or **schedule it daily** with *Only new notices*. Export to Excel, CSV, JSON or Google Sheets, or connect Make, Zapier, n8n, Slack, HubSpot or Salesforce.

### Input examples

**Open IT tenders in Germany and Poland, with incumbents:**

```json
{
  "cpvCodes": ["72000000", "48000000"],
  "countries": ["de", "pl"],
  "noticeStages": ["competition"],
  "onlyOpen": true,
  "includeBuyerHistory": true,
  "publishedWithin": "week"
}
```

**Competitor tracking: every contract won by a company in the last year:**

```json
{
  "noticeStages": ["result"],
  "winnerNames": ["Asseco"],
  "publishedWithin": "year",
  "maxResults": 1000
}
```

**German & French IT tenders, translated to English, scored for your company:**

```json
{
  "cpvCodes": ["72000000"],
  "countries": ["de", "fr"],
  "onlyOpen": true,
  "aiEnrichment": true,
  "aiLanguage": "en",
  "companyProfile": "Cloud & Microsoft 365 integrator, 40 people, contracts up to €1M, Germany and France"
}
```

**Daily alert for cleaning tenders above €500k in France:**

```json
{
  "cpvCodes": ["90910000"],
  "countries": ["fr"],
  "minValue": 500000,
  "onlyOpen": true,
  "onlyNew": true,
  "monitorId": "cleaning-france"
}
```

### Output example (tender with buyer intelligence)

```json
{
  "noticeId": "718509-2026",
  "url": "https://ted.europa.eu/en/notice/-/detail/718509-2026",
  "stage": "tender",
  "status": "open",
  "title": "Zakup i dostawa subskrypcji na platformę automatyzacji ...",
  "noticeTitle": "Poland – Software package and information systems – Zakup i dostawa ...",
  "cpvLabel": "Software package and information systems",
  "cpvCodes": ["48000000", "72268000"],
  "publicationDate": "2026-10-16",
  "deadline": "2026-10-22T09:00:00.000Z",
  "daysToDeadline": 5,
  "isOpen": true,
  "buyerName": "Zakład Ubezpieczeń Społecznych",
  "buyerCountry": "PL",
  "buyerEmail": "SekretariatDZP@zus.pl",
  "buyerPhone": "48226671704",
  "buyerNationalId": "5213017228",
  "contractType": "supplies",
  "procedureType": "open",
  "contractDuration": "37 months",
  "documentsUrl": "https://zus.ezamawiajacy.pl/",
  "buyerHistory": {
    "scope": "same CPV division",
    "pastAwards": 64,
    "likelyIncumbent": "UpWare Sp. z o. o.",
    "topWinners": [{ "name": "UpWare Sp. z o. o.", "country": "PL", "wins": 5, "totalValueEur": 7884555, "lastWin": "2026-01-21" }],
    "avgTendersReceived": 2.1,
    "competitionLevel": "medium",
    "medianAwardValueEur": 1153099,
    "recentAwards": [{ "date": "2026-07-14", "winners": ["Engave S.A."], "valueEur": 2410000, "tendersReceived": 2 }]
  }
}
```

AI fields (with *AI analysis* on) are in `ai`: `title`, `summary`, `description`, `keyRequirements[]`, `lotsTranslated[]`, `tags[]`, `relevanceScore` and `relevanceReason`.

Award notices also include `winners[]` (name, country, nationalId, size, email), `awardValue`, `awardValueEur`, `tendersReceived`, `smeTendersReceived`, `lowestBid`, `highestBid`, `awardDecisionDate`, `tenderNoticeId`, `savingsVsEstimatePct` and `daysFromTenderToAward`.

The dataset has three ready-made views: **Notices**, **Awards & winners** and **Buyer contacts**.

![Buyer intelligence: who won this buyer's previous contracts](https://api.apify.com/v2/key-value-stores/BgjaeUWAvCuvhM9UX/records/screen-buyer-intelligence.png)

### Pricing

You pay only for results (pay-per-event), and platform usage is included.

| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Notice (per 1,000) | $6.00 | $5.50 | $5.00 | **$4.50** |
| Buyer intelligence (per tender) | $0.020 | $0.018 | $0.016 | **$0.015** |
| AI analysis: translation, summary, requirements, fit score (per notice) | $0.030 | $0.027 | $0.024 | **$0.020** |

Examples:

- A daily alert with 30 new tenders costs about **$0.15–0.20 a day**.
- 50 tenders with incumbent analysis cost about **$1**.
- 50 tenders with incumbent analysis, AI translation and a fit score cost about **$2.50**.

The AI price includes all language-model costs, so there is no extra API key or bill.

Tender ↔ award linking and EUR conversion are free. With *Only new notices* on, you never pay twice for the same notice.

### Who uses it

- **Bid & proposal teams.** Find relevant tenders early, see the incumbent and competition level, and decide go / no-go faster.
- **Sales to the public sector.** Get buyer contacts and a pipeline of open opportunities by sector and region.
- **Competitor intelligence.** See every contract a competitor won, with values and number of bids.
- **Market research & consultancies.** Measure market size, pricing and win rates per CPV, country or buyer.
- **Tender alert services & aggregators.** Get clean, deduplicated daily feeds.
- **Journalists & researchers.** Follow public spending, single-bid contracts and direct awards.

### Polish tenders below EU thresholds

Smaller Polish public tenders (BZP / e-Zamówienia) are covered by our **[BZP Monitor](https://apify.com/liveclaude/bzp-monitor-pl)**.

### Notes

- TED covers procurement **above the EU thresholds** (roughly €140k–220k for services and supplies, about €5.5M for works). Smaller national tenders are published on national portals.
- Buyers decide which fields they publish. For example, many buyers do not publish the estimated value, and some keep the award value confidential.
- Structured winner and bid data exists for notices in the eForms format, published since late 2023. Buyer intelligence therefore looks at up to 10 years but finds most data from 2024 onwards.

### FAQ

**Is it legal?** Yes. TED is official EU open data, published for re-use. The actor uses the official TED API.

**Can I search in English for German tenders?** Keyword search matches the notice text, which is usually in the buyer's language. For cross-language searches, use **CPV codes** (language-independent) or add keywords in several languages. The output title with the CPV label is available in your language.

**Something missing?** Open an issue and it will be added quickly.

***

### Integrations & API

- **API**: start the Actor and fetch results via the [Apify API](https://docs.apify.com/api/v2) – clients for Python and JavaScript, or plain HTTP.
- **No-code**: connect results to **Make, Zapier, n8n, Google Sheets, Slack, Airbyte** or any webhook.
- **AI agents**: call `liveclaude/eu-tenders-ted-scraper` from Claude, ChatGPT or Cursor through the [Apify MCP server](https://mcp.apify.com).

### 🇩🇪 Deutsch

**Öffentliche Ausschreibungen der EU aus TED (Tenders Electronic Daily)**: offene Ausschreibungen mit Fristen, Kontakten und Vergabeunterlagen, **Zuschläge mit Gewinner, Preis und Anzahl der Angebote** sowie Vorinformationen. Für jede Ausschreibung liefert der Actor optional **Auftraggeber-Analyse**: wer die früheren Aufträge dieses Auftraggebers in Ihrer Branche gewonnen hat (wahrscheinlicher Bestandsanbieter), zu welchen Preisen und mit wie viel Wettbewerb.

- Suche nach Stichwörtern, **CPV-Codes**, Ländern, NUTS-Regionen, Auftragswert, Verfahren, Auftraggeber und **Wettbewerbern (Name oder USt-IdNr.)**.
- Ausschreibung ↔ Zuschlag automatisch verknüpft: Status offen / abgelaufen / vergeben, Ersparnis gegenüber der Schätzung, Dauer bis zum Zuschlag.
- Werte in EUR (EZB-Kurse), Fristen mit verbleibenden Tagen.
- **Monitoring:** täglich planen und nur neue Bekanntmachungen erhalten, ohne doppelte Kosten.
- **KI-Analyse:** Übersetzung von Titel, Beschreibung und Losen in 25 Sprachen, Zusammenfassung, wichtigste Anforderungen und Passgenauigkeit (0–100) zu Ihrem Firmenprofil.
- **Preis:** ab $4,50 pro 1.000 Bekanntmachungen, Auftraggeber-Analyse ab $0,015 pro Ausschreibung, KI-Analyse ab $0,02 pro Bekanntmachung.

### 🇵🇱 Polski

**Przetargi publiczne z całej UE z TED (Tenders Electronic Daily)**: otwarte przetargi z terminami, kontaktami i linkiem do dokumentacji, **rozstrzygnięcia z wykonawcą, ceną i liczbą ofert** oraz ogłoszenia wstępne. Opcjonalnie dla każdego przetargu dostajesz **analizę zamawiającego**: kto wygrywał jego wcześniejsze zamówienia w Twojej branży (prawdopodobny obecny dostawca), za ile i przy jakiej konkurencji.

- Wyszukiwanie po słowach kluczowych, **kodach CPV**, krajach, regionach NUTS, wartości, trybie, zamawiającym i **konkurencji (nazwa lub NIP / VAT)**.
- Automatyczne łączenie ogłoszenia z wynikiem: status otwarty / zamknięty / rozstrzygnięty, oszczędność względem szacunku, czas do rozstrzygnięcia.
- Wartości w EUR (kursy EBC), termin składania ofert z liczbą dni do końca.
- **Monitoring:** zaplanuj codzienne uruchomienie i dostawaj tylko nowe ogłoszenia, bez podwójnych opłat.
- **AI:** tłumaczenie tytułu, opisu i części na wybrany język (25 języków), streszczenie, kluczowe wymagania i ocena dopasowania do profilu Twojej firmy (0–100).
- **Cena:** od $4,50 za 1000 ogłoszeń, analiza zamawiającego od $0,015 za przetarg, analiza AI od $0,02 za ogłoszenie.

### 🇫🇷 Français

**Marchés publics de toute l’UE depuis TED (Tenders Electronic Daily)** : appels d’offres ouverts avec dates limites, contacts et lien vers le DCE, **avis d’attribution avec titulaire, montant et nombre d’offres**, et avis de préinformation. En option, **l’analyse de l’acheteur** : qui a remporté ses marchés précédents dans votre secteur (titulaire sortant probable), à quel prix et avec quelle concurrence.

- Recherche par mots-clés, **codes CPV**, pays, régions NUTS, montant, procédure, acheteur et **concurrents (nom ou n° TVA)**.
- Lien automatique appel d’offres ↔ attribution : statut ouvert / clos / attribué, écart par rapport à l’estimation.
- Montants en EUR (taux BCE), veille quotidienne sans double facturation.
- **Prix :** à partir de 4,50 $ pour 1 000 avis.

### 🇪🇸 Español

**Licitaciones públicas de toda la UE desde TED (Tenders Electronic Daily)**: licitaciones abiertas con plazos, contactos y pliegos, **adjudicaciones con adjudicatario, importe y número de ofertas**, y anuncios previos. Opcionalmente, **inteligencia del órgano de contratación**: quién ganó sus contratos anteriores en su sector (probable adjudicatario actual), por cuánto y con cuánta competencia.

- Búsqueda por palabras clave, **códigos CPV**, países, regiones NUTS, importe, procedimiento, comprador y **competidores (nombre o NIF / IVA)**.
- Vinculación automática licitación ↔ adjudicación, ahorro frente a la estimación, importes en EUR (tipos del BCE).
- Monitorización diaria sin cobros duplicados.
- **Precio:** desde 4,50 $ por 1.000 anuncios.

### 🇮🇹 Italiano

**Gare d’appalto pubbliche di tutta l’UE da TED (Tenders Electronic Daily)**: bandi aperti con scadenze, contatti e documentazione, **aggiudicazioni con aggiudicatario, importo e numero di offerte**, e avvisi di preinformazione. Opzionale: **analisi della stazione appaltante**, cioè chi ha vinto i suoi contratti precedenti nel tuo settore (probabile fornitore uscente), a quali prezzi e con quanta concorrenza.

- Ricerca per parole chiave, **codici CPV**, paesi, regioni NUTS, importo, procedura, ente e **concorrenti (nome o P.IVA)**.
- Collegamento automatico bando ↔ aggiudicazione, importi in EUR (tassi BCE).
- Monitoraggio giornaliero senza costi doppi.
- **Prezzo:** da 4,50 $ per 1.000 avvisi.

### 🇳🇱 Nederlands

**Europese aanbestedingen uit TED (Tenders Electronic Daily)**: open aanbestedingen met deadlines, contacten en documenten, **gunningen met winnaar, bedrag en aantal inschrijvingen**, en vooraankondigingen. Optioneel: **analyse van de aanbestedende dienst**, dus wie eerdere opdrachten in uw sector won (waarschijnlijke zittende leverancier), tegen welke prijzen en met hoeveel concurrentie.

- Zoeken op trefwoorden, **CPV-codes**, landen, NUTS-regio’s, waarde, procedure, opdrachtgever en **concurrenten (naam of btw-nummer)**.
- Automatische koppeling aanbesteding ↔ gunning, bedragen in EUR (ECB-koersen).
- Dagelijkse monitoring zonder dubbele kosten.
- **Prijs:** vanaf $4,50 per 1.000 aankondigingen.

### 🇵🇹 Português

**Concursos públicos de toda a UE a partir do TED (Tenders Electronic Daily)**: concursos abertos com prazos, contactos e peças do procedimento, **adjudicações com adjudicatário, valor e número de propostas**, e anúncios de pré-informação. Opcional: **inteligência sobre a entidade adjudicante**, ou seja, quem ganhou os seus contratos anteriores no seu setor (provável fornecedor atual), por que valores e com quanta concorrência.

- Pesquisa por palavras-chave, **códigos CPV**, países, regiões NUTS, valor, procedimento, entidade e **concorrentes (nome ou NIF / IVA)**.
- Ligação automática concurso ↔ adjudicação, valores em EUR (taxas do BCE).
- Monitorização diária sem cobranças duplicadas.
- **Preço:** a partir de US$ 4,50 por 1.000 anúncios.

# Actor input Schema

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

Full-text search in title, description and lots, in any EU language – e.g. `cybersecurity`, `cleaning services`, `Reinigung`, `oprogramowanie`. Tip: add the word in the buyer's language too, or use CPV codes below for language-independent search.

## `keywordMode` (type: `string`):

Match notices containing any or all of the keywords.

## `excludeKeywords` (type: `array`):

Skip notices containing these words, e.g. `window cleaning`.

## `noticeStages` (type: `array`):

Tenders = open opportunities you can bid on. Awards = who won and for how much. Planning = early warning months before the tender.

## `countries` (type: `array`):

Countries of the public buyer. Empty = all countries publishing to TED (EU, EEA, UK, candidate countries).

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

Place of performance as NUTS code or prefix – e.g. `PL9` (Masovia), `DE21` (Upper Bavaria), `FR1` (Île-de-France).

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

CPV codes or prefixes – `72000000` (IT services) matches all 72… codes, `45` = construction, `33` = medical equipment, `79` = business services, `90` = cleaning & environment. Language-independent and the most precise filter.

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

Works, supplies or services.

## `procedureTypes` (type: `array`):

Procurement procedure.

## `minValue` (type: `integer`):

Only notices with an estimated value at least this high (in the notice currency, usually EUR). Notices without a published value are excluded when set.

## `maxValue` (type: `integer`):

Only notices with an estimated value up to this amount.

## `euFundedOnly` (type: `boolean`):

Only procurements financed by EU funds.

## `smeSuitableOnly` (type: `boolean`):

Only notices the buyer marked as suitable for small and medium-sized enterprises.

## `publishedWithin` (type: `string`):

Publication date window. Ignored when you set a date below.

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

Exact start date (YYYY-MM-DD).

## `publishedTo` (type: `string`):

Exact end date (YYYY-MM-DD).

## `onlyOpen` (type: `boolean`):

Only tenders you can still bid on.

## `deadlineWithinDays` (type: `integer`):

Only tenders whose submission deadline is within the next N days – e.g. 14.

## `buyerNames` (type: `array`):

Track specific contracting authorities, e.g. `Deutsche Bahn`, `Zakład Ubezpieczeń Społecznych`, `European Commission`.

## `winnerNames` (type: `array`):

Awards won by these companies – competitor tracking, e.g. `Atos`, `Siemens`, `Asseco`. Use with *Awards*.

## `winnerIds` (type: `array`):

Exact company identifiers as published in TED, e.g. `DE145374190`, `5223105508`.

## `includeBuyerHistory` (type: `boolean`):

For every tender: the buyer's past awards in the same sector – likely incumbent, top winners with values, average number of bids (competition level), median contract value and the last 5 awards. Charged per enriched tender.

## `buyerHistoryYears` (type: `integer`):

How far back to look for the buyer's previous awards.

## `linkProcedure` (type: `boolean`):

Tenders get status (open / closed / awarded) and the award result once published; awards get the original tender, estimate and savings vs. estimate. Free.

## `aiEnrichment` (type: `boolean`):

For every notice an AI translates the title, description and lots into your language, writes a short summary, extracts key requirements (references, certificates, deposits) and adds topic tags. With a company profile it also scores how well each tender fits you (0–100). Charged per analysed notice.

## `aiLanguage` (type: `string`):

Language for the AI translation and summary.

## `companyProfile` (type: `string`):

Describe what your company does, e.g. 'IT company: Microsoft 365 and Azure migrations, helpdesk outsourcing, max contract €2M, Poland and Germany'. The AI scores every tender 0–100 for fit – sort by ai.relevanceScore.

## `outputLanguage` (type: `string`):

Language for the notice title with country and CPV label. Original title and description stay in the notice language.

## `includeDescription` (type: `boolean`):

Include the procurement description text.

## `splitLots` (type: `boolean`):

Split multi-lot tenders into one row per lot (lot ID, title, value) – handy when you bid on single lots. Each row counts as one notice.

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

Schedule the actor (e.g. daily) – each run returns only notices not delivered before, and you are never charged twice for the same notice.

## `monitorId` (type: `string`):

Name for this monitor, e.g. `it-poland`. Use different IDs for different searches.

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

Maximum notices to return. 0 or empty = all matching.

## `noticeIds` (type: `array`):

Fetch specific notices, e.g. `718509-2026` or a ted.europa.eu link. Other search filters are ignored.

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

Raw TED expert-search query added with AND, e.g. `buyer-legal-type=cga`. See TED's expert search help.

## `aiModel` (type: `string`):

OpenRouter model ID used for AI analysis. Leave the default unless you know you need another model.

## Actor input object example

```json
{
  "keywords": [
    "software"
  ],
  "keywordMode": "any",
  "noticeStages": [
    "competition"
  ],
  "euFundedOnly": false,
  "smeSuitableOnly": false,
  "publishedWithin": "week",
  "onlyOpen": true,
  "includeBuyerHistory": false,
  "buyerHistoryYears": 3,
  "linkProcedure": true,
  "aiEnrichment": false,
  "aiLanguage": "en",
  "outputLanguage": "en",
  "includeDescription": true,
  "splitLots": false,
  "onlyNew": false,
  "maxResults": 50,
  "aiModel": "anthropic/claude-haiku-5.5"
}
```

# Actor output Schema

## `notices` (type: `string`):

No description

## `awards` (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 = {
    "keywords": [
        "software"
    ],
    "noticeStages": [
        "competition"
    ],
    "onlyOpen": true,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("flarewow/eu-tenders-ted-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 = {
    "keywords": ["software"],
    "noticeStages": ["competition"],
    "onlyOpen": True,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("flarewow/eu-tenders-ted-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 '{
  "keywords": [
    "software"
  ],
  "noticeStages": [
    "competition"
  ],
  "onlyOpen": true,
  "maxResults": 50
}' |
apify call flarewow/eu-tenders-ted-scraper --silent --output-dataset

```

## MCP server setup

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