The Hub Jobs Scraper avatar

The Hub Jobs Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
The Hub Jobs Scraper

The Hub Jobs Scraper

[πŸ’° $3 / 1K] Extract startup job listings from thehub.io, the Nordic startup jobs board. Search by keyword, filter by region or position type, or paste job and search URLs. Returns title, company profile, location, role labels, remote flag, view counts, and the apply link or email per job.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull startup and tech job listings from thehub.io at scale β€” titles, full descriptions, human-readable role labels, view counts, hiring-company profiles, and the real apply link or apply email across the Nordic and broader European startup ecosystem. Built for recruiters, talent sourcers, and market researchers who need a clean, structured feed of the Nordic startup hiring market without copying jobs off the site one tab at a time.

Why This Scraper?

  • 7 region filters, 20 countries in the data β€” Denmark, Sweden, Norway, Finland, Iceland, wider Europe, and a dedicated remote bucket. A recent full sweep of the board returned jobs from 20 distinct countries in one pass.
  • A human role label on every single job β€” 24 readable classifications (Sales, Engineer, Marketing & Communication, Backend developer, Customer Success, DevOps …) filled on 100% of rows, plus a jobRoles list of up to 3 labels per posting. Segment by function without guessing from job titles.
  • 7 position types, from Full-time to Advisory board β€” Full-time, Part-time, Internship, Freelance, Cofounder, Student, or Advisory-board roles: the complete set The Hub itself exposes, and the only way to isolate the cofounder and student feeds.
  • Weekly and all-time view counts on 100% of postings β€” viewsWeek and viewsTotal show real candidate demand (one Copenhagen engineering role logged 13,360 views in a single week). Rank by momentum instead of by post date.
  • An apply target on 96% of jobs β€” the external destination URL a candidate actually uses on 79% of rows, an apply email on the rest. No dead-end redirects back to the listing page.
  • Full hiring-company profile attached to 99.9% of rows β€” company name, website, employee-count band, founding year, "what we do" blurb, and logo URL, turning every listing into a startup lead.
  • Compensation reported the way the employer disclosed it β€” salary and equity carry the disclosure type the company chose (competitive, monthly_range, hourly_rate, unpaid / undisclosed, negotiated, percentage), and where a figure is actually published salaryMin/salaryMax carry it. About 1 posting in 18 states a number, and this export captures 100% of the ones that do β€” no silent blanks.
  • Both the go-live date and the expiry date β€” publishedAt filled on 100% of rows and expirationDate on 100%, so you can drop stale postings and measure how long roles stay open.
  • Zero duplicates across a whole-board sweep β€” featured and sponsored placements are merged into one clean row per job: 0 repeated job IDs and 0 repeated URLs across a 1,599-row sweep.

Use Cases

Recruitment & Talent Sourcing

  • Build a live feed of open startup roles by region and position type
  • Track which Nordic startups are hiring for a given function or skill
  • Surface cofounder and advisory-board openings that rarely hit mainstream boards
  • Rank roles by weekly view count to prioritize the most active listings

Market & Hiring Research

  • Measure which functions (engineering, sales, marketing, ops) startups are scaling
  • Map hiring demand across Denmark, Sweden, Norway, Finland, and wider Europe
  • Track how long roles stay open using publish and expiry dates
  • Measure the remote-friendly share of Nordic startup hiring

Competitive Intelligence

  • Watch a competitor's job postings to infer team growth and roadmap
  • Detect new market entrants by tracking first-time hiring companies
  • Compare headcount bands and founding years across a sector

Lead Generation & Sales

  • Build startup lead lists with company name, website, size, and founding year
  • Target fast-growing companies by hiring velocity and employee-count range
  • Enrich a CRM with verified company websites pulled from active job posts

Data & Integration

  • Power a jobs aggregator or talent marketplace with structured Nordic listings
  • Feed hiring-trend dashboards with fresh role, region, and view-count data
  • Set up alerts on new postings matching a saved keyword and region filter

Getting Started

The quickest start β€” one keyword, default cap:

{
"searchQuery": "software engineer",
"maxResults": 100
}

Region + Position-Type Filter

Narrow to full-time engineering roles in Denmark and Sweden:

{
"searchQuery": "backend developer",
"regions": ["DK", "SE"],
"jobPositionTypes": ["Full-time"],
"remoteOnly": false,
"maxResults": 200
}

Remote-Only Across Every Region

Collect remote-friendly roles regardless of country:

{
"searchQuery": "product manager",
"remoteOnly": true,
"maxResults": 150
}

Paste a Pre-Filtered Search URL or Target Specific Jobs

Build filters in The Hub's UI and paste the URL, or scrape exact postings:

{
"searchUrls": ["https://thehub.io/jobs?search=designer&location=DK"],
"jobUrls": ["https://thehub.io/jobs/6a8cdc1d3e369ff0a410da0e"],
"maxResults": 100
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchQuerystringnoneJob title, role, or skill to search for (pre-filled with "software engineer" as an example you can clear or replace). The Hub matches your words anywhere in the posting, including the description β€” so results are a generous superset of the roles with that phrase in the title. Leave blank to collect all jobs matching the filters below.
regionsselect[][]Restrict to these regions: Denmark, Sweden, Norway, Finland, Iceland, Europe (other), or Remote. Empty includes every region. This is the only place-based filter The Hub's job search supports.
jobPositionTypesselect[][]Restrict to these employment types: Full-time, Part-time, Internship, Freelance, Cofounder, Student, or Advisory board. Empty includes all types.
remoteOnlybooleanfalseTurn on to return only jobs that allow remote work.

Or Paste URLs

ParameterTypeDefaultDescription
searchUrlsstring[][]Paste thehub.io search or category URLs straight from your browser. When provided, the keyword and filters above are ignored. A city or country name in the link (for example ?location=Copenhagen) is not something The Hub's job search narrows by, so the export covers the regions instead β€” use the Regions filter to target a place. A URL with no recognizable filters collects a broad set of jobs.
jobUrlsstring[][]Paste individual thehub.io/jobs/<id> URLs to scrape just those postings. If both jobUrls and searchUrls (or the keyword filters) are set, jobUrls takes precedence and only those postings are scraped.

Limits

ParameterTypeDefaultDescription
maxResultsinteger100Hard cap on total job rows returned. Set to 0 for no cap. The run keeps the full last page even if it slightly overshoots the cap. When several regions are selected they are scanned in the order shown above, so a cap smaller than the combined pool fills from the earlier regions first β€” the run says so in its status message.

Output

Every job is a single flat row. Key fields are flattened into table columns for easy filtering, while the nested company, location, salaryRange, and views objects are preserved in the full record.

{
"id": "6a8cdc1d3e369ff0a410da0e",
"key": "staff-backend-engineer-product",
"url": "https://thehub.io/jobs/6a8cdc1d3e369ff0a410da0e",
"title": "Staff Backend Engineer - Product",
"descriptionText": "About Electricity Maps\nElectricity Maps is a VC-backed climate and energy tech start-up ...",
"companyName": "Electricity Maps",
"companyWebsite": "https://www.electricitymaps.com/",
"companyNumberOfEmployees": "11-50",
"companyFounded": "2016",
"company": {
"name": "Electricity Maps",
"website": "https://www.electricitymaps.com/",
"numberOfEmployees": "11-50",
"founded": "2016",
"whatWeDo": "Electricity Maps provides real-time, historical, and forecasted electricity data ...",
"logoUrl": "https://thehub.io/files/s3/20250828095418-31ba3bd9a4277ce5e8b9667b1d64391e.png"
},
"address": "Copenhagen, Denmark",
"locality": "Copenhagen",
"country": "Denmark",
"isRemote": false,
"jobRole": "Engineer",
"jobRoles": ["Engineer", "Backend developer"],
"jobPositionTypes": ["Full-time"],
"salary": "competitive",
"salaryMin": null,
"salaryMax": null,
"salaryRange": null,
"equity": "undisclosed",
"viewsWeek": 13360,
"viewsTotal": 20154,
"applyLink": "https://careers.electricitymaps.com/jobs/8254392",
"applyEmail": null,
"publishedAt": "2026-08-25T17:46:11.293Z",
"approvedAt": "2026-08-25T17:46:11.186Z",
"createdAt": "2026-08-25T00:04:45.461Z",
"expirationDate": "2027-03-19",
"scrapedAt": "2026-09-19T10:25:51.913766+00:00"
}

On the roughly 1 posting in 18 where the company publishes an actual figure, the compensation fields fill in like this:

{
"title": "Head of Demand Generation & Marketing Operations",
"salary": "range",
"salaryMin": 500000,
"salaryMax": 800000,
"salaryRange": { "min": 500000, "max": 800000 },
"equity": "undisclosed"
}

Core Fields

FieldTypeFilledDescription
idstring100%Unique job identifier on The Hub
keystring100%Human-readable slug for the posting
urlstring100%Direct link to the job listing
titlestring100%Job title
descriptionstring100%Full job description (HTML)
descriptionTextstring100%Job description as plain text
jobRolestring100%Primary role label, e.g. Engineer, Sales, Marketing & Communication
jobRolesstring[]100%All role labels on the posting, 1–3 entries; the first matches jobRole
jobPositionTypesstring[]100%Employment types (Full-time, Internship, Student, Freelance, Cofounder …)
isRemoteboolean100%Whether the job allows remote work
scrapedAtstring100%ISO timestamp of when the row was collected

Hiring Company

FieldTypeFilledDescription
companyNamestring100%Hiring company name
companyWebsitestring100%Company website URL
companyNumberOfEmployeesstring99.9%Employee-count band, e.g. "11-50"
companyFoundedstring99.9%Year the company was founded, e.g. "2016"
companyobject100%Full company object incl. whatWeDo blurb and logoUrl

Location

FieldTypeFilledDescription
addressstring96.8%Office address as written on the listing, e.g. "Copenhagen, Denmark"
localitystring96.8%City
countrystring96.8%Country name β€” 20 distinct countries in a full sweep
locationobject96.8%Nested { address, locality, country }. Fully remote postings often name no place at all

Compensation

FieldTypeFilledDescription
salarystring100%How the company chose to disclose pay: competitive (~89% of postings), unpaid, monthly_range, range, or hourly_rate
salaryMinnumber5.5%Lower bound, present whenever salary states an actual figure
salaryMaxnumber5.5%Upper bound, present whenever salary states an actual figure
salaryRangeobject5.5%Nested { min, max }
equitystring100%Equity disclosure type: undisclosed (~96%), negotiated, or percentage

Engagement & Apply

FieldTypeFilledDescription
viewsWeeknumber100%Views in the last week
viewsTotalnumber100%All-time view count
viewsobject100%Nested { week, total }
applyLinkstring79.1%External link a candidate uses to apply
applyEmailstring19.9%Contact email used to apply when a job has no external link β€” 96% of jobs carry one of the two

Dates

FieldTypeFilledDescription
publishedAtstring100%When the job went live on The Hub β€” use this one for "posted" dates and sorting
approvedAtstring99.3%When The Hub approved the posting for display
createdAtstring100%When the posting record was created or last renewed. On about 6% of jobs a renewal pushes this past publishedAt, so it is not a reliable "posted" date
expirationDatestring100%Date the listing expires, e.g. "2027-03-19"

Tips for Best Results

  • Use publishedAt, not createdAt, for freshness β€” publishedAt is the go-live date and is filled on every row. createdAt also ticks over when a company renews an old posting, so around 6% of jobs show a createdAt that is later β€” sometimes by months β€” than the day the job actually went live.
  • Filter on the salary value to find the jobs that publish numbers β€” keep the rows where salary is range, monthly_range, or hourly_rate and every one of them carries salaryMin and salaryMax. The competitive rows (about 89% of the board) simply never state a figure anywhere on the site.
  • Narrow by place with the Regions filter, not a city name β€” The Hub's job search works on its seven region buckets; a city or country name typed into a pasted search link is not a filter the site applies, so pick Denmark, Sweden, Norway, Finland, Iceland, Europe (other), or Remote instead.
  • Treat a keyword as a wide net, then tighten with jobRole β€” The Hub matches your words anywhere in the posting, so a marketing search also returns engineering roles whose description mentions marketing. Keep the recall, then filter the rows on the jobRole label to get precision.
  • Sort by viewsWeek to find hot roles β€” high weekly views relative to age signal the postings candidates are actively clicking, ideal for sourcing where speed matters.
  • Raise maxResults above the pool when you select several regions β€” regions are scanned in the order you list them, so a cap smaller than their combined pool fills from the earlier ones. Denmark alone runs to roughly 370 open jobs, so a full Nordic sweep wants a cap of 1,000 or more.
  • Use companyNumberOfEmployees and companyFounded to segment leads β€” filter to young, fast-growing startups (recent founding year, small headcount) when building an early-stage sales list.
  • jobUrls is exact β€” when you already have specific posting links, drop them straight into jobUrls to skip search entirely. jobUrls always wins: set alongside a keyword or searchUrls, only the listed postings are scraped.

Pricing

From $3.00 per 1,000 results β€” undercuts comparable Hub job extractors while bundling full company profiles, role labels, view counts, and apply targets at no extra charge. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.36$0.34$0.32$0.30
1,000$3.60$3.40$3.20$3.00
10,000$36.00$34.00$32.00$30.00
100,000$360.00$340.00$320.00$300.00

A "result" is any job row in the output dataset. No compute or time-based charges β€” you pay per result, plus a small fixed per-run start fee.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Trigger custom APIs on run completion
  • Apify API β€” Full programmatic access

This actor is designed for legitimate recruitment, talent sourcing, market research, and lead generation. Users are responsible for complying with applicable laws and The Hub's Terms of Service, and for handling any personal data in line with GDPR and other privacy regulations. Do not use extracted data for spam, harassment, or any illegal purpose.