HN Who Is Hiring — Job Listings Scraper & Alert
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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:
- Who is Hiring? — companies posting open roles
- Who wants to be Hired? — candidates posting profiles
- 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
- Calls the official HN Firebase API to find the latest (or a specific month's)
whoishiringthread for the thread type you chose. - Iterates every top-level comment in that thread (each comment = one listing).
- Cleans the HTML, then parses the conventional
Company | Role | Location | Typefirst line plus keyword signals across the full text (remote, visa, full/part-time, contract, internship). - Applies your keyword and remote-only filters, and — in alert mode — skips listings it already output for this thread on a previous run.
- Pushes each matching listing to the dataset as a structured item.
Input
| Field | Type | Required | Description |
|---|---|---|---|
threadType | string | no | hiring, seeking, or freelance (default: hiring) |
month | string | no | Specific month, e.g. June 2026. Leave blank for the latest thread. |
maxListings | integer | no | Max listings to output this run, 1–5000 (default: 500) |
alertMode | boolean | no | Only output listings not seen in previous runs for this thread (default: false) |
keywords | array | no | Only include listings containing at least one term, e.g. Python, React, machine learning (case-insensitive, matches full text) |
remoteOnly | boolean | no | Only output listings whose first line mentions remote work (default: false) |
includeDead | boolean | no | Include 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:
| Field | Type | Description |
|---|---|---|
listingId | string | HN comment ID for this listing |
hnUrl | string | Direct link to the comment on Hacker News |
threadId | string | HN item ID of the parent thread |
threadMonth | string | Month of the thread, e.g. June 2026 |
threadType | string | hiring, seeking, or freelance |
author | string | HN username that posted the listing |
postedAt | string | ISO 8601 timestamp (UTC) the listing was posted |
text | string | Full cleaned listing text (HTML stripped, entities decoded) |
company | string | Company name (parsed from the |-delimited first line) |
role | string | Role/title (parsed from the first line) |
location | string | Location (parsed from the first line) |
jobTypeRaw | string | Raw job-type segment from the first line, if present |
isRemote | boolean | First line mentions remote / WFH / distributed / anywhere |
isFullTime | boolean | Text mentions full-time |
isPartTime | boolean | Text mentions part-time |
isContract | boolean | Text mentions contract / freelance / consultant |
isInternship | boolean | Text mentions intern / internship |
offersVisa | boolean | Text mentions visa / H1B / sponsorship |
isDead | boolean | Listing 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) andremoteOnly, 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: trueand 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
- Set
threadType: "hiring"andalertMode: true. - 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.
- Add a webhook to push new listings to Slack, email, or your ATS/CRM.
- 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.
| Event | Price | When |
|---|---|---|
hn-job-listing | $0.001 | Per 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, andjobTypeRaware parsed from the conventionalCompany | Role | Location | Typefirst line. Posts that don't follow that format may leave some of these fields blank — the fulltextis 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.
remoteOnlychecks the first line only, where the remote tag conventionally appears.
Related searches
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