Hilma Tender Scraper
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
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 glance | Details |
|---|---|
| 📥 Input | Search filters |
| 📋 Collection modes | Search tender records |
| 📤 Output | One row per record, or a failed row for an unsuccessful input |
| 📄 Pagination | Automatic, up to maxResults while more records are available |
| 🔐 Website login | Not required |
| 💾 Export | One dataset view with all fields; Excel, CSV and JSON |
What the Hilma scraper collects 📋
| Mode | What you receive |
|---|---|
| Search tender records | Matching 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 🚀
- Choose Search tender records.
- Complete the search filters.
- Set Maximum results. The minimum is 1.
- Start the Actor and review the saved dataset.
- 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.
| Field | Included data |
|---|---|
result_type | Selected collection mode. |
input | Submitted search settings, record link or record number. |
status | Success or failed outcome. |
error_code | Failure category for an unsuccessful input. |
error_message | Readable explanation for an unsuccessful input. |
id | Id, when published. |
notice_id | Notice id, when published. |
ref_old_notice_ted_publication_id | Ref old notice ted publication id, when published. |
parent_notice_id | Parent notice id, when published. |
old_procurement_project_id | Old procurement project id, when published. |
procedure_id | Procedure id, when published. |
plan_id | Plan id, when published. |
contract_folder_id | Contract folder id, when published. |
e_forms_id | E forms id, when published. |
full_eforms_id | Full eforms id, when published. |
sending_system | Sending system, when published. |
procedure_type | Procedure type, when published. |
notice_result_total_amount | Notice result total amount, when published. |
notice_result_total_amount_currency | Notice result total amount currency, when published. |
notice_ojs_number | Notice ojs number, when published. |
date_published | Date published, when published. |
date_modified | Date modified, when published. |
procurement_type_code | Procurement type code, when published. |
previous_ted_publication_id | Previous ted publication id, when published. |
previous_notice_number | Previous notice number, when published. |
previous_eforms_id | Previous eforms id, when published. |
previous_full_eforms_id | Previous full eforms id, when published. |
previous_contract_folder_id | Previous contract folder id, when published. |
previous_search_ids | Previous search ids, when published. |
type | Type, when published. |
main_type | Main type, when published. |
title_fi | Title fi, when published. |
title_sv | Title sv, when published. |
title_en | Title en, when published. |
title_other | Title other, when published. |
cpv_codes | Cpv codes, when published. |
organisation_name_fi | Organisation name fi, when published. |
organisation_name_sv | Organisation name sv, when published. |
organisation_name_en | Organisation name en, when published. |
organisation_name_other | Organisation name other, when published. |
organisation_national_registration_number | Organisation national registration number, when published. |
organisation_address | Organisation address, when published. |
organisation_nuts_code | Organisation nuts code, when published. |
organisation_type | Organisation type, when published. |
nuts_codes | Nuts codes, when published. |
organisation_department | Organisation department, when published. |
description_fi | Description fi, when published. |
description_sv | Description sv, when published. |
description_en | Description en, when published. |
description_other | Description other, when published. |
expiration_date | Expiration date, when published. |
deadline | Deadline, when published. |
is_corrigendum | Is corrigendum, when published. |
is_cancelled | Is cancelled, when published. |
includes_dynamic_purcharing_system | Includes dynamic purcharing system, when published. |
includes_framework_agreement | Includes framework agreement, when published. |
overall_maximum_framework_contracts_amount | Overall maximum framework contracts amount, when published. |
overall_maximum_framework_contracts_currency | Overall maximum framework contracts currency, when published. |
overall_approximate_framework_contracts_amount | Overall approximate framework contracts amount, when published. |
overall_approximate_framework_contracts_currency | Overall approximate framework contracts currency, when published. |
is_national_procurement | Is national procurement, when published. |
is_eu_procurement | Is eu procurement, when published. |
is_national_small_value_procurement | Is national small value procurement, when published. |
notice_number | Notice number, when published. |
estimated_value | Estimated value, when published. |
currency | Currency, when published. |
is_eforms | Is eforms, when published. |
winner_organisations | Winner organisations, when published. |
ted_publication_id | Ted publication id, when published. |
is_plan | Is plan, when published. |
procurement_documents_url | Procurement documents url, when published. |
tendering_in_hilma | Tendering in hilma, when published. |
linked_notices | Linked notices, when published. |
energy_efficiency_considered | Energy efficiency considered, when published. |
low_carbon | Low carbon, when published. |
circular_economy | Circular economy, when published. |
biodiversity | Biodiversity, when published. |
sustainable_food_production | Sustainable food production, when published. |
listed_green_criteria_used | Listed green criteria used, when published. |
just_working_conditions | Just working conditions, when published. |
employment_condition | Employment condition, when published. |
how_many_opportunities_is_estimated | How many opportunities is estimated, when published. |
code_of_conduct | Code of conduct, when published. |
innovation_considered | Innovation considered, when published. |
solution_new_to_buyer | Solution new to buyer, when published. |
solution_new_to_market_or_industry | Solution new to market or industry, when published. |
sme_participation_considered | Sme participation considered, when published. |
end_user_involved | End user involved, when published. |
is_private_small_value_procurement | Is private small value procurement, when published. |
lots.id | Lots / id, when published. |
lots.procurement_type_code | Lots / procurement type code, when published. |
lots.procedure_type | Lots / procedure type, when published. |
lots.title_fi | Lots / title fi, when published. |
lots.title_sv | Lots / title sv, when published. |
lots.title_en | Lots / title en, when published. |
lots.title_other | Lots / title other, when published. |
lots.cpv_codes | Lots / cpv codes, when published. |
lots.nuts_codes | Lots / nuts codes, when published. |
lots.description_fi | Lots / description fi, when published. |
lots.description_sv | Lots / description sv, when published. |
lots.description_en | Lots / description en, when published. |
lots.description_other | Lots / description other, when published. |
lots.estimated_value | Lots / estimated value, when published. |
lots.currency | Lots / currency, when published. |
lots.lot_result_total_amount | Lots / lot result total amount, when published. |
lots.lot_result_total_amount_currency | Lots / lot result total amount currency, when published. |
lots.expiration_date | Lots / expiration date, when published. |
lots.deadline | Lots / deadline, when published. |
lots.includes_dynamic_purcharing_system | Lots / includes dynamic purcharing system, when published. |
lots.includes_framework_agreement | Lots / includes framework agreement, when published. |
lots.winner_organisations | Lots / winner organisations, when published. |
lots.received_tender_count | Lots / received tender count, when published. |
lots.electronically_submitted_tenders_count | Lots / electronically submitted tenders count, when published. |
lots.tenders_from_other_eeacount | Lots / tenders from other eeacount, when published. |
lots.tenders_from_outside_eeacount | Lots / tenders from outside eeacount, when published. |
lots.tenders_verified_and_inadmissible_count | Lots / tenders verified and inadmissible count, when published. |
lots.tenders_verified_and_inadmissible_low_value_count | Lots / tenders verified and inadmissible low value count, when published. |
lots.tenders_not_verified_for_admissibility_count | Lots / tenders not verified for admissibility count, when published. |
lots.tenders_from_micro_tenderers_count | Lots / tenders from micro tenderers count, when published. |
lots.tenders_from_small_tenderers_count | Lots / tenders from small tenderers count, when published. |
lots.tenders_from_medium_tenderers_count | Lots / tenders from medium tenderers count, when published. |
lots.tenders_from_micro_small_medium_tenderers_count | Lots / tenders from micro small medium tenderers count, when published. |
lots.received_application_count | Lots / received application count, when published. |
lots.energy_efficiency_considered | Lots / energy efficiency considered, when published. |
lots.low_carbon | Lots / low carbon, when published. |
lots.circular_economy | Lots / circular economy, when published. |
lots.biodiversity | Lots / biodiversity, when published. |
lots.sustainable_food_production | Lots / sustainable food production, when published. |
lots.listed_green_criteria_used | Lots / listed green criteria used, when published. |
lots.just_working_conditions | Lots / just working conditions, when published. |
lots.employment_condition | Lots / employment condition, when published. |
lots.how_many_opportunities_is_estimated | Lots / how many opportunities is estimated, when published. |
lots.code_of_conduct | Lots / code of conduct, when published. |
lots.innovation_considered | Lots / innovation considered, when published. |
lots.solution_new_to_buyer | Lots / solution new to buyer, when published. |
lots.solution_new_to_market_or_industry | Lots / solution new to market or industry, when published. |
lots.sme_participation_considered | Lots / sme participation considered, when published. |
lots.end_user_involved | Lots / end user involved, when published. |
record_id | Stable identifier for the source record. |
url | Public source link when the website provides one. |
additional_fields.name | Names of additional published fields, when present. |
additional_fields.value | Their 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 ⚙️
| Setting | What 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
failedrow 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.
maxResultscaps 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.