Omni Remote Jobs Scraper
Pricing
from $0.21 / 1,000 result extracteds
Omni Remote Jobs Scraper
Scrape normalized remote job listings from public job boards with deduplication, filters, clean fields, and required source attribution.
Pricing
from $0.21 / 1,000 result extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Collect normalized remote job listings from public job-board APIs in one Apify Actor run.
What does Omni Remote Jobs Scraper do?
Omni Remote Jobs Scraper extracts job listings from public remote and EU job sources, normalizes the fields, removes duplicates, and saves clean rows to an Apify dataset.
It is built for workflows where you need a repeatable job feed instead of manually opening several job boards and merging CSV files.
Who is it for?
Recruiting and sourcing teams
- Monitor fresh remote roles by keyword, region, and source in one repeatable run.
- Build shortlists of companies currently hiring for specific skills.
- Export normalized jobs to spreadsheets, CRMs, or recruiting dashboards.
Job-board and community operators
- Seed public job boards with attributed listings from remote-friendly sources.
- Track competing boards without manually reconciling duplicate postings.
- Keep ingestion pipelines simple with one consistent dataset shape.
Market intelligence and HR analytics teams
- Compare remote hiring patterns across role categories, locations, and employers.
- Feed labor-market dashboards with clean title, company, salary, tag, and date fields.
- Run scheduled snapshots for trend analysis or alerts.
Why use this actor?
Running several single-source scrapers creates duplicated rows, inconsistent field names, and missing source attribution.
This actor gives you one normalized dataset with source, title, company, location, job type, salary, tags, post date, job URL, and attribution.
Public sources included
The first version uses public HTTP JSON APIs only.
- Arbeitnow public job board API.
- Remotive public remote jobs API.
Remotive results include attribution text and the original Remotive URL so you can preserve the link-back when reusing listings.
Data fields
| Field | Description |
|---|---|
source | Source API name. |
sourceJobId | Source-specific listing ID. |
url | Original job listing URL. |
title | Job title. |
companyName | Hiring company. |
location | Listing location. |
isRemote | Whether the listing is remote. |
candidateRequiredLocation | Candidate location requirement when available. |
jobType | Employment type. |
category | Job category. |
tags | Skills, departments, or source tags. |
salary | Salary text when published. |
descriptionText | Clean text description. |
descriptionHtml | Optional original HTML description. |
postedAt | ISO posting date when available. |
postedTimestamp | Unix posting timestamp when available. |
scrapedAt | Actor scrape timestamp. |
attribution | Source attribution/link-back note. |
dedupeKey | Cross-source dedupe key. |
How much does it cost to scrape remote jobs?
The actor uses pay-per-event pricing.
You pay a small run-start fee of $0.005 and then a tiered per-result fee for each normalized job saved.
The BRONZE per-result price is about $0.000357 per job, with lower rates on higher Apify subscription tiers.
A small test with 20 jobs is designed to stay inexpensive.
How to run it
- Open the actor on Apify.
- Choose sources: Arbeitnow, Remotive, or both.
- Set a maximum number of jobs.
- Add a keyword such as
frontend,python,data analyst, or leave it empty. - Optionally add location keywords such as
Worldwide,Europe, orGermany. - Run the actor.
- Export the dataset as JSON, CSV, Excel, XML, or via API.
Input options
Sources
Select one or both public job sources.
Maximum jobs
Controls how many deduplicated jobs are saved after filtering.
Keyword filter
Searches title, company, location, category, tags, salary, and description text.
Location keywords
Use this when you only need jobs for a specific region.
Remote jobs only
When enabled, non-remote Arbeitnow listings are skipped.
Include description HTML
Enable this when your downstream system needs rich text.
Disable it for smaller exports.
Example input
{"sources": ["arbeitnow", "remotive"],"maxItems": 25,"query": "frontend","locations": ["Worldwide"],"remoteOnly": true,"includeDescriptionHtml": false}
Example output
{"source": "remotive","sourceJobId": "2090991","url": "https://remotive.com/remote-jobs/software-development/frontend-developer-2090991","title": "Frontend Developer","companyName": "Example Company","location": "Worldwide","isRemote": true,"candidateRequiredLocation": "Worldwide","jobType": "full_time","category": "Software Development","tags": ["javascript", "react"],"salary": "$20k - $35k","descriptionText": "This posting is for a Frontend Developer...","postedAt": "2026-06-16T06:59:30.000Z","postedTimestamp": 1781593170,"scrapedAt": "2026-06-18T00:00:00.000Z","attribution": "Source: Remotive public API...","dedupeKey": "frontend-developer-example-company-worldwide"}
Tips for best results
- Start with 25 jobs to validate your filters.
- Use broad keywords first, then narrow down.
- Leave locations empty if you want all countries.
- Keep
descriptionHtmldisabled unless you need formatting. - Preserve the
urlandattributionfields when republishing listings.
Integrations
Use the dataset in:
- Recruiting dashboards.
- Airtable or Google Sheets automations.
- CRM enrichment workflows.
- Labor-market monitoring reports.
- Job-board ingestion pipelines.
- Slack alerts for new roles.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/omni-remote-jobs-scraper').call({sources: ['arbeitnow', 'remotive'],maxItems: 25,query: 'frontend',locations: ['Worldwide'],remoteOnly: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/omni-remote-jobs-scraper').call(run_input={'sources': ['arbeitnow', 'remotive'],'maxItems': 25,'query': 'frontend','locations': ['Worldwide'],'remoteOnly': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~omni-remote-jobs-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"sources":["arbeitnow","remotive"],"maxItems":25,"query":"frontend","locations":["Worldwide"],"remoteOnly":true}'
MCP integration
Use this actor through Apify MCP from Claude Code, Claude Desktop, Cursor, or any MCP-compatible client.
MCP server URL:
https://mcp.apify.com/?tools=automation-lab/omni-remote-jobs-scraper
Claude Code setup:
$claude mcp add apify-omni-remote-jobs --transport http "https://mcp.apify.com/?tools=automation-lab/omni-remote-jobs-scraper"
Claude Desktop or JSON-based MCP client setup:
{"mcpServers": {"apify-omni-remote-jobs": {"url": "https://mcp.apify.com/?tools=automation-lab/omni-remote-jobs-scraper"}}}
Example prompts:
- "Find 50 remote frontend jobs worldwide and summarize the top hiring companies."
- "Scrape remote data analyst roles in Europe and export them as CSV."
- "Run the Omni Remote Jobs Scraper for Python jobs and compare categories."
Deduplication
The actor creates a normalized dedupe key from title, company, and location.
If two sources contain the same role with matching normalized values, only the first saved row is kept.
Source attribution
Every row includes an attribution field.
For Remotive, keep the original job URL and attribution text when redistributing or displaying the listing.
Limitations
The actor only extracts public data available from the source APIs.
It does not apply to jobs, log in to job boards, bypass paywalls, or scrape private candidate data.
Some sources may publish delayed, incomplete, or removed listings.
Legality
This actor collects publicly available job listing data.
You are responsible for using the output in compliance with source terms, privacy rules, copyright rules, and applicable laws.
Do not use the data for spam, credential harvesting, or discriminatory hiring workflows.
FAQ
Does this scrape private candidate or applicant data?
No. It only reads public job listing APIs and returns listing-level data such as title, company, location, tags, salary text, URL, and source attribution.
Can I republish Remotive jobs?
Keep the original job URL and attribution field in your downstream workflow. Remotive asks API users to preserve attribution/link-back, so every Remotive row includes this context.
Troubleshooting
Why did I get fewer jobs than maxItems?
Filters are applied after fetching and deduplication. Try a broader keyword or remove location filters.
Why is salary empty?
Many job boards do not publish salary information for every role.
Why are some descriptions plain text?
The default output strips HTML to keep datasets compact. Enable includeDescriptionHtml for raw HTML.
Related scrapers
- https://apify.com/automation-lab/himalayas-remote-jobs-scraper
- https://apify.com/automation-lab/remoteok-jobs-scraper
- https://apify.com/automation-lab/jobicy-jobs-scraper
- https://apify.com/automation-lab/multi-ats-jobs-scraper
Changelog
0.1
Initial HTTP-only version with Arbeitnow and Remotive sources, normalized output, filters, attribution, and deduplication.
Support
If a source changes its API or you need another public job board added, open an issue from the Apify actor page.