Hacker News Who is Hiring Scraper - Developer Jobs avatar

Hacker News Who is Hiring Scraper - Developer Jobs

Pricing

from $10.00 / 1,000 job listings

Go to Apify Store
Hacker News Who is Hiring Scraper - Developer Jobs

Hacker News Who is Hiring Scraper - Developer Jobs

Turn the monthly Ask HN Who is hiring thread into structured developer jobs: company, role, location, salary, remote policy, job type and tech stack. For recruiting, job boards and hiring research. Official HN API, no proxies. Export CSV, JSON, Excel or API.

Pricing

from $10.00 / 1,000 job listings

Rating

0.0

(0)

Developer

Andres Garcia-Baquero Leon

Andres Garcia-Baquero Leon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Hacker News Who is Hiring Scraper - Jobs, Salary & Remote

Turn the monthly "Ask HN: Who is hiring?" thread into a clean, structured job dataset you can filter, sort and pipe into a spreadsheet, ATS, job board or AI pipeline.

Every month Hacker News' hiring thread carries 300-500 high-signal job posts from real engineering teams — buried in free-text comments with no structure at all. This Actor finds the right thread automatically and parses every listing into proper fields.

No login. No proxies. No HTML scraping. Built on the official Hacker News API, so it doesn't break when a website changes its markup.

Why not just use the Hacker News API?

The official API hands you each post as a raw HTML comment blob. All the work is left to you. This Actor does that work:

Official HN APIThis Actor
Finds the monthly threadYou hardcode the IDAutomatic
Company / role / locationRaw text blobSeparate fields
SalaryBuried in proseDetected + normalised
Remote vs onsiteBuried in proseremote / onsite / hybrid
Tech stackBuried in proseTagged array
Non-job commentsMixed inFiltered out
FilteringNoneRemote-only, keyword, tech

Example output

Real rows from a live run:

companyrolelocationremotejobTypetechTags
Proxima FusionSenior Software Engineer (Dev Platform)Munich, GermanyonsiteFull-timeai, python
CodeWeaversmacOS low-level Open Source DeveloperSt Paul, MN, USAremoteFull Time
Launchpad TechnologiesMultiple RolesLATAM/RemoteremoteFull-timereact, node
CoderMultiple rolesMultiple locationsremoteFull-timeai, security
Friendly CaptchaDeveloper RelationsMunich area, GermanyunspecifiedFull-time
{
"company": "Proxima Fusion",
"role": "Senior Software Engineer (Dev Platform)",
"location": "Munich, Germany",
"jobType": "Full-time",
"remote": "onsite",
"salary": null,
"techTags": ["ai", "python"],
"url": "https://jobs.ashbyhq.com/proxima-fusion/5aebfef0-0c2c-4c87-990d-bbbbd53b94d2",
"hnUrl": "https://news.ycombinator.com/item?id=49165394",
"author": "l1am0",
"postedAt": 1785828570,
"text": "Proxima Fusion | Senior Software Engineer (Dev Platform) | Munich, Germany | ONSITE | Full-time ..."
}

Output fields

FieldTypeDescription
companystringCompany / organisation name
rolestringJob title, semantically identified (not positional)
locationstringLocation string as posted
jobTypestringFull-time, Part-time, Contract, Internship
remotestringremote, onsite, hybrid or unspecified
salarystringDetected salary or range, e.g. $200-225K
techTagsarrayDetected technologies (rust, python, react, aws…)
urlstringCompany / application link
hnUrlstringDirect link to the original HN comment
authorstringHN username who posted it
postedAtintegerUnix timestamp
textstringFull plain-text of the listing

Field coverage

Measured on a real August 2026 run (111 listings):

FieldFilled
location96%
url91%
role85%
techTags86%
jobType66%

Coverage is below 100% because some posters simply omit the field. Non-job comments (candidate self-posts, replies) are filtered out, so you are never charged for a non-listing.

How to use it

  1. Click Try for free
  2. Leave the input empty to get the latest month, or set filters
  3. Click Start
  4. Export to CSV, JSON, Excel, XML or pull via API / webhook

Runs with an empty input {} — no configuration required.

Input

{
"month": "latest",
"remoteOnly": true,
"keywords": ["rust", "python"],
"maxResults": 500
}
FieldTypeDefaultDescription
monthstringlatestlatest or a specific month like July 2026
threadIdstringOverride: parse a specific HN thread item ID
remoteOnlybooleanfalseOnly return remote / hybrid listings
keywordsarray[]Only return listings matching ANY keyword
maxResultsinteger500Max listings to return (1-1000)

