Himalayas

App · Jobs & Hiring · 4 actions

Search Himalayas, the remote-only job board, through its free public API. One search covers everything the board knows about a job: the words in it, the country you can work from, whether it is open worldwide, the timezone it expects you in, the level, the employment type, the employer and what it pays. Read the board in posting order to copy it somewhere or to run a daily digest that never repeats itself, pull one job in full from its link, and see who is hiring. Every description arrives as plain text rather than HTML, and every job carries its pay written out and the link to apply. No account or API key is required.

Actions

ActionWhat it does
Get a jobFetch one job by its Himalayas link, with the whole description both as plain text and as the original HTML.
List companies hiringList the companies hiring on Himalayas, most open roles first, each with the short name the search's company filter takes and a link to its newest posting.
List the newest jobsRead the board in the order it was posted, newest first, with no ranking and no filtering.
Search jobsSearch every remote job on Himalayas, narrowed by any combination of what the board knows about a job: keywords, the country you can work from, whether it is open worldwide, the timezone it expects you in, experience level, employment type, employer, what it pays and how recently it was posted.

Get a job

Fetch one job by its Himalayas link, with the whole description both as plain text and as the original HTML. This is the step for a link that arrived from somewhere else, in a message or a spreadsheet. Himalayas publishes only what is open right now, so a role that has been filled or has expired is reported as not found.

Inputs

Job linkjobtextRequired
The job's page on Himalayas, which every other action returns as both 'url' and 'id', so either can be passed straight in. It looks like https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer. This field has no example to click because a link only works while the job is open: take one from a listing step in the same run.
Show in the runoutput_detailtext
How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, who may apply, the pay and how long ago it was posted; 'Every field' adds the experience level, the timezones, the categories and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each.One of: summary (One line each), full (Every field, over several lines each). Default: summary.

Outputs

attributiontext
The credit Himalayas asks for when these results are published.
company_slugtext
The company the job was found under.
description_htmltext
The description as Himalayas publishes it, HTML and all.
jobobject
output_detailtext
Which of the two display choices the step ran with, 'summary' or 'full'.
updated_attext
When Himalayas last rebuilt its data, as ISO-8601 UTC.
Example output
{
  "attribution": "Job data from Himalayas (https://himalayas.app). Himalayas asks that anything published from this API links back to himalayas.app and credits Himalayas as the source. Every job carries its own 'url' for that link.",
  "company_slug": "evaboot",
  "description_html": "<p>Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.</p>",
  "job": {
    "age_days": 3,
    "categories": [
      "Python-Engineer",
      "Agentic-AI-Engineer",
      "AI-Engineer"
    ],
    "company_logo": "https://cdn-images.himalayas.app/2bjck1nhbrb4s7i49b7y1srfn0qj",
    "company_name": "Evaboot",
    "company_slug": "evaboot",
    "description": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.\n\nYou will own the agentic pipelines end to end:\n- Design and ship Python services that call LLMs in a loop\n- Keep the extraction accurate as LinkedIn changes underneath us\n- Work directly with the founders on what to build next",
    "description_truncated": false,
    "employment_type": "Full Time",
    "excerpt": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.",
    "expires_at_iso": "2026-09-30T18:29:47Z",
    "id": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
    "locations": [],
    "max_salary": 120000,
    "min_salary": 70000,
    "parent_categories": [
      "Developer"
    ],
    "posted_at": 1788188988,
    "posted_at_iso": "2026-08-31T18:29:48Z",
    "salary": "USD 70,000 - 120,000 a year",
    "salary_currency": "USD",
    "salary_period": "annual",
    "seniority": [
      "Mid-level"
    ],
    "timezones": [
      "UTC-05:00",
      "UTC+00:00",
      "UTC+01:00"
    ],
    "title": "Agentic Python Engineer",
    "url": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
    "worldwide": true
  },
  "output_detail": "summary",
  "updated_at": "2026-09-03T19:36:51Z"
}

List companies hiring

List the companies hiring on Himalayas, most open roles first, each with the short name the search's company filter takes and a link to its newest posting. Himalayas publishes no company index, so this counts the companies across the hundred newest jobs that match: use it to see who is hiring rather than what is open.

Inputs

