HN Who Is Hiring — Job Listings Scraper & Alert avatar

HN Who Is Hiring — Job Listings Scraper & Alert

Pricing

Pay per usage

Go to Apify Store
HN Who Is Hiring — Job Listings Scraper & Alert

HN Who Is Hiring — Job Listings Scraper & Alert

Scrape the Hacker News 'Who is Hiring' thread into structured job listings as clean JSON. Filter by keyword or remote-only, pull any month, and use alert mode for new listings only. Built on the official HN Firebase API. $1 per 1,000 listings.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Bikram

Bikram

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Hacker News Who Is Hiring Scraper — HN Jobs API

Turn the monthly Hacker News "Who is Hiring?" thread into structured job listings as clean JSON. Filter by keyword or remote-only, pull any month back to 2011, and run in alert mode to get only new listings since your last run. Built on the official HN Firebase API — no HTML scraping, no parsers to break when the page changes.

What it does

Every month the whoishiring account posts three threads on Hacker News:

  1. Who is Hiring? — companies posting open roles
  2. Who wants to be Hired? — candidates posting profiles
  3. Freelancer? Seeking Freelancer? — contract / freelance opportunities

This Actor fetches the listings from any one of these threads, parses each free-form comment into structured fields (company, role, location, remote flag, job type, visa), and writes them to your dataset — ready for analysis, alerting, CRM import, or feeding into an AI agent.

How it works

  1. Calls the official HN Firebase API to find the latest (or a specific month's) whoishiring thread for the thread type you chose.
  2. Iterates every top-level comment in that thread (each comment = one listing).
  3. Cleans the HTML, then parses the conventional Company | Role | Location | Type first line plus keyword signals across the full text (remote, visa, full/part-time, contract, internship).
  4. Applies your keyword and remote-only filters, and — in alert mode — skips listings it already output for this thread on a previous run.
  5. Pushes each matching listing to the dataset as a structured item.

Input

FieldTypeRequiredDescription
threadTypestringnohiring, seeking, or freelance (default: hiring)
monthstringnoSpecific month, e.g. June 2026. Leave blank for the latest thread.
maxListingsintegernoMax listings to output this run, 1–5000 (default: 500)
alertModebooleannoOnly output listings not seen in previous runs for this thread (default: false)
keywordsarraynoOnly include listings containing at least one term, e.g. Python, React, machine learning (case-insensitive, matches full text)
remoteOnlybooleannoOnly output listings whose first line mentions remote work (default: false)
includeDeadbooleannoInclude flagged/dead listings (default: false)

Example — remote Python/ML listings from the latest thread:

{
"threadType": "hiring",
"keywords": ["Python", "machine learning", "LLM"],
"remoteOnly": true,
"maxListings": 200
}

Example — alert mode for daily new listings:

{
"threadType": "hiring",
"alertMode": true,
"maxListings": 500
}

Example — pull a specific past month:

{
"threadType": "hiring",
"month": "May 2026",
"maxListings": 500
}

Output fields

Each listing becomes one dataset item with these fields:

FieldTypeDescription
listingIdstringHN comment ID for this listing
hnUrlstringDirect link to the comment on Hacker News
threadIdstringHN item ID of the parent thread
threadMonthstringMonth of the thread, e.g. June 2026
threadTypestringhiring, seeking, or freelance
authorstringHN username that posted the listing
postedAtstringISO 8601 timestamp (UTC) the listing was posted
textstringFull cleaned listing text (HTML stripped, entities decoded)
companystringCompany name (parsed from the |-delimited first line)
rolestringRole/title (parsed from the first line)
locationstringLocation (parsed from the first line)
jobTypeRawstringRaw job-type segment from the first line, if present
isRemotebooleanFirst line mentions remote / WFH / distributed / anywhere
isFullTimebooleanText mentions full-time
isPartTimebooleanText mentions part-time
isContractbooleanText mentions contract / freelance / consultant
isInternshipbooleanText mentions intern / internship
offersVisabooleanText mentions visa / H1B / sponsorship
isDeadbooleanListing was flagged/marked dead by HN moderators
{
"listingId": "44127834",
"hnUrl": "https://news.ycombinator.com/item?id=44127834",
"threadId": "48357725",
"threadMonth": "June 2026",
"threadType": "hiring",
"author": "rpuritty",
"postedAt": "2026-06-01T08:14:22+00:00",
"text": "Hotwash | Founding Engineer (→ CTO for the right person) | REMOTE (US), Boston a plus | Full-time\n\nI'm a solo founder...",
"company": "Hotwash",
"role": "Founding Engineer (→ CTO for the right person)",
"location": "REMOTE (US), Boston a plus",
"jobTypeRaw": "Full-time",
"isRemote": true,
"isFullTime": true,
"isPartTime": false,
"isContract": false,
"isInternship": false,
"offersVisa": false,
"isDead": false
}

Use cases

  • Job seekers — Pull the latest thread, filter by your stack (keywords) and remoteOnly, and scan structured listings instead of scrolling hundreds of comments.
  • Recruiters & sourcers — Build a direct-contact database of companies with open roles, filtered by tech stack and remote policy — no recruiter middlemen.
  • B2B sales / dev-tool founders — Companies actively hiring engineers are warm prospects for developer tools and infrastructure. Run daily with alertMode: true and pipe new listings into your CRM as hiring-intent leads.
  • Job-board & aggregator builders — Feed clean monthly listings into your own job board or newsletter on a schedule.
  • Market researchers & analysts — Track which technologies, locations, and remote/visa patterns appear month over month as a tech-hiring demand signal (pull past months via month).

Setting up monthly or daily alerts

  1. Set threadType: "hiring" and alertMode: true.
  2. Create an Apify Schedule — daily (e.g. 09:00 UTC) to catch new listings as companies post throughout the month, or monthly to grab each fresh thread.
  3. Add a webhook to push new listings to Slack, email, or your ATS/CRM.
  4. The Actor auto-discovers the latest thread, so there's no URL to update each month.

Pricing — $1 per 1,000 listings

Pay-per-event (pay-per-result). You're charged only for listings actually written to your dataset.

EventPriceWhen
hn-job-listing$0.001Per listing written to the dataset

Listings excluded by your keywords / remoteOnly filters, and listings already seen in alert mode, are skipped before output — so you're never charged for them.

Use from Claude, Cursor & AI agents (MCP)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/sse?actors=bikram07/hn-who-is-hiring",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Ask your agent: "Get all remote Python jobs from the latest HN Who is Hiring thread."

Or via API:

curl -X POST "https://api.apify.com/v2/acts/bikram07~hn-who-is-hiring/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"threadType": "hiring", "keywords": ["Python"], "remoteOnly": true}'

FAQ

Is this a subscription? No. It's pay-per-result on Apify — $1 per 1,000 listings written to your dataset. No monthly fee or commitment; you pay only for what each run outputs.

How does the pricing work, exactly? You're billed $0.001 per listing pushed to the dataset (hn-job-listing event). A run that outputs 250 listings costs $0.25. Listings removed by your filters or skipped by alert mode are never charged. (Apify's own platform usage may apply on free/paid plans per your Apify account.)

