> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/hackernews/jobs-who-is-hiring>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/hackernews/jobs-who-is-hiring.mdx>

---

# Hacker News Who is Hiring API

Discover the monthly Who is Hiring thread and page top-level job comments as structured rows — text is always the source of truth.

`GET /v1/hackernews/jobs/who-is-hiring` discovers the active monthly thread and returns top-level comments as job rows. Optional `page` and `pageSize` page the list. On `found`, `data.thread` has id, title, createdAt, and itemUrl; each `data.items` row includes commentId, author, createdAt, full `text`, and best-effort `company`, `role`, `location`, `remote`, `salary`, `visa`, and `contact` (structured fields may be null). Plain-text `text` is always the source of truth.

Credit pricing for this operation comes from the API registry and appears on this page, and `meta.creditsCharged` is the billing source of truth. This is not the same as the `jobs` ranked feed of standalone job items.

## Request

- **Endpoint:** `GET /v1/hackernews/jobs/who-is-hiring`
- **Credits:** 1 credit
Failed requests are free
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/hackernews/jobs/who-is-hiring/get)
- **Platform page:** [/platforms/hackernews](https://www.socialfetch.dev/platforms/hackernews)

## FAQ

### How do I list Who is Hiring jobs via API?

Call GET /v1/hackernews/jobs/who-is-hiring with your Social Fetch API key in the x-api-key header. Optionally set page and pageSize. Read data.lookupStatus, data.thread, and data.items.

### How many credits does Who is Hiring cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

### Are structured fields always filled?

No. company, role, location, remote, salary, visa, and contact are best-effort parses. They may be null even when the posting mentions them in prose. Always treat data.items[].text as the source of truth.

### Who is Hiring vs the jobs feed?

Who is Hiring parses the monthly Ask HN thread into comment-derived job rows. GET /v1/hackernews/feeds/jobs returns the ranked jobs feed of standalone HN job items. Use the route that matches the corpus you care about.

### How does pagination work?

Use page and pageSize query params. When data.page.hasMore is true, request nextPage with the same pageSize. Each successful page is a separate billed request.

### Do I need to find the monthly thread id myself?

No. The route discovers the current Who is Hiring thread and returns it under data.thread. You do not pass a story id for the default monthly page.

### Can I use this for recruiting or market maps?

Yes. Teams page the thread monthly, store commentId as the stable key, and index text plus any non-null structured fields. Persist meta.requestId when a page needs support review.
