Himalayas Remote Jobs Scraper avatar

Himalayas Remote Jobs Scraper

Pricing

from $0.48 / 1,000 job extracteds

Go to Apify Store
Himalayas Remote Jobs Scraper

Himalayas Remote Jobs Scraper

Search and export current Himalayas remote jobs with company, location restrictions, employment type, salary, categories, dates, descriptions, and application URLs.

Pricing

from $0.48 / 1,000 job extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Search and export current Himalayas remote jobs as structured records for recruiting, job-feed operations, and labor-market analysis.

The Actor reads Himalayas' public jobs feed, follows cursor pagination, and returns useful vacancy fields such as company, candidate-location restrictions, employment type, salary, seniority, categories, description, dates, and application URL.

It supports both broad role or keyword searches and targeted retrieval of current Himalayas job URLs.

What can you do with this Actor?

  • Build a current remote-vacancy feed for a recruiting workflow.
  • Search Himalayas jobs by role, company, or category text.
  • Retrieve one or more current job records by their public Himalayas URLs.
  • Focus analysis by employment type, seniority, candidate location, category, salary, or publication date.
  • Export results to JSON, CSV, Excel, Google Sheets, a database, or another Apify integration.
  • Schedule recurring runs and compare datasets in your own pipeline to identify new or changed listings.

The Actor produces source-attributed records. It does not apply to jobs, contact candidates, or send alerts by itself.

Who is it for?

Recruiters and talent teams

Build focused shortlists of current remote roles, inspect employer demand, and identify companies hiring for particular skills or seniority levels.

Job-board and feed operators

Normalize current Himalayas listings into a dataset that can be exported through Apify's API or connected to an existing ingestion pipeline.

Labor-market analysts

Measure advertised locations, employment types, salary ranges, categories, and posting dates across a repeatable sample.

Automation developers

Use one stable Actor input and output contract instead of maintaining cursor handling, retries, validation, and normalization in every workflow.

Why use this Himalayas jobs extractor?

  • Public structured source: it uses the public Himalayas jobs API rather than parsing fragile page layouts.
  • Cursor pagination: records are scanned in source order without deprecated offset pagination.
  • Full job rows: descriptions, company fields, salary fields, restrictions, categories, dates, and links are available in one request path.
  • Consistent filters: the same optional filters apply to search and explicit-URL inputs.
  • No fabricated rows: malformed API records and missing or expired URLs are not replaced with guessed data.
  • Bounded execution: maxItems and maxPages control result volume and source scanning.
  • Direct HTTP: no browser or paid proxy is enabled automatically.

What data does it extract?

FieldMeaning
jobIdStable slug from the canonical job URL
titleVacancy title
jobUrlCanonical public Himalayas job URL
applicationUrlApplication link exposed by Himalayas
companyNameHiring company name
companySlugHimalayas company identifier
companyUrlPublic company profile URL
companyLogoUrlCompany logo URL when available
excerptShort vacancy summary
descriptionFull description when requested
locationRestrictionsCountries or regions from which candidates may work
timezoneRestrictionsAccepted UTC offsets when exposed
employmentTypeFull Time, Contract, or another source value
senioritySource seniority labels
salaryMin, salaryMaxAdvertised salary bounds when present
salaryCurrencyAdvertised currency
salaryPeriodAnnual, hourly, or another salary period
categoriesDetailed source categories
parentCategoriesTop-level source categories
publishedAtISO 8601 publication time
expiresAtISO 8601 expiry time
sourceHimalayas
sourceApiUrlPublic API surface used by the Actor
scrapedAtISO 8601 extraction time

Nullable source fields remain null. Array fields remain arrays even when empty.

How to get started

  1. Open the Actor in Apify Console.
  2. Enter one or more phrases in Role or keyword queries, or add current URLs under Himalayas job URLs.
  3. Add only the filters your workflow needs.
  4. Set Maximum jobs to the number of matching records you want.
  5. Increase Maximum API pages to scan for selective queries or filters.
  6. Choose whether to include full descriptions.
  7. Click Start.
  8. Open the Dataset tab to preview or export results.

The prefilled input searches for software engineer, includes descriptions, and keeps the initial run small.

Input parameters

ParameterTypeDefaultDescription
searchQueriesstring arrayemptyA job matches when at least one phrase appears in its title, company, or categories
startUrlsURL listemptyCurrent public Himalayas job-detail URLs to locate in the feed
employmentTypesstring arrayemptyCase-insensitive partial matches against employment type
senioritystring arrayemptyMatch at least one source seniority label
locationsstring arrayemptyMatch at least one candidate-location restriction
categoriesstring arrayemptyMatch detailed or parent categories
minimumSalarynumberunsetRequire an advertised bound at or above this amount
publishedAfterISO date/timeunsetKeep jobs published at or after the cutoff
includeDescriptionsbooleantrueInclude full descriptions in output
maxItemsinteger100Save at most this many matching jobs, from 1 to 10,000
maxPagesinteger25Scan at most this many cursor pages, from 1 to 1,000

Multiple values within one filter use OR logic. Different filter groups use AND logic.

For example, two locations and one employment type mean “location A or B, and this employment type.”

Search by role or keyword

{
"searchQueries": ["software engineer"],
"maxItems": 25,
"maxPages": 25,
"includeDescriptions": true
}

Search checks title, company name, detailed categories, and parent categories.

It is a case-insensitive phrase match, not a semantic ranking engine. A phrase can appear outside the title.

Retrieve a current job URL

{
"startUrls": [
{
"url": "https://himalayas.app/companies/monetizemore/jobs/business-operations-project-manager-6782873844"
}
],
"maxItems": 1,
"maxPages": 2,
"includeDescriptions": true
}

The Actor validates that each URL is a Himalayas company job URL and matches it against canonical URLs in the current public feed.

If a supplied listing expired, was removed, or lies beyond maxPages, the Actor logs the missing URL and does not invent a record.

Build a focused salary feed

{
"locations": ["United States"],
"employmentTypes": ["Full Time"],
"minimumSalary": 100000,
"maxItems": 100,
"maxPages": 100,
"includeDescriptions": false
}

minimumSalary compares the advertised numeric bounds without converting currencies or salary periods. Filter by one market at a time when values must be directly comparable.

Output example

A current run returns records shaped like this:

{
"jobId": "sr-technical-product-marketing-manager-ai-traffic-management-registry",
"title": "Sr Technical Product Marketing Manager, AI Traffic Management & Registry",
"jobUrl": "https://himalayas.app/companies/kong/jobs/sr-technical-product-marketing-manager-ai-traffic-management-registry",
"applicationUrl": "https://himalayas.app/companies/kong/jobs/sr-technical-product-marketing-manager-ai-traffic-management-registry",
"companyName": "Kong",
"companySlug": "kong",
"locationRestrictions": ["United States"],
"timezoneRestrictions": [],
"employmentType": "Full Time",
"seniority": ["Senior"],
"salaryMin": 153090,
"salaryMax": 251505,
"salaryCurrency": "USD",
"salaryPeriod": "annual",
"categories": ["Product-Marketing"],
"parentCategories": ["Marketing"],
"publishedAt": "2026-09-15T00:00:00.000Z",
"expiresAt": "2026-11-14T00:00:00.000Z",
"source": "Himalayas",
"sourceApiUrl": "https://himalayas.app/jobs/api",
"scrapedAt": "2026-09-15T06:30:00.000Z"
}

Source categories and timestamps change as Himalayas updates its feed.

How much does it cost to extract Himalayas remote jobs?

The Actor uses pay-per-event pricing:

  • one small start charge when a run begins;
  • one job charge for each validated job saved to the dataset.

No job event is charged for filtered-out, duplicate, malformed, missing, or failed records.

At the initial BRONZE rate of $0.0008 per saved job plus a $0.00005 start event, approximate Actor charges are:

Saved jobsApproximate Actor charge
1$0.00085
10$0.00805
100$0.08005
1,000$0.80005

Higher Apify plans receive lower per-job tiers. Your Apify plan and platform billing may affect the final displayed total; always check the Console pricing panel for the active rate.

Pagination, limits, and performance

Himalayas currently returns up to 20 jobs per cursor page.

maxItems limits saved matches, while maxPages limits scanned source pages. Selective filters can require scanning many more records than they save.

The Actor stops when any of these conditions occurs:

  • maxItems matching jobs have been saved;
  • all requested URLs have been found;
  • maxPages has been scanned;
  • the API provides no next cursor;
  • the API returns an empty page.

For recurring monitoring, use a publication cutoff and a practical page bound rather than scanning the complete historical feed every time.

Reliability and failure behavior

Transient network errors, HTTP 429 responses, and server errors receive up to two retries after the initial request with bounded backoff.

The Actor fails rather than returning a false success when the API returns a permanent error, non-JSON content, or an invalid response shape.

The Actor does not retry malformed inputs.

The source website's interactive HTML can present a Cloudflare challenge. This does not affect the public JSON route used by the Actor.

