Skip to content

Jobnet.dk Scraper

Try for free

Export job listings from Jobnet.dk, Denmark's public job portal. Search by keyword, region, postcode and distance, occupation area, employment type and working hours, or paste search and job links. Get employer and CVR number, occupation, workplace, dates, full description, contact persons and apply links. No login needed.

🇩🇰 Jobnet.dk Scraper

Export job listings from Jobnet.dk, Denmark's official public job portal run by the Danish Agency for Labour Market and Recruitment (STAR). Search by keyword, region, postcode and distance, occupation area, employment type and working hours, or paste Jobnet search and job links, and get clean rows with employer, CVR number, occupation, workplace address, dates, the full job description and the named contact persons with email and phone. No login, no cookies, and you pay only for the jobs you save.

✨ Why use Jobnet.dk Scraper?

  • ⚡ Fast — reads Jobnet's own search data 100 jobs per page and fetches job details in parallel: in our test runs a 10-job search with details finished in about 5 seconds and 1,000 jobs in about 35 seconds.
  • 📇 Real contact persons — name, job title, email and phone of the people named in each ad, plus emails and phone numbers found in the ad text.
  • 🎯 Every filter the site has — region, postcode + distance in km, 22 occupation areas, permanent or temporary, full-time or part-time, flex jobs and Hotjobs, no fixed workplace, jobs abroad by country, posted within N days.
  • 📈 Beyond the 10,000 cap — Jobnet shows at most 10,000 jobs per search; bigger searches are split by occupation area automatically and de-duplicated.
  • 🏢 Employer data built in — employer name, CVR and P-number, employer address and logo for every job posted on Jobnet.
  • 💸 Cheap and simple — one flat price per saved job, no start fee.

🎯 Use cases

  • 🧲 Recruitment and staffing leads — find Danish employers hiring right now, with the hiring manager's name, email and phone and the company's CVR number.
  • 📊 Labour-market research — count openings by region, municipality, occupation area or employment type over time, from the country's public job database.
  • 🔔 Job alerts — schedule a daily run with Posted within (days): 1 and send new jobs to Slack, email or your ATS.
  • 🧑‍💻 Job boards and aggregators — feed Danish public and private vacancies with deadlines and apply links into your own site or app.
  • 🏛️ Public-sector hiring — track vacancies from municipalities, regions and state agencies, which post almost all of their jobs on Jobnet.

🚀 How to use

  1. Enter one or more Search terms (e.g. softwareudvikler, pædagog, sygeplejerske), or paste Jobnet links (searches from jobnet.dk/find-job or single jobs).
  2. Optionally set Filters: regions, postcode and distance, occupation areas, employment type, working hours, job type, countries, posted within.
  3. Set Maximum jobs (default 20; 0 = no limit).
  4. Click Start and wait for the run to finish.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesSearch terms, one search each. * lists every job (use filters to narrow it).
