TheHub.io Scraper
Pricing
from $2.49 / 1,000 results
TheHub.io Scraper
Scrape job listings from TheHub.io — the leading Nordic startup job board. Filter by keyword, country, job type and remote. $2.49 per 1,000 results.
Pricing
from $2.49 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Actor stats
1
Bookmarked
2
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Extract job listings from TheHub.io — the leading job board for Nordic startup careers (Denmark, Sweden, Norway, Finland and beyond). Collect job title, company info, location, salary, description and more with no browser required.

Features
- 🔍 Keyword search — filter by role, skill or any keyword
- 🌍 Country filter — scope results to any country (DK, SE, NO, FI, DE, …)
- 🏠 Remote filter — show only remote-friendly positions
- 💼 Job type filter — full-time, part-time, freelance, internship, cofounder
- 🔁 Cross-run deduplication — skip jobs already seen in previous runs (90-day TTL)
- 💰 Structured salary data — numeric
salaryMin/salaryMaxfields, no regex required - ⚡ Fast & lightweight — HTTP-only, no browser overhead
Pricing
$2.49 per 1,000 results. TheHub.io currently lists ~1,000+ jobs. A full crawl costs under $0.25.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
search | string | "" | Keyword filter (e.g. "backend engineer") |
countryCode | string | "" | 2-letter ISO country code (e.g. "DK", "SE") |
isRemote | boolean | false | Show only remote positions |
jobTypes | array | [] | Employment type: full-time, part-time, freelance, internship, cofounder |
maxItems | integer | 0 | Max results to return (0 = no limit) |
skipReposts | boolean | true | Skip jobs seen in previous runs |
Example input — full-time engineering jobs in Denmark
{"search": "engineer","countryCode": "DK","jobTypes": ["full-time"],"maxItems": 100,"skipReposts": true}
Example input — all remote jobs
{"isRemote": true,"skipReposts": false}
Output format
Each item in the dataset represents one job listing:
{"id": "69c4e1e58bf9c4879b0a650b","url": "https://thehub.io/jobs/69c4e1e58bf9c4879b0a650b","title": "Senior Backend Engineer","companyId": "604737252852bb5ec098a86a","companyName": "Acme Startup","companyWebsite": "https://acme.io","companySize": "11-50","companyStage": "Series A","companyFunding": "series-a","companyIndustries": ["SaaS", "FinTech"],"city": "Copenhagen","country": "Denmark","countryCode": "DK","locationAddress": "Copenhagen, Denmark","isRemote": false,"jobTypes": ["full-time"],"equity": null,"description": "<p>We are looking for...</p>","salary": "range","salaryMin": 50000,"salaryMax": 70000,"salaryCurrency": null,"salaryPeriod": null,"publishedAt": "2026-03-26T13:59:40.136Z","createdAt": "2026-03-26T07:36:05.031Z","scrapedAt": "2026-04-09T11:00:00.000Z"}
Field reference
| Field | Type | Description |
|---|---|---|
id | string | TheHub.io internal job ID |
url | string | Direct link to the job listing |
title | string | Job title |
companyId | string | Company ID |
companyName | string | Company name |
companyWebsite | string | Company website URL |
companySize | string | Employee count range (e.g. "11-50") |
companyStage | string | Startup stage (e.g. "Series A") |
companyFunding | string | Funding stage key |
companyIndustries | array | Industry tags |
city | string | City |
country | string | Country name derived from countryCode (always consistent with it) |
countryCode | string | ISO 2-letter country code (company country — consistent with country) |
locationAddress | string|null | Full location string from source (may differ from company country for remote roles) |
isRemote | boolean | Whether the role is remote |
jobTypes | array | Employment types (full-time, part-time, freelance, internship, cofounder) |
equity | string|null | Equity offering, or null if undisclosed |
description | string | Full job description (HTML) |
salary | string|null | Salary type string from source (competitive, range, unpaid) |
salaryMin | number|null | Minimum salary (numeric) |
salaryMax | number|null | Maximum salary (numeric) |
salaryCurrency | null | Currency not exposed by source |
salaryPeriod | null | Period not exposed by source |
publishedAt | string | ISO 8601 publication date |
createdAt | string | ISO 8601 creation date |
scrapedAt | string | ISO 8601 scrape timestamp |
Note on location fields: TheHub.io allows remote jobs to specify where candidates can work from, which may differ from the company's country.
countryandcountryCodealways reflect the company's country (used for API filtering).cityandlocationAddressreflect what the employer entered as the job location — for fully-remote jobs this may be a candidate country/city, or empty.
💰 Structured salary data — machine-ready
Salary is returned as numeric fields — no regex required on your end:
| Field | Type | Example |
|---|---|---|
salaryMin | number|null | 50000 |
salaryMax | number|null | 70000 |
salaryCurrency | null | Source does not expose currency |
salaryPeriod | null | Source does not expose period |
Most competing scrapers return salary as a raw string, leaving the parsing to you. This scraper delivers numeric fields directly — ready for WHERE salaryMin > 50000 queries or salary distribution analysis. Note: TheHub.io does not publish currency or period in its data feed; the numeric values are in the company's local currency.
Cross-run deduplication
When skipReposts is true (default), jobs already collected in previous runs are skipped using a 90-day fingerprint cache. This is useful for incremental pipelines where you want only new postings.
Performance
| Metric | Value |
|---|---|
| Full crawl (~1,000 jobs) | ~2 minutes |
| Memory | 256 MB |
| Requests | 1 per 15 jobs (no detail fetches needed) |
Notes
- TheHub.io is primarily a Nordic startup job board; most listings are in Denmark, Sweden, Norway and Finland.
- Salary numbers are present only when the company chooses to disclose them. The
salaryfield indicates the type:competitive(no figures),range(min/max available), orunpaid(internship/volunteer). - The
jobTypesfilter only supports a single value per run (API limitation).