EU Procurement Notices Scraper — All 27 Member States + UK avatar

EU Procurement Notices Scraper — All 27 Member States + UK

Pricing

Pay per event

Go to Apify Store
EU Procurement Notices Scraper — All 27 Member States + UK

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

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

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:

FieldDescription
countryISO-2 code of the buying authority
source_portalName of the source portal (TED, or the national portal)
notice_idPortal-specific notice identifier
notice_typecontract_notice, award_notice, prior_info, or modification
cpv_codesCommon Procurement Vocabulary codes, comma-separated
titleNotice title
descriptionNotice description (up to 500 chars)
publication_dateISO-8601 publication date
submission_deadlineISO-8601 deadline for submissions
estimated_value_eurEstimated contract value in EUR
currencyOriginal currency of the value
contract_durationContract duration (where available)
awarding_authority_nameContracting authority name
awarding_authority_countryAuthority country
awarding_authority_typeAuthority type (ministry, municipality, etc.)
award_winner_nameAwarded supplier (award notices only)
award_winner_countrySupplier country
award_value_eurFinal awarded value in EUR
num_biddersNumber of bids received
procedure_typeProcurement procedure (open, restricted, negotiated, etc.)
eu_fundedWhether EU cohesion/structural funds are involved
sustainability_criteriaGreen/social procurement criteria
documents_urlURL to tender documents
cross_ref_ted_oj_idTED/OJEU reference ID (above-threshold notices)
source_urlDirect link to the notice
buyer_emailContact email of the buying authority (above-threshold notices)
buyer_phoneContact phone of the buying authority (above-threshold notices)
contract_natureWorks, supplies, and/or services (above-threshold notices)
buyer_legal_typeLegal classification of the buying authority — e.g. local authority, body governed by public law (above-threshold notices, not every notice declares it)
scraped_atWhen 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:

CodeCountryData quality
FRFranceFull — JSON, paginated
UKUnited KingdomFull — REST/JSON (UK is not an EU member state, so this is its only source)
ESSpainPartial — title/date/link only
NLNetherlandsBest-effort
BEBelgiumBest-effort
ITItalyBest-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

FieldTypeDefaultDescription
countriesarrayrequiredCountry codes to crawl (ISO-2, e.g. FR; ISO-3 also accepted)
modestringrequiredQuery mode (see below)
lookbackDaysinteger7Days to look back (for recent_notices mode)
dateFromstringStart date YYYY-MM-DD (for by_date_range mode)
dateTostringtodayEnd date YYYY-MM-DD (for by_date_range mode)
querystringSearch keyword (for by_keyword mode)
cpvCodesarrayCPV codes to filter by (EU-wide source)
noticeTypesarrayallFilter by notice type
minValueEurinteger0Minimum estimated value in EUR (EU-wide source)
maxItemsinteger10Maximum records across all portals

Modes

ModeDescription
recent_noticesNotices published in the last N days
by_keywordFull-text keyword search
by_cpv_codeFilter by CPV codes
award_notices_onlyOnly contract award notices
by_date_rangeNotices 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_type is not declared on every notice — treat a null there as "not stated," not as missing data.
  • Set maxItems to 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