EU & UK Tenders Scraper: TED + Find a Tender
Pricing
from $5.00 / 1,000 apify-default-dataset-items
EU & UK Tenders Scraper: TED + Find a Tender
Open public tender notices from EU TED and UK Find a Tender, filtered by keyword, CPV code and country, in one format.
Pricing
from $5.00 / 1,000 apify-default-dataset-items
Rating
0.0
(0)
Developer
TaeSung Lee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Collect open public procurement notices from two official sources, the EU's TED (Tenders Electronic Daily) and the UK's Find a Tender, in one flat format. Filter by keyword, CPV code and buyer country, and get title, buyer, estimated value, currency, submission deadline and a link for every notice. No login, no API key, no browser: the Actor calls the official public JSON APIs.
Typical uses: a daily alert for new tenders in your field, a lead list for bid teams and agencies, market research on public spending, or feeding a spreadsheet or CRM.
What you get
- Competition notices only (calls for tenders), published within the last 1 to 30 days.
- One record per notice with the same 17 fields from both sources.
- Open notices only by default (notices whose deadline has passed are dropped).
- No personal data: contact persons' names, e-mails and phone numbers are never read or saved.
Input
All fields are optional. The defaults return the newest 100 open notices from both sources.
| Field | Type | Description |
|---|---|---|
keywords | list of text | Notices matching any keyword are kept. Empty means no keyword filter. |
cpvCodes | list of text | CPV codes, 2 to 8 digits. Matching is hierarchical: 45000000 matches every construction code starting with 45, 72220000 matches 7222.... |
countries | list of text | Buyer country as ISO alpha-3 code (DEU, FRA, GBR). Empty means all. Find a Tender is only queried when GBR is included or the list is empty. |
sources | list | ted, uk or both. |
publishedWithinDays | integer 1-30 | Notices published since 00:00 UTC of (today minus N days). Default 3. |
onlyOpen | boolean | Drop notices whose submission deadline has passed. Default true. Notices without a deadline are kept. |
maxItems | integer 1-5000 | Maximum notices saved, both sources together. Default 100. |
Example:
{"keywords": ["software"],"cpvCodes": ["72000000"],"countries": ["DEU", "GBR"],"publishedWithinDays": 3,"maxItems": 100}
How keywords work
TED uses its own full-text search over the whole notice in all languages, so a match may come from a field not shown in the output. Find a Tender has no search parameter, so the Actor matches keywords case-insensitively against the title and description. Matching is by substring, so soft also matches software.
Publication window and daily runs
publishedWithinDays counts whole UTC days. Running daily with 1 can return the same notice twice across two runs, which is intentional so that nothing is missed. De-duplicate by noticeId in your own workflow. The Actor keeps no state between runs.
Output
Each dataset item has these fields:
| Field | Description |
|---|---|
source | TED or UK Find a Tender |
noticeId | Notice number in the source portal |
title, description | Notice title and procurement description, original text (TED: English when available) |
buyerName, buyerCountry | Contracting authority and ISO alpha-3 country |
placeOfPerformance | NUTS or region codes |
contractType | supplies, services or works |
procedureType | Procedure as published, for example open |
cpvCodes | CPV classification codes |
estimatedValue, currency | Estimated value as published, null when not published. TED: total value, otherwise the sum of lot values in one currency |
publicationDate | TED: YYYY-MM-DD; UK: ISO timestamp |
submissionDeadline | Latest submission deadline, null when not published |
url | Link to the notice page |
attribution, licenseUrl | Attribution statement and licence of the source |
See sample-output.json for real examples. Results are sorted by publication date, newest first, and the dataset has an Overview table view.
How it works
- TED: one search request per page of up to 250 notices, sorted newest first. The Actor stops as soon as
maxItemsnotices are collected. - Find a Tender: the release feed is read page by page (100 releases per page, newest first). Only tender releases are kept, and only the latest release per procedure, so a cancelled tender does not appear. The feed cannot be searched, so a selective keyword over many days means many pages; a 7-day keyword run read 25 pages and took about 5 to 6 minutes locally. On the Apify platform the UK feed answered more slowly (up to about 14 seconds per page in our test), so a keyword scan over many days can take many minutes. The Console prefill queries TED only for that reason. Narrow
publishedWithinDaysor leave the keyword empty for faster runs. - Politeness: requests to each official host are sequential with at least 1 second between them. Failed requests are retried 3 times with growing waits (honouring
Retry-After). Blocked or changed responses are not bypassed. - If one source fails, results from the other are saved and the run succeeds with a status message naming the failed source. The run fails only when every requested source fails.
- No results is not an error: the run succeeds with a warning that no notices matched.
Pricing
The Actor uses pay per event: you are charged per notice saved to the dataset. The draft price is $0.005 per notice (about $5 per 1,000). The final price is whatever is configured in the Apify Console when the Actor is published. The Actor stops by itself when your maximum cost per run is reached.
Legal and FAQ
Is the data allowed to be reused?
TED: the legal notice states that, unless otherwise noted, procurement notices published in the Supplement to the Official Journal of the European Union can be freely reused for commercial or non-commercial purposes. Each TED record carries © European Union, https://ted.europa.eu (reformatted); the data is reformatted by this Actor. The TED logo is not used.
Find a Tender: notice data is published under the Open Government Licence v3.0. Each UK record carries "Contains public sector information licensed under the Open Government Licence v3.0." and the licence link. The licence excludes personal data, which this Actor does not collect.
Is this an official service?
No. This Actor is not affiliated with, endorsed by or operated by the European Union, the UK Government or the Cabinet Office. It uses their public APIs at a low request rate.
Does it collect personal data?
No. Contact person fields are not requested or read.
Responsibility
You are responsible for complying with the terms, licences and laws that apply to your use of the data. This section summarises the source terms as checked on 2026-11-05 and is not legal advice.
Why did I get fewer notices than maxItems?
Fewer notices matched your filters in the chosen period. The status message tells you how many were saved and whether a source failed.
Can I get award results or other portals?
Not in this version: only competition notices from TED and Find a Tender.