Duunitori Jobs Scraper
Pricing
from $1.80 / 1,000 results
Duunitori Jobs Scraper
[💰 $1.8 / 1K] Extract job listings from Duunitori, Finland's largest job board. Search by keyword, location, category, employment type, remote work, and ad language, or paste search URLs. Returns title, company, location, salary, posting date, description, and apply link — one row per job.
Pull job listings from Duunitori — Finland's largest job board, with 18,000+ live postings — including title, company, location, declared monthly salary in EUR, posting and closing dates, and the direct apply link to each employer's application system. Filter across 24 job categories, three ad languages, employment and contract type, and remote-only roles, or paste a Duunitori search URL and have its filters honored verbatim. Built for Finnish recruiters, labor-market analysts, and relocating job seekers who need clean, structured Duunitori data without copy-pasting listings one page at a time.
Why This Scraper?
- 24 mapped job categories — pick from clean English titles (IT, Industry & technology, Sales & commerce, Healthcare, Construction, Social & care work, and 18 more); the actor translates each to Duunitori's exact Finnish field name for you, umlauts and all.
- Three ad-language filter — return only Finnish, Swedish, or English-language ads — the relocation/expat power move for finding roles you can actually apply to in English.
- Declared salary parsed to EUR/month — when an employer publishes pay, you get
salaryMin,salaryMax,salaryCurrency, andsalaryPeriodas structured numbers, not a free-text blob to clean up later. - Direct employer apply link —
applyUrlcaptures the external link straight into the employer's own application system or ATS, not just the Duunitori listing page. - Employment + contract type as separate filters — full-time vs part-time and permanent / fixed-term / summer job, exposed as two independent dropdowns instead of buried in free text.
- "Also search ad text" recall switch — match your keyword inside the full ad body, not just the title; a single niche term can jump from a handful of title hits to thousands of body matches.
- Phone numbers pulled from the ad —
extractedPhonessurfaces contact numbers written into the description, ready for recruiter or sales outreach. - Paste-a-URL seeding — dial in any search on Duunitori's own site, paste the URL, and every filter baked into it is respected exactly as-is — no rebuilding the query by hand.
- Per-job-ID deduplication — each listing is returned once even when it appears across multiple pages or keyword searches, keyed on the stable Duunitori job ID.
Use Cases
Recruitment & Talent Sourcing
- Track which competitors are actively hiring and for which roles
- Build candidate-outreach lists filtered by city, category, and language
- Monitor newest postings in your specialty with the "Newest first" sort
- Spot summer-job and fixed-term openings ahead of seasonal hiring waves
Labor-Market & Salary Research
- Benchmark Finnish wages from employer-declared EUR/month salary ranges
- Measure hiring demand by category, region, or employment type over time
- Quantify how many roles are offered as remote across industries
- Compare full-time vs part-time and permanent vs fixed-term mix by sector
Lead Generation
- Treat companies that are actively hiring as growth signals for B2B prospecting
- Pull apply links and ad phone numbers for direct outreach
- Segment target accounts by location and job field
- Find fast-growing employers posting across multiple categories at once
Job-Aggregator & Niche Board Feeds
- Power a vertical job board with fresh Finnish listings on a schedule
- Feed a candidate-matching engine with structured title, category, and location
- Keep an internal opportunity dashboard current with daily pulls
Relocation & Expat Job Search
- Filter to English-language ads only to surface roles open to non-Finnish speakers
- Focus on Helsinki, Tampere, or any city while keeping the language filter on
- Combine remote-only with English ads to find location-flexible openings
Getting Started
Simple Keyword Search
Search a single keyword across all of Finland:
{"searchQueries": ["ohjelmistokehittäjä"],"maxResults": 50}
Keyword + Location + Category + Language
Narrow to English-language IT roles in Helsinki:
{"searchQueries": ["developer"],"location": "Helsinki","category": "teollisuus ja teknologia (ala)","language": "eng_lang","maxResults": 100}
Direct URL with Full Details
Paste a dialed-in Duunitori search URL and enrich every result:
{"startUrls": ["https://duunitori.fi/tyopaikat?haku=sairaanhoitaja&alue=Tampere&filter_work_type=full_time"],"fetchDescription": true,"sortBy": "date","maxResults": 300}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["ohjelmistokehittäjä"] | Job titles or keywords to search for. Each keyword runs its own search. Leave empty for the broadest result set. Up to 50 keywords per run. |
location | string | "" | City or region in Finland (e.g. "Helsinki", "Tampere", "Turku", "Oulu"). Empty searches the whole country. Applies to every keyword. |
startUrls | string[] | [] | Paste full Duunitori search-result URLs. Any filters baked into the URL are respected as-is. Up to 50 URLs per run. |
Filters & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
category | select | Any category | Limit to one of 24 Duunitori job fields (IT, sales, healthcare, construction, and more), shown with English titles. |
employmentType | select | Any | Full-time or part-time. |
contractType | select | Any | Permanent, fixed-term, or summer job. |
remoteOnly | boolean | false | Only return roles that can be done remotely. |
language | select | Any | Only return ads written in Finnish, Swedish, or English. |
searchDescriptions | boolean | false | Also match keywords inside the full ad text, not just the title — broadens results. |
sortBy | select | Best match | Order results by best match or newest first. |
maxResults | integer | 100 | Maximum listings to collect across all keywords and URLs. Set to 0 to collect all available. Keeps the full final page, so a small cap can slightly overshoot. |
onlyUniqueJobs | boolean | true | Return each job once, deduplicated by its job ID across pages and searches. |
Output
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchDescription | boolean | true | Fetch the full description, salary, dates, and apply link from each job's detail page. Turn off for lighter, faster records with just titles, companies, locations, and links. |
Output
Each row is one job posting. Here's a representative result with full details enabled:
{"jobId": "20316302","title": "Full Stack -kehittäjä, Yle-sovellus ja yle.fi","company": "Yle","companyLogoUrl": "https://duunitori.imgix.net/media/next/f5408481.jpg?w=177","location": "Helsinki","municipality": "Helsinki","region": "Uusimaa","latitude": 60.1699,"longitude": 24.9384,"salaryText": "4200–5000 EUR / month","salaryMin": 4200,"salaryMax": 5000,"salaryCurrency": "EUR","salaryPeriod": "MONTH","employmentType": "Full-time","contractType": "Fixed-term","category": "tieto- ja tietoliikennetekniikka","occupation": "ohjelmistokehittäjä","remoteWork": true,"description": "Haemme frontend-painotteista full stack -kehittäjää...","descriptionHtml": "<p>Haemme frontend-painotteista...</p>","url": "https://duunitori.fi/tyopaikat/tyo/full-stack-kehittaja-yle-20316302","applyUrl": "https://yle.rekrytointi.com/paikat/?o=A_RJ&jgid=1","postedDate": "2026-05-29","validThrough": "2026-06-30","extractedEmails": ["rekry@yle.fi"],"extractedPhones": ["+358401234567"],"searchQuery": "ohjelmistokehittäjä","scrapedAt": "2026-06-11T21:14:43+00:00"}
Core Fields
| Field | Type | Description |
|---|---|---|
jobId | string | Stable Duunitori listing ID — the cross-page dedup key. |
title | string | Job title, properly cased. |
company | string | Employer or recruiter name. |
companyLogoUrl | string | Company logo image URL. |
category | string | The listing's own job-field tag (free-form), distinct from the Job Category input filter. |
url | string | Canonical Duunitori job URL. |
Location
| Field | Type | Description |
|---|---|---|
location | string | Location text as shown on the listing. |
municipality | string | Normalized city / municipality when parseable. |
region | string | Region or area when available. |
latitude | number | Latitude when published. |
longitude | number | Longitude when published. |
Salary (when declared)
| Field | Type | Description |
|---|---|---|
salaryText | string | Human-readable salary summary (range, currency, and pay period). |
salaryMin | number | Parsed minimum salary. |
salaryMax | number | Parsed maximum salary. |
salaryCurrency | string | Currency code (typically EUR). |
salaryPeriod | string | Pay period — usually MONTH. |
Detail Fields (with fetchDescription on)
| Field | Type | Description |
|---|---|---|
employmentType | string | Full-time / part-time. |
contractType | string | Permanent / fixed-term / summer job — reflects the Contract Type filter you applied, when set. |
occupation | string | Occupation or role classification. |
remoteWork | boolean | Whether the role can be done remotely. |
description | string | Full job description, plain text. |
descriptionHtml | string | Full job description, HTML. |
applyUrl | string | Direct link to the employer's application system. |
postedDate | string | Publication date (ISO). |
validThrough | string | Listing closing / expiry date. |
extractedEmails | string[] | Emails found in the ad body. |
extractedPhones | string[] | Phone numbers found in the ad body. |
Provenance
| Field | Type | Description |
|---|---|---|
searchQuery | string | The keyword or URL that surfaced this row. |
scrapedAt | string | ISO timestamp the row was collected. |
Tips for Best Results
- Turn on "Also search ad text" to catch hidden matches — a skill like "Kubernetes" often appears in the body of an ad but not its title; this switch can take a niche keyword from a handful of hits to thousands.
- Use the English-language filter for expat searches — set
languageto English to instantly surface only the roles open to non-Finnish speakers, skipping ads you can't act on. - Let the category dropdown do the translation — the 24 categories use plain English titles in the UI, and the actor maps each to Duunitori's exact Finnish field name behind the scenes, so you never have to type Finnish.
- Keep
fetchDescriptionon for salary and apply links — declared EUR/month pay, closing dates, and the direct apply URL all live on the detail page; turn it off only when you want a fast, lightweight list. - Sort by "Newest first" for monitoring — pair
sortBy: "date"with a scheduled run to catch fresh postings the moment they appear. - Combine keywords with location and filters — every keyword inherits your location, category, and type filters, so one run can sweep several titles across the same target market.
- Start small, then scale — run with
maxResults: 50first to confirm the data fits your needs, then raise the cap.
Pricing
From $1.80 per 1,000 results — a flat per-result rate that undercuts comparable Finnish job extractors. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.21 | $0.20 | $0.19 | $0.18 |
| 1,000 | $2.10 | $2.00 | $1.90 | $1.80 |
| 10,000 | $21.00 | $20.00 | $19.00 | $18.00 |
| 100,000 | $210.00 | $200.00 | $190.00 | $180.00 |
A "result" is any job row in the output dataset.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate recruitment research, labor-market analysis, and lead generation. You are responsible for complying with applicable laws and Duunitori's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any personal data found in job ads in line with GDPR and other privacy regulations.