Platsbanken Scraper avatar

Platsbanken Scraper

Pricing

from $6.30 / 1,000 results

Go to Apify Store
Platsbanken Scraper

Platsbanken Scraper

Every open job on Sweden's Platsbanken, not just the first 2,100: filter by region, municipality, commuting area, occupation, job title, salary type and more. Full detail with employer org number, recruiter contacts, and coordinates, plus change tracking with Slack, Discord, or Telegram alerts.

Pricing

from $6.30 / 1,000 results

Rating

0.0

(0)

Developer

Norm Data

Norm Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Norm Data

🇸🇪 Platsbanken Jobs Scraper (Arbetsförmedlingen)

Search Platsbanken, Sweden's national job board run by Arbetsförmedlingen, with the same filters the site offers plus a few it doesn't, and get every matching job with full detail: description, employer and organisation number, recruiter contacts, salary type, requirements, exact coordinates, and the application link. No login, no account.

Turn on change tracking and schedule it, and each run tells you which jobs are new, updated, back again, or gone, with an optional alert to Slack, Discord, Telegram, or your own webhook.

🎯 Who uses it?

🧑‍💼 Recruitment and staffing agencies

Spot new openings the day they are posted, in the regions and occupations you place, with the recruiter's name and phone number already on the row.

📣 B2B sales teams

Companies that are hiring are companies that are growing. Every row carries the employer's Swedish organisation number, ready to join with company registers and your CRM.

📊 Labour market analysts

Pull the full national job bank, not a 2,100 row slice, and break demand down by region, municipality, occupation, employment type, and working hours.

🔔 Job seekers and career services

Watch a narrow search, such as nurse jobs in Göteborg and its commuting area, and get pinged only when something new appears.

✨ What it does

  • Search: keywords, any of Sweden's 21 regions and 290 municipalities, 21 occupation fields, around 400 occupations, and exact job titles, all multiselect.
  • Commuting area: widen a municipality to the neighbouring municipalities with the most daily commuters.
  • Job condition filters: employment type, full-time or part-time, published within any number of days, driving licence required or not, education requirement, salary type (fixed, fixed plus variable, or commission), employment support programmes, no experience required, remote work possible, adapted workplace, trainee, abroad, and no fixed workplace.
  • External listings: optionally include the ads Arbetsförmedlingen indexes from other job sites.
  • Look up: resolve known job IDs directly.
  • Change tracking: remembers each search between runs and tags jobs NEW, UPDATED (with the exact fields that changed), REAPPEARED, or EXPIRED, and flags reposts of an earlier ad.
  • Alerts: a short summary with links to Slack, Discord, Telegram, or any webhook when something new shows up.

Missing source values are returned as null, never invented.

Why this scraper

  • Every matching job, not the first 2,100. Broad searches keep going until they reach the whole result set, up to the full national job bank of 40,000+ ads.
  • Recruiter contacts and org numbers on every row. The named contact with role and phone, union representatives flagged separately, plus emails and phone numbers found in the description.
  • Filters nobody else exposes. Commuting area, employment support programmes, education requirement, adapted workplace, and a driving licence filter that works both ways.
  • Change tracking that only charges for news. Unchanged jobs are skipped, so a scheduled watch only writes, and only bills, what actually changed.
  • Stable, clean output. Lists come back in a fixed order every run, so a job never shows up as "updated" just because the source reshuffled its contacts.

How it compares

CapabilityThis actorClosest full-featured competitorOther Platsbanken actors
Results per searchevery match2,1002,100 or less
Multiselect location and occupationyesyesrare
Commuting area expansionyesnono
Employment support, education, and adapted workplace filtersyesnono
Driving licence and experience filtersyesyesrare
Listings from external job sitesyesnono
Recruiter contacts and organisation numberyesyessome
Change tracking with repost detectionyesyesno
Exact changed fields on updated jobsyesnono
Slack, Discord, Telegram, and webhook alertsyesyesno
WhatsApp alertsnoyesno
Exact job title filteryesyesrare
Salary type filteryesyesno
Skills filternoyesno

