Nordic Jobs Scraper
Pricing
from $0.70 / 1,000 job posting scrapeds
Nordic Jobs Scraper
Swedish and Norwegian jobs from Platsbanken (Arbetsförmedlingen) and NAV Arbeidsplassen open-data APIs: English-normalized schema, monitor mode, no recruiter contacts. Sweden needs no key; Norway uses your own NAV token. Not affiliated with, endorsed by or sponsored by Arbetsförmedlingen or NAV.
Pricing
from $0.70 / 1,000 job posting scrapeds
Rating
0.0
(0)
Developer
AIDevs
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Features
Share
Get Swedish and Norwegian job postings from the agencies' own open-data APIs — Platsbanken (Arbetsförmedlingen) and NAV Arbeidsplassen — in one clean, English-normalized schema. Built for job boards, recruiters, labour-market analysts and anyone building job alerts. Nothing is scraped from web pages: every posting comes from a public government API.
- 🇸🇪 Sweden — Platsbanken via Arbetsförmedlingen's JobTech JobSearch API. No key needed; the ads are CC0 open data.
- 🇳🇴 Norway — Arbeidsplassen via NAV's job vacancy feed (pam-stilling-feed). Uses your own free NAV token (see below).
Not affiliated with, endorsed by or sponsored by Arbetsförmedlingen or NAV.
Quick start
- Open the Actor. Sweden is selected by default and needs no key: enter keywords (e.g.
utvecklare,sjuksköterska) and, optionally, a location. - Want Norway too? Add Norway — Arbeidsplassen to Sources and paste your own NAV token into NAV Arbeidsplassen API token (how to get one).
- Click Start. For job alerts, set Mode to Monitor and schedule the Actor daily: each run delivers only postings you haven't received yet, and
REMOVED_ADStells you which Norwegian ads to delete.
Sample output
{"id": "platsbanken-90000001","source": "platsbanken","country": "SE","url": "https://arbetsformedlingen.se/platsbanken/annonser/90000001","applyUrl": "https://jobs.example.com/apply/90000001","title": "Senior systemutvecklare","titleEn": "senior system developer","company": "Exempel Mjukvara AB","location": { "city": "Stockholm", "region": "Stockholms län", "country": "SE", "remote": false },"employmentTypeNormalized": "full_time","salary": { "min": null, "max": null, "currency": "SEK", "period": "month", "raw": "Fast månadslön" },"description": "Vi söker en senior systemutvecklare … Kontakta [redacted-contact] …","skills": ["typescript", "kubernetes", "react", "postgresql", "aws"],"publishedAt": "2026-10-05T08:30:00.000Z","deadline": "2026-11-15T23:59:59.000Z","duplicateOf": null,"isNewSinceLastRun": null}
(Synthetic example; full records also include companyOrgId (null for Swedish sole traders), employmentType and scrapedAt.) Export as JSON, CSV, Excel or HTML, or read the dataset through the API.
Cost
Pay per event. Platform usage is included in the price.
| Event | Price |
|---|---|
| Job posting scraped | $0.001 per posting delivered (Apify Store discounts on higher plans bring it down to $0.0007) |
| Actor start (automatic) | $0.00005 per GB of run memory, once per run |
Worked examples:
- 100 postings: 100 × $0.001 = $0.10
- 1,000 postings: 1,000 × $0.001 = $1.00 (as low as $0.70 with the largest plan discount)
- Plus the start fee of each run: $0.00005 at 1 GB of memory.
Postings flagged as cross-board duplicates (duplicateOf) are delivered free. Nothing is charged for postings that weren't delivered, and the run stops cleanly at your maximum cost per run. Inactive or expired Norwegian ads are never delivered or charged, and the REMOVED_ADS list is free. Runs are fast because both sources are APIs.
Data sources and their terms
Sweden: Arbetsförmedlingen's JobTech JobSearch API. The ads are open data licensed CC0 (a public-domain dedication), and the API needs no key or registration. CC0 covers copyright and database rights only: the GDPR still applies to any personal data in an ad.
Norway: NAV's job vacancy feed (pam-stilling-feed). NAV's terms of use for the job-ad API ("Vilkår for bruk av API for stillingsannonsar", published on NAV's job site arbeidsplassen.nav.no) let anyone use the service free of charge, and API consumers have the right to republish and display the job ads they receive. The terms also say:
- an ad must be removed from your results list immediately when it becomes inactive or is deleted at NAV, and changed immediately when NAV updates it;
- you must process personal data lawfully, limit how long you store it and honour data subjects' rights;
- NAV may stop your access if the service is misused.
The terms name no licence and no attribution requirement.
You are the NAV API consumer. The Actor uses your own token, so you receive NAV's data under your own agreement with NAV, and those duties are yours: see Your duties for Norwegian ads.
How to get a free NAV token (Norway)
Norway's feed requires a token, and this Actor uses your own token, so you get NAV data under your own agreement with NAV.
- Read NAV's terms of use for the job-ad API ("Vilkår for bruk av API for stillingsannonsar"). NAV publishes them on its job site,
arbeidsplassen.nav.no. - Email NAV's Arbeidsplassen team at
nav.team.arbeidsplassen@nav.noand ask to register as a consumer of the job vacancy feed (pam-stilling-feed). Include:- written confirmation that you accept the terms of use,
- an identifier (for example your company name),
- a contact email, a contact phone number and a contact person.
- NAV replies with your consumer token. Registration is free. If NAV issues you a new token, the old one stops working.
- Paste the token into NAV Arbeidsplassen API token (
navFeedToken). It is a secret input: it is stored encrypted and only ever sent to NAV's feed server,pam-stilling-feed.nav.no, over https. - Add Norway — Arbeidsplassen to Sources and start the run.
If Norway is selected without a token (or NAV rejects the token), Norway is skipped with a clear status message and the run continues with Sweden; it does not fail.
Your duties for Norwegian ads
With your own token you are the API consumer under NAV's terms, and for the personal data in your results you are the data controller under the GDPR. You must follow those terms. In particular:
- remove ads as soon as they become inactive or are deleted at NAV, and update ads that change;
- process personal data in the ads lawfully, keep it only as long as you need it, and honour data-subject requests.
How the Actor helps:
- It only outputs Norwegian ads that are ACTIVE and not past their
expirestime when fetched, and it never reads NAV's contact-person lists. - Every run writes
REMOVED_ADSto its key-value store: the Norwegian ads you received that NAV now reports as inactive, deleted or expired. In monitor mode this covers ads from earlier runs; each ad is listed once, and the status message tells you to remove them. It is never charged. - It can't delete copies you have already stored, and monitor mode doesn't re-deliver ads that NAV changes. Act on
REMOVED_ADSafter every run, and refresh your copy of Norwegian ads regularly (for example with a scrape-mode run).
Example REMOVED_ADS record:
[{"id": "arbeidsplassen-00000000-0000-4000-8000-0000000000a1","source": "arbeidsplassen","reason": "inactive","inactiveSince": "2026-10-16T08:00:00.000Z","detectedAt": "2026-10-17T06:00:00.000Z"}]
reason is inactive (NAV deactivated or deleted the ad) or expired (its expires time has passed). inactiveSince is NAV's time for it, and detectedAt is when the run noticed.
FAQ
Is it legal? The Actor reads public job ads from the two agencies' own open-data APIs. It doesn't scrape web pages or log in anywhere (Norway uses your own NAV API token), and when an API refuses access, for example a rejected token or repeated rate limits, it stops that source and tells you. Each source's own terms apply: Swedish ads are CC0 open data, and Norwegian ads come under NAV's API terms (see Data sources and their terms). Job ads can contain personal data, such as a recruiter's name in the ad text or a sole trader's name as the employer. Under the GDPR you are the data controller for your results: you need a lawful basis for any personal data, should keep only what you need for as long as you need it, and must honour data-subject requests. This is not legal advice.
Wrong charge? Report it in the Issues tab; we reply within 14 days.
What happens to my data? AIDevs processes your input and results only to run the Actor. Nothing is kept or shared beyond your own Apify storages; the only things sent out are your search filters (to JobTech, for Sweden) and your NAV token (to NAV, for Norway).
What if I select Norway without a token? Norway is skipped with a status message explaining what to do; Sweden still runs and the run succeeds.
What does monitor mode do?
It remembers the postings already delivered to you (in a named key-value store, nordic-jobs-monitor by default) and returns only new ones. Postings that weren't delivered, for example because you hit your cost limit, stay "new" for the next run. For Norway, REMOVED_ADS lists the ads you received that NAV no longer lists.
Why did monitor mode switch to a -v2 store?
The Actor runs with Apify's limited permissions, which can't open a monitor store created by an earlier version that ran with full permissions. In that case the Actor uses <name>-v2 (for example nordic-jobs-monitor-v2) and says so in the status message. That first run can't tell which postings you already have, so it delivers all matching postings free of charge (some may repeat ones you received before). Later runs deliver only new postings and are charged as usual. From then on, REMOVED_ADS covers the Norwegian ads delivered after the switch; for older ones, refresh or delete your copies yourself (NAV's terms still apply).
Why no Denmark or Finland? This Actor only uses sources with public open-data APIs. Danish and Finnish sources will be added if equally clean access becomes available; feature requests are welcome on the Issues tab.
How fresh is the data? What about rate limits? Live at query time. The Actor paces its requests politely and backs off on HTTP 429 (up to five times before reporting the source as failed).
Limitations
- Norway: NAV's feed has no server-side search, so keyword and location filters run on the Actor's side. Norwegian keyword searches read many ads and can be slow.
- Norway: removal notices only cover what the NAV feed reports during a run (within Posted within days, until Max items per source is reached).
- Sweden: JobTech returns at most 2,000 results per query.
- Salary is usually free text (
salary.raw);minandmaxare only filled when a source provides numbers. - PII scrubbing covers email addresses and phone numbers, not names written in the ad text; a sole trader's name can appear as the employer.
titleEnis a word-by-word dictionary translation, not a full translation.- Denmark and Finland are not covered.
Works with AI agents
Works with AI agents through Apify's MCP server.
Input
| Field | Description |
|---|---|
sources | platsbanken (SE, default), arbeidsplassen (NO, needs navFeedToken), or both |
navFeedToken | Your own NAV consumer token, needed only for Norway (secret input) |
searchQuery | Keywords, e.g. react developer. Norway: matched client-side |
location | City, municipality or region, e.g. Malmö, Oslo |
employmentType | all / full_time / part_time / contract / internship |
remoteOnly | Sweden: API remote filter. Norway: best-effort keyword detection |
postedWithinDays | Default 30 (1–180) |
maxItemsPerSource | Default 100, max 10,000 |
mode | scrape (everything matching) or monitor (only postings not seen in previous runs) |
monitorStoreName | Key-value store used by monitor mode (default nordic-jobs-monitor; becomes <name>-v2 if the old store can't be opened with limited permissions) |
Example inputs
Sweden only, no token needed:
{"sources": ["platsbanken"],"searchQuery": "react developer","location": "Malmö","postedWithinDays": 7,"maxItemsPerSource": 50}
Daily job alert for Sweden and Norway (schedule it; each run delivers only new postings):
{"sources": ["platsbanken", "arbeidsplassen"],"navFeedToken": "YOUR_NAV_TOKEN","searchQuery": "sykepleier","mode": "monitor","maxItemsPerSource": 200}
Output details
One record per posting with the same schema for both countries: English-normalized title (titleEn), normalized employment type, salary text, skills extracted from the ad, publication date and deadline. The run's key-value store also holds:
RUN_SUMMARY: per-source results, skipped sources, whether the cost limit was reached, and which monitor store was used.REMOVED_ADS: Norwegian ads you received that NAV now reports as inactive, deleted or expired (see Your duties for Norwegian ads).
Duplicate flagging. The same job posted twice (in both countries or twice in a feed) gets duplicateOf set to the first record's id, using a normalized title + company key. Nothing is silently dropped, and flagged duplicates are free.
Personal data. NAV's contactList and JobTech's application_contacts are never read. Personal emails and phone numbers in descriptions are replaced by [redacted-contact]; generic company inboxes (jobs@, hr@, …) are kept. companyOrgId is null for Swedish sole traders, because their organisation number is the owner's personal identity number. Use the posting's applyUrl to contact the employer.
Use it in automations (no code)
Use one of Apify's integrations, or an HTTP request to https://api.apify.com/v2/acts/entranced_gelato~nordic-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with input such as {"searchQuery": "react developer"}. Typical workflows:
- Daily job alerts: a scheduled run in monitor mode, a filter, then a chat or email notification.
- Job board backfill: map fields to your CMS or database. For Norwegian ads, delete what
REMOVED_ADSlists after every run, as NAV's terms require. - Labour-market analytics: weekly runs aggregated by city and employer in a spreadsheet or BI tool.
More tools from AIDevs
- Jobs Scraper for LinkedIn
- PDF to Markdown Converter
- Web Page to Markdown
- Website to Markdown Crawler
- Competitor Website Analyzer
- SaaS Battlecard Generator
- Price Tracker for Amazon, eBay & Walmart
- Lead Finder for Google Maps
Not affiliated with, endorsed by or sponsored by LinkedIn, Google, Amazon, eBay or Walmart.
Data sources: Arbetsförmedlingen's JobTech JobSearch API (ads licensed CC0) and NAV's job vacancy feed (pam-stilling-feed), used under NAV's API terms with your own token.