Hilma Tender Scraper avatar

Hilma Tender Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Hilma Tender Scraper

Hilma Tender Scraper

Scrape Hilma procurement notices. Search public records. Export available fields to Excel, CSV or JSON.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissions

Share

Extract Hilma procurement notices for tender discovery, buyer research and procurement monitoring. Hilma Tender Scraper collects public information into one complete dataset table, ready to export as Excel, CSV or JSON.

Use search filters, set how many results you need and start the Actor. Search returns the fields made available in this service’s public results.

At a glanceDetails
📥 InputSearch filters
📋 Collection modesSearch tender records
📤 OutputOne row per record, or a failed row for an unsuccessful input
📄 PaginationAutomatic, up to maxResults while more records are available
🔐 Website loginNot required
💾 ExportOne dataset view with all fields; Excel, CSV and JSON

What the Hilma scraper collects 📋

ModeWhat you receive
Search tender recordsMatching procurement notices and the fields published in the search results.

The field table and complete examples below show the information this Actor returns. Optional values depend on what the source publishes for the selected record.

Coverage for this Actor:

  • Returns the public notice search records, including available descriptions, buyers and deadlines. A separate notice details mode is not provided.
  • Search excludes procurement plans.

How to scrape Hilma 🚀

  1. Choose Search tender records.
  2. Complete the search filters.
  3. Set Maximum results. The minimum is 1.
  4. Start the Actor and review the saved dataset.
  5. Export the results or connect them to your workflow.

Search tender records — input example

{
"mode": "search",
"maxResults": 10
}

maxResults limits all saved rows for each search or supplied record, including a failed row. It does not guarantee that the source has that many matching records.

Hilma data fields and complete output 📦

Each result stays in one row. Every returned field appears in the same dataset view, including list fields and additional published facts. Fields unavailable for a particular record remain empty.

FieldIncluded data
result_typeSelected collection mode.
inputSubmitted search settings, record link or record number.
statusSuccess or failed outcome.
error_codeFailure category for an unsuccessful input.
error_messageReadable explanation for an unsuccessful input.
idId, when published.
notice_idNotice id, when published.
ref_old_notice_ted_publication_idRef old notice ted publication id, when published.
parent_notice_idParent notice id, when published.
old_procurement_project_idOld procurement project id, when published.
procedure_idProcedure id, when published.
plan_idPlan id, when published.
contract_folder_idContract folder id, when published.
e_forms_idE forms id, when published.
full_eforms_idFull eforms id, when published.
sending_systemSending system, when published.
procedure_typeProcedure type, when published.
notice_result_total_amountNotice result total amount, when published.
notice_result_total_amount_currencyNotice result total amount currency, when published.
notice_ojs_numberNotice ojs number, when published.
date_publishedDate published, when published.
date_modifiedDate modified, when published.
procurement_type_codeProcurement type code, when published.
previous_ted_publication_idPrevious ted publication id, when published.
previous_notice_numberPrevious notice number, when published.
previous_eforms_idPrevious eforms id, when published.
previous_full_eforms_idPrevious full eforms id, when published.
previous_contract_folder_idPrevious contract folder id, when published.
previous_search_idsPrevious search ids, when published.
typeType, when published.
main_typeMain type, when published.
title_fiTitle fi, when published.
title_svTitle sv, when published.
title_enTitle en, when published.
title_otherTitle other, when published.
cpv_codesCpv codes, when published.
organisation_name_fiOrganisation name fi, when published.
organisation_name_svOrganisation name sv, when published.
organisation_name_enOrganisation name en, when published.
organisation_name_otherOrganisation name other, when published.
organisation_national_registration_numberOrganisation national registration number, when published.
organisation_addressOrganisation address, when published.
organisation_nuts_codeOrganisation nuts code, when published.
organisation_typeOrganisation type, when published.
nuts_codesNuts codes, when published.
organisation_departmentOrganisation department, when published.
description_fiDescription fi, when published.
description_svDescription sv, when published.
description_enDescription en, when published.
description_otherDescription other, when published.
expiration_dateExpiration date, when published.
deadlineDeadline, when published.
is_corrigendumIs corrigendum, when published.
is_cancelledIs cancelled, when published.
includes_dynamic_purcharing_systemIncludes dynamic purcharing system, when published.
includes_framework_agreementIncludes framework agreement, when published.
overall_maximum_framework_contracts_amountOverall maximum framework contracts amount, when published.
overall_maximum_framework_contracts_currencyOverall maximum framework contracts currency, when published.
overall_approximate_framework_contracts_amountOverall approximate framework contracts amount, when published.
overall_approximate_framework_contracts_currencyOverall approximate framework contracts currency, when published.
is_national_procurementIs national procurement, when published.
is_eu_procurementIs eu procurement, when published.
is_national_small_value_procurementIs national small value procurement, when published.
notice_numberNotice number, when published.
estimated_valueEstimated value, when published.
currencyCurrency, when published.
is_eformsIs eforms, when published.
winner_organisationsWinner organisations, when published.
ted_publication_idTed publication id, when published.
is_planIs plan, when published.
procurement_documents_urlProcurement documents url, when published.
tendering_in_hilmaTendering in hilma, when published.
linked_noticesLinked notices, when published.
energy_efficiency_consideredEnergy efficiency considered, when published.
low_carbonLow carbon, when published.
circular_economyCircular economy, when published.
biodiversityBiodiversity, when published.
sustainable_food_productionSustainable food production, when published.
listed_green_criteria_usedListed green criteria used, when published.
just_working_conditionsJust working conditions, when published.
employment_conditionEmployment condition, when published.
how_many_opportunities_is_estimatedHow many opportunities is estimated, when published.
code_of_conductCode of conduct, when published.
innovation_consideredInnovation considered, when published.
solution_new_to_buyerSolution new to buyer, when published.
solution_new_to_market_or_industrySolution new to market or industry, when published.
sme_participation_consideredSme participation considered, when published.
end_user_involvedEnd user involved, when published.
is_private_small_value_procurementIs private small value procurement, when published.
lots.idLots / id, when published.
lots.procurement_type_codeLots / procurement type code, when published.
lots.procedure_typeLots / procedure type, when published.
lots.title_fiLots / title fi, when published.
lots.title_svLots / title sv, when published.
lots.title_enLots / title en, when published.
lots.title_otherLots / title other, when published.
lots.cpv_codesLots / cpv codes, when published.
lots.nuts_codesLots / nuts codes, when published.
lots.description_fiLots / description fi, when published.
lots.description_svLots / description sv, when published.
lots.description_enLots / description en, when published.
lots.description_otherLots / description other, when published.
lots.estimated_valueLots / estimated value, when published.
lots.currencyLots / currency, when published.
lots.lot_result_total_amountLots / lot result total amount, when published.
lots.lot_result_total_amount_currencyLots / lot result total amount currency, when published.
lots.expiration_dateLots / expiration date, when published.
lots.deadlineLots / deadline, when published.
lots.includes_dynamic_purcharing_systemLots / includes dynamic purcharing system, when published.
lots.includes_framework_agreementLots / includes framework agreement, when published.
lots.winner_organisationsLots / winner organisations, when published.
lots.received_tender_countLots / received tender count, when published.
lots.electronically_submitted_tenders_countLots / electronically submitted tenders count, when published.
lots.tenders_from_other_eeacountLots / tenders from other eeacount, when published.
lots.tenders_from_outside_eeacountLots / tenders from outside eeacount, when published.
lots.tenders_verified_and_inadmissible_countLots / tenders verified and inadmissible count, when published.
lots.tenders_verified_and_inadmissible_low_value_countLots / tenders verified and inadmissible low value count, when published.
lots.tenders_not_verified_for_admissibility_countLots / tenders not verified for admissibility count, when published.
lots.tenders_from_micro_tenderers_countLots / tenders from micro tenderers count, when published.
lots.tenders_from_small_tenderers_countLots / tenders from small tenderers count, when published.
lots.tenders_from_medium_tenderers_countLots / tenders from medium tenderers count, when published.
lots.tenders_from_micro_small_medium_tenderers_countLots / tenders from micro small medium tenderers count, when published.
lots.received_application_countLots / received application count, when published.
lots.energy_efficiency_consideredLots / energy efficiency considered, when published.
lots.low_carbonLots / low carbon, when published.
lots.circular_economyLots / circular economy, when published.
lots.biodiversityLots / biodiversity, when published.
lots.sustainable_food_productionLots / sustainable food production, when published.
lots.listed_green_criteria_usedLots / listed green criteria used, when published.
lots.just_working_conditionsLots / just working conditions, when published.
lots.employment_conditionLots / employment condition, when published.
lots.how_many_opportunities_is_estimatedLots / how many opportunities is estimated, when published.
lots.code_of_conductLots / code of conduct, when published.
lots.innovation_consideredLots / innovation considered, when published.
lots.solution_new_to_buyerLots / solution new to buyer, when published.
lots.solution_new_to_market_or_industryLots / solution new to market or industry, when published.
lots.sme_participation_consideredLots / sme participation considered, when published.
lots.end_user_involvedLots / end user involved, when published.
record_idStable identifier for the source record.
urlPublic source link when the website provides one.
additional_fields.nameNames of additional published fields, when present.
additional_fields.valueTheir corresponding values in the same order.

