EU Procurement Notices Scraper — All 27 Member States + UK
Pricing
Pay per event
EU Procurement Notices Scraper — All 27 Member States + UK
Scrape EU procurement notices across all 27 member states, plus the UK. National portals add sub-threshold contracts for FR, UK, ES, NL, BE, IT. CPV codes, values, deadlines, authority data, award-winners. Recent notices, keyword and date-range modes.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
18 hours ago
Last modified
Share
Scrape procurement notices across all 27 EU member states, plus the UK. Every member state is covered end-to-end — no selectable country ever returns zero rows.
Six countries — France, UK, Spain, Netherlands, Belgium, Italy — additionally pull from their own national portal, adding notices below the EU publication threshold that the EU-wide source doesn't carry.
Returns CPV codes, estimated values, deadlines, authority data, and award-winner details.
What you get
Each record covers a single procurement notice:
| Field | Description |
|---|---|
country | ISO-2 code of the buying authority |
source_portal | Name of the source portal (TED, or the national portal) |
notice_id | Portal-specific notice identifier |
notice_type | contract_notice, award_notice, prior_info, or modification |
cpv_codes | Common Procurement Vocabulary codes, comma-separated |
title | Notice title |
description | Notice description (up to 500 chars) |
publication_date | ISO-8601 publication date |
submission_deadline | ISO-8601 deadline for submissions |
estimated_value_eur | Estimated contract value in EUR |
currency | Original currency of the value |
contract_duration | Contract duration (where available) |
awarding_authority_name | Contracting authority name |
awarding_authority_country | Authority country |
awarding_authority_type | Authority type (ministry, municipality, etc.) |
award_winner_name | Awarded supplier (award notices only) |
award_winner_country | Supplier country |
award_value_eur | Final awarded value in EUR |
num_bidders | Number of bids received |
procedure_type | Procurement procedure (open, restricted, negotiated, etc.) |
eu_funded | Whether EU cohesion/structural funds are involved |
sustainability_criteria | Green/social procurement criteria |
documents_url | URL to tender documents |
cross_ref_ted_oj_id | TED/OJEU reference ID (above-threshold notices) |
source_url | Direct link to the notice |
buyer_email | Contact email of the buying authority (above-threshold notices) |
buyer_phone | Contact phone of the buying authority (above-threshold notices) |
contract_nature | Works, supplies, and/or services (above-threshold notices) |
buyer_legal_type | Legal classification of the buying authority — e.g. local authority, body governed by public law (above-threshold notices, not every notice declares it) |
scraped_at | When the record was collected |
Coverage
EU-wide, above the EU publication threshold. All 27 member states — Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden — resolve to real notices for every one of them. There is no country in the picker that returns nothing.
National portals, below the threshold. Six countries additionally pull from their own open-data portal, which carries smaller contracts the EU-wide source doesn't:
| Code | Country | Data quality |
|---|---|---|
| FR | France | Full — JSON, paginated |
| UK | United Kingdom | Full — REST/JSON (UK is not an EU member state, so this is its only source) |
| ES | Spain | Partial — title/date/link only |
| NL | Netherlands | Best-effort |
| BE | Belgium | Best-effort |
| IT | Italy | Best-effort |
The remaining 21 member states are EU-wide only — a legitimate absence, not a gap: they simply have no open national portal of their own to add to.
Input
{"countries": ["FR", "UK"],"mode": "recent_notices","lookbackDays": 7,"maxItems": 100}
Fields
| Field | Type | Default | Description |
|---|---|---|---|
countries | array | required | Country codes to crawl (ISO-2, e.g. FR; ISO-3 also accepted) |
mode | string | required | Query mode (see below) |
lookbackDays | integer | 7 | Days to look back (for recent_notices mode) |
dateFrom | string | — | Start date YYYY-MM-DD (for by_date_range mode) |
dateTo | string | today | End date YYYY-MM-DD (for by_date_range mode) |
query | string | — | Search keyword (for by_keyword mode) |
cpvCodes | array | — | CPV codes to filter by (EU-wide source) |
noticeTypes | array | all | Filter by notice type |
minValueEur | integer | 0 | Minimum estimated value in EUR (EU-wide source) |
maxItems | integer | 10 | Maximum records across all portals |
Modes
| Mode | Description |
|---|---|
recent_notices | Notices published in the last N days |
by_keyword | Full-text keyword search |
by_cpv_code | Filter by CPV codes |
award_notices_only | Only contract award notices |
by_date_range | Notices within a specific date range |
Examples
Recent notices from France and UK (last 3 days)
{"countries": ["FR", "UK"],"mode": "recent_notices","lookbackDays": 3,"maxItems": 50}
Keyword search across multiple countries
{"countries": ["FR", "DE", "IT"],"mode": "by_keyword","query": "software development","maxItems": 100}
Award notices from Spain and Belgium
{"countries": ["ES", "BE"],"mode": "award_notices_only","maxItems": 50}
All IT contracts above EUR 100k in a date range
{"countries": ["IT"],"mode": "by_date_range","dateFrom": "2026-01-01","dateTo": "2026-03-31","minValueEur": 100000,"maxItems": 500}
Notes
- Above vs. below threshold. The EU-wide source carries every notice published above the EU procurement thresholds, for all 27 member states. National portals (FR, UK, ES, NL, BE, IT) add smaller, below-threshold contracts on top — select one of those six countries to get both.
- Spain (ES) national-portal data comes from a single Atom/XML feed and contains only title, publication date, and source URL. Full tender details require visiting the linked page.
- Best-effort national portals (NL, BE, IT) reflect the field structure of each portal's own open-data API. Field availability varies by portal.
- Buyer contact details (
buyer_email,buyer_phone) are only carried on above-threshold notices; national-portal-only records leave them null. - Contract nature and buyer legal type (
contract_nature,buyer_legal_type) are also above-threshold only.buyer_legal_typeis not declared on every notice — treat a null there as "not stated," not as missing data. - Set
maxItemsto a reasonable value. Default run memory is 512 MB with a 4-hour timeout.
Further reading: How to Get Government Tender Data From 14 Procurement Portals