Keywordskeywordstext
What the job should be about, in your own words. Himalayas runs its own search over the title, the company and the description and ranks the results. Leave empty to see everything the other filters allow.
Country you can work fromcountrytext
Only return jobs somebody living in this country may take. That includes jobs open worldwide, because those are open to this country too. Leave empty to see the whole board.One of: AF (Afghanistan), AX (Åland Islands), AL (Albania), DZ (Algeria), AS (American Samoa), AD (Andorra), AO (Angola), AI (Anguilla), AQ (Antarctica), AG (Antigua and Barbuda), and 239 more.
Number of companiesmax_resultsnumber
How many companies to return, most open roles first, from 1 to 200. Defaults to 50.From 1 to 200. Default: 50.
Show in the runoutput_detailtext
How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, who may apply, the pay and how long ago it was posted; 'Every field' adds the experience level, the timezones, the categories and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each.One of: summary (One line each), full (Every field, over several lines each). Default: summary.

Outputs

attributiontext
The credit Himalayas asks for when these results are published.
companieslist
company_countnumber
How many distinct companies were found.
has_moretrue/false
Whether Himalayas had further pages when the count stopped.
keywordstext
The keywords that were searched.
output_detailtext
Which of the two display choices the step ran with, 'summary' or 'full'.
result_countnumber
How many rows are returned.
scanned_countnumber
How many jobs were counted.
scanned_pagesnumber
How many pages that took.
updated_attext
When Himalayas last rebuilt its data, as ISO-8601 UTC.
Example output
{
  "attribution": "Job data from Himalayas (https://himalayas.app). Himalayas asks that anything published from this API links back to himalayas.app and credits Himalayas as the source. Every job carries its own 'url' for that link.",
  "companies": [
    {
      "company_logo": "https://cdn-images.himalayas.app/micro1",
      "company_name": "micro1",
      "company_slug": "micro1",
      "job_count": 3,
      "latest_job_title": "GitHub Contributor",
      "latest_job_url": "https://himalayas.app/companies/micro1/jobs/github-contributor",
      "latest_posted_at_iso": "2026-09-03T19:30:14Z",
      "worldwide_count": 3
    }
  ],
  "company_count": 68,
  "has_more": true,
  "keywords": "",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 100,
  "scanned_pages": 5,
  "updated_at": "2026-09-03T19:36:51Z"
}

List the newest jobs

Read the board in the order it was posted, newest first, with no ranking and no filtering. This is the feed itself rather than a search of it, which makes it the step for the two things a search cannot do. To copy the board into a sheet or a database, feed each run's 'next_cursor' into the next run and it carries on exactly where the last one stopped, never repeating a job. For a scheduled digest, give it the moment the last run finished and it returns only what has appeared since, so an alert never repeats itself.

Inputs

Posted sincesincedate and time
Only return jobs posted after this date and time. Leave empty for the newest jobs however old. This is what turns the step into a digest: give it the time the last run finished and nothing repeats. A date on its own means midnight, a time with no time zone is read as UTC, which is what the board posts in, and a job's own 'posted_at' number works here too.
Continue fromcursortext
Leave empty to start at the newest job. To read further down the board, pass the 'next_cursor' from a previous run of this step; it picks up exactly where that one stopped. An empty 'next_cursor' means the end of the board has been reached.
Number of jobsmax_resultsnumber
How many jobs to return, from 1 to 100. Himalayas serves twenty at a time, so a larger number is a slower step. Defaults to 25.From 1 to 100. Default: 25.
Description lengthdescription_charactersnumber
How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles, pay and links. Defaults to 600.From 0 to 20000. Default: 600.
Show in the runoutput_detailtext
How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, who may apply, the pay and how long ago it was posted; 'Every field' adds the experience level, the timezones, the categories and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each.One of: summary (One line each), full (Every field, over several lines each). Default: summary.

Outputs

