EU & UK Public Tenders Search: TED + Find a Tender
Pricing
from $2.00 / 1,000 notices
EU & UK Public Tenders Search: TED + Find a Tender
Search EU and UK public tenders in one format: TED (Tenders Electronic Daily), the EU's official procurement journal, and the UK's Find a Tender, through their official public APIs. Filter by keywords, CPV codes, country, buyer, notice type and date; get deadlines, values, buyers and official links.
Pricing
from $2.00 / 1,000 notices
Rating
0.0
(0)
Developer
Michael Costa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
What does EU & UK Public Tenders Search: TED + Find a Tender do?
EU & UK Public Tenders Search searches public tenders on TED (the EU's official procurement journal) and the UK's Find a Tender in one go, and returns clean notice records: title, buyer, deadline, value, CPV codes and links to the official notice. Official public APIs; no login, no key.
Try it in one click: the input comes pre-filled with the 20 newest open calls for tenders mentioning "software" from each source: up to 40 notices, or about $0.08 (40 × $0.002 per notice, plus $0.00005 for the run start). The UK part takes a few minutes (Find a Tender limits how fast it can be read, see the FAQ). Then replace it with what you actually want.
Monitor new public tenders (tender alerts)
EU & UK Public Tenders Search can run your search on a schedule and give you only the notices it hasn't returned before. Set it up once:
- Save a task. Fill in Keywords, CPV codes and Buyer countries, turn on Only tenders still open
and Only new notices (
openOnly: true,onlyNew: truein the API), and set Published from to7 days. Then click Save as a new task at the top right of the actor's page. The first run returns everything that matches; later runs return only notices this search hasn't returned before. "7 days" moves with every run. - Schedule it. In Apify Console, open Schedules, click Create new, pick the task and set how often it runs
(for example every weekday at 07:00, cron
0 7 * * 1-5). - Send the new tenders where you work, from the task's Integrations tab:
- Slack: a message in the channel you choose when a run succeeds (you pick the events and can edit the message).
- Email: Send results email via Gmail sends the run's results, with the dataset attached.
- Webhook: a POST to your URL on the
ACTOR.RUN.SUCCEEDEDevent. The payload'sresource.defaultDatasetIdpoints to the new notices:GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=jsonwith your API token. - Make, Zapier or n8n: each has an Apify step that starts on a finished run and reads its dataset.
A run that finds nothing new returns 0 notices and costs only the $0.00005 start fee. Slack and email are sent for every successful run, including a quiet one; to hear only about new tenders, use the webhook or Make/Zapier/n8n and skip runs whose dataset is empty. Add the run failed event too, so a failed run doesn't go unnoticed. Keep the task's filters fixed: the memory is per keyword line and filter set, so changing them starts a fresh search. If Find a Tender refuses a run's UK requests, the next run still returns the UK notices it missed, as long as they are inside its Published from window.
What data does EU & UK Public Tenders Search return?
| Field | Example | Notes |
|---|---|---|
title | Growth Hub Website | TED titles in the language you pick; titleOriginal keeps the buyer's own. |
source | find-a-tender | ted or find-a-tender. |
buyerName, buyerCountry | York and North Yorkshire Combined Authority, GBR | Plus buyerCity and buyerWebsite when given. |
deadline | 2026-10-16T12:00+01:00 | The earliest tender deadline over all lots, with its time. |
participationRequestDeadline | null | Often comes first in restricted and negotiated procedures. |
estimatedValue, estimatedValueCurrency | 90000, GBP | Numbers; null when the notice gives none. |
awardedValue, awardedValueCurrency | null | On award notices. |
cpvCodes | 72212224, 72413000 | Each code once. |
placeOfPerformance | UKE | NUTS codes (TED) or ITL codes (UK). |
noticeCategory, procedureType | competition, Below threshold - open competition | competition, award, prior, modification, or null. |
publicationDate | 2026-09-25 | |
description | Perkančioji organizacija numato... | In the buyer's language; e-mail addresses and phone numbers removed. |
url, pdfUrl, xmlUrl | https://www.find-tender.service.gov.uk/Notice/091136-2026 | The official notice. |
id | fts:091136-2026 | Stable across runs, for deduplication. |
Every notice has the same fields; the full record is under Output.
How much does it cost to search public tenders?
You pay per notice returned: $2.00 per 1,000 notices, plus $0.00005 each time a run starts. A search that fails costs nothing, and a repeat run with nothing new costs only the start fee.
- The example below: 40 notices × $0.002 = $0.08, plus the $0.00005 start fee; the repeat run $0.00005.
- A month, for example: a daily alert for one CPV niche that sees about 10 new notices a day: 300 × $0.002 = $0.60, plus 30 starts ($0.0015).
- Caps: Max results per run in the input, and Maximum cost per run in the run options. It stops cleanly at whichever comes first, and stops fetching as soon as the limit is covered, so a capped run is also a fast one.
How to search EU and UK public tenders
- Open the actor and choose the Sources: TED (EU), Find a Tender (UK), or both.
- Type one search per line into Keywords, and narrow it with CPV codes, Buyer countries, Notice types or Only tenders still open.
- Click Start. With the UK source on, expect a few minutes.
- Open the Output tab and export the notices as JSON, CSV or Excel, or read them through the API.
- For tender alerts, save it as a task and schedule it (see Monitor new public tenders above).
The two sources:
- TED (Tenders Electronic Daily), the EU's official journal of public procurement, where every public tender above the EU thresholds in the EU and EEA is published, plus many from EU institutions and other countries.
- Find a Tender, the UK government's service where UK public bodies publish their tenders, awards and planned purchases (since the Procurement Act 2023, below-threshold notices too).
Example: open "software" tenders from the past week
The pre-filled search, set up as an alert (only open tenders, published in the last 7 days, only new notices):
{"queries": ["software"], "sources": ["ted", "uk"], "noticeTypes": ["competition"], "openOnly": true,"publishedFrom": "7 days", "language": "en", "maxResultsPerQuery": 20, "onlyNew": true}
It returned 20 TED and 20 UK notices. The newest TED one (real output from a local run on 2026-09-25;
description shortened):
{"id": "660594-2026","title": "Lithuania – Programming services of systems and user software – Vilniaus turizmo informacijos centro skaitmeninimo paslaugos (Atviras tarptautinis pirkimas)","noticeCategory": "competition","procedureType": "open","contractNature": ["services"],"publicationDate": "2026-09-25","deadline": "2026-09-30T09:30+03:00","buyerName": "VšĮ Vilniaus pirkimų agentūra","buyerCountry": "LTU","cpvCodes": ["72211000"],"estimatedValue": null,"description": "Perkančioji organizacija numato įsigyti Vilniaus turizmo informacijos centro skaitmeninimo paslaugas...","url": "https://ted.europa.eu/en/notice/-/detail/660594-2026","pdfUrl": "https://ted.europa.eu/en/notice/660594-2026/pdf"}
And one of the UK notices from Find a Tender (real output from a local run on 2026-09-25, with the default input):
{"id": "fts:091136-2026","source": "find-a-tender","title": "Growth Hub Website","noticeType": "tender","noticeCategory": "competition","procedureType": "Below threshold - open competition","publicationDate": "2026-09-25","deadline": "2026-10-16T12:00+01:00","buyerName": "York and North Yorkshire Combined Authority","buyerCountry": "GBR","cpvCodes": ["72212224", "72413000"],"placeOfPerformance": ["UKE"],"estimatedValue": 90000.0,"estimatedValueCurrency": "GBP","url": "https://www.find-tender.service.gov.uk/Notice/091136-2026","pdfUrl": "https://www.find-tender.service.gov.uk/Notice/091136-2026/PDF"}
Run again straight after, the same search returned 0 notices from either source, so only the start fee was charged. The first run took about 4 minutes and the repeat about 3: the UK part reads the last 7 days of Find a Tender at its allowed pace.
Input
| Field | What it does |
|---|---|
| Sources | TED (EU) and/or Find a Tender (UK). The console pre-fills both; left out of an API call, TED only. |
| Keywords | One search per line, matched against the full text of each notice. Quotes make a phrase ("road maintenance"), AND / OR / NOT combine words, * is a wildcard. Leave empty to search by the filters alone. |
| CPV codes | Only notices under these CPV codes, e.g. 72000000 (IT services). A broad code includes every code below it. |
| Buyer countries | DE, FR, EL/GR... or three-letter codes (DEU). UK notices are included only when this is empty or includes GB / UK. |
| Buyer name | Words in the contracting authority's name, e.g. Bundesagentur für Arbeit. |
| Notice types | Open calls for tenders (default), contract awards, prior information notices, modifications. Empty = all kinds. |
| Only tenders still open | Only notices whose deadline for tenders is today or later. |
| Published from / to | A date (2026-09-01), or for "from" a number of days back (7 days). |
| Language | Language of TED's titles and links (24 EU languages). UK notices are in English. |
| Max notices per search | Per keyword line and source, newest first; up to TED's limit of 15,000. |
| Only new notices | Skip notices this search returned in earlier runs. |
| Max results per run | Cap the total number of notices across all searches. |
{"queries": ["cloud hosting", "\"data centre\""],"cpvCodes": ["72000000"],"countries": ["DE", "AT", "CH"],"noticeTypes": ["competition"],"openOnly": true,"publishedFrom": "7 days","language": "en","maxResultsPerQuery": 100,"onlyNew": true}
Output
Every notice has the same fields. Fields the notice doesn't give are null (or an empty list).
{"id": "658275-2026","query": "software","title": "Greece – Software package and information systems – Δράσεις Ψηφιακού Μετασχηματισμού του Δήμου Ναυπλιέων","titleOriginal": "Δράσεις Ψηφιακού Μετασχηματισμού του Δήμου Ναυπλιέων","originalLanguage": "ell","noticeType": "cn-standard","noticeCategory": "competition","procedureType": "open","contractNature": ["supplies"],"publicationDate": "2026-09-24","deadline": "2026-10-27T13:00+02:00","participationRequestDeadline": null,"buyerName": "ΔΗΜΟΣ ΝΑΥΠΛΙΕΩΝ","buyerCountry": "GRC","buyerCity": "ΝΑΥΠΛΙΟ","buyerWebsite": "www.nafplio.gr","cpvCodes": ["48000000", "32420000", "72268000", "80533100", "71356300"],"placeOfPerformance": ["EL651"],"placeOfPerformanceCountries": ["GRC"],"estimatedValue": 649923,"estimatedValueCurrency": "EUR","awardedValue": null,"awardedValueCurrency": null,"description": "Αντικείμενο της σύμβασης είναι η προμήθεια νέων εφαρμογών και τεχνολογικών μέσων ...","url": "https://ted.europa.eu/en/notice/-/detail/658275-2026","pdfUrl": "https://ted.europa.eu/en/notice/658275-2026/pdf","xmlUrl": "https://ted.europa.eu/en/notice/658275-2026/xml","scrapedAt": "2026-09-24T21:30:00Z"}
source is ted or find-a-tender. id is stable across runs, so you can use it to deduplicate: TED's
publication number, or fts: plus Find a Tender's notice ID. noticeCategory is
competition, award, prior, modification, or null for other notices (corrections, for example).
deadline is for tenders; restricted and negotiated procedures often have a participationRequestDeadline first.
The description stays in the language the buyer wrote it in.
How UK notices fit the same fields
noticeTypeis Find a Tender's own type (tender,award,planning,contractAmendment,tenderUpdate, ...);noticeCategorygroups them like TED's:tenderiscompetition,awardisaward,planningisprior,contractAmendmentismodification, and updates, cancellations and terminations arenull.procedureTypeis the procedure as Find a Tender names it (Open procedure,Competitive flexible procedure,Below threshold - open competition, ...).deadlineis the tender deadline;participationRequestDeadlinethe deadline for requests to participate (expressions of interest).estimatedValueis net of VAT when the notice gives both.awardedValueadds up the awards of an award notice when they share one currency. Suppliers' names aren't returned, as for TED.placeOfPerformancehas ITL region codes (UKE,UKG13), the UK's successor to NUTS.xmlUrlisnull.
Run it on a schedule, or from your own code
- Schedule: save the input as a task and add it to a schedule, as in Monitor new public tenders above.
- API: fetch a task's latest results with
GET https://api.apify.com/v2/actor-tasks/<task id>/runs/last/dataset/items?status=SUCCEEDED&format=csvand your API token (formatcan also bejsonorxlsx). - Webhooks and automation: a webhook when a run succeeds, or Make, Zapier or n8n through Apify's integrations.
Can I use EU & UK Public Tenders Search from an AI agent (MCP)?
Yes. Connect the agent to Apify's MCP server (https://mcp.apify.com) and add humble-echidna/eu-ted-tenders as a
tool; the agent passes the same input JSON as above. The UK source takes minutes (see the FAQ), so leave it
out ("sources": ["ted"], the API default) when the agent needs a quick answer. Keep Max notices per search small so answers stay short.
A field left out takes its default, and Keywords defaults to software: to search by CPV code or buyer alone,
pass "queries": [].
Who it's for
Companies that bid for public contracts in the EU and the UK (IT, construction, consulting, medical supplies, and so on), and the consultants who find tenders for them. The recurring job: a daily or weekly alert of new open calls for tenders in your CPV codes and countries, with the deadline and value up front.
Why this one?
- EU and UK in one list. Since Brexit, UK tenders are no longer on TED. Here they come back from Find a
Tender in the same fields as TED's (CPV codes, deadlines, values, buyer, links), each marked with its
source. - Tender alerts that don't repeat themselves. Turn on Only new notices and schedule it: each run returns only notices that search hasn't returned before. "Published from: 7 days" moves with every run.
- Readable in your language. TED translates every notice title into all 24 EU languages; pick yours, and the links open the official notice in that language too. The buyer's own title and language are kept alongside.
- Clean fields, not raw eForms. TED repeats CPV codes, places and deadlines once per lot, as lists in 24 languages; you get each value once, the earliest deadline over all lots (with its time), and values as numbers with their currency.
- No personal data. None of TED's contact-person, e-mail, phone or fax fields are requested, and e-mail addresses and phone numbers are removed from the free text.
- Polite and safe. It identifies itself honestly (User-Agent
HumbleEchidnaApify), follows robots.txt, and stays under TED's fair usage policy (at most 600 requests a minute, 3 at a time; TED allows 700) and Find a Tender's request limit (one request every 10 seconds, one at a time; it allows about 12 per 2 minutes). - Reliable. One failing search never affects the others in your run, and one source failing never affects the
other. The run log and the
RUN_STATSrecord say exactly which search had a problem and why.
Limits
- TED covers above-threshold tenders. Below-threshold tenders in EU countries are usually only on national portals, which this actor doesn't read.
- UK searches are slow (about one day of notices per minute) and go back at most 14 days per search (see the FAQ).
- At most "Max notices per search" per keyword line and source, newest first (20 by default; TED allows up to 15,000).
FAQ
Which tenders are on TED?
Public contracts above the EU thresholds from the EU and EEA countries, plus notices from EU institutions and some other countries, since 2016 in this API. Below-threshold tenders are usually only on national portals.
How are UK notices searched?
Find a Tender's API lists notices by the day they were published or updated; it
has no keyword search. So this actor reads the UK notices day by day, from the newest back, and applies your
keywords and filters itself, in the same syntax as TED's (all words must appear, whole words, any case; "phrase",
OR, NOT, *). A UK search stops once it has "Max notices per search" matches, or at 14 days back, whichever
comes first (the run log and RUN_STATS say which days were read).
Why are UK searches slow?
Find a Tender lets a caller make about 12 requests every 2 minutes, and answers
more with "Rate limit of 12 exceeded. Please retry after 120 seconds." A day of UK notices is about 5 requests
(roughly 400 notices), so this actor reads about one day of UK notices per minute (one request every 10 seconds)
and never tries to get around the limit. For a UK alert, set Published from to 1 days or 7 days and run it
daily or weekly. If Find a Tender still refuses (another program on the same Apify server may have used the
allowance), that run's UK searches fail with the reason in the log and RUN_STATS; TED's results are still
returned, and with Only new notices the next run still returns the UK notices it missed, as long as they are
inside its Published from window.
Why are there fewer results than on the TED website?
Each search line returns at most "Max notices per search" (20 by default), newest first. TED's API allows up to 15,000 per search.
Why does a search fail with "TED rejected the search"?
TED couldn't read the query built from that line. The run log
shows the query; simplify the keywords (for example, a stray AND at the end). Other lines in the run still run.
Why does something that used to work now fail or return fewer results?
TED may have changed its API. The run log names the search and what went wrong, and every other search in the run is unaffected. Please open an issue with the input you used.
Is it legal to search and reuse TED and Find a Tender notices?
Yes, for both sources.
TED. It only uses TED's official Search API, which is public, needs no key and is documented for data reusers (TED API docs). TED's legal notice says: "Unless otherwise noted, the procurement notices published in the Supplement to the Official Journal of the European Union can be freely reused, for commercial or non-commercial purposes", under the Commission's reuse policy (Decision 2011/833/EU). Source: TED, © European Union, 1998-2026; the records are reformatted (fields flattened, contact details removed). It stays within TED's fair usage policy. It collects no personal contact data: TED's contact-person, e-mail, phone and fax fields are never requested, and e-mail addresses and phone numbers are removed from descriptions. Names written into a description's free text can't be detected reliably and may remain. This actor is not affiliated with the Publications Office of the EU.
Find a Tender (UK). It only uses the OCDS API that Find a Tender publishes under "Data outputs" on its data and API page, which says: "Notice data is available under the Open Government Licence". The Open Government Licence v3.0 lets you "exploit the Information commercially and non-commercially", on condition that you acknowledge the source: Contains public sector information licensed under the Open Government Licence v3.0. Find a Tender's terms add: "We make most of the content on Find a Tender available through feeds for other websites and applications to use." The licence doesn't cover personal data, so contact points are never read, and e-mail addresses and phone numbers are removed from descriptions. It keeps to Find a Tender's request limit (see above) and identifies itself in its User-Agent. This actor is not affiliated with or endorsed by the Cabinet Office or Find a Tender.
Related actors
| Actor | Use it when |
|---|---|
| Dataset Transformer: Filter, Dedupe, Convert | You want to keep only notices above a value or with a deadline far enough away, and export them as CSV for your bid team. |
Feedback and support
Found a bug, or need a field or source that isn't here? Open an issue on the Issues tab with the input you used.
Versions
Current version: 1.1. See the Changelog tab for what changed in each version.