Himalayas Remote Jobs Scraper
Pricing
Pay per event
Himalayas Remote Jobs Scraper
Walk himalayas.app's public remote-jobs feed via cursor pagination and filter results by keyword, category, or country. The feed's own search/category params are server-side no-ops, so filtering runs client-side against real job fields, returning typed rows with null-normalized salary data.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
🎯 What this scrapes
himalayas.app publishes its remote-job listings
through a public, keyless JSON feed at /jobs/api, paginated with a
nextCursor token the feed itself documents as the preferred way to page
through results (the older offset parameter is deprecated). We walk that
cursor chain page by page and hand back every job that matches your filters.
Here's the part that trips up a naive integration: the feed also accepts
search=, category=, and categories= query parameters — and none of
them do anything server-side. We verified this directly: a search=
request for an obscure term returned a full page of completely unrelated
job titles. So this Actor filters client-side, against the real title,
excerpt, description, category tags, and location-restriction fields on
each job — the only place filtering actually happens on this feed.
🔥 Features
- 🔁 Correct cursor-pagination. himalayas.app's bare first-page response is not stable across repeated calls — we only ever treat the verified cursor chain as authoritative, never the first page in isolation.
- 🎯 Real client-side filtering. Keyword, category, and country filters actually narrow the results, unlike the feed's own no-op query params.
- 🧊 Null-normalized salary data. When himalayas.app has no salary or
currency for a listing, you get a clean
null— never a fake0or""standing in for missing data. - 🛡️ Fault isolation per job. A single malformed record is skipped and logged; it never aborts your run or costs you the rest of the results.
- 🔁 We retry with exponential backoff on
408 / 429 / 503and honourRetry-After, rotating browser fingerprints across attempts. - 💰 You pay only for results that land. No data, no charge beyond the small warm-up fee.
💡 Use cases
- Recruiter & sourcer pipelines — pull fresh remote roles into your ATS or CRM on a daily schedule, pre-filtered to the categories you place in.
- Job-board aggregation — add Himalayas coverage to a multi-source remote-jobs board alongside other feeds.
- Labor-market research — track category and country demand trends in the remote-hiring market over time.
- Hiring-intent signals — SDR/BD teams reading newly-opened remote reqs as a proxy for company growth and headcount plans.
⚙️ How to use it
- Click Try for free at the top of the page.
- Optionally set
keywords,categories, and/orcountriesto narrow the feed to what you care about — leave any of them empty to skip that filter entirely. - Set
max_resultsto cap how many matching jobs you want. - Click Start. Matching rows stream into the run's dataset as they're found.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch programmatically via the Apify API.
📥 Input
| Field | Type | Default | Description |
|---|---|---|---|
keywords | array of string | [] | Keep jobs whose title, excerpt, or description contains ANY of these (case-insensitive substring match). |
categories | array of string | [] | Keep jobs whose category tags include ANY of these (case-insensitive). |
countries | array of string | [] | Keep jobs whose location restrictions include ANY of these; jobs with no restriction (worldwide) always pass. |
max_results | integer | 100 | Hard stop for the cursor walk (1–5000). |
proxyConfiguration | object | {"useApifyProxy": false} | Standard Apify Proxy configuration — not required for this keyless target, but available if you ever want it. |
{"keywords": ["engineer", "marketing"],"categories": [],"countries": [],"max_results": 20,"proxyConfiguration": { "useApifyProxy": false }}
📤 Output
| Field | Description |
|---|---|
id | Stable canonical URL for the posting — the unique row id. |
title / company_name / company_slug / company_logo_url | Core listing identity. |
url | Direct application URL. |
excerpt / description_html | Short summary and full HTML job description. |
employment_type / seniority / categories / parent_categories | Classification tags. |
location_restrictions / timezone_restrictions | Where the role is open to (empty = worldwide). |
min_salary / max_salary / salary_period / currency | Null-normalized salary data. |
published_at / expires_at / scraped_at | ISO-8601 timestamps. |
{"id": "https://himalayas.app/companies/example-co/jobs/senior-backend-engineer","title": "Senior Backend Engineer","company_name": "Example Co","company_slug": "example-co","url": "https://himalayas.app/companies/example-co/jobs/senior-backend-engineer","employment_type": "Full Time","seniority": ["Senior"],"categories": ["Backend-Engineering", "API-Development"],"location_restrictions": [],"min_salary": 120000.0,"max_salary": 160000.0,"salary_period": "yearly","currency": "USD","published_at": "2026-09-10T00:00:00+00:00","expires_at": null,"scraped_at": "2026-09-10T00:00:00+00:00"}
💰 Pricing
Pay-Per-Event — no subscription, no minimum.
| Event | Price |
|---|---|
| Actor start | $0.20 flat |
| Result | $0.0015 / row (→ $1.50 / 1 000 results) |
Example: 1,000 results at the rates above ≈ $1.70 total ($0.20 start + $1.50 for the rows). Apify gives every new account $5 of free credit to try it with.
🚧 Limitations
- himalayas.app's
search=/category=/categories=query parameters are confirmed no-ops server-side — filtering always happens client-side here, which means a very narrow filter combination walks more of the feed before it fillsmax_resultsthan a server-side filter would. - The cursor walk has an internal safety page cap so an extremely narrow
filter that matches almost nothing can't run away on cost; if you hit it,
widen your filters or raise
max_resultsin smaller steps. - We don't control himalayas.app's own posting freshness or how quickly expired listings drop off the feed.
❓ FAQ
Does this use himalayas.app's search parameter?
No — we verified it's a server-side no-op and filter client-side instead,
against the job's actual title, excerpt, description, category, and
location fields. That's the only way filtering reliably works on this feed.
Will I get duplicate jobs across runs? No. himalayas.app's cursor pagination is documented as never returning the same job twice within a single walk, and we never re-issue a stale cursor.
What happens if a listing is missing a field?
Missing salary/currency data comes through as null, not 0 or an empty
string — you can trust null to mean "not published," not "confirmed
zero."
What if the feed briefly returns nothing for my filters? The run still completes successfully with zero rows and a status message telling you what was searched — a real "no matches" isn't treated as a failure.
Your feedback
Found an edge case in the feed, or want a field we don't emit yet? Reach us at apify.com/DevilScrapes — we read every message.