DEV Community

earnnova-dev
earnnova-dev

Posted on

The Himalayas Remote Jobs API: A Free, No-Auth Endpoint with Structured Salary Data (120k+ Listings)

Himalayas is one of the largest remote-job feeds out there, and it ships a free, public, no-auth JSON API that most people never find. If you are building a job board, a careers page, an AI agent that needs live job-market data, or a comp-intel dashboard, this is the cleanest no-key way to get structured remote-job data with real salary fields.

I run the Remote Jobs API and Himalayas is my #2 biggest source (~132k live listings at the time of writing). I use the raw feed under the hood, so I can show you exactly what the endpoints return and how to page through them without writing a scraper.

The two endpoints

Browse the full feed:

GET https://himalayas.app/jobs/api?limit=20&cursor=<nextCursor>
Enter fullscreen mode Exit fullscreen mode

Search with filters:

GET https://himalayas.app/jobs/api/search?keyword=engineer&country=Norway&limit=20
Enter fullscreen mode Exit fullscreen mode

Both return JSON. No API key, no Authorization header, no signup.

What a job looks like

Every job object is richly structured. A single browse record (real, from the live API) carries:

  • title, excerpt, description
  • companyName, companySlug, companyLogo
  • employmentType (Full Time / Part Time / Contract)
  • minSalary, maxSalary, salaryPeriod, currency — actual numbers, not "competitive"
  • seniority (array: Mid-level, Senior, ...)
  • locationRestrictions (array of countries)
  • timezoneRestrictions (array of UTC offsets)
  • categories, parentCategories
  • pubDate, expiryDate
  • applicationLink, guid

The salary block is the part that makes this feed unusually useful. Most job boards bury salary or omit it entirely. Himalayas gives you minSalary / maxSalary / salaryPeriod / currency as discrete fields you can sort and filter on directly.

Pagination: use the cursor, skip the offset

The feed supports offset paging, but the API docs explicitly say cursor pagination is now the preferred way. Each response includes a nextCursor; pass it back as ?cursor= and you get the next page without ever seeing a job twice. The offset parameter is deprecated and will be removed, so if you are building this today, build on the cursor.

GET /jobs/api?limit=20            -> nextCursor: MjAyNi0xMC0...
GET /jobs/api?limit=20&cursor=MjAyNi0xMC0...
Enter fullscreen mode Exit fullscreen mode

For large backfills, this is materially faster and idempotent in a way offset paging is not.

Search filters that actually matter

The search endpoint accepts keyword, country, seniority, employment_type, timezone, and company_slug. The country filter is the one that surprises people — you can pull "all remote engineering roles in Norway" as a single call and get a clean, countable result set (3,400+ at the time of writing) with no scraping.

Why I point people here

If you want one source that combines breadth (120k+ live listings), structured salary, and zero friction (no key), Himalayas is the default. The one caveat: it is a single provider, so if your product depends on it as the only source, you should wire in a fallback — which is exactly why I aggregate 16 sources in the Remote Jobs API and expose them under one schema, one call. But as a building block on its own, the raw Himalayas API is the easiest keyless remote-job data source I have found.


Built this on the Remote Jobs API: remote-jobs-api.tten.no (keyless, 16 sources, one schema, self-hostable, MIT).

Top comments (0)