
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Export job listings from Jobindex (jobindex.dk), Denmark's largest job site, and it-jobbank.dk. Search by keyword, location, category, employment type, remote work and posting date, or paste search, company and job links. Get company, address, coordinates, dates, summary or full ad text, apply links and company profile data. No login needed.
Export job listings from Jobindex (jobindex.dk), Denmark's largest job site, and its IT sister site it-jobbank.dk. Search by keyword, location, category, employment type, remote work and posting date, or paste search, company and job links, and get clean rows with company, address, coordinates, dates, summary or full ad text, apply links and employer profile data. No login, no cookies, and you pay only for the jobs you save.
software developer, sygeplejerske), or paste Jobindex links (searches, company pages or single jobs).| Field | What it does |
|---|---|
searchQueries | Search terms, one search each. * lists every job (use filters to narrow it). |
startUrls | jobindex.dk / it-jobbank.dk search links, company pages (/virksomhed/...) or job links (/vis-job/h1699736). |
maxResults | Jobs to save in total (default 20, 0 = no limit). |
location | Danish city, municipality, region or postcode; several separated by ;. |
categories | Jobindex job categories (e.g. Information technology › Software development and programming). |
employmentTypes | Permanent, temporary, student job, apprentice, graduate, internship, flex job, freelance, … |
workplace | On site, hybrid or 100% remote. |
workingHours / postedWithin | Full-time or part-time; posted today, in the last 7 or 30 days. |
includeCompanyDetails | Employer profile fields (on by default). |
fetchJobDetails | Full ad text for ads hosted on Jobindex (off by default). |
sortBy / portal | Relevance or newest first; jobindex.dk or it-jobbank.dk. |
{
"searchQueries": ["software developer", "data analyst"],
"location": "Aarhus",
"employmentTypes": ["permanent"],
"postedWithin": "30days",
"maxResults": 100,
"includeCompanyDetails": true,
"fetchJobDetails": false
}
One row per job.
| Field | Description |
|---|---|
id, title, url | Jobindex job id, job title and the job's Jobindex page. |
company, companyId, companyUrl, companyLogo | Employer name, Jobindex company id, website and logo. |
location, city, zipCode, address, latitude, longitude, additionalLocations | Where the job is. |
country, countryCode, isRemote | Country of the workplace and whether the ad offers working from home. |
category, employmentType, workplace, workingHours | Filled when the search was filtered on one value (e.g. one category), including the automatic category split of big exports. |
postedDate, deadline, deadlineAsap, listingEndDate | When the job was posted, the application deadline (or "as soon as possible") and when the listing ends. |
summary, description, descriptionHtml, descriptionSource | The ad summary; with Full ad text, the whole ad (descriptionSource: "full"). |
jobUrl, applyUrl, quickApplyAvailable | The original ad (often on the employer's site), the apply link and whether quick apply is offered. |
companyRatingScore, companyRatingCount, companyFollowers | Employee rating (1–5), number of ratings and followers on Jobindex. |
companyAbout, companyCareerPage, companyEmployees, companyFoundedYear, companyVatNumber, companyType, companyMotherCompany, companyEvaluationCount, companySocial* | Employer profile (with Company profile details). |
extractedEmails, extractedPhones, extractedUrls | Contacts found in the ad text. |
isPromoted, hasVideo, videoUrl, originalSource, isArchived | Listing flags; originalSource names the site Jobindex found a job on. |
searchQuery, searchUrl, searchPage, portal, scrapedAt | Which search found the job, and when. |
Example row (from a test run, long texts shortened):
{
"id": "h1708835",
"title": "Mechanical System Designer",
"company": "BEUMER Group A/S",
"companyId": 8798,
"location": "Aarhus N",
"city": "Aarhus N",
"zipCode": "8200",
"address": "P.O.Pedersens Vej 10, 8200 Aarhus N",
"latitude": 56.203042,
"longitude": 10.190248,
"country": "Denmark",
"countryCode": "DK",
"isRemote": false,
"postedDate": "2026-10-20T00:00:00Z",
"deadline": null,
"deadlineAsap": true,
"listingEndDate": "2026-11-16T00:00:00Z",
"summary": "As Mechanical System Designer, you will be involved in the system design from the very first customer request…",
"description": "Are you looking for a chance to design complete sorting systems to BEUMER customers? …",
"descriptionSource": "full",
"url": "https://www.jobindex.dk/vis-job/h1708835",
"jobUrl": "https://www.jobindex.dk/jobannonce/h1708835/mechanical-system-designer",
"quickApplyAvailable": false,
"companyUrl": "https://www.beumergroup.com/",
"companyProfileUrl": "https://www.jobindex.dk/virksomhed/8798/beumer-group-a-s",
"companyFollowers": 1758,
"companyRatingScore": 4.0,
"companyRatingCount": 138,
"isPromoted": true,
"companyCareerPage": "http://www.beumergroup.com/en/jobs-career/",
"companyEmployees": 1025,
"companyFoundedYear": 1988,
"companyVatNumber": "DK12655681",
"companyType": "Aktieselskab",
"companySocialLinkedin": "https://www.linkedin.com/company/beumer-group-/",
"searchQuery": "software developer",
"portal": "jobindex.dk",
"scrapedAt": "2026-10-21T08:34:26Z"
}
$1.60 per 1,000 jobs saved ($0.0016 per job), with no start fee. Platform usage (compute and proxy traffic) is billed on top and is small: typically a few cents per 1,000 jobs.
Example: 1,000 jobs ≈ $1.60 in job fees plus a few cents of usage. You can cap any run with Maximum jobs or a maximum total charge; the run stops cleanly when the cap is reached.
Is it legal to scrape Jobindex? The actor collects publicly listed job ads and public company profiles, the same information any visitor sees without logging in. Check Jobindex's terms and the GDPR before you store or contact anyone, especially for the emails and phone numbers found in ads.
Do I need a login or a proxy? No login. Proxies are built in: Danish residential exits by default, because they answer several times faster than datacenter exits for this site. You can pick datacenter exits in the Proxy section.
How many jobs can I get? As many as the site lists for your search. Jobindex itself shows at most 1,000 jobs per search, so larger searches are split into smaller ones (by category, then region) and merged without duplicates.
Why is a field empty?
Fields are filled only when the site shows them: many ads have no deadline (deadlineAsap instead), no rating or no salary. Most ads are hosted on the employer's site, so with Full ad text those keep the summary and link to the original ad in jobUrl.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it (e.g. daily with Posted within: Today), and connect webhooks or integrations. Every run can also be started and read through the API.
salaryText is usually empty; the actor does not guess salaries.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch terms
Job titles, skills or company names, one per line, e.g. 'software developer', 'sygeplejerske', 'bogholder'. Each term is its own search. Use * to list every job (narrow it down with the filters below).
startUrlsarrayOptionalJobindex links
Optional. Search links copied from jobindex.dk or it-jobbank.dk (www.jobindex.dk/jobsoegning?q=python, category and region pages work too), company pages (www.jobindex.dk/virksomhed/8798/...) or job links (www.jobindex.dk/vis-job/h1699736). ofir.dk links are read as Jobindex links.
maxResultsintegerOptionaldefault 20Maximum jobs
How many jobs to save in total across all searches and links. 0 = no limit (up to 100,000). One search on the site shows at most 1,000 jobs; bigger searches are split by category and region automatically.
locationstringOptionalLocation
Danish city, municipality, region or postcode, e.g. 'Aarhus', 'København', 'Storkøbenhavn', 'Region Midtjylland', '8000'. Separate several places with ';'. Leave empty to search all of Denmark.
categoriesarrayOptionalJob categories
Only jobs in one of these Jobindex categories.
employmentTypesarrayOptionalEmployment type
Only jobs with one of these employment types.
workplacearrayOptionalRemote work
Remote-work option stated in the ad.
workingHoursenumOptionalWorking hours
Full-time or part-time jobs only.
postedWithinenumOptionalPosted within
Only jobs posted recently.
includeCompanyDetailsbooleanOptionaldefault trueCompany profile details
Add each employer's Jobindex profile: about text, career page, employees, founding year, VAT (CVR) number, company type, parent company, number of reviews and social media links. One extra page per company (cached). Turn off for the fastest runs.
fetchJobDetailsbooleanOptionaldefault falseFull ad text
Open each job's ad on Jobindex for the full description and the contact emails and phone numbers in it. Ads that live on the employer's own site keep the summary and get that link in jobUrl.
sortByenumOptionaldefault "relevance"Sort by
Order of the results.
portalenumOptionaldefault "jobindex.dk"Site
jobindex.dk lists all jobs; it-jobbank.dk is its IT-only sister site. Links are read from their own site.
maxResultsPerSearchintegerOptionalMaximum jobs per search
Optional cap for each search term or link, so one broad term does not use up the whole limit. 0 = no per-search cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy
Danish residential exits are the default: they answer several times faster than datacenter exits for this site. If you choose datacenter and the site refuses it, the run switches to Danish residential exits by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | Jobindex job id (h… for ads posted on Jobindex, r… for jobs Jobindex found elsewhere) |
| title | string | |
| company | string | null | |
| companyId | number | null | |
| location | string | null | |
| city | string | null | |
| zipCode | string | null | |
| address | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| additionalLocations | array | |
| country | string | null | |
| countryCode | string | null | |
| isRemote | boolean | null | |
| postedDate | string | null | |
| deadline | string | null | |
| deadlineAsap | boolean | null | |
| listingEndDate | string | null | |
| summary | string | null | |
| description | string | null | |
| descriptionHtml | string | null | |
| descriptionSource | string | null | |
| url | string | |
| jobUrl | string | null | |
| applyUrl | string | null | |
| quickApplyAvailable | boolean | null | |
| companyUrl | string | null | |
| companyProfileUrl | string | null | |
| companyLogo | string | null | |
| companyFollowers | number | null | |
| companyRatingScore | number | null | |
| companyRatingCount | number | null | |
| extractedEmails | array | |
| extractedPhones | array | |
| extractedUrls | array | |
| scrapedAt | string | |
| category | string | null | |
| employmentType | string | null | |
| workplace | string | null | |
| workingHours | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved Jobindex job listing. | $0.0016 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/jobindex-scraper').call({
"searchQueries": [
"software developer"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "DK"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/jobindex-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/jobindex-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Ten nursing (sygeplejerske) jobs in Aarhus with address, dates, summary and the employer's profile.
Ten Python jobs; ads posted on Jobindex come with their full text and the contacts in it.
Every new full-time, permanent job in the Nurse and midwife category, newest first.
Ten developer jobs from it-jobbank.dk, Jobindex's IT job site.
Paste a Jobindex search link and a company page and get up to five jobs from each.
Fifteen project manager jobs in the Copenhagen area, summary fields only for the fastest run.
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.