Example: remote Rust and Go jobs only

{ "remoteOnly": true, "keywords": ["rust", "golang"] }

Example: a specific past month

{ "month": "June 2026", "maxResults": 1000 }

Use cases

  • Job boards — fill a niche board from HN's highest-signal hiring source
  • Recruiters — filter remote + stack in seconds instead of scrolling 400 comments
  • Job seekers — a filterable spreadsheet of every listing matching your stack
  • Market research — track hiring trends, salary bands and in-demand tech month over month
  • Lead generation — companies hiring engineers are companies with budget
  • AI / RAG datasets — real, well-formed job postings

Integrations

Works with everything Apify supports: Zapier, Make, n8n, Slack, Google Sheets, Airbyte, LangChain, plus REST API and webhooks. Schedule it monthly to catch each new thread automatically.

Pricing

Pay Per Event: $0.01 per structured job listing returned.

You pay only for listings actually returned after your filters. Filtered-out comments and non-job posts cost nothing. A typical full month is 300-500 listings ($3-5); a filtered remote-Rust query is usually under $0.50.

FAQ

Do I need a Hacker News account or API key? No. The data is public and read through the official API.

Is this legal? It reads publicly available data from Hacker News' official public API — no login, no paywall, no personal data beyond the public HN username the poster chose to post under.

How fresh is the data? The thread is posted on the 1st of each month and fills up over the following days. month: "latest" always resolves to the newest thread. Schedule monthly for continuous coverage.

Why is role or salary empty on some rows? Because the poster didn't include it. The thread is free text and follows a loose convention. Fields are identified semantically, so a missing field means it genuinely wasn't posted rather than a parsing failure.

Can I get past months? Yes — set month to e.g. "May 2026", or pass a specific threadId.

Will it break? It uses the official Hacker News API rather than HTML scraping, so it's immune to site redesigns. Requests retry with exponential backoff.

Historical selection and coverage limits

  • Omit month or use the literal "latest" to select the newest matching thread indexed by Algolia (not necessarily the current calendar month).
  • Historical input must use a full English month and four-digit year, exactly like "January 2020". Abbreviations, lowercase month names, surrounding whitespace, empty strings and null are rejected; they are not corrected.
  • Historical discovery searches the requested month in titles and paginates the matching search results. The exact thread type and month/year in the title are checked again against HN Firebase before comments are parsed. An unavailable month raises a clear error, never a fallback to latest. Algolia indexing gaps and API errors can prevent resolution of a real thread.
  • threadId remains an explicit override and takes precedence over month (and thread type where applicable). It bypasses automatic month selection; verify the ID you supply. Each output row includes threadId, threadTitle and threadMonth (resolved from the source title, or null for a custom title without a recognised monthly suffix).
  • These are heuristic parsers of top-level comments, not a complete archive. Deleted/dead comments are omitted. Failed comment reads are logged and skipped, so a successful run can still contain fewer profiles/listings than the thread. Check warnings before treating a backfill as complete. Filters, result limits, posting activity and parsing rules also reduce coverage.

Local regression checks (no Apify runs)

From this actor directory, with httpx and apify installed:

python -B -m unittest -v test_main.HistoryTests
HN_LIVE_TESTS=1 python -B -m unittest -v test_main.LiveTests

The first command uses mock HTTP responses and an Actor stub, including failure and no-delivery assertions. The opt-in second command only reads public Algolia and HN Firebase to verify January 2020 thread resolution; it does not publish rows or verify Cloud billing.

Troubleshooting

ProblemFix
Empty datasetYour filters may be too narrow — try keywords: [] and remoteOnly: false
Fewer results than expectedCheck comment-read warnings, filters and limits; early in the month the thread is still filling up
Month not foundUse the exact format "July 2026", or pass threadId directly
Need more than 1000Run per month and combine datasets

Notes

  • Source: official Hacker News Firebase API + Algolia HN Search for thread discovery. No HTML scraping, no proxies.
  • Parsing follows the community Company | Role | Location | REMOTE | Salary | URL convention and degrades gracefully when a post doesn't. Fields are classified by content, not by position, so a missing role doesn't shift the location into the wrong column.