BYTETOOLS

Himalayas API

Free remote job API with no key: nearly 99,000 listings with salary ranges, required timezones, seniority and company profiles. Tested curl example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Himalayas API?

Himalayas provides a free, key-free API for remote job listings. It exposes a large database — nearly 99,000 roles at the time of testing — with salary ranges, the timezones a role requires overlap with, seniority level, category tags and linked company profiles.

Remote job data is harder than it looks, because "remote" alone is not enough information: a role may be remote but require US working hours, or be restricted to specific countries for tax and employment reasons. Himalayas models this explicitly with timezone and location-restriction fields, which is what separates it from a generic job feed and makes it genuinely usable for matching.

Salary data is the other differentiator. A meaningful share of listings carry structured minimum and maximum salary figures with a currency, rather than the free-text "competitive salary" that makes most job feeds useless for analysis. The API also returns a `totalCount` alongside `offset` and `limit`, so you know the size of the result set before paging. Note the `comments` field in the response, which the maintainers use to announce schema changes — worth logging.

Quick facts

Base URL
https://himalayas.app/jobs/api
Authentication
No API key or account. Himalayas asks for attribution and that application links point back to the original listing.
Rate limit
No published hard limit; `limit` caps the page size. Cache rather than re-fetching the same pages.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Himalayas API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch one remote job listing

GET https://himalayas.app/jobs/api?limit=1

curl
curl 'https://himalayas.app/jobs/api?limit=1'
JavaScript (fetch)
const res = await fetch("https://himalayas.app/jobs/api?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://himalayas.app/jobs/api?limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "comments": "13/03/2026: The API has been updated to include the companySlug field in the response.",
  "updatedAt": 1787296573,
  "offset": 0,
  "limit": 1,
  "totalCount": 98920,
  "jobs": [
    {
      "title": "Head of Operations - DTC Ecommerce (Remote, UK-hours overlap)",
      "excerpt": "About the roleOur client is looking for a highly hands-on Head of Operations to turn the founders’ vision into a scalable operating system.",
      "companyName": "Paired",
      "companySlug": "paired-so",
      "companyLogo": "https://cdn-images.himalayas.app/1fxfh3e5wgbqa5idmme30rmo8kkk",
      "employmentType": "Full Time",
      "minSalary": null,
      "maxSalary": null,
      "salaryPeriod": "annual",
      "seniority": [
        "Director"
      ],
      "currency": null,
      "locationRestrictions": [
        "Brazil"
      ],
      "timezoneRestrictions": [
        -5,
        -4,
        -3,
        -2
      ],
      "categories": [
        "Head-of-Operations",
        "DTC-ECommerce-Operations-Director",
        "eCommerce-Operations-Manager",
        "Operations-Strategy",
        "DTC-Brand-Operations",
        "ECommerce-Operations-Director",
        "Director-of-B2C-Operations",
        "Head-Of-ECommerce",
        "D2C-ECommerce-Director"
      ],
      "parentCategories": [
        "Operations"
      ],
      "description": "<h3>About the role</h3><p>Our client is looking for a highly hands-on <strong>Head of Operations</strong> to turn the founders’ vision into a scalable operating system. This person will own the company’s operating cadence, OKRs, physical

Parameters

ParameterTypeRequiredDescription
limitqueryOptionalResults per page. Keep it modest — descriptions are long. 1
offsetqueryOptionalPagination offset, used with `totalCount` to know when to stop. 0
(companies)path segmentOptionalA companion `/companies/api` endpoint returns employer profiles rather than roles.

Response fields

totalCountinteger
Total listings available — nearly 99,000 at the time of testing. Use it with `offset` to plan paging.
offset / limitinteger
Pagination state, echoed back.
updatedAtinteger
Unix timestamp for when the feed was last refreshed.
commentsstring
Maintainer announcements about schema changes. Log this rather than ignoring it — it is how breaking changes are communicated.
jobs[].title / companyNamestring
Role title and employer.
jobs[].excerpt / descriptionstring
Short summary and full description. The description carries HTML — sanitise it.
jobs[].minSalary / maxSalarynumber
Structured salary range where the employer published one, with a currency field. Frequently null.
jobs[].timezones / locationRestrictionsarray
Required timezone overlap and any country restrictions — the fields that make "remote" actually actionable.
jobs[].seniority / categoriesarray
Experience level and role categories for filtering.

What you can build with the Himalayas API

  • Build a remote job board filtered by timezone compatibility
  • Analyse remote salary ranges by role, seniority or region
  • Alert candidates when roles matching their timezone appear
  • Research which companies hire remotely in which countries

Common errors and how to fix them

Empty jobs array

The offset exceeded `totalCount`.

Fix: Read `totalCount` from the first response and stop paging when offset passes it.

Null salary fields

Not an error — many employers do not publish a range.

Fix: Check for null before formatting. Do not render a zero or an empty range as if it were real data.

Large responses

Full descriptions are long.

Fix: Keep `limit` modest. Fetching hundreds of listings with full HTML descriptions in one request is slow and wasteful.

Himalayas API — frequently asked questions

Is the Himalayas jobs API free?

Yes, free with no API key or account. Himalayas asks for attribution and that your application links back to the original listing rather than re-hosting it.

Does it include salary information?

Yes, a meaningful share of listings carry structured `minSalary` and `maxSalary` values with a currency, rather than free-text "competitive salary". Many are still null, so check before formatting.

What are the timezone fields for?

They record which timezones a role requires overlap with, and which countries it is restricted to. That is what makes the data actionable — a role can be remote and still require US working hours or exclude your country for employment-law reasons.

How many jobs are available?

Just under 99,000 at the time of testing, reported in the `totalCount` field on every response. Use it alongside `offset` to plan paging rather than fetching until you get an empty page.

Tools that pair with this API

Himalayas is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.