The complete result below is included for every mode. Text and lists are not shortened. These are examples from validation runs; the source can change.

Search tender records — complete JSON result

{
"result_type": "search",
"input": "{\"keywords\": null}",
"id": "EF-58227",
"notice_id": 58227,
"ref_old_notice_ted_publication_id": null,
"parent_notice_id": null,
"old_procurement_project_id": 0,
"procedure_id": 37902,
"plan_id": 0,
"contract_folder_id": "9c5b423d-8071-4897-9c69-311b4f80f2e5",
"e_forms_id": "6e20c7f9-a632-454c-8fe9-444e525e91e0",
"full_eforms_id": "6e20c7f9-a632-454c-8fe9-444e525e91e0-01",
"sending_system": "Cloudia Kilpailutus",
"procedure_type": "open",
"notice_result_total_amount": null,
"notice_result_total_amount_currency": null,
"notice_ojs_number": "",
"date_published": "2026-09-29T14:08:10.111Z",
"date_modified": "2026-09-29T14:08:10.12Z",
"procurement_type_code": "services",
"previous_ted_publication_id": [],
"previous_notice_number": [],
"previous_eforms_id": [],
"previous_full_eforms_id": [],
"previous_contract_folder_id": [],
"previous_search_ids": [],
"type": "E3",
"main_type": "ContractNotices",
"title_fi": "Limingan kunnan ulkojääalueiden jäänhoito kaudelle 2026–2027 ja optiona kaudelle 2027–2028",
"title_sv": "",
"title_en": "",
"title_other": "",
"cpv_codes": "92610000",
"organisation_name_fi": "Limingan kunta",
"organisation_name_sv": "",
"organisation_name_en": "",
"organisation_name_other": "",
"organisation_national_registration_number": "0186553-2",
"organisation_address": "Liminganraitti 10 91900 LIMINKA FIN",
"organisation_nuts_code": "FI1D9",
"organisation_type": "body-pl",
"nuts_codes": "FI",
"organisation_department": "",
"description_fi": "Limingan kunnan ulkojääalueiden jäänhoito kaudelle 2026–2027 ja optiona kaudelle 2027–2028 Hankinnassa tilaajaa ostaa jäänhoitotyötä yksikköhinnalla jääalueille hoitokaudelle 2026–2027 ja optiona kaudelle 2027–2028. Vuosittainen hoitokauden ohjeellinen kestoaika on marraskuusta seuraavan vuoden maaliskuuhun. Tarjoaja määrittelee yksikköhinnat tarkemmin kohdassa Hankinnan kohteen kriteerit. \n\nJäänhoitotyö käsittää luistelualueiden kunnostamisen koneellisesti auraamalla ja jäädyttämällä. Koneellisen hoitotyön yhteyteen liittyy pienimuotoisesti käsin tehtävää hoitotyötä kaukalojäädytyksen yhteydessä. Hoitosykli vaihtelee alueesta riippuen yhdestä useampaan kertaan vuorokaudessa. Hoitosykli määritellään paikkakohtaisesti tilaajan kanssa kunkin jäänhoitokauden alussa ja aikana. Hoitokausi on viimeisen kahden vuoden aikana vaihdellut marras–joulukuusta seuraavan vuoden helmi–maaliskuun loppuun. Sopimus ei sisällä määräostovelvoitetta. Jäänhoitotyöhön kuuluvien jääalueiden määrä on tällä hetkellä seitsemän (osassa kaukalo ja avojää samalla alueella), jotka kaikki sijaitsevat Limingan kunnan alueella. Jäädytettäviä kaukaloita on neljä kappaletta, joiden pinta-ala on yhteensä noin 4500 m2. Avojääalueiden pinta-ala on yhteensä noin 13500 m2. Jääalueet löytyvät tarkemmin Limingan kunnan internet-sivuilta osoitteesta: https://www.liminka.fi/kulttuuri-ja-vapaa-aika/liikuntapalvelut/ulkoliikuntapaikat/. Hankintayksikkö ei järjestä erillistä jääalueiden katselmusta, mutta alueisiin on mahdollista käydä tutustumassa omatoimisesti ennen tarjouksen jättämistä. Tilaaja pidättää oikeuden muuttaa hoidettavien jääalueiden määrää sopimuskauden aikana. \n\nKalustovaatimukset ovat määritelty määritelty tarjouspyynnön kohdassa Soveltuvuusvaatimukset. Hankinnan ja palvelun tarkempi kuvaus on määritelty liitteenä löytyvään jäänhoitotyön sopimuspohjaan (jaanhoitotyon_sopimuspohja_2026.pdf),",
"description_sv": "",
"description_en": "",
"description_other": "",
"expiration_date": "2026-10-12T13:00:00Z",
"deadline": "2026-10-12T13:00:00Z",
"is_corrigendum": false,
"is_cancelled": false,
"includes_dynamic_purcharing_system": false,
"includes_framework_agreement": false,
"overall_maximum_framework_contracts_amount": null,
"overall_maximum_framework_contracts_currency": null,
"overall_approximate_framework_contracts_amount": null,
"overall_approximate_framework_contracts_currency": null,
"is_national_procurement": true,
"is_eu_procurement": false,
"is_national_small_value_procurement": false,
"notice_number": "2026-058227",
"estimated_value": null,
"currency": null,
"is_eforms": true,
"winner_organisations": "",
"ted_publication_id": null,
"is_plan": false,
"procurement_documents_url": "https://tarjouspalvelu.fi/liminka?id=630128&tpk=9fd49bca-ef28-49e3-8e51-dc7d8b3ca1b2",
"tendering_in_hilma": false,
"linked_notices": "",
"energy_efficiency_considered": true,
"low_carbon": false,
"circular_economy": false,
"biodiversity": false,
"sustainable_food_production": false,
"listed_green_criteria_used": false,
"just_working_conditions": true,
"employment_condition": false,
"how_many_opportunities_is_estimated": null,
"code_of_conduct": true,
"innovation_considered": false,
"solution_new_to_buyer": false,
"solution_new_to_market_or_industry": false,
"sme_participation_considered": true,
"end_user_involved": null,
"is_private_small_value_procurement": false,
"lots.id": [
"LOT-0000"
],
"lots.procurement_type_code": [
"services"
],
"lots.procedure_type": [
""
],
"lots.title_fi": [
"Limingan kunnan ulkojääalueiden jäänhoito kaudelle 2026–2027 ja optiona kaudelle 2027–2028"
],
"lots.title_sv": [
""
],
"lots.title_en": [
""
],
"lots.title_other": [
""
],
"lots.cpv_codes": [
"92610000"
],
"lots.nuts_codes": [
"FI"
],
"lots.description_fi": [
"Hankinnassa tilaajaa ostaa jäänhoitotyötä yksikköhinnalla jääalueille hoitokaudelle 2026–2027 ja optiona kaudelle 2027–2028. Vuosittainen hoitokauden ohjeellinen kestoaika on marraskuusta seuraavan vuoden maaliskuuhun. Tarjoaja määrittelee yksikköhinnat tarkemmin kohdassa Hankinnan kohteen kriteerit. \n\nJäänhoitotyö käsittää luistelualueiden kunnostamisen koneellisesti auraamalla ja jäädyttämällä. Koneellisen hoitotyön yhteyteen liittyy pienimuotoisesti käsin tehtävää hoitotyötä kaukalojäädytyksen yhteydessä. Hoitosykli vaihtelee alueesta riippuen yhdestä useampaan kertaan vuorokaudessa. Hoitosykli määritellään paikkakohtaisesti tilaajan kanssa kunkin jäänhoitokauden alussa ja aikana. Hoitokausi on viimeisen kahden vuoden aikana vaihdellut marras–joulukuusta seuraavan vuoden helmi–maaliskuun loppuun. Sopimus ei sisällä määräostovelvoitetta. Jäänhoitotyöhön kuuluvien jääalueiden määrä on tällä hetkellä seitsemän (osassa kaukalo ja avojää samalla alueella), jotka kaikki sijaitsevat Limingan kunnan alueella. Jäädytettäviä kaukaloita on neljä kappaletta, joiden pinta-ala on yhteensä noin 4500 m2. Avojääalueiden pinta-ala on yhteensä noin 13500 m2. Jääalueet löytyvät tarkemmin Limingan kunnan internet-sivuilta osoitteesta: https://www.liminka.fi/kulttuuri-ja-vapaa-aika/liikuntapalvelut/ulkoliikuntapaikat/. Hankintayksikkö ei järjestä erillistä jääalueiden katselmusta, mutta alueisiin on mahdollista käydä tutustumassa omatoimisesti ennen tarjouksen jättämistä. Tilaaja pidättää oikeuden muuttaa hoidettavien jääalueiden määrää sopimuskauden aikana. \n\nKalustovaatimukset ovat määritelty määritelty tarjouspyynnön kohdassa Soveltuvuusvaatimukset. Hankinnan ja palvelun tarkempi kuvaus on määritelty liitteenä löytyvään jäänhoitotyön sopimuspohjaan (jaanhoitotyon_sopimuspohja_2026.pdf)"
],
"lots.description_sv": [
""
],
"lots.description_en": [
""
],
"lots.description_other": [
""
],
"lots.estimated_value": [
null
],
"lots.currency": [
null
],
"lots.lot_result_total_amount": [
null
],
"lots.lot_result_total_amount_currency": [
null
],
"lots.expiration_date": [
"2026-10-12T13:00:00Z"
],
"lots.deadline": [
"2026-10-12T13:00:00Z"
],
"lots.includes_dynamic_purcharing_system": [
false
],
"lots.includes_framework_agreement": [
false
],
"lots.winner_organisations": [
""
],
"lots.received_tender_count": [
null
],
"lots.electronically_submitted_tenders_count": [
null
],
"lots.tenders_from_other_eeacount": [
null
],
"lots.tenders_from_outside_eeacount": [
null
],
"lots.tenders_verified_and_inadmissible_count": [
null
],
"lots.tenders_verified_and_inadmissible_low_value_count": [
null
],
"lots.tenders_not_verified_for_admissibility_count": [
null
],
"lots.tenders_from_micro_tenderers_count": [
null
],
"lots.tenders_from_small_tenderers_count": [
null
],
"lots.tenders_from_medium_tenderers_count": [
null
],
"lots.tenders_from_micro_small_medium_tenderers_count": [
null
],
"lots.received_application_count": [
null
],
"lots.energy_efficiency_considered": [
true
],
"lots.low_carbon": [
false
],
"lots.circular_economy": [
false
],
"lots.biodiversity": [
false
],
"lots.sustainable_food_production": [
false
],
"lots.listed_green_criteria_used": [
false
],
"lots.just_working_conditions": [
true
],
"lots.employment_condition": [
false
],
"lots.how_many_opportunities_is_estimated": [
null
],
"lots.code_of_conduct": [
true
],
"lots.innovation_considered": [
false
],
"lots.solution_new_to_buyer": [
false
],
"lots.solution_new_to_market_or_industry": [
false
],
"lots.sme_participation_considered": [
true
],
"lots.end_user_involved": [
null
],
"status": "success",
"record_id": "EF-58227",
"url": "https://www.hankintailmoitukset.fi/en/public/procedure/37902/enotice/58227",
"additional_fields.name": [],
"additional_fields.value": []
}