📦 What data you get

EntityUseful fields
JobTitle, full description, occupation, employment type, working hours, duration, conditions, number of positions, salary type and description, workplace model.
EmployerName, organisation number, workplace name, website, logo when the employer has one, and phone when published.
LocationStreet, post code, city, municipality, region, country, latitude and longitude, every workplace for multi-site ads.
ContactsThe primary recruiter's name, role, phone, and email, every listed contact with union representatives flagged, plus emails and phone numbers found in the description.
RequirementsExperience, education level, driving licences, own car, languages, skills, and work experience, each marked required or merit.
ApplicationApplication link, email, reference, and instructions, with the application deadline.
Change trackingChange type, changed fields, repost flag with the original job ID, first seen, previously seen, and expired dates.

Every record includes scraped_at (UTC). Download your dataset from Apify as CSV, JSON, Excel, or XML.

💡 Use cases

🧑‍💼 Nurse openings in Göteborg and its commuting area

{ "mode": "search", "keywords": ["sjuksköterska"], "municipalities": ["Göteborg"], "includeCommutingArea": true, "maxItems": 500 }

📣 Every IT job published this week, as a lead list

{ "mode": "search", "occupationFields": ["Data/IT"], "publishedWithinDays": 7 }

🔔 A daily watch that alerts Slack on new warehouse jobs in Skåne

{ "mode": "search", "keywords": ["lager"], "regions": ["Skåne län"], "trackChanges": true, "stateKey": "skane-lager", "slackWebhookUrl": "https://hooks.slack.com/services/..." }

💼 Commission-based sales roles

{ "mode": "search", "keywords": ["säljare"], "salaryTypes": ["variable"], "maxItems": 200 }

🤝 Entry-level jobs open to newcomers

{ "mode": "search", "noExperienceRequired": true, "employmentSupport": ["introductionJob", "startupEmployment"], "drivingLicense": "notRequired" }

📊 The full national job bank

{ "mode": "search", "source": "both" }

🔎 Resolve known job IDs

{ "mode": "lookup", "jobIds": ["31512287", "31365886"] }

⚙️ How the input is organised

Maximum results sits at the very top, since it applies no matter what you're doing. Leave it empty to collect every matching job. Below it, the form is split into seven numbered sections:

SectionWhat it's for
1 · What to doSearch by filters or look up known job IDs.
2 · Where and whatKeywords, regions, municipalities, the commuting area option, occupation fields, occupations, and exact job titles.
3 · Job conditionsEmployment type, working hours, publish date, driving licence, education, employment support, salary type, and the other job condition filters.
4 · Listings and orderPlatsbanken ads, external job site listings, or both, and the sort order.
5 · Look upKnown job IDs to resolve directly.
6 · Change trackingTurn on tracking, name the watch, and choose whether unchanged and expired jobs are written.
7 · NotificationsWebhook, Slack, Discord, and Telegram alerts.

Apify Free plan: every run is limited to a fixed 10-row sample. Upgrade your Apify plan to run your own settings.

🛡️ Limits & responsible use

This Actor reads only the public Platsbanken job board. It never signs in and never accesses anything gated behind an account.

Job ads can name a contact person. That is personal data under the GDPR, published by the employer so applicants can reach them. Use it for recruitment and job related contact only, and make sure your own processing has a lawful basis.

External job site listings only carry keyword, location, occupation, and date information, so the other filters can't be applied to them. When you combine those filters with both listing types, the external listings are skipped so every row still matches your filters.

Change tracking marks a job expired only when the run covered every matching job. A run capped by Maximum results never marks anything expired.

A job ID that doesn't resolve in Look up mode writes a row with an error field instead of failing the run.

📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

Local development

bun install
bun test
bun run src/main.ts