Finnish Public Tenders Scraper (Hilma) avatar

Finnish Public Tenders Scraper (Hilma)

Pricing

Pay per event

Go to Apify Store
Finnish Public Tenders Scraper (Hilma)

Finnish Public Tenders Scraper (Hilma)

Scrape Finnish public procurement notices from Hilma: titles, CPV codes, buyers, deadlines, estimated and awarded values, winners.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Pohja Studio

Pohja Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape Finnish public procurement notices from Hilma (hankintailmoitukset.fi), the official notification channel for Finnish public sector tenders. Every Finnish contracting authority — municipalities, hospital districts, parishes, state agencies, universities — is legally required to publish here, which makes it the single complete source of Finnish public demand.

No API key, no account, no login. Point the Actor at a sector and get structured notices.

What you get

Each notice comes back as a flat record:

FieldDescription
title, descriptionNotice title and full description
buyerName, buyerBusinessId, buyerAddress, buyerTypeThe contracting authority
cpvCodesCPV classification (45 = construction, 71 = engineering, 33 = medical, …)
nutsCodesNUTS region (FI1B1 = Helsinki-Uusimaa, …)
procurementTypeworks, services or supplies
datePublished, deadlinePublication date and tender deadline
estimatedValueEstimated contract value, when the buyer discloses it
awardedValue, currency, winnersOn award notices: what the contract closed at and who won it
isEuProcurement, isFrameworkAgreement, isCancelled, isCorrigendumNotice flags
urlDirect link to the notice on Hilma
lotsPer-lot breakdown (optional)
rawUntouched source record (optional)

Use cases

  • Construction and trade companies — find tenders in your discipline and region before the deadline, filtered by CPV instead of reading everything.
  • Competitive intelligence — award notices carry the winner and the contract value, so you can see who is winning what, at what price.
  • Suppliers and manufacturers — track which authorities are buying your product category.
  • Sales teams selling to the public sector — a live feed of buying intent with the buyer's business ID attached.
  • Market research and analytics — historical volumes and values by sector, region and buyer.

Input

OptionDescription
searchTermsFinnish keywords. Each term is a separate query returning up to 50 notices, so several terms give wider coverage. Leave as * to take everything matching the filters.
cpvPrefixKeep only notices whose CPV starts with this, e.g. 45 for construction work.
nutsPrefixKeep only notices in a region, e.g. FI1B for Helsinki-Uusimaa.
procurementTypeworks, services, supplies, or any.
publishedAfter / publishedBeforePublication date window.
deadlineAfterOnly notices whose deadline falls on or after this date.
onlyOpenForBidsDrop cancelled notices and anything past its deadline.
maxItemsStop after this many notices.
includeLots, includeRawFieldsAttach the lot breakdown / the raw source record.

Example: open construction tenders in Helsinki-Uusimaa

{
"searchTerms": ["julkisivu", "vesikatto", "maalaus", "peruskorjaus", "saneeraus"],
"cpvPrefix": "45",
"nutsPrefix": "FI1B",
"procurementType": "works",
"onlyOpenForBids": true,
"maxItems": 200
}

Example: who won Finnish construction contracts this year

{
"searchTerms": ["urakka"],
"cpvPrefix": "45",
"publishedAfter": "2026-01-01T00:00:00Z"
}

How coverage works

Hilma's search backend returns at most 50 records per query and does not support paging. This Actor therefore widens coverage by running one query per search term and merging the results, dropping duplicates.

If a run returns fewer notices than you expect, add more specific Finnish keywords rather than raising maxItems. Terms that work well for construction: julkisivu, vesikatto, maalaus, peruskorjaus, saneeraus, urakka, korjaus, rakentaminen, purku, piha.

The backend also caches responses per search term, so the same term asked twice in quick succession can return the earlier response even if you changed the filters. Every record is re-checked locally against your criteria before it is written, so the output never contains records that do not match what you asked for — a cached response simply yields fewer rows.

Pricing

This Actor is billed per notice delivered. Records that are filtered out or that duplicate an earlier record are not charged.

Notes

Hilma notices are official public documents published under Finnish procurement law, and the data is used here as published. Some fields are only present on certain notice types — awardedValue and winners exist on contract award notices, deadline and estimatedValue on calls for tenders — so nulls in those columns are expected rather than a scraping failure.