Working Nomads Remote Jobs Scraper
Pricing
from $6.15 / 1,000 results
Working Nomads Remote Jobs Scraper
Scrape remote job listings from Working Nomads worldwide. Extract job title, company, category, skill tags, location, posted date and full description. Filter by category, tag or keyword. Export to JSON, CSV or Excel. No login or API key needed.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(2)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Working Nomads Remote Jobs Scraper
Here is one real result, with every field the actor returns (the description is trimmed here for readability; the actor returns the full text):
{"imageUrl": null,"title": "Senior Python Developer (FastAPI)","url": "https://talent.proxify.io/apply?utm_source=workingnomads&utm_medium=job_posting&utm_campaign=senior_python_fastapi","applyUrl": "https://talent.proxify.io/apply?utm_source=workingnomads&utm_medium=job_posting&utm_campaign=senior_python_fastapi","companyName": "Proxify","category": "Development","location": "CET (+/- 3 hours)","remote": true,"tags": ["fastapi", "python", "postgresql", "aws", "graphql"],"source": "Working Nomads","postedAt": "2026-08-05T18:36:36.000Z","seniority": "Senior","employmentType": "Full-time","salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryPeriod": null,"salaryText": null,"description": "About us:\n \nTalent has no borders. Proxify's mission is to connect top developers around the world with opportunities they deserve. So, it doesn't matter where you are; we are here to help you fast-track your independent career in the right direction.\nSince our launch, Proxify's developers have successfully worked with 1200+ happy clien…","observedAt": "2026-08-10T14:18:21.355Z","error": null}
The most complete Working Nomads scraper available. It returns every field the Working Nomads remote-jobs feed exposes for each listing, plus derived fields (seniority, employmentType, parsed salary, clean canonical URL and image), and gives you seven filters to target exactly the remote jobs you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor fetches the global Working Nomads remote-jobs feed, applies the filters you pass as input, and writes one normalized record per job to the run's dataset. On top of the raw feed fields it derives a set of extra fields so you can sort and filter without extra parsing: seniority inferred from the title, employmentType detected from the listing text, and a best-effort salary parse (salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText). When detail fetching is on, it also upgrades each job url to its clean canonical apply link and adds the job imageUrl.
Missing source values are returned as null, never invented. Dates are normalized to ISO 8601. The Working Nomads feed has no server-side search, so every filter is applied by the actor after the feed is fetched.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 remote Development jobs, with detail pages fetched.
{"maxJobs": 10,"category": "Development","withDetails": true}
Every input field is optional. With an empty input the actor returns the newest remote jobs across every category (default maxJobs is 10).
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxJobs | integer | no | 10 | Maximum number of jobs to collect. Free Apify plans are capped at 10 per run. |
withDetails | boolean | no | true | When on, the actor opens each job's detail page to upgrade the url to its clean canonical apply link and add the job imageUrl. Turn off for faster feed-only runs. |
keyword | string | no | (empty) | Free-text term matched against title, company, category, tags and description (case-insensitive). Example: react, python. |
category | enum | no | (any) | Keep only jobs in this category. One of Administration, Consulting, Customer Success, Design, Development, Education, Finance, Healthcare, Human Resources, Legal, Management, Marketing, Sales, System Administration, Writing. |
tag | string | no | (empty) | Keep only jobs that include this tag (case-insensitive). Example: react, project management, copywriting. |
location | string | no | (empty) | Keep only jobs whose location text contains this term. Example: Latin America, Europe, anywhere. |
employmentType | string | no | (empty) | Keep only jobs whose detected employment type contains this text. Example: Full-time, Contract, Freelance, Internship. |
seniority | string | no | (empty) | Keep only jobs whose detected seniority contains this text. Example: Senior, Junior, Lead, Internship. |
minSalary | integer | no | (none) | Keep only jobs whose detected salary (max, else min) is at least this amount. Only applies to jobs that state a salary. |
proxyConfiguration | object | no | (none) | Standard Apify proxy configuration. Not required; the source is not bot protected. |
Filters combine with logical AND. Leave them empty to collect the newest remote jobs across every category.
Output reference
One dataset item per job. Types: string, boolean, integer, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Job or company image from the detail page, or null when none is published or detail fetching is off. |
title | string | Job title. |
url | string | Canonical apply/listing URL (upgraded from the detail page when withDetails is on). |
applyUrl | string | Apply URL for the job (same as url). |
companyName | string | Hiring company name. |
category | string | Working Nomads category, for example Development, Marketing. |
location | string | Location or timezone text as published, for example CET (+/- 3 hours), anywhere. |
remote | boolean | Always true; every Working Nomads listing is remote. |
tags | string[] | Skill and topic tags for the job, or null when none. |
source | string | Always Working Nomads. |
postedAt | string | Publish date/time in ISO 8601, or null. |
seniority | string | Seniority inferred from the title: Internship, Junior, Mid, Senior, Lead, Principal, or null. |
employmentType | string | Employment type detected from the text: Full-time, Part-time, Contract, Freelance, Internship, Temporary, or null. |
salaryMin | integer | Parsed minimum salary, or null when the listing states no pay. |
salaryMax | integer | Parsed maximum salary, or null. |
salaryCurrency | string | Currency code for the parsed salary (USD, EUR, GBP, CAD, AUD), or null. |
salaryPeriod | string | Pay period for the parsed salary: year, month, or hour, or null. |
salaryText | string | The raw matched salary snippet, or null. |
description | string | Full job description as plain text. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (description trimmed for readability; the actor returns the full text):
{"imageUrl": null,"title": "Senior Fullstack (MERN) Developer","url": "https://talent.proxify.io/apply?utm_source=workingnomads&utm_medium=job_posting&utm_campaign=senior_mern","applyUrl": "https://talent.proxify.io/apply?utm_source=workingnomads&utm_medium=job_posting&utm_campaign=senior_mern","companyName": "Proxify","category": "Development","location": "CET (+/- 3 hours)","remote": true,"tags": ["javascript", "react", "nodejs", "nextjs", "mongodb"],"source": "Working Nomads","postedAt": "2026-08-05T18:30:18.000Z","seniority": "Senior","employmentType": "Full-time","salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryPeriod": null,"salaryText": null,"description": "About us:\n\n \n\nTalent has no borders. Proxify's mission is to connect top developers around the world with the opportunities they deserve. So, it doesn't matter where you are; we are here to help you fast-track your independent career in the right direction.\nSince our launch, Proxify's developers…","observedAt": "2026-08-10T14:18:22.655Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~working-nomads-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"category":"Development","keyword":"python","maxJobs":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~working-nomads-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"tag":"react","location":"anywhere","maxJobs":100}'
Apify CLI:
apify call scrapers_lat/working-nomads-scraper \--input '{"category":"Marketing","maxJobs":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per job record returned (
resultevent). WhenwithDetailsis on and a detail page is fetched successfully, an additivedetailsevent is also charged. See the pricing tab for current prices. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxJobs. - Feed scope. Working Nomads publishes a single global remote-jobs feed. All filters are applied by the actor after the feed is fetched.
FAQ and troubleshooting
A run returned 0 records. Why?
The filter combination matched nothing in the current feed. Loosen filters (remove category or location, or widen keyword). Zero-result runs are not charged.
Why is salaryMin null on most jobs?
Most Working Nomads listings do not state pay. Salary fields are parsed from the listing text only when a currency and plausible amount are present, so they stay clean and are null otherwise, never invented.
What does withDetails change?
With it on, the actor opens each job's detail page to upgrade the url to its clean canonical apply link and add the imageUrl. Turn it off for faster feed-only runs.
Are all jobs remote?
Yes. Every Working Nomads listing is remote, so remote is always true. Use location to filter by the timezone or region text.
Is this an official Working Nomads tool? No. This actor is independent and has no affiliation with Working Nomads. It reads only data that is publicly available on the site.
Related scrapers
- Y Combinator Companies Scraper: startups and hiring companies from the YC directory.
- Yellow Pages Australia Scraper: Australian business listings with contact details.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Working Nomads. Accesses only publicly available data.
