Himalayas Remote Jobs Scraper - Salaries, Jobs Data & API
Pricing
from $6.15 / 1,000 results
Himalayas Remote Jobs Scraper - Salaries, Jobs Data & API
Scrape remote jobs from Himalayas.app worldwide, no API key. Get job title, company, salary range and currency, seniority, employment type, location and timezone restrictions, categories, skills tags and full description. Filter by keyword, category, seniority or country. Export JSON, CSV, Excel.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Himalayas Remote Jobs Scraper - Salaries, Jobs Data & API
Scrape remote job listings from Himalayas.app worldwide, with no API key or login. This Himalayas scraper acts as an unofficial remote jobs API: page the global feed, filter client-side (keyword, category, seniority, country, employment type, salary-only), and get one clean, structured record per job with the full description, parsed salary, company info, seniority, categories and apply URL. Export to JSON, CSV or Excel.
Ideal for building a remote job listings feed, a work-from-home jobs dataset, remote tech-jobs analytics, salary benchmarking, recruiting and lead generation.
{"id": "5931286079","title": "Sr. Product Designer II - Design Systems","companyName": "Instacart","companyLogo": "https://cdn-images.himalayas.app/ka50zs3eg02zoiwsl3b8ce5cdadx","url": "https://himalayas.app/companies/instacart/jobs/sr-product-designer-ii-design-systems-5931286079","seniority": ["Senior"],"employmentType": "Full Time","parentCategories": ["Design"],"tags": ["Design-Systems", "Product-Design", "UX-Design"],"locationRestrictions": ["Canada"],"timezoneRestrictions": [-8, -7, -6, -5, -4, -3.5],"isRemote": true,"worldwide": false,"minSalary": 171000,"maxSalary": 180500,"salaryPeriod": "annual","currency": "CAD","salaryText": "CAD $171,000 - $180,500/year","applyUrl": "https://boards.greenhouse.io/instacart/jobs/5931286079","companyUrl": "https://himalayas.app/companies/instacart","postedAt": "2026-08-14T06:23:56.000Z","expiresAt": "2026-10-13T06:23:56.000Z","ageDays": 21,"aiJdSummary": "Instacart is hiring a Sr. Product Designer II to evolve their design system... (AI add-on)","aiSkills": ["Product Design", "Design Systems", "Figma", "Accessibility"]}
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Why this scraper
- How we compare
- 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 pages through the Himalayas remote-jobs feed, applies the filters you pass as input (keyword or keywords, category, seniority, employment type, country, worldwide, salary-only, tech-only), and writes one normalized record per job to the run's dataset. Each record includes the job title, company and logo, salary range with currency and period (parsed into numbers), seniority, categories and skill tags, location and timezone restrictions, apply URL, posted and expiry dates, plus the full job description as clean text and raw HTML. Missing source values are returned as null.
Optional paid AI add-ons can write a concise summary and extract required skills and inferred seniority from each description.
Himalayas has no server-side search, so all filters run client-side as the scraper pages the global feed. Data covers remote jobs listed on himalayas.app. This actor is independent and has no affiliation with Himalayas.
Why this scraper
- No API key, no login. Just set your filters and run.
- Every field the feed exposes, mapped to clean names with honest
nulls, plus derived fields: parsedminSalary/maxSalary/currency/salaryPeriod,ageDays,worldwide,id, and extractedemails/descriptionLinksfrom the description. - Full description in two formats: clean text (
description) and rawdescriptionHtml. - Rich, superset filtering: single or multiple keywords, one or many categories and seniority levels, employment type, country, worldwide-only, tech-only, salary-only, plus
sortBy. - Cost controls:
maxJobs,maxPagesToScan,timeBudgetSecs, free-plan cap and a spend cap.
How we compare
Named comparison against the other public Himalayas actors on Apify (job data from the same public feed). We accept a superset of their inputs and return a superset of their fields.
| Capability | This actor | inlifeprojects/himalayas-jobs-scraper | logiover/himalayas-remote-jobs-scraper | shahidirfan/Himalayas-Job-Scraper |
|---|---|---|---|---|
| Keyword / multi-keyword | Yes (keyword + keywords[]) | keywords[] | single | single |
| Category filter | Yes (category + categories[]) | no | categories[] | no |
| Seniority (single + multi) | Yes | seniority[] | seniority[] | no |
| Employment type | Yes | Yes | Yes | no |
| Country / worldwide filter | Yes (both) | country + worldwide | no | location |
| Tech-only filter | Yes | filterNonTech | no | no |
| Salary-only filter | Yes | no | no | no |
| Sort (date / salary) | Yes (sortBy) | sortBy | no | no |
| Start URLs | Yes | no | no | startUrl |
| Page / time budget caps | Yes | no | maxPages + timeBudget | max_pages |
| Completion webhook | Yes | Yes | no | no |
| Parsed salary min/max/currency | Yes | partial | partial | partial |
| Full description (text + HTML) | Yes (both) | text | optional | optional |
| Emails + links from description | Yes | no | no | no |
| Timezone restrictions | Yes | Yes | partial | no |
ageDays, worldwide, id, tags derived | Yes | no | no | no |
| AI summary + skills add-ons | Yes (opt-in) | no | no | no |
If you only need a handful of raw fields, the alternatives are fine. If you want the widest field set, parsed salary, description in text and HTML, and superset filtering, this actor is built for that.
Quickstart
Open the actor, paste this into the input, and press Run.
{"keywords": ["react", "frontend"],"category": "Developer","withSalaryOnly": true,"sortBy": "salaryDesc","maxJobs": 25}
Leave all filters empty to collect the newest jobs across every category. Every input field is optional; with an empty input the actor returns the most recent remote jobs (default maxJobs is 10).
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxJobs | integer | no | 10 | Maximum jobs to collect. Aliases: maxItems, results_wanted, maxResultsPerKeyword. Free Apify plans are capped at 10 per run. |
keyword | string | no | (empty) | Free-text term matched against title, company, categories and description (case-insensitive). |
keywords | string[] | no | (empty) | Multiple search terms. A job is kept if it matches ANY of them. |
startUrls | array | no | (empty) | Himalayas search URLs; any search/keyword/q/query parameter is applied as an extra keyword. |
category | enum | no | (any) | Keep only jobs in this parent category. |
categories | string[] | no | (any) | Keep only jobs in any of these parent categories. |
seniority | enum | no | (any) | Keep only jobs that include this seniority. |
seniorities | string[] | no | (any) | Keep only jobs that include any of these seniority levels. |
employmentType | enum | no | (any) | Full Time, Part Time, Contractor, Intern. |
country | string | no | (any) | Keep only jobs open to this country (worldwide jobs always kept). Alias: location. |
worldwide | boolean | no | false | Keep only jobs open to candidates worldwide. |
filterNonTech | boolean | no | false | Keep only tech roles (Developer, Data Science, Design, Product). |
withSalaryOnly | boolean | no | false | Keep only jobs that publish a salary range. |
sortBy | enum | no | newest | newest, oldest, salaryDesc, salaryAsc. Non-newest sorting requires a finite maxJobs. |
includeDescription | boolean | no | true | Include full description (text + HTML), emails and links. Alias: collectDetails. |
maxPagesToScan | integer | no | (unlimited) | Safety cap on feed pages scanned. Alias: max_pages. |
timeBudgetSecs | integer | no | (unlimited) | Stop scanning after this many seconds. |
webhookUrl | string | no | (empty) | POST a small JSON completion payload here when the run finishes. |
webhookSecret | string | no | (empty) | Sent as the x-webhook-secret header on the completion webhook. |
proxyConfiguration | object | no | Apify Proxy | Proxy settings. |
withJdSummary | boolean | no | false | Paid AI add-on. Concise summary of each description. Charged per job summarized. Paid plans only. |
withSkills | boolean | no | false | Paid AI add-on. Extract required skills and inferred seniority. Charged per job processed. Paid plans only. |
Output reference
One dataset item per job. Types: string, number, integer, boolean, string[], number[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
id | string | Stable job ID derived from the job URL, or null. |
title | string | Job title. |
companyName | string | Company name. |
companyLogo | string | Company logo URL, or null. |
companySlug | string | Company slug on Himalayas. |
companyUrl | string | Company page URL. |
url | string | Himalayas job URL. |
applyUrl | string | External application URL. |
seniority | string[] | Seniority levels listed for the job. |
employmentType | string | Employment type (for example Full Time). |
parentCategories | string[] | Parent categories (for example Design). |
categories | string[] | Category tags on the listing. |
tags | string[] | Alias of categories. |
locationRestrictions | string[] | Allowed candidate locations/countries. |
timezoneRestrictions | number[] | Allowed UTC offsets. |
remote / isRemote | boolean | Whether the job is remote (always true for this feed). |
worldwide | boolean | Whether the job is open to candidates worldwide. |
minSalary | integer | Minimum salary, or null. |
maxSalary | integer | Maximum salary, or null. |
salaryPeriod | string | Salary period (for example annual), or null. |
currency | string | Salary currency (for example CAD), or null. |
salaryText | string | Salary range as a formatted string, or null. |
emails | string[] | Contact emails found in the description, or null. |
descriptionLinks | string[] | External links found in the description, or null. |
excerpt | string | Short description excerpt. |
description | string | Full job description as clean text. |
descriptionHtml | string | Full job description as raw HTML. |
postedAt | string | ISO 8601 posting timestamp. |
expiresAt | string | ISO 8601 expiry timestamp, or null. |
ageDays | integer | Days since the job was posted, or null. |
aiJdSummary | string | AI job summary (add-on), or null. |
aiSkills | string[] | AI-extracted required skills (add-on), or null. |
aiSeniority | string | AI-inferred seniority (add-on), or null. |
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 shape from a live run. The long categories/tags array and description are trimmed here for readability; the real values continue.
{"id": "5931286079","title": "Sr. Product Designer II - Design Systems","companyName": "Instacart","companyLogo": "https://cdn-images.himalayas.app/ka50zs3eg02zoiwsl3b8ce5cdadx","companyUrl": "https://himalayas.app/companies/instacart","url": "https://himalayas.app/companies/instacart/jobs/sr-product-designer-ii-design-systems-5931286079","applyUrl": "https://boards.greenhouse.io/instacart/jobs/5931286079","seniority": ["Senior"],"employmentType": "Full Time","parentCategories": ["Design"],"categories": ["Design-Systems", "Product-Design", "UX-Design", "[trimmed]"],"tags": ["Design-Systems", "Product-Design", "UX-Design", "[trimmed]"],"locationRestrictions": ["Canada"],"timezoneRestrictions": [-8, -7, -6, -5, -4, -3.5],"remote": true,"isRemote": true,"worldwide": false,"minSalary": 171000,"maxSalary": 180500,"salaryPeriod": "annual","currency": "CAD","salaryText": "CAD $171,000 - $180,500/year","emails": null,"descriptionLinks": null,"excerpt": "We're transforming the grocery industry...","description": "We're transforming the grocery industry. [trimmed]","descriptionHtml": "<p>We're transforming the grocery industry. [trimmed]</p>","postedAt": "2026-08-14T06:23:56.000Z","expiresAt": "2026-10-13T06:23:56.000Z","ageDays": 21,"aiJdSummary": null,"aiSkills": null,"aiSeniority": null,"observedAt": "2026-09-04T08:07:26.293Z","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~himalayas-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"keyword":"react","category":"Developer","withSalaryOnly":true,"maxJobs":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~himalayas-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"category":"Design","seniority":"Senior","maxJobs":100}'
Apify CLI:
apify call scrapers_lat/himalayas-scraper \--input '{"employmentType":"Contractor","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). See the pricing tab for the current per-result price. - Add-on events. AI job summary (
ai_jd_summary) and AI required skills (ai_skills) are billed separately, only for paid plans, and only when they produce usable output. Each add-on is charged after the job record has been delivered. - 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 and add-ons. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxJobs.
FAQ and troubleshooting
Do I need an API key or login for Himalayas? No. The actor reads the public Himalayas remote-jobs feed. Just set filters and run.
A run returned 0 records. Why?
Your filters excluded everything. Loosen them (for example remove keyword or set withSalaryOnly off), or widen the category. Because Himalayas has no server-side search, narrow filters can page through many jobs before matching. Use maxPagesToScan or timeBudgetSecs to cap the scan. Zero-result runs are not charged.
How does the keyword filter work?
It is a case-insensitive match against the title, company, categories and description, applied by the scraper as it pages the feed. keywords[] matches ANY of the terms.
Which jobs include a salary?
Not all listings publish one. Set withSalaryOnly to keep only jobs with a salaryText and salary range. When present, salary is parsed into minSalary, maxSalary, currency and salaryPeriod.
Can I sort by salary or date?
Yes. Set sortBy to salaryDesc, salaryAsc, oldest, or newest (default). Non-newest sorting requires a finite maxJobs.
What do the AI add-ons return?
withJdSummary writes a short aiJdSummary; withSkills fills aiSkills and aiSeniority. Both are billed only when they produce usable output and require a paid Apify plan.
Is this an official Himalayas tool? No. This actor is independent and has no affiliation with Himalayas. It reads only publicly available job listings. Use the results in accordance with the source's terms and applicable laws.
Related scrapers
- Greenhouse Jobs Scraper: jobs from Greenhouse-powered career pages.
- Ashby Jobs Scraper: jobs from Ashby-powered career pages.
- Lever Jobs Scraper: jobs from Lever-powered career pages.
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 Himalayas. Accesses only publicly available job listings. Use in accordance with the source's terms and applicable laws.
