Job data guides · Updated 2026-10-13

Hacker News Who is hiring as data: every job post as JSON

Each month Hacker News runs an "Ask HN: Who is hiring?" thread where companies post jobs as comments. There is no separate jobs API, but the thread is an ordinary story, so the free Hacker News API returns every post as JSON without a key.

Short answer: find the newest story by the account whoishiring with GET https://hn.algolia.com/api/v1/search_by_date?tags=story,author_whoishiring, then read https://hacker-news.firebaseio.com/v0/item/{id}.json. Its kids list holds the job posts. The October 2026 thread is item 49922569; on 2026-10-13 it had 310 top-level comments, and 261 of them were still visible.

Step by step

  1. Find the thread. The HN Search API call above returns the latest stories by whoishiring. In August, September and October 2026 there were two each month: "Who is hiring?" and "Who wants to be hired?". Pick the hit whose title starts with Ask HN: Who is hiring? and keep its objectID.
  2. Read the story from the official API: https://hacker-news.firebaseio.com/v0/item/49922569.json. The kids array holds the IDs of the top-level comments. Each top-level comment is one job post. Replies under a post are questions, not jobs.
  3. Read each post: https://hacker-news.firebaseio.com/v0/item/{kid}.json. A post has by (the author), time (Unix seconds) and text (HTML). Skip posts with deleted or dead set to true; 49 of the 310 October posts were like that.
  4. Split the first line. The thread asks posters to start with Company | Role | Location | Remote | Salary-style fields separated by |. In the October 2026 thread, about 30 of the 261 visible posts did not follow this, so keep the full text as well.

Copy and paste script (Node.js 18+)

// node hn-hiring.mjs > jobs.json
const s = await (await fetch('https://hn.algolia.com/api/v1/search_by_date?tags=story,author_whoishiring&hitsPerPage=5')).json();
const thread = s.hits.find(h => h.title.startsWith('Ask HN: Who is hiring?'));
const story = await (await fetch(`https://hacker-news.firebaseio.com/v0/item/${thread.objectID}.json`)).json();
const posts = [];
for (const id of story.kids) {
  const c = await (await fetch(`https://hacker-news.firebaseio.com/v0/item/${id}.json`)).json();
  if (!c || c.deleted || c.dead) continue;
  const text = c.text.replace(/<p>/g, '\n').replace(/<[^>]+>/g, '')
    .replace(/&#x2F;/g, '/').replace(/&#x27;/g, "'").replace(/&quot;/g, '"')
    .replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&amp;/g, '&');
  const [company, role, location] = text.split('\n')[0].split('|').map(x => x.trim());
  posts.push({ id, author: c.by, company, role, location, text, url: `https://news.ycombinator.com/item?id=${id}` });
}
console.log(JSON.stringify(posts, null, 2));

We ran this on 2026-10-13: it returned 261 posts from the October 2026 thread in about one minute, because it reads the posts one by one. The official API says it has no rate limit at the moment, but be polite and do not run it in a tight loop.

What the October 2026 thread looks like

Count on 2026-10-13Posts
Top-level comments in the thread310
Still visible (not deleted or flagged)261
First line split with at least two |229
Mention the word "remote" anywhere145
Contain a salary figure ($, € or £)79
Mention "visa"17

"Mentions remote" is not the same as "is remote": many posts say "no remote" or "remote within the US only". Read the location field before you filter.

Common problems

Who is hiring as a ready dataset

We also run the Hacker News Scraper on Apify, a paid hosted version. Its Who is hiring mode reads the latest thread or the last N months and returns one row per post with company, role, location, remote (yes, no or hybrid), salary text, visa, employment type and company URL. You can filter by keyword, location and remote, and a new-items-only mode returns just the posts added since your last run. Email addresses in post text are replaced with [email hidden]. It costs $0.20 per 1,000 results.

Open Hacker News Scraper Company career pages: 13 ATS APIs

FAQ

Is there an API for Hacker News Who is hiring?

There is no separate jobs API. Each monthly thread is a normal Hacker News story posted by the account whoishiring, and every job is a top-level comment. The official Hacker News API and the HN Search API by Algolia both return them as JSON without a key.

When is the Who is hiring thread posted?

On the first weekday of each month at about 15:00 UTC. In 2026 the August thread came on Monday 3 August because 1 August was a Saturday. The Who wants to be hired thread is posted at the same minute.

How many jobs are in a Who is hiring thread?

A few hundred. The October 2026 thread had 310 top-level comments on 13 October, of which 261 were still visible. September 2026 had 393 comments in total and August 2026 had 376, replies included.

Sources: Hacker News API documentation; HN Search API; our own requests on 2026-10-13.