Does it use the official Hacker News API? Yes. It reads the official HN Firebase API (hacker-news.firebaseio.com) — no HTML scraping or headless browser — so it doesn't break when the website layout changes, and it returns real data straight from the source.

How current is the data, and when do new threads appear? The Firebase API is real-time, so new listings appear within seconds of being posted. A new thread goes up on the first weekday of each month — leave month blank to always pull the latest one automatically.

Can I get past months? Yes — set month: "January 2025" (or any past month the whoishiring account has posted, going back to ~2011).

Can I get a refund? Refunds are handled per Apify's billing terms. If a run produced clearly wrong output due to an Actor bug, contact support at 31nathbikram@gmail.com and we'll make it right.

Limitations / what it does NOT do

  • Field parsing is best-effort. company, role, location, and jobTypeRaw are parsed from the conventional Company | Role | Location | Type first line. Posts that don't follow that format may leave some of these fields blank — the full text is always included so nothing is lost.
  • Boolean flags are keyword-based. isRemote, offersVisa, isFullTime, etc. are detected from text patterns, not a verified database. Treat them as signals, not guarantees.
  • No salary or apply-URL extraction. These aren't broken out into their own fields; if present, they remain inside text.
  • No contact-info enrichment. It returns what the poster wrote on HN; it does not look up emails, company data, or external profiles.
  • remoteOnly checks the first line only, where the remote tag conventionally appears.

Hacker News Who Is Hiring scraper · HN jobs API · who is hiring API · HN job listings · who is hiring Hacker News · HN monthly hiring thread · tech job listings scraper · hiring intent data · remote developer jobs scraper · HN job board scraper


Uses the official Hacker News Firebase API. Not affiliated with Y Combinator or Hacker News. Support: 31nathbikram@gmail.com