TheHub.io Scraper
Pricing
from $0.79 / 1,000 results
TheHub.io Scraper
Scrape job listings from TheHub.io, the leading Nordic startup job board. Deep company profiles, structured salary, geo-coordinates, full descriptions, batch searches, and compact mode. Filter by keyword, country, job type and remote. $0.99/1,000 results.
Pricing
from $0.79 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share

Extract job listings from TheHub.io, the leading Nordic startup job board, with structured salary, geo-coordinates, company profiles, and full descriptions. Runs against the public API, no proxy or API key required.
Why this scraper?
🎯 Nordic startups
A dedicated TheHub.io scraper covering the Danish, Swedish, Norwegian, Finnish, and wider European startup ecosystem in one input.
🏢 Deep company data
Every job carries the hiring company's profile: name, website, logo, size, funding stage, founding year, industries, business models, and LinkedIn ID.
💶 Structured salary
Annual, monthly, and hourly ranges are returned as separate fields, with currency and period parsed from the listing where the source publishes them.
📍 Real coordinates
Latitude and longitude come straight from the source, ready for mapping and radius analysis without a separate geocoding step.
🔁 Batch searches
Run several keyword searches in one run. They share one dataset, one dedup state, and one run start, so a batch costs less than the same searches run separately.
📦 Compact mode
Return a reduced core-field payload for AI agents and MCP pipelines, ready to pipe into an ATS or LLM context without stripping extra fields.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | developer | Job title, skill, or keyword. Empty returns all jobs. |
searchQueries | array | (empty) | Several keyword searches in one run, sharing one dataset and dedup state. Overrides searchQuery. |
countryCode | string | (empty) | Two-letter ISO country code (e.g. DK, SE, NO, FI, DE). Empty for all. |
isRemote | boolean | false | Return only remote positions. |
jobTypes | array | (empty) | One or more of full-time, part-time, internship, cofounder, freelance. Empty for all. |
compact | boolean | false | Return a reduced core-field payload for AI agents and MCP pipelines. |
skipReposts | boolean | false | Skip listings seen in earlier runs (90-day window). Enable for new-only feeds. |
maxResults | integer | 100 | Maximum results across all searches. 0 for no limit. |
Output schema
Every field below is present on every record in full mode. Fields the source does not publish for a given job are returned as null. Compact mode returns a reduced subset.
| Field | Type | Description |
|---|---|---|
id | string | TheHub.io job ID. |
slug | string|null | URL slug of the listing. |
url | string | Direct link to the job. |
title | string | Job title. |
companyId | string|null | Hiring company ID. |
companyName | string|null | Company name. |
companySlug | string|null | Company URL slug. |
companyWebsite | string|null | Company website. |
companyLogo | string|null | Company logo URL. |
companySize | string|null | Employee-count band (e.g. 1-10). |
companyFounded | number|null | Year the company was founded. |
companyStage | string|null | Company stage (e.g. growth). |
companyFunding | string|null | Funding stage (e.g. seed). |
companyLinkedinId | number|null | Company LinkedIn ID. |
companyIndustries | array | Industry tags. |
companyBusinessModels | array | Business-model tags. |
city | string|null | City. |
route | string|null | Street name, where published. |
postalCode | string|null | Postal code, where published. |
country | string|null | Country name. |
countryCode | string|null | Two-letter country code. |
locationAddress | string|null | Full address string. |
latitude | number|null | Latitude. |
longitude | number|null | Longitude. |
isRemote | boolean|null | Whether the role is remote. |
jobTypes | array | Employment types (e.g. full-time). |
equity | string|null | Equity offered, where disclosed. |
applicationCriteria | array | Required application items (e.g. linkedin, cv). |
email | string|null | Contact email, where published. |
phone | string|null | Contact phone, where published. |
salary | string|null | Raw salary text, where meaningful. |
salaryMin | number|null | Minimum salary (primary range). |
salaryMax | number|null | Maximum salary (primary range). |
salaryMonthlyMin | number|null | Minimum monthly salary. |
salaryMonthlyMax | number|null | Maximum monthly salary. |
salaryHourlyMin | number|null | Minimum hourly rate. |
salaryHourlyMax | number|null | Maximum hourly rate. |
salaryCurrency | string|null | Salary currency (e.g. DKK). |
salaryPeriod | string|null | yearly, monthly, weekly, daily, or hourly. |
description | string|null | Full job description, HTML. |
descriptionMarkdown | string|null | Full description as Markdown. |
status | string|null | Listing status (e.g. ACTIVE). |
isFeatured | boolean | Whether the listing is featured. |
viewsWeek | number|null | Views in the past week. |
viewsTotal | number|null | Total views. |
socialImageUrl | string|null | Social share image URL. |
publishedAt | string|null | Publish timestamp. |
createdAt | string|null | Creation timestamp. |
approvedAt | string|null | Approval timestamp. |
expirationDate | string|null | Listing expiry date. |
changeStatus | string|null | Change status across runs (NEW / UPDATED / UNCHANGED). |
contentHash | string|null | Stable hash of core fields, for change tracking. |
source | string | Always TheHub.io. |
scrapedAt | string | ISO timestamp when scraped. |
Example record
{"id": "6a2ab4ce37958933f39ce11b","slug": "digital-konsulent","url": "https://thehub.io/jobs/6a2ab4ce37958933f39ce11b","title": "Digital Konsulent","companyId": "5bda47fd3adefc9b12854b51","companyName": "Gneis Agency","companySlug": "xlife-media","companyWebsite": "http://www.gneisagency.com","companyLogo": "https://thehub-io.imgix.net/files/s3/66f32a58f0095bb22d0fe056","companySize": "1-10","companyFounded": 2023,"companyStage": "growth","companyFunding": "seed","companyLinkedinId": 102352384,"companyIndustries": ["itsoftware", "saas", "advertising", "sales"],"companyBusinessModels": ["companies"],"city": "København","route": "Bredgade","postalCode": "1260","country": "Denmark","countryCode": "DK","locationAddress": "Bredgade 20A, 1260 København, Denmark","latitude": 55.6760968,"longitude": 12.5683371,"isRemote": false,"jobTypes": ["full-time"],"equity": null,"applicationCriteria": ["linkedin", "cv"],"email": "jobs@gneisagency.com","phone": null,"salary": "31000 - 39000 DKK/Monthly","salaryMin": 31000,"salaryMax": 39000,"salaryMonthlyMin": null,"salaryMonthlyMax": null,"salaryHourlyMin": null,"salaryHourlyMax": null,"salaryCurrency": "DKK","salaryPeriod": "monthly","description": "<h4>About the role</h4><p>...</p>","descriptionMarkdown": "#### About the role\n\n...","status": "ACTIVE","isFeatured": false,"viewsWeek": 78,"viewsTotal": 2080,"socialImageUrl": "https://thehub-io.imgix.net/jobs/6a2ab4ce37958933f39ce11b/social.png","publishedAt": "2026-05-12T09:17:04.875Z","createdAt": "2026-06-11T13:14:54.273Z","approvedAt": "2026-06-12T06:42:54.354Z","expirationDate": "2026-07-11","changeStatus": "NEW","contentHash": "9f3c1a2b7e0d4a58","source": "TheHub.io","scrapedAt": "2026-07-06T14:20:00.000Z"}
Examples
Developer jobs in Denmark
{"searchQuery": "developer","countryCode": "DK","maxResults": 100}
Remote full-time roles
{"isRemote": true,"jobTypes": ["full-time"],"maxResults": 200}
Batch of role searches in one run
{"searchQueries": ["frontend developer", "product designer", "growth"],"maxResults": 300}
Compact output for an AI pipeline
{"searchQuery": "engineer","compact": true,"maxResults": 100}
Schedule any of these to run daily in the Apify Scheduler, and enable skipReposts to receive only new listings each run.
💰 Pricing
$0.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged, and an over-filtered query that returns nothing costs nothing.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.90 |
| 100,000 | ~$99.00 |
Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 3–5 minutes |
| Full listing set | 5–10 minutes |
The actor reads TheHub.io's public JSON API directly, so runs are fast and need no proxy.
Known limitations
- Many listings show "competitive" rather than a numeric salary; those return
nullsalary numbers, though currency and period are still parsed when present. - Contact email and phone are only present where the employer publishes them.
- The source covers startup and scale-up roles, concentrated in the Nordics and Northern Europe; it is not a general job board.
Technical details
- Source: TheHub.io — Nordic startup job board
- Coverage: all active job listings, filterable by keyword, country, job type, and remote
- Deduplication: 90-day repost detection plus a per-record
contentHashfor change tracking - Retry: automatic retry with exponential backoff on network errors
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl