OrbTop

EU Procurement Notices Scraper — All 27 Member States + UK

BUSINESSOTHER

EU Procurement Notices Scraper — All 27 Member States + UK

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

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 ISO-2 country codes to crawl
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.
  • Set maxItems to a reasonable value. Default run memory is 1 GB with a 4-hour timeout.

Further reading: How to Get Government Tender Data From 14 Procurement Portals