Job Board Aggregator
Pricing
from $2.00 / 1,000 job listings
Go to Apify Store
Job Board Aggregator
Aggregate remote and on-site job listings from Remotive, Arbeitnow, and custom job board URLs. Extract title, company, location, salary, remote flag, description, and apply URL.
Pricing
from $2.00 / 1,000 job listings
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Aggregate job listings from multiple sources into a single structured dataset. Built with TypeScript, Crawlee, and Cheerio.
Features
- Remotive API — fetches remote jobs from
https://remotive.com/api/remote-jobs - Arbeitnow API — fetches jobs from
https://www.arbeitnow.com/api/job-board-apiwith automatic pagination - Custom job boards — optional Cheerio scraping for any HTML job listing page
- Structured output — title, company, location, salary, remote flag, description, apply URL
- Rate limiting — configurable concurrency and requests-per-minute caps
- Retries — failed requests are retried up to 3 times with logging
Input
| Field | Type | Default | Description |
|---|---|---|---|
includeRemotive | boolean | true | Enable Remotive API source |
includeArbeitnow | boolean | true | Enable Arbeitnow API source |
customJobBoardUrls | string[] | [] | Optional HTML job board URLs |
searchQuery | string | — | Keyword filter for Remotive |
category | string | — | Remotive category slug |
maxJobs | integer | 500 | Max jobs across all sources |
maxRequestsPerCrawl | integer | 200 | Max HTTP requests |
maxConcurrency | integer | 2 | Parallel request limit |
maxRequestsPerMinute | integer | 30 | Global rate limit |
Example input
{"includeRemotive": true,"includeArbeitnow": true,"customJobBoardUrls": [],"searchQuery": "typescript","maxJobs": 100,"maxConcurrency": 2,"maxRequestsPerMinute": 30}
Output
Each dataset item contains:
| Field | Description |
|---|---|
title | Job title |
company | Company name |
location | Location or region |
salary | Salary text when available |
remote | Whether the job is remote |
description | Plain-text job description |
url | Apply or detail page URL |
source | remotive, arbeitnow, or custom |
scrapedAt | ISO timestamp |
How it works
- The Actor builds start requests for each enabled source.
- Remotive and Arbeitnow responses are parsed as JSON.
- Arbeitnow pagination follows
links.nextuntilmaxJobsis reached. - Custom boards use Cheerio heuristics for job cards and enqueue next-page links.
- Results are pushed to the default dataset with per-job logging.
Local development
npm installapify run
Edit storage/key_value_stores/default/INPUT.json for local test input.
Deploy
apify loginapify push
Publish to the Apify Store with PPE pricing:
$node ../../scripts/publish-factory.js job-board-aggregator '{"resultPriceUsd":0.002,"resultTitle":"Job listing","resultDescription":"Charged per job listing returned"}'
Notes
- Remotive requests should be kept infrequent (their API advises max ~4 calls/day for production sync).
- Arbeitnow does not expose salary in its public API.
- Custom HTML scraping uses common CSS patterns; highly custom sites may need dedicated selectors.
- Respect each source's terms of service and attribution requirements.