Current as of Oct 16, 2026
Remote Jobs API
Browse all remote jobs with pagination or search by keyword, country, company slug, seniority, employment type, and timezone. Free public JSON API with no key required, plus free API keys for higher rate limits.
No API key is required. Every endpoint works without one, so you can start right away. For higher rate limits, add a free API key in the Authorization header from your server:
curl https://himalayas.app/jobs/api \
-H "Authorization: Bearer YOUR_API_KEY"With a key, your account gets its own allowance of 60 requests per minute and 10,000 per day, shared across your keys, plus a daily usage count. Responses served from our cache are free and do not count. Requests without a key share one public allowance with every other caller. Use of the API is covered by our API terms.
On this page
Fill your remote job board with listings from Himalayas
Our public JSON APIs can be used to backfill other remote job boards, power job search experiences, populate internal dashboards, or feed AI agents and automation workflows.
Anyone can use the interface, but please link back to the URL found on Himalayas AND mention Himalayas as the original source. Please do not submit Himalayas jobs to other job boards or aggregators; see our API terms.
Remote Jobs API endpoints
Himalayas currently offers two public JSON endpoints for jobs:
| Endpoint | Use it for |
|---|---|
| GET /jobs/api | The full unfiltered jobs feed, paginated with cursor and limit. |
| GET /jobs/api/search | Filtered remote job search by keyword, country, worldwide availability, seniority, employment type, company slug, timezone, sort order, and page. |
Browse all jobs
Use the browse endpoint when you want the full remote jobs feed and plan to paginate through all available jobs.
https://himalayas.app/jobs/api?limit=20The browse endpoint supports these query parameters:
| Parameter | Description |
|---|---|
| cursor | Your position in the feed. Leave it off the first request, then pass back the nextCursor value from each response. This is the preferred way to paginate. |
| limit | The number of jobs to retrieve (max 20). |
| offset | The number of jobs to skip. Deprecated, and it will be removed in a future release. Use cursor instead. |
Search jobs
Use the search endpoint when you want filtered job results without crawling the full feed locally.
https://himalayas.app/jobs/api/search?q=react%20engineerThe search endpoint accepts these query parameters:
| Parameter | Description |
|---|---|
| q | Free-text query, e.g. 'react engineer'. |
| country | Country filter using ISO alpha-2, common country names, slugs, or abbreviations. |
| worldwide | Limit to worldwide-friendly jobs. |
| exclude_worldwide | Exclude worldwide matches when using a country filter. |
| seniority | One or more of Entry-level, Mid-level, Senior, Manager, Director, Executive. |
| employment_type | One or more of Full Time, Part Time, Contractor, Temporary, Intern, Volunteer, Other. |
| company | One or more canonical company slugs, e.g. 'linear' or 'linear,vercel'. |
| timezone | Timezone filter such as '-5', 'UTC-5', or 'UTC+05:30'. |
| sort | One of 'relevant', 'recent', 'salaryAsc', 'salaryDesc', 'nameAToZ', 'nameZToA', or 'jobs'. |
| page | 1-based results page. |
Search API examples:
https://himalayas.app/jobs/api/search?country=US&seniority=Senior&sort=recent
https://himalayas.app/jobs/api/search?company=linear&employment_type=Full%20Time
https://himalayas.app/jobs/api/search?q=python&sort=salaryDesc&page=2Shared response fields
Both the browse and search endpoints return the same JSON job object shape:
| Field | Description |
|---|---|
| title | Job title. |
| excerpt | First few sentences of the job description. |
| companyName | Name of the company that is hiring. |
| companySlug | Canonical company slug for filtering and stable lookups, e.g. 'linear'. |
| companyLogo | Link to the company's logo. |
| employmentType | One of 'Full Time', 'Part Time', 'Contractor', 'Temporary', 'Intern', 'Volunteer', 'Other'. |
| locationRestrictions | Optional array. Countries where candidates must be located. |
| timezoneRestriction | Optional array. Time zones (UTC) where candidates must be located. |
| category | Array. Job categories. |
| minSalary | Number or null. Minimum salary of the job. |
| maxSalary | Number or null. Maximum salary of the job. |
| salaryPeriod | Pay period for minSalary and maxSalary: hourly, weekly, fortnightly, monthly, or annual (default). |
| currency | Currency of the job, e.g. USD, EUR, GBP, INR. |
| parentCategories | Array. Job parent categories. |
| description | The full HTML of the job description. |
| pubDate | Timestamp of when the job was published. |
| expiryDate | Timestamp of when the job will expire. |
| applicationLink | Link to apply for the position. |
| guid | Unique identifier for the job. |
Frequently asked questions
How should I filter by company?
Use the companySlug returned in the response and pass it back to the search endpoint via the company query parameter. This is the canonical filter value, and it is more reliable than guessing from companyName.
What are the maximum number of records returned per request?
To keep the browse response small, we return a maximum of 20 records per request from /jobs/api. To retrieve records beyond the first 20, pass the nextCursor value from each response back as cursor on the next request, and repeat until a response has no nextCursor. The search endpoint uses page-based pagination via the page parameter.
Is there a maximum number of requests?
Yes. Requests with a free API key get higher limits: 60 per minute and 10,000 per UTC day for your account, shared across its keys. Requests without a key share one public allowance with every other caller. Responses served from our cache are free and do not count. Going over returns a 429; with a key, it includes a Retry-After header in seconds and X-RateLimit-* headers. Your usage is on the API keys page.
The data refreshes daily, so there is no benefit to polling more often. If you need a higher allowance, email hi@himalayas.app.
Do I need an API key?
No. Both endpoints work without a key or sign-up. We recommend a free API key for anything beyond a quick test: it gives you higher rate limits and a daily usage count on the API keys page. Send it as Authorization: Bearer YOUR_API_KEY. Responses served from our cache are free and do not count. An invalid, revoked or suspended key returns 401 when a request reaches our servers.
Is there an OpenAPI specification?
Yes. Both endpoints are described in our OpenAPI 3.1 specification at https://himalayas.app/docs/openapi.json. You can import it into Postman or any OpenAPI tool.
Where can I find code examples?
Runnable code examples for the Remote Jobs API live on GitHub at github.com/Himalayas-App/remote-jobs-api. The repository covers both endpoints in curl, Python, Node.js, TypeScript, PHP, Go, and Ruby, and includes the OpenAPI 3.1 specification, pagination recipes, and error handling.
The RSS feed has its own repository at github.com/Himalayas-App/remote-jobs-rss-feed, and the MCP server at github.com/Himalayas-App/himalayas-mcp.
Can I call the API from browser JavaScript?
No. The API does not send Access-Control-Allow-Origin headers, so a fetch() made directly from a browser is blocked by the same-origin policy. Call the API from your backend, a serverless function, or a build step, and serve the results to your frontend from your own origin. This also lets you cache the daily-refreshed data instead of hitting the rate limit from every visitor's browser.
If you only want live job listings on a web page with no backend, use the embeddable widget instead.
What is the difference between your APIs, RSS feed, and MCP server?
The browse API returns the full jobs feed with pagination. The search API returns filtered job results. The RSS feed shows the 100 most recent jobs in XML, while the MCP server provides real-time search and richer AI-native tooling for jobs, companies, salaries, and more.
Other ways to access remote job data
Beyond the JSON API, Himalayas offers several other integration methods:
| Option | Best for |
|---|---|
| Remote Jobs MCP Server | Real-time job search, salary benchmarks, company research, and application tracking via any AI assistant that supports MCP, including Claude, ChatGPT, Cursor, Windsurf, Grok Bot, Hermes, and OpenClaw. No API key required. |
| RSS Feed | The 100 most recent job postings in XML format. Best for feed readers and monitoring. |
| Embeddable Widget | Add live remote job listings to any website with one line of code. |
| Remote Jobs API on GitHub | Open-source code examples in seven languages, the OpenAPI 3.1 specification, and integration guides. |
Get matched with your dream remote job
Sign up now and join over 250,000+ remote workers who receive personalized job alerts, curated job matches, and more for free!