Input settings ⚙️

SettingWhat to enter
What to collect (mode)Choose the information you need.
Maximum results per search or link (maxResults)Collect up to this many saved results for each search or record link. Minimum: 1.
Keywords (keywords)Search words in published procurement notices. Procurement plans are not included.

Hilma scraping use cases 🎯

Build a tender or contract shortlist

Search the supported procurement collection and export matching records. Keep deadlines, buyer names and original references together when reviewing opportunities.

Research public buyers

Compare available buyer, supplier and contract information across records. Preserve the published currency and value type when working with amounts.

Monitor published procurement records

Schedule repeated exports and compare stable record IDs to identify newly published notices and changes. A search result is not confirmation that bidding remains open.

Pricing and saved-result behavior 💰

See the Actor’s Pricing tab for the current rate. Under dataset-item pricing:

  • Each saved record is one result. Lists and additional details attached to it do not create extra rows.
  • A saved failed row is also one billable dataset item. This includes invalid inputs, unavailable records, empty searches and exhausted retries.
  • At most one failed row is saved per input. Retry attempts do not create additional dataset rows.
  • maxResults caps all saved rows for the input. Duplicate copies of the same input are processed once.

Hilma scraper API and integrations 🔌

Replace $ACTOR_ID with the ID shown in the Actor’s API tab and $APIFY_TOKEN with your Apify token.

curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","maxResults":10}'

Use Apify schedules for recurring collection, webhooks for completion notifications, and integrations for Google Sheets, Make, Zapier, cloud storage or your own application.

Reliability and public-data limits ⚠️

Temporary request failures are retried up to five total attempts. Invalid record inputs save a failed row without a website request. Confirmed missing records are not retried unnecessarily. If a later request fails, records already saved remain in the dataset. Normal pagination completion does not add a failed row. Collection stops after two consecutive pages return no new records. Configuration, data-saving or request-scheduling failures stop the run.

Hilma controls the available records and fields. Search records can contain less information than a full public card. The Actor preserves published values and does not fill missing facts with estimates.

Frequently asked questions ❓

Do I need a Hilma account?

No. This Actor collects the supported public information without your website login.

Which search filters can I use?

The input form supports keywords. Only the displayed filters are supported.

How many records can I collect?

Set maxResults to the maximum saved rows you want for each input. The minimum is 1. Collection can finish earlier when the source runs out of results or stops returning new records.

Why are some fields empty?

The source may not publish a value for that record or mode. Optional information remains empty.

Can I export all the fields?

Yes. All returned fields are included in one dataset view. Nested lists remain attached to their parent record.

Support 🛟

For a reproducible issue, share the run ID, selected mode and a safe public example through the Actor’s support channel. Keep tokens, passwords and proxy credentials private.