attributiontext
The credit Himalayas asks for when these results are published.
has_moretrue/false
Whether the feed had further pages when the read stopped.
jobslist
next_cursortext
Where the feed got to. Feed this back into 'Continue from' to read the next stretch; empty means the end of the feed.
output_detailtext
Which of the two display choices the step ran with, 'summary' or 'full'.
result_countnumber
How many jobs are returned.
scanned_countnumber
How many jobs were read from the feed.
scanned_pagesnumber
How many pages that took.
sincetext
The cut-off that was used, as ISO-8601 UTC, empty when the whole feed was read.
total_countnumber
How many jobs are on the whole board.
truncatedtrue/false
Whether the limit was reached with the feed still running, so there may be more.
updated_attext
When Himalayas last rebuilt its data, as ISO-8601 UTC.
Example output
{
  "attribution": "Job data from Himalayas (https://himalayas.app). Himalayas asks that anything published from this API links back to himalayas.app and credits Himalayas as the source. Every job carries its own 'url' for that link.",
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "categories": [
        "Python-Engineer",
        "Agentic-AI-Engineer",
        "AI-Engineer"
      ],
      "company_logo": "https://cdn-images.himalayas.app/2bjck1nhbrb4s7i49b7y1srfn0qj",
      "company_name": "Evaboot",
      "company_slug": "evaboot",
      "description": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.\n\nYou will own the agentic pipelines end to end:\n- Design and ship Python services that call LLMs in a loop\n- Keep the extraction accurate as LinkedIn changes underneath us\n- Work directly with the founders on what to build next",
      "description_truncated": false,
      "employment_type": "Full Time",
      "excerpt": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.",
      "expires_at_iso": "2026-09-30T18:29:47Z",
      "id": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
      "locations": [],
      "max_salary": 120000,
      "min_salary": 70000,
      "parent_categories": [
        "Developer"
      ],
      "posted_at": 1788188988,
      "posted_at_iso": "2026-08-31T18:29:48Z",
      "salary": "USD 70,000 - 120,000 a year",
      "salary_currency": "USD",
      "salary_period": "annual",
      "seniority": [
        "Mid-level"
      ],
      "timezones": [
        "UTC-05:00",
        "UTC+00:00",
        "UTC+01:00"
      ],
      "title": "Agentic Python Engineer",
      "url": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
      "worldwide": true
    }
  ],
  "next_cursor": "MjAyNi0wOS0wM1QxODowNzoyNC4zODM5NzZafDIxNDg2MzU",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 20,
  "scanned_pages": 1,
  "since": "",
  "total_count": 101642,
  "truncated": true,
  "updated_at": "2026-09-03T19:36:51Z"
}

Search jobs

Search every remote job on Himalayas, narrowed by any combination of what the board knows about a job: keywords, the country you can work from, whether it is open worldwide, the timezone it expects you in, experience level, employment type, employer, what it pays and how recently it was posted. Leave every field empty to browse the whole board in Himalayas' own order.

Inputs

Keywordskeywordstext
What the job should be about, in your own words. Himalayas runs its own search over the title, the company and the description and ranks the results. Leave empty to see everything the other filters allow.
Country you can work fromcountrytext
Only return jobs somebody living in this country may take. That includes jobs open worldwide, because those are open to this country too. Leave empty to see the whole board.One of: AF (Afghanistan), AX (Åland Islands), AL (Albania), DZ (Algeria), AS (American Samoa), AD (Andorra), AO (Angola), AI (Anguilla), AQ (Antarctica), AG (Antigua and Barbuda), and 239 more.
Eligibilityeligibilitytext
A remote job either names the countries a candidate has to live in, or is open worldwide with no restriction at all. Leave this empty for both kinds, which is usually what you want. 'Only jobs that name a country' narrows the country above rather than replacing it, so it needs a country chosen as well.One of: worldwide (Only jobs open worldwide), country (Only jobs that name a country).
Timezone you work intimezone_offsettext
Only return jobs whose working hours overlap this UTC offset. This is the other half of whether a remote job is workable: a role open to your country can still expect you online at three in the morning. A job that states no timezone requirement is not returned when this is set, so leave it empty unless the hours matter. A job's own 'timezones' values, such as 'UTC+05:30', can be passed straight in.One of: -12 (UTC-12:00), -11 (UTC-11:00), -10 (UTC-10:00), -9.5 (UTC-09:30), -9 (UTC-09:00), -8 (UTC-08:00), -7 (UTC-07:00), -6 (UTC-06:00), -5 (UTC-05:00), -4 (UTC-04:00), and 28 more.
Experience levelsenioritylist
Only return jobs at one of these levels. A job can accept more than one, so a posting open to both mid-level and senior candidates appears under either. Choose none for every level.One or more of: Entry-level (Entry level), Mid-level (Mid level), Senior, Manager, Director, Executive.
Employment typeemployment_typelist
Only return jobs of these kinds. 'Contract or freelance' is one category on this board and covers both. Choose none for every kind.One or more of: Full Time, Part Time, Contractor (Contract or freelance), Temporary, Intern (Internship), Volunteer, Other.
Companycompanytext
Only return jobs at this employer. The list names the companies posting right now, and any other can be typed in: Himalayas knows a company by a short name such as 'servicetitan', which is what every job returns as its 'company_slug'. Typing the company's name works too. Leave empty for every company.
Pays at least (a year)min_salarynumber
Only return jobs whose published pay reaches this figure over a year. An hourly, weekly, fortnightly or monthly rate is converted to a year first, so an advertised 100 an hour counts as 208,000. The comparison is made in each job's own currency and no exchange rate is applied, because the API publishes none. Roughly one job in three publishes what it pays, and setting any figure here leaves out the rest, so leave it empty unless pay is the point.From 0 to 10000000.
Posted in the last (days)posted_within_daysnumber
Only return jobs posted this many days ago or less. Leave empty for everything, however old.From 1 to 365.
Ordersorttext
What to put at the top. 'Best match' is Himalayas' own ranking against the keywords and filters. 'Newest first' and 'Highest pay first' both order the jobs this step returns, and jobs that do not say what they pay sort last; pair 'Highest pay first' with a pay floor to leave those out altogether.One of: relevant (Best match), recent (Newest first), salaryDesc (Highest pay first). Default: relevant.
Number of jobsmax_resultsnumber
How many jobs to return, from 1 to 100. Himalayas serves twenty at a time, so a larger number is a slower step. Defaults to 25.From 1 to 100. Default: 25.
Description lengthdescription_charactersnumber
How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles, pay and links. Defaults to 600.From 0 to 20000. Default: 600.
Show in the runoutput_detailtext
How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, who may apply, the pay and how long ago it was posted; 'Every field' adds the experience level, the timezones, the categories and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each.One of: summary (One line each), full (Every field, over several lines each). Default: summary.

