Skip to main content
Glama

Search Hacker News or its Who is hiring threads

search_hacker_news
Read-only

Search Hacker News stories and comments by keyword, points, comments, and date, or extract Who is Hiring job posts with company, role, location, remote, and salary data.

Instructions

mode 'search': search Hacker News stories and comments (including Ask HN and Show HN) by keyword, points, comment count and date through the public HN Search API by Algolia. mode 'whoIsHiring': turn the monthly 'Ask HN: Who is hiring?' thread into job records with company, role, location, remote flag and salary when stated. Emails and phone numbers in post text are redacted by default. Cost, charged to your own Apify account: $0.00015 per item returned. Each call is capped at maxCostUsd (default $0.25). Defaults applied by this server when omitted: maxItems=50. Runs Apify Actor fecklesspleb/hacker-news-scraper (https://apify.com/fecklesspleb/hacker-news-scraper).

Input Schema

NameRequiredDescriptionDefault
modeNoMode. "search" (default): stories and comments from the HN Search API by Algolia. "whoIsHiring": parse the top-level posts of the monthly "Ask HN: Who is hiring?" threads into job rows (company, role, location, salary). Search-only and Who-is-hiring-only fields are labelled. Values: search = Search stories and comments; whoIsHiring = Who is hiring? job posts.search
tagsNoItem types. Search mode. Values: story, comment, ask_hn, show_hn, job, poll, front_page. Separate entries must ALL match (AND), e.g. ["story", "front_page"] = front-page stories. For any of several types, put them in one entry separated by commas, e.g. ["story,comment"]. Default ["story"].
queryNoSearch query. Search mode. Full-text Algolia query, e.g. "MCP server". Algolia matches loosely, so use sortBy "relevance" for the best matches; with "date" you get the newest loose matches. Leave empty to list the newest items.
sinceNoFrom date. Search mode. Only items created on or after this date, YYYY-MM-DD (UTC), e.g. "2026-10-01".
untilNoTo date. Search mode. Only items created before this date, YYYY-MM-DD (UTC); the day itself is excluded.
sortByNoSort by. Search mode. "date" (default): newest first, and pages past Algolia's 1,000-hit limit by moving the time window. "relevance": best match first, at most 1,000 results.date
threadsNoWho is hiring: number of monthly threads. Who is hiring mode. How many monthly threads to read, newest first, 1 to 12. Default 1 = the latest month only.
keywordsNoWho is hiring: keywords (any). Who is hiring mode. Keep posts whose text contains any of these strings (case-insensitive substring), e.g. ["python", "rust", "machine learning"].
maxItemsNoMax results. Stop after this many rows. Default 50, also when empty or 0. Each row costs $0.00015, so 50 rows are about $0.0075.
minPointsNoMin points. Search mode. Only items with at least this many points, e.g. 100.
maxCostUsdNoMost this call may charge your Apify account, in US dollars. Default 0.25, maximum 5. Passed to Apify as maxTotalChargeUsd, the most Apify will charge for this run.
remoteOnlyNoWho is hiring: remote only. Who is hiring mode. Keep only posts whose first line (the headline) says "remote". Default false.
minCommentsNoMin comments. Search mode. Only items with at least this many comments, e.g. 20.
onlyNewItemsNoOnly new items (monitoring). Skip items returned by earlier runs that used this option and the same state store, for scheduled monitoring. Default false. Seen items are remembered for 120 days.
stateStoreNameNoState store name. Named key-value store that remembers seen items.hacker-news-scraper-state
postedWithinDaysNoPosted within (days). Search mode. Only items from the last N days, e.g. 30. Combined with From date, the later of the two wins.
redactContactDetailsNoRedact emails and phone numbers. Replaces emails and phone numbers in post text.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld annotations, it discloses the paid, metered nature of the call ($0.00015 per item, capped at maxCostUsd default $0.25, max $5), that contact details are redacted by default, server-side defaults for omitted params, the 120-day seen-item retention for onlyNewItems, and the 1,000-hit pagination ceiling with its workaround. This is exactly the operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the two modes, then cost and defaults — a sensible priority order for a paid, multi-mode tool. Some redundancy remains, such as repeating maxItems=50 and the maxCostUsd default that the schema already declares.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter, two-mode tool with no output schema, the description covers purpose, cost, defaults, and job-record fields adequately. The search-mode result shape is left vaguer than the job rows, and no rate-limit or latency expectations are given, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter in detail. The description adds cost math ('50 rows are about $0.0075') and states that maxCostUsd is passed to Apify as maxTotalChargeUsd, but otherwise restates defaults already present in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states two distinct modes with specific verbs and resources: keyword/points/date search over HN stories and comments via the Algolia HN Search API, and parsing of the monthly 'Ask HN: Who is hiring?' thread into job records. It even names the upstream actor and identifies the fields (company, role, location, remote, salary) produced in job mode, so an agent knows exactly what it gets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mode selection and fallback behavior are clear ('Leave empty to list the newest items', sortBy tradeoffs, whoIsHiring = latest month by default). However, it offers no guidance against siblings such as search_remote_jobs or the ATS job tools, which overlap with whoIsHiring mode — the agent must infer when HN job posts are preferable to a dedicated job board.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.