Työmarkkinatori.fi Scraper
Pricing
from $1.19 / 1,000 results
Työmarkkinatori.fi Scraper
Extract structured job listings from Työmarkkinatori.fi — Finland's official government job board. Filter by keyword, municipality, region, contract type, and date. No API key required. $1.49 per 1,000 results.
Pricing
from $1.19 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
2
Monthly active users
10 days ago
Last modified
Categories
Share

Extract job listings from tyomarkkinatori.fi at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for Finland
A dedicated Finnish scraper, not a global tool with a country dropdown. Search, locations and currency (EUR) are tuned for tyomarkkinatori.fi.
📄 Complete job data
Full job title and description, direct listing URL and publish date for every record.
💶 Salary data
Salary information parsed from the listing where the employer publishes it, in EUR. Missing salaries are returned as null, never guessed.
📍 Precise location
City, region and country plus latitude/longitude for mapping and radius analysis.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new jobs instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | "developer" | Free-text search query (e.g. developer, lääkäri). |
municipalities | array | (empty) | Filter by municipality codes. |
regions | array | (empty) | Filter by region codes. |
employmentRelationships | array | (empty) | Filter by employment relationship codes (e.g. ["01"] for Employment relationship). |
continuityOfWork | array | (empty) | Filter by continuity of work codes (e.g. ["01"] for Permanent). |
workTimes | array | (empty) | Filter by work time codes (e.g. ["01"] for Full-time). |
postingLanguages | array | (empty) | Filter by posting language codes (e.g. ["fi", "en"]). |
sorting | string | "LATEST" | Sort order: LATEST or RELEVANT. Defaults to LATEST. |
daysOld | integer | 0 | Only return items published within the last N days (0 = no filter). |
publishedAfterISO | string | (empty) | ISO 8601 date string; only return listings published after this date. |
fetchDetails | boolean | false | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
skipReposts | boolean | false | Skip listings already collected in previous runs (90-day memory). |
startUrls | array | (empty) | Specific job detail page URLs to scrape directly. |
maxItems | integer | 100 | Maximum number of results (0 = no limit). |
Output schema
Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
id | string | Unique listing ID from the source. |
jobUrl | string | Direct link to the listing. |
title | string | Job title |
titleMultilingual.fi | string | Fi. |
employer | string | Employer. |
employerType | string | Employer type. |
publishDateISO | string | Publish date iso. |
applicationDeadline | string | Application deadline. |
applicationUrl.fi | string | Fi. |
location.municipalities | array | Municipalities. |
location.regions | array | Regions. |
location.streetAddress | string | Street address. |
location.postalCode | string | Postal code of the position. |
location.postOffice | string | Post office. |
location.foreignCountry | boolean | Foreign country. |
employmentRelationship | string | Employment relationship. |
employmentRelationshipLabel | string | Employment relationship label. |
continuityOfWork | array | Continuity of work. |
continuityOfWorkLabels | string | Continuity of work labels. |
workTime | string | Work time. |
workTimeLabel | string | Work time label. |
tags | array | Tags or keywords attached to the listing. |
source | string | Source platform |
salaryMin | string | Minimum salary (null if not published by the employer). |
salaryMax | string | Maximum salary (null if not published by the employer). |
salaryCurrency | string | Currency code of the salary. |
salaryPeriod | string | Pay period the salary refers to (e.g. year, month, hour). |
description | string | Full job description in plain text. |
descriptionMarkdown | string | Full description converted to Markdown. |
descriptionText | string | Full job description in plain text. |
occupations | array | Occupations. |
workLanguages | array | Work languages. |
openPositions | number | Open positions. |
salaryRaw | string | Salary raw. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
scrapedAt | string | ISO 8601 scrape timestamp |
changeStatus | string | NEW, CHANGED or UNCHANGED compared to the previous time this job was seen. |
latitude | number | Latitude of the workplace. |
longitude | number | Longitude of the workplace. |
Example record
{"id": "6877f950-1e2a-4bdf-ab2c-a4876c1b49f9","jobUrl": "https://tyomarkkinatori.fi/henkiloasiakkaat/avoimet-tyopaikat/6877f950-1e2a-4bdf-ab2c-a4876c1b49f9","title": "Mekaniikkasuunnittelija","titleMultilingual": {"fi": "Mekaniikkasuunnittelija"},"employer": "Creo Center Oy","employerType": "Organization","publishDateISO": "2026-07-02T14:53:28.33425Z","applicationDeadline": "2026-08-02T20:59:00Z","applicationUrl": {"fi": "https://careers.creocenter.fi/jobs/7984949-mekaniikkasuunnittelija"},"location": {"municipalities": [{"code": "398","nameFi": "Lahti","nameEn": "Lahti"}],"regions": [],"streetAddress": null,"postalCode": null,"postOffice": null,"foreignCountry": false},"employmentRelationship": "01","employmentRelationshipLabel": "Employment relationship","continuityOfWork": ["01"],"continuityOfWorkLabels": "Permanent","workTime": "01","workTimeLabel": "Full-time","tags": [],"source": "TMT","salaryMin": null,"salaryMax": null,"salaryCurrency": "EUR","salaryPeriod": null,"description": "Creo Center on monialainen tuotekehityskumppani organisaatioille, jotka haluavat onnistua uusilla innovaatioilla tai edistämällä nykyisten tuotteiden kehitystä. Laajan palveluportfoliomme avulla pysty …","descriptionMarkdown": "Creo Center on monialainen tuotekehityskumppani organisaatioille, jotka haluavat onnistua uusilla innovaatioilla tai edistämällä nykyisten tuotteiden kehitystä. Laajan palveluportfoliomme avulla pysty …","descriptionText": "Creo Center on monialainen tuotekehityskumppani organisaatioille, jotka haluavat onnistua uusilla innovaatioilla tai edistämällä nykyisten tuotteiden kehitystä. Laajan palveluportfoliomme avulla pysty …","occupations": [{"uri": "http://data.europa.eu/esco/occupation/42381741-f3a7-4b26-b35c-da6fad9f1cfd","labelFi": "tuotekehityksen asiantuntija","labelEn": "product development engineering technician"},{"uri": "http://data.europa.eu/esco/occupation/579254cf-6d69-4889-9000-9c79dc568644","labelFi": "koneinsinööri","labelEn": "mechanical engineer"}],"workLanguages": ["fi"],"openPositions": 1,"salaryRaw": null,"contentHash": "467b166b407b27bc","scrapedAt": "2026-07-02T15:21:14.172Z","changeStatus": "NEW","latitude": 60.982628,"longitude": 25.6613418}
Examples
Search for lähihoitaja roles in Helsinki:
{"query": "lähihoitaja","maxItems": 100}
Only jobs from the last 3 days:
{"query": "lähihoitaja","maxItems": 100,"daysOld": 3}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.tyomarkkinatori.fi/"}],"maxItems": 200}
Daily feed (run on a schedule):
{"query": "lähihoitaja","daysOld": 1,"skipReposts": true,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours.
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.9 |
| 100,000 | ~$149 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.89 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Salary is only returned when the employer publishes it — many listings carry
nullsalary fields. - Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: tyomarkkinatori.fi — Finland job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl