Himalayas Remote Jobs Scraper (Worldwide) avatar

Himalayas Remote Jobs Scraper (Worldwide)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Himalayas Remote Jobs Scraper (Worldwide)

Himalayas Remote Jobs Scraper (Worldwide)

Scrape 100,000+ worldwide remote job listings from Himalayas with real numeric salary, seniority, location and timezone restrictions, and incremental mode.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Axery

Axery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrapes worldwide remote job listings from himalayas.app over plain HTTP — no browser, no login, no cookies. It reads Himalayas' official public JSON feed, which currently carries over 100,000 listings.

What makes this different

Salary that is already numeric — and honestly labelled. Most job boards publish salary as a display string you cannot sort. Himalayas publishes real numbers, and this Actor passes them through with the currency and period attached, plus a readable raw for consistency with the other Actors in the suite:

"salary": {
"min": 135000, "max": 165000, "currency": "USD",
"period": "year", "is_estimated": false,
"raw": "USD 135,000 - USD 165,000 per year"
}

is_estimated is false here because these are advertiser-disclosed figures, not bands the board modelled. Watch the period and currency: the feed mixes USD/year with GBP/year and USD/hour freely, so never compare the numbers without reading those two fields.

Location restrictions, not just "remote". Every listing is remote, so a remote: true flag would carry no information. What actually matters is where you may livelocation_restrictions holds that, and is null when the role is genuinely open worldwide.

Cursor pagination, as the API asks. The feed's own response says offset pagination is deprecated and will be removed. This Actor pages by nextCursor, so it will not break when that happens.

Incremental mode. Turn on incremental and you get only listings not seen before — and are charged only for those rows. A daily monitor costs full price once, then a fraction per day.

One schema across boards. Same record shape as the SEEK and JobStreet Actors, with a source-prefixed job_id. Merge them into one dataset and dedupe without writing a normalizer.

Input

FieldTypeNotes
queriesarrayKeywords matched against title, company, excerpt and category tags. Empty = newest listings.
categoriesarrayHimalayas category tags, e.g. Software-Engineering. Run once unfiltered to discover them.
seniorityarrayEntry-level, Mid-level, Senior, Manager, Director, Executive.
salaryMinintegerCompares raw numbers only — see the currency warning above.
maxItemsintegerPer query. 0 = unlimited, which means the whole 100k+ feed.
includeDescriptionbooleanOff gives a much smaller dataset.
incrementalbooleanOnly listings not seen in previous runs.
proxyConfigurationobjectDatacenter is enough — the feed is published openly.

Known limits

  • Filters are client-side. The feed takes no query parameters, so keyword, category, seniority and salary filters are applied while pages stream in. A narrow filter reads many pages to fill maxItems. That is expected behaviour, not an error, and RUN_COVERAGE records it.
  • Currencies and periods are mixed. salaryMin compares raw numbers without conversion. Filter on salary.currency and salary.period yourself if you need a like-for-like comparison.
  • Salary is present on roughly half of listings. A null salary.min usually means the advertiser disclosed nothing, not a parse failure.
  • No numeric job id. Himalayas keys listings by URL slug, so source_job_id is company-slug/job-slug. It is stable, which is what deduplication needs.

Sister Actors

ActorCovers
SEEK Jobs ScraperAustralia, New Zealand
JobStreet & JobsDB Jobs ScraperIndonesia, Malaysia, Singapore, Philippines, Thailand, Hong Kong
Remote OK Jobs ScraperRemote OK's public feed — read its README first, the feed has known quality problems

Local development

pip install -r requirements.txt
python test_local.py --max 20 --out sample_output.json
python test_local.py engineer --seniority Senior --salary-min 100000 --max 10

sample_output.json in this folder is real output from a live run, kept so the schema can be reviewed without running anything.