startUrlsjobnet.dk search links (https://jobnet.dk/find-job?searchString=python&regions=Midtjylland) or job links (https://jobnet.dk/find-job/<job id>).
maxResultsJobs to save in total (default 20, 0 = no limit).
regionsCapital Region & Bornholm, Central Jutland, North Jutland, Zealand, Southern Denmark.
postalCode / kmRadiusDanish postcode and distance in km around it.
occupationAreasThe site's 22 occupation areas, e.g. IT and telecoms, Health, care and personal care.
employmentType / workHoursTypePermanent or temporary; full-time or part-time.
jobType / noFixedWorkplace / countriesFlex jobs, Hotjobs and other special job types; jobs without a fixed workplace; jobs abroad (DE, NO, SE, …).
postedWithinDaysOnly jobs posted in the last N days (1 = today).
includeDetailsContact persons, apply link, addresses, positions and view count (on by default).
sortByBest match, newest first or application deadline.
descriptionFormat / descriptionMaxLength / compact / excludeEmptyFieldsMake rows smaller: one description format, shorter descriptions, core fields only, no empty fields.
{
  "searchQueries": ["pædagog", "sygeplejerske"],
  "regions": ["Midtjylland"],
  "employmentType": "Permanent",
  "postedWithinDays": 7,
  "maxResults": 100,
  "includeDetails": true
}

📤 Output

One row per job.

FieldDescription
jobId, title, portalUrlJobnet job id, job title and the job's Jobnet page.
employerName, cvrNumber, pNumber, employerAddress, employerCity, logoUrlEmployer, Danish company number (CVR), production unit number, address and logo.
occupation, occupationUri, jobTypeOccupation (Danish label and ESCO URI) and the Jobnet job type (regular, Hotjob, flex job, …).
workplaceAddress, municipality, postalCode, postalDistrictName, country, countryCode, noFixedWorkplaceWhere the job is.
isPartTime, isTemporary, isDisabilityFriendly, availablePositionsWorking hours, fixed-term or permanent, "disability no obstacle", number of positions.
datePosted, applicationDeadline, applicationDeadlineStatus, applicationDeadlineAsap, createdAt, updatedAtPosting and deadline dates.
description, descriptionHtml, descriptionMarkdownThe full job ad as plain text, HTML and Markdown.
contactPersons, contactName, contactEmail, contactPhoneNamed contact persons (name, title, email, phone); the first one also in its own columns.
applyUrl, externalUrl, isExternalWhere to apply; for jobs Jobnet lists from other sites, the original ad.
extractedEmails, extractedPhones, extractedUrls, socialProfilesContacts and links found in the ad text.
viewCount, driversLicenses, isAnonymousEmployerViews on Jobnet, required driving licences, anonymous employer flag.
searchQuery, searchUrl, detailsFetched, contentHash, scrapedAt, sourceWhich search found the job, whether details were read, a hash of the ad content for change tracking, and when.

Example row (from a test run; long texts shortened, contact person replaced with a fictional one):

{
  "jobId": "ae0978ea-7643-42cf-92c3-a1c315176bc1",
  "title": "Pædagog",
  "employerName": "KALØVIGSKOLEN",
  "cvrNumber": "55133018",
  "pNumber": "1003365736",
  "occupation": "Pædagog",
  "jobType": "Almindelige vilkår",
  "municipality": "Aarhus",
  "postalCode": 8541,
  "postalDistrictName": "Skødstrup",
  "country": "Danmark",
  "countryCode": "DK",
  "isPartTime": false,
  "isTemporary": false,
  "isExternal": false,
  "datePosted": "2026-10-20T00:00:00+02:00",
  "applicationDeadline": "2026-10-23T00:00:00+02:00",
  "applicationDeadlineStatus": "ExpirationDate",
  "availablePositions": 1,
  "description": "Gør en forskel hver dag! Kaløvigskolen skal udvide og søger pædagoger til løbende opstart\n\nKaløvigskolen udvider. Derfor søger vi i den kommende tid løbende engagerede pædagoger …",
  "contactPersons": [
    {"name": "Jens Hansen", "title": "Leder", "email": "jens.hansen@example.dk", "phone": "12345678"}
  ],
  "contactName": "Jens Hansen",
  "contactEmail": "jens.hansen@example.dk",
  "contactPhone": "12345678",
  "applyUrl": "https://aarhus.career.emply.com/ad/paedagog/abc123/da",
  "portalUrl": "https://jobnet.dk/find-job/ae0978ea-7643-42cf-92c3-a1c315176bc1",
  "viewCount": 54,
  "searchQuery": "pædagog",
  "scrapedAt": "2026-10-21T17:30:00Z",
  "source": "jobnet.dk"
}

💰 Pricing

You pay $1.50 per 1,000 jobs saved ($0.0015 per job), with no start fee, plus a small amount of platform usage (compute and proxy traffic), which is not included in the job price. Example: 1,000 jobs with details ≈ $1.51 in total ($1.50 for the jobs + about $0.013 platform usage, measured on our test runs); 100 jobs ≈ $0.15. Failed links, jobs that are no longer online and rows you filter out are not charged. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Jobnet.dk? Jobnet is a public job portal and this scraper only reads job ads that anyone can see without logging in. Contact persons are named in the ads by the employers themselves. If you store or contact people, follow the GDPR and Danish marketing rules.

Do I need a Jobnet account, cookies or a proxy? No account and no cookies. The default proxy uses Danish residential exits, which Jobnet answers fastest; its traffic is small (about 5 MB per 1,000 jobs in our tests) and is included in the usage shown below. If those exits cannot reach the site, the run switches to datacenter exits by itself.

How many jobs can I get? Jobnet lists around 23,000 jobs at a time. One search shows at most 10,000; set Maximum jobs to 0 and the scraper splits bigger searches by occupation area. A few hundred jobs have no occupation area and can only be reached with narrower searches.

Why are some fields empty? Part of Jobnet's jobs are ads it collects from other sites (isExternal: true); in our samples that was 9% to 85% of a results page, depending on the search. For those Jobnet has the title, employer, place, dates and description, but no contact persons or detail record; externalUrl links to the original ad. Salary is not published on Jobnet.

Can I get only new jobs every day? Yes: schedule the scraper with Posted within (days): 1 (or 2 to allow for late runs) and send the results to your tools through the API, webhooks or integrations.

Can I use it through the API? Yes. Start runs and read results with the Scrapely API or client libraries; every field above is in the JSON.

⚠️ Limits

  • Only public job ads; nothing behind a Jobnet login (saved searches, job logs, CVs).
  • Jobs Jobnet collects from other sites have no contact persons, view count or detail record; their full original ad is on externalUrl.
  • Salary, benefits and working-time fields are not published by Jobnet, so they are not in the output.
  • A single search returns at most 10,000 jobs; the automatic split covers jobs with an occupation area.
  • Descriptions are in the language of the ad (mostly Danish).

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.