Outputs

attributiontext
The credit Himalayas asks for when these results are published.
companytext
The company slug that was filtered on, empty for every company.
countrytext
The country that was filtered on, empty for the whole board.
has_moretrue/false
Whether Himalayas had further pages when the scan stopped.
jobslist
keywordstext
The keywords that were searched.
output_detailtext
Which of the two display choices the step ran with, 'summary' or 'full'.
result_countnumber
How many jobs are returned.
scanned_countnumber
How many jobs were actually read to fill this result.
scanned_pagesnumber
How many pages that took.
sorttext
The order that was asked for.
timezonetext
The offset that was filtered on, e.g. 'UTC+05:30', empty for every timezone.
total_countnumber
How many jobs Himalayas says match the filters, across every page. It counts on its side and pages before it filters, so a page can hand back fewer rows than this suggests; it caps at 5,000 for a broad search.
truncatedtrue/false
Whether the limit was reached with matches still unread, so there may be more.
updated_attext
When Himalayas last rebuilt its data, as ISO-8601 UTC.
Example output
{
  "attribution": "Job data from Himalayas (https://himalayas.app). Himalayas asks that anything published from this API links back to himalayas.app and credits Himalayas as the source. Every job carries its own 'url' for that link.",
  "company": "",
  "country": "DE",
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "categories": [
        "Python-Engineer",
        "Agentic-AI-Engineer",
        "AI-Engineer"
      ],
      "company_logo": "https://cdn-images.himalayas.app/2bjck1nhbrb4s7i49b7y1srfn0qj",
      "company_name": "Evaboot",
      "company_slug": "evaboot",
      "description": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.\n\nYou will own the agentic pipelines end to end:\n- Design and ship Python services that call LLMs in a loop\n- Keep the extraction accurate as LinkedIn changes underneath us\n- Work directly with the founders on what to build next",
      "description_truncated": false,
      "employment_type": "Full Time",
      "excerpt": "Evaboot turns LinkedIn Sales Navigator searches into clean, verified prospecting lists.",
      "expires_at_iso": "2026-09-30T18:29:47Z",
      "id": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
      "locations": [],
      "max_salary": 120000,
      "min_salary": 70000,
      "parent_categories": [
        "Developer"
      ],
      "posted_at": 1788188988,
      "posted_at_iso": "2026-08-31T18:29:48Z",
      "salary": "USD 70,000 - 120,000 a year",
      "salary_currency": "USD",
      "salary_period": "annual",
      "seniority": [
        "Mid-level"
      ],
      "timezones": [
        "UTC-05:00",
        "UTC+00:00",
        "UTC+01:00"
      ],
      "title": "Agentic Python Engineer",
      "url": "https://himalayas.app/companies/evaboot/jobs/agentic-python-engineer",
      "worldwide": true
    }
  ],
  "keywords": "python engineer",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 20,
  "scanned_pages": 1,
  "sort": "relevant",
  "timezone": "",
  "total_count": 630,
  "truncated": true,
  "updated_at": "2026-09-03T19:36:51Z"
}

On this page