Himalayas Jobs History avatar

Himalayas Jobs History

Pricing

$4.00 / 1,000 results

Go to Apify Store
Himalayas Jobs History

Himalayas Jobs History

Every remote job on himalayas.app, kept after it expires — with the employer's real website domain (not a board slug), salary band, and when and why each posting closed (filled early vs ran to expiry). A continuously tailed archive served at database speed, never Cloudflare-blocked.

Pricing

$4.00 / 1,000 results

Rating

0.0

(0)

Developer

Hyperbach

Hyperbach

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Not just another Himalayas scraper. Every remote job comes with the company behind it — resolved to its real website domain, not a board slug — plus the one thing a live scrape can never give you: when and why each posting closed. A continuously tailed archive of himalayas.app, served at database speed.

Why this archive, not a live scrape

  • The company behind every job — resolved to its real domain. Not himalayas.app/companies/stripe like every other Himalayas scraper (we ran all 13 and checked — none of them do this): the employer's actual website (stripe.com), name, and logo. Turn a hiring signal into a company you can act on — link postings to companies, enrich a CRM, or dedupe by employer.
  • Postings that are gone, with the reason. status=gone returns removed listings and gone_reason says whether they were filled early or ran to expiry — the part no live scraper can give you, because it only sees what's open right now.
  • Change history. Salary and deadline moves are recorded as dated transitions rather than overwritten, so you can chart how an advertised band drifted over months.
  • Incremental by design. Leave postedSince empty and each run returns only the postings that appeared since the last one — the Actor tracks its own cursor.
  • Database speed, and unblockable. You read our maintained archive, not himalayas.app, so a run answers as a query and can never be rate-limited or Cloudflare-challenged.

Who it's for

  • Sales & lead-gen teams — every job resolves to the employer's real domain — a hiring signal becomes a company + website you can prospect, not just a name.
  • Recruiters & talent researchers — time-to-fill by role, repost patterns, which employers churn the same position.
  • Compensation analysts — how advertised salary bands move over time across roles and regions.
  • Job-board & SaaS builders — a clean, deduplicated remote-jobs feed with employer identity and an archive envelope to build on.

Quick start

Basic — newest postings

{
"maxItems": 10
}

Filtered

{
"keyword": "engineer",
"salaryMin": 120000,
"remoteOnly": true,
"maxItems": 50
}

Notification mode — only what appeared since the last run

{
"postedSince": ""
}

Output

One record per posting:

fieldmeaning
job_idStable unique key for the posting, <source>:<id>. Deduplicate across runs and join to your own data on this.
urlCanonical posting URL.
titleJob title.
companyEmployer name as the board lists it.
company_domainThe employer's own web domain, resolved from the posting.
company_slugThe board's identifier for the employer.
company_logo_urlEmployer logo, when the board provides one.
location_restrictionWhere the posting says the role may be based.
employment_typeFull time, contract, and so on, as declared by the employer.
categoriesCategory tags the board assigned to the posting.
descriptionFull posting description.
salary_minLower bound of the advertised band.
salary_maxUpper bound of the advertised band.
salary_currencyISO currency of the advertised band.
salary_unitPeriod the band refers to (e.g. YEAR, HOUR).
posted_atWhen the posting first appeared.
first_seen_atWhen our archive first captured it.
expires_atThe board's own expiry date, when it exposes one.
statuslive while listed, gone once removed.
gone_reasonfilled if removed before its expiry date, expired if it ran to term.
gone_atThe date the posting was first observed gone. Null while it is live. Naukri overwrites its expired list nightly, so this is only knowable to whoever was watching that day.
apply_urlWhere to apply for the role.
enrichedWhether salary, employment type and employer domain have been resolved yet — a posting is returned as soon as it is found, enriched or not.

Example record:

{
"job_id": "himalayas_jobs:companies/clera/jobs/founding-full-stack-ios-engineer",
"url": "https://himalayas.app/companies/clera/jobs/founding-full-stack-ios-engineer",
"title": "Founding Full-Stack iOS Engineer",
"company": "Clera",
"company_domain": "getclera.com",
"company_slug": "clera",
"company_logo_url": "",
"location_restriction": "United Kingdom",
"employment_type": "Full Time",
"categories": [
"Founding-Fullstack-Engineer",
"Founding-Software-Engineer",
"IOS-Engineer",
"IOS-Software-Engineer",
"Founding-CTO"
],
"description": "<h3>About the Role</h3><p>This is a founding engineering opportunity at a Y Combinator–backed consumer wearable startup operating at the intersection of biometrics, emotional intel …(truncated for display)",
"salary_min": 150000.0,
"salary_max": 150000.0,
"salary_currency": "USD",
"salary_unit": "YEAR",
"posted_at": "2026-08-02 05:17:00+00",
"first_seen_at": "2026-08-02 07:40:06.5383+00",
"expires_at": "2026-10-01 05:17:00+00",
"status": "live",
"gone_reason": null,
"gone_at": null,
"apply_url": "https://himalayas.app/companies/clera/jobs/founding-full-stack-ios-engineer",
"enriched": true
}

Pricing

$0.004 per result — pay only for the postings a run returns, with no start fee. The premium of the per-source archives: the only one carrying the employer's real website domain and a salary band and classified expiry history (filled vs expired), over the full himalayas.app board. Competing Himalayas scrapers run $1–3 per 1,000 with none of the three.

Usage patterns

  • Turn the feed into a company list — Every posting carries the employer's real domain, name and logo — filter and dedupe by company to get a live list of hiring companies with their websites, not just job rows.
  • What closed, and why — Set status=gone to study removals; gone_reason splits filled-early from ran-to-expiry.
  • Incremental sync — Leave postedSince empty; each run continues from the previous one's cursor — no duplicates, nothing skipped.
  • Salary drift — Pull a role over time and read salary_min/salary_max per observation to chart how the advertised band moved.

Input configuration

fieldtypedefaultwhat it does
keywordstringMatches job title or category.
companystringEmployer name as the board lists it. Partial matches work.
postedSincestringISO timestamp. Leave empty and the Actor remembers where it stopped, returning only new postings each run.
goneSincestringOnly postings observed dead at or after this ISO timestamp. The query this archive exists to answer.
statuslive / gone / any"live"'Gone' returns postings that have been removed, with why — the part no live scraper can give you.
locationstringSubstring match on the posting's location.
remoteOnlybooleanfalseOnly postings the employer marks as remote.
descriptionSearchstringSubstring match inside the job description.
excludeTitlestringDrop postings whose title contains this.
maxItemsinteger500Upper bound on results returned in a single run.
fullRefreshbooleanfalseBy default each run returns only what appeared since your last one, so a schedule never re-delivers the same page. Tick this to ignore that bookmark and re-pull the full result set for your filters — and it clears the stored cursor, so your next ordinary run starts clean.
salaryMinintegerMatches any posting whose advertised band reaches this figure. A $10-35/hr band matches a request for 35.
enrichedOnlybooleanfalseReturn only postings whose salary, employment type and description have been parsed. Off by default: an unenriched record still carries title, company, location and dates, and withholding it trades a real answer for a slower better one.

FAQ

How is this different from the other Himalayas scrapers?

They read the same public feed and return live listings with the company name only. This one adds two things none of them have: the employer's real website domain on every job, and expiry history (status=gone + gone_reason) for postings after they close.

I get no results.

Filters combine with AND. Loosen keyword or salaryMin, or set status=any to include gone postings.

Will I see the same job twice?

Not in notification mode — leave postedSince empty and each run continues where the last one stopped.

Is this live?

It is a continuously maintained archive: new postings appear within hours of going up, and closed ones stay with their disappearance recorded.

Integration

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('hyperbach/himalayas-jobs-history').call({"maxItems": 10});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('hyperbach/himalayas-jobs-history').call(run_input={'maxItems': 10})
items = client.dataset(run['defaultDatasetId']).list_items().items

CLI

$apify call hyperbach/himalayas-jobs-history --input '{"maxItems": 10}'

REST

curl -X POST "https://api.apify.com/v2/acts/hyperbach~himalayas-jobs-history/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' -d '{"maxItems": 10}'

Support

support@hyperbach.com

This page is generated from the Actor's schemas and a live sample — it cannot describe a field the Actor does not have.