Public Tenders Scraper
Pricing
from $0.50 / 1,000 tender notices
Public Tenders Scraper
Procurement notices from TED, which covers the EU and the EEA, and from the UK's Find a Tender and Contracts Finder, all with the same fields. One input filters the three sources by country, CPV code, keyword, value or deadline, and scheduled runs can return only new notices.
Pricing
from $0.50 / 1,000 tender notices
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Security
Limited permissionsShare
Public Tenders Scraper collects procurement notices from three official sources into one table: TED for buyers in the EU and the EEA, and Find a Tender and Contracts Finder for the UK. Every row has the same fields, so a bidder who follows both markets gets one list of deadlines, values, buyers and CPV codes. Choose Sources, fill in Buyer countries and CPV codes, and click Start. Values keep the currency of each notice and are never converted. It costs $1.00 per 1,000 tender notices on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 tender notices.
What data does it return?
| Field | Description |
|---|---|
source, sourceName | ted, uk-fts (Find a Tender) or uk-cf (Contracts Finder), and the full name of the service. |
noticeId, key | TED publication number such as 667502-2026, or the OCDS process ID of a UK procurement; key puts the source in front, as in ted:667502-2026. |
title, description, buyer | Notice text as published. On TED rows the country and subject at the start of the title are in your chosen language and the rest is in the buyer's language. |
country | Two-letter code of the buyer's country, such as NL. Every UK notice has GB. |
publishedAt, deadline, daysToDeadline | Publication time and deadline for tenders in UTC, and the whole days left at run time. |
valueAmount, valueCurrency | Value as published with its currency: EUR, GBP, or a national currency such as PLN or SEK on TED. |
cpv | CPV codes of the notice, for example 80000000 (education and training) and 72000000 (IT services) on the digital learning environment the municipality of Hengelo is buying. |
noticeType | eForms type on TED rows, such as cn-standard or can-standard; the stage on UK rows, such as tender or award. |
procedureType, contractNature | Procedure, such as open, and what is bought: services, works, and supplies on TED or goods on UK rows. |
status | Status of a UK notice, such as active or complete. TED rows have null. |
language, languagesAvailable | Title language, a three-letter code such as eng on TED and en on UK rows, and the languages the buyer published a TED notice in, such as nld, or fra and nld for a bilingual Belgian notice. The list is empty on UK rows. |
url, documentsUrl | On TED rows the notice page and its PDF. On UK rows both hold the first document link, which Find a Tender notices often lack. |
How to scrape public tenders from the EU and the UK
- In Sources, keep
ted,uk-ftsanduk-cf, or remove the ones you do not need. - In Buyer countries, list two-letter codes and include
GBorUKfor the United Kingdom. With a country list that lacks it, the UK services are not read at all. - Add CPV codes and, if you like, Keywords. TED applies both in its own search; for the UK services the actor applies them to the newest notices it reads.
- Set Published from and Published to, or Deadline on or after for notices still open. With no dates and no deadline, every source covers the last seven days. With only Deadline on or after, TED searches all its notices and the UK services are read from their newest notice back.
- For a daily watch, turn on Return only notices new since the last run and name the watch in Watch name, or save the input as a task. Each scheduled run then returns only the notices that are new to the watch or whose deadline or status changed.
- Click Start. The Output tab lists TED rows first, then the UK services in the order they have in Sources, and exports them as CSV, Excel or JSON. An API call takes the same input as JSON:
{"sources": ["ted", "uk-fts", "uk-cf"],"countries": ["IE", "GB"],"cpv": ["45000000"],"publishedFrom": "2026-09-28","publishedTo": "2026-09-29","maxItems": 1000}
Example output
A TED notice from the Netherlands, taken from a run on 29 September 2026. The en dashes TED puts between the parts of the title are replaced with hyphens here. UK rows carry the same fields, with status filled in and languagesAvailable empty.
{"key": "ted:667502-2026","source": "ted","sourceName": "TED, the EU public procurement journal","country": "NL","noticeId": "667502-2026","title": "Netherlands - Education and training services - Digitale leeromgeving gemeente Hengelo","description": "De opdracht omvat de levering van een digitale leeromgeving. Bijbehorende dienstverlening, waaronder implementatie, integraties, beheer, ondersteuning en (door)ontwikkeling maken tevens onderdeel uit van de opdracht. Ook maakt een breed en actueel aanbod van e‑learningcontent onderdeel uit van de opdracht.","buyer": "Gemeente Hengelo","publishedAt": "2026-09-28T22:00:00.000Z","deadline": "2026-10-27T00:00:00.000Z","daysToDeadline": 28,"status": null,"valueAmount": 500000,"valueCurrency": "EUR","cpv": ["80000000","72000000"],"noticeType": "cn-standard","procedureType": "open","contractNature": "services","language": "eng","languagesAvailable": ["nld"],"url": "https://ted.europa.eu/en/notice/-/detail/667502-2026","documentsUrl": "https://ted.europa.eu/en/notice/667502-2026/pdf"}
How much does it cost to scrape public tenders?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 tender notices | $1.00 | $0.80 | $0.65 | $0.50 |
You pay only for the events in the table. There is no start fee, and compute time and proxies are included.
A run of 50 notices, the limit the input form starts with, costs $0.05 on the Free plan. The actor reads more UK notices than it returns when you filter, and only the returned ones count.
Limits
- The limit in Maximum notices counts all sources together, and TED is read first. With a limit of 1,000 and no country list, TED alone can fill the run before any UK notice is added.
- One run reads at most 10,000 TED notices and up to 4,000 from each UK service. The UK services limit fast reading with HTTP 429 (too many requests), so the actor pauses after every page and, after a 429, waits the time the service asks for (30 seconds by default) before up to three more tries. If a service still refuses, the run goes on without the rest of its notices, says so in its status message and names the service and the error in the
SUMMARYrecord. - Values are compared as published. A Minimum contract value of 100000 keeps a Czech notice worth 150,000 CZK and a French one worth €150,000 alike.
- The inputs Notice types and Preferred language apply to TED only.
Which filter works where
TED filters inside its own search. The UK services cannot, so the actor filters their notices after reading them.
| Input | TED | Find a Tender and Contracts Finder |
|---|---|---|
| Buyer countries | Sent to TED's search; two-letter codes are translated to TED's own | Read only when the list contains GB or UK |
| CPV codes | Code and all codes below it | Codes that start with the code's leading digits |
| Keywords | TED's full-text search | Title and description |
| Minimum contract value | Applied in TED's search; notices without a value stay in | Notices without a value stay in |
| Deadline on or after | Applied in TED's search | Notices without a deadline stay in |
| Only notices you can still bid for | Applied in TED's search: drops award notices and passed deadlines, so the limit counts open notices | Keeps tender, tenderUpdate and tenderAmendment notices with no passed deadline, after reading |
FAQ
Is it legal to collect public tenders from TED and the UK services?
TED's copyright notice allows free reuse of its procurement notices, and Find a Tender and Contracts Finder publish theirs under the Open Government Licence v3.0. The actor calls the public APIs of all three without logging in. You are responsible for how you use the data, including any names or contact details that buyers write into their notices.
Why did a run return fewer notices than I allowed?
Every filter on the UK services runs after their notices are read, so the notices read can hold fewer matches than the limit, and a UK service that keeps answering HTTP 429 after the retries stops early. TED applies its filters in the search and returns fewer rows only when fewer notices match. The SUMMARY record in the key-value store counts what each filter removed and what each source returned.
Why are there no UK notices in my results?
The usual reasons are a country list without GB, a limit already filled by TED rows, or a UK service that refused requests during the run.
Related scrapers
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.