Recurring monitoring workflow

  1. Save a Task with your stable queries and filters.
  2. Schedule the Task at the interval your team needs.
  3. Export each run's dataset or consume it through the API.
  4. Compare jobUrl, publishedAt, expiresAt, salary, and description in your own database.
  5. Trigger notifications only for changes that matter to your workflow.

The Actor does not persist a cross-run change history, so your destination remains the source of truth for deduplication and alerts.

Export and integrations

From the run Dataset tab you can:

  • download JSON, CSV, XML, RSS, or Excel;
  • send rows to Google Sheets;
  • connect a webhook or Make workflow;
  • retrieve items through the Apify API;
  • pass the dataset ID to another Actor;
  • load results into a database or warehouse.

Keep jobUrl as the stable source key when merging repeated runs.

API usage with cURL

Start a run and wait for completion:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~himalayas-remote-jobs-scraper-retry/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["data engineer"],"maxItems":10,"maxPages":20}'

Keep tokens in environment variables or secret stores, not source code.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/himalayas-remote-jobs-scraper-retry').call({
searchQueries: ['data engineer'],
maxItems: 10,
maxPages: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/himalayas-remote-jobs-scraper-retry').call(run_input={
'locations': ['United States'],
'employmentTypes': ['Full Time'],
'maxItems': 25,
'maxPages': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use through MCP

Claude Code

Add the Apify MCP server from your terminal:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/himalayas-remote-jobs-scraper-retry"

Claude Desktop

Add this server object to Claude Desktop's MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/himalayas-remote-jobs-scraper-retry"
}
}
}

Cursor

Open Cursor Settings, choose Tools & MCP, add a remote server named apify, and use the same https://mcp.apify.com?tools=automation-lab/himalayas-remote-jobs-scraper-retry URL.

VS Code

Add the same remote HTTP server URL in VS Code's MCP server settings, then enable the automation-lab/himalayas-remote-jobs-scraper-retry tool for your chat session.

Example prompts:

  • “Find up to 20 current Himalayas data engineer jobs and return company, allowed locations, salary, and application URL.”
  • “Export current full-time Himalayas roles open to candidates in Canada.”
  • “Retrieve this current Himalayas job URL and summarize its employment and salary fields.”

Responsible use and legality

This Actor accesses public vacancy data without logging in.

You are responsible for complying with Himalayas' terms, applicable laws, database rights, privacy obligations, and the rules governing your downstream use.

Use reasonable schedules and limits. Do not republish personal information, create discriminatory hiring decisions, or treat source data as guaranteed accurate.

Job listings can contain names, contact details, or external links supplied by employers. Review data before redistribution.

Limitations

  • Results reflect the public API at run time, not all historical Himalayas records.
  • Search and filters are applied client-side to the pages allowed by maxPages.
  • Explicit URLs must be present within the scanned current feed.
  • Salary values are not currency-converted or period-normalized.
  • Categories and restrictions are source-provided and may be empty or inconsistent.
  • includeDescriptions: false returns description: null, while keeping the excerpt.
  • The Actor does not detect changes across runs or send notifications by itself.
  • Source API behavior and fields can change.

Troubleshooting

My search returned no jobs

Increase maxPages, simplify the phrase, and temporarily remove filters. Search uses literal case-insensitive phrase matching rather than semantic expansion.

A valid URL was not returned

The listing may be expired, removed, or beyond your page bound. Increase maxPages and check whether the URL is still present in Himalayas' current public feed.

Salary filtering removed too many jobs

Many postings omit structured salary data. Remove minimumSalary to include those records, then inspect nullable salary fields downstream.

A run failed after retries

Check the run log for the HTTP status or response-shape error. Retry later if Himalayas is temporarily unavailable; do not enable a proxy unless direct API availability has materially changed.

Frequently asked questions

Does this Actor need a Himalayas login or API key?

No. It uses the public jobs feed.

Does it need an Apify Proxy?

No. The production route uses direct HTTP and does not automatically enable paid proxy transfer.

Can it scrape a company profile?

No. Output includes the company fields attached to each job, but company profiles are outside this Actor's scope.

Can it apply to jobs?

No. It exports public listing and application-link data only.

Are descriptions included?

Yes by default. Set includeDescriptions to false for smaller datasets when the excerpt is sufficient.

Can I export to a spreadsheet?

Yes. Download CSV or Excel from the Dataset tab, or use the Google Sheets integration.

How should I identify duplicates?

Use canonical jobUrl as the primary source key. jobId is a convenient slug but the URL preserves full source identity.

For broader remote-market coverage, combine this source-specific feed with:

Keep source names and URLs when merging datasets so buyers can audit where each vacancy originated.