# Hacker News API – Stories, Front Page & Who Is Hiring Jobs (`rowfeed/hacker-news-api`) Actor

Hacker News as clean rows: search stories by keyword, date and points, the front page, Ask HN and Show HN, and the monthly "Who is hiring?" thread as job rows with company, role, location, remote and salary. $0.15 per 1,000 rows.

- **URL**: https://apify.com/rowfeed/hacker-news-api.md
- **Developed by:** [Rowfeed](https://apify.com/rowfeed) (community)
- **Categories:** Developer tools, AI, Jobs
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.15 / 1,000 rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Hacker News API – Stories, Front Page & Who Is Hiring Jobs

Hacker News as clean rows, from its official search API: search stories by keyword, date and points, get the front page, Ask HN and Show HN, or turn the monthly "Ask HN: Who is hiring?" thread into a job list with company, role, location, remote and salary.

Built for founders and marketers watching where their product or competitors come up, recruiters and job seekers working through the hiring thread, researchers, and AI agents that need what tech people are talking about.

### What you get

- **Stories:** title, link, domain, points, number of comments, date, and the text of Ask HN and Show HN posts.
- **Filters:** search terms, newest first or most relevant, minimum points, only the last N hours (good for a daily schedule).
- **Front page** as it is right now, and the newest **Ask HN** and **Show HN** posts.
- **Who is hiring? jobs:** one row per job post with company, role, location, REMOTE / ONSITE / HYBRID, the first salary figure, the first line as written and the full text. Pick a month or take the newest thread, and filter by words such as "python" or "remote".
- **No personal data:** usernames and email addresses are left out, also written as `name [at] company [dot] com` (they become `[email on HN]`; the post's link on Hacker News is included).

### Example output rows

A real story:

```json
{
  "type": "story",
  "search": "apify",
  "title": "Show HN: Crawlee – Web scraping and browser automation library for Node.js",
  "url": "https://crawlee.dev/",
  "domain": "crawlee.dev",
  "points": 282,
  "comments": 80,
  "created_at": "2022-08-23T06:25:39Z",
  "text": "Hey HN,\nThis is Jan, founder of Apify, a web scraping and automation platform. Drawing on our team's years of experience, today we're launching Crawlee [1], the web scraping and browser automation library for Node.js tha …",
  "hn_url": "https://news.ycombinator.com/item?id=32561127",
  "id": "32561127"
}
```

A real job post (text shortened here):

```json
{
  "type": "job",
  "thread": "Ask HN: Who is hiring? (November 2026)",
  "company": "United Risk",
  "role": "Early-Career AI Engineers – Full-Stack, Data Science, Infrastructure/DevOps (10 openings)",
  "location": "New York, NY",
  "remote": false,
  "onsite": false,
  "hybrid": true,
  "salary": "$100K–$120K",
  "first_line": "United Risk | Early-Career AI Engineers – Full-Stack, Data Science, Infrastructure/DevOps (10 openings) | New York, NY | HYBRID (2 days/week in office) | FULL-TIME | $100K–$120K",
  "text": "United Risk | Early-Career AI Engineers – Full-Stack, Data Science, Infrastructure/DevOps (10 openings) | New York, NY | HYBRID (2 days/week in office) | FULL-TIME | $100K–$120K\nUnited Risk is a global property and casua …",
  "created_at": "2026-11-02T16:06:11.000Z",
  "hn_url": "https://news.ycombinator.com/item?id=50338822",
  "id": "50338822"
}
```

### How to use

1. Click **Try for free** (or **Start**) at the top of this page to open the input form.
2. Fill in **What to get**. Stories by search, the current front page, Ask HN, Show HN, or the jobs in the monthly hiring thread. The form comes with a working example, so you can also run it as it is.
3. Optional: adjust **Search terms**, **Max rows per search**, **Order**, **Minimum points**. Every field has a sensible default.
4. Click **Start** and wait for the run to finish.
5. Download the results as Excel, CSV or JSON from the **Output** tab, or get them through the Apify API, a schedule or an integration (Make, Zapier, Google Sheets ...).

### Pricing

Pay per event, no subscription:

- **$0.15 per 1,000 rows** ($0.00015 per story or job post).
- $0.001 per run start.

Examples: the pre-filled search (100 stories) costs $0.016. A whole hiring thread (about 300 jobs) costs about $0.05. Error rows and searches without results are never charged. A scheduled run with `lastHours` that finds nothing new ends normally.

### Input

| Field | What it does |
|---|---|
| `mode` | `search`, `front_page`, `ask_hn`, `show_hn` or `whos_hiring`. |
| `searches` | Search terms, one per line. For job posts, every word must appear in the post. |
| `maxResults` | Per search, up to 1,000. Default 100 stories, or the whole hiring thread. |
| `sort` | `relevance` or `newest`. Ask HN and Show HN default to newest. |
| `minPoints` | Only stories with at least this many points. |
| `lastHours` | Only stories from the last N hours. |
| `hiringMonth` | e.g. `October 2026`. Empty = the newest thread. |

### Good to know

- Company, role and location in job rows are read from the post's first line, which most posts write as `Company | Role | Location | REMOTE | Salary`. When a post does not follow it, a field can be empty or wrong; `first_line` always holds the original.
- Hacker News' search API returns at most 1,000 results per search; use several searches or `lastHours` for more.
- Not affiliated with Hacker News or Y Combinator.

### More tools from Rowfeed

- [GitHub Trending & Repo Search](https://apify.com/rowfeed/github-trending-api) – trending repositories by language and period, and repository search with stars, forks and topics.
- [Reddit Scraper](https://apify.com/rowfeed/reddit-scraper) – posts and newest comments of any subreddit, filtered by your keywords, without usernames.
- [Remote Jobs API](https://apify.com/rowfeed/remote-jobs-api) – remote jobs from Remote OK, We Work Remotely, Jobicy and Arbeitnow in one list, with salary and apply link.
- [Google News API](https://apify.com/rowfeed/google-news-monitor) – news for any search; monitor mode returns only articles you have not seen.
- [Career Site Jobs API](https://apify.com/rowfeed/career-site-jobs-scraper) – open jobs straight from Greenhouse, Lever, Ashby, Workday and SmartRecruiters.
- [Google Jobs API](https://apify.com/rowfeed/google-jobs-api) – job listings for any search and location, with salary and apply link.
- [RSS Feed Reader](https://apify.com/rowfeed/rss-feed-reader) – any RSS or Atom feed as clean JSON rows.
- [Google Sheets Export](https://apify.com/rowfeed/google-sheets-export) – send the results of any run to a Google Sheet.

# Actor input Schema

## `mode` (type: `string`):

Stories by search, the current front page, Ask HN, Show HN, or the jobs in the monthly hiring thread.

## `searches` (type: `array`):

One search per line. Empty search = "apify" as an example. For Ask HN and Show HN they narrow the list; for job posts every word must appear in the post, e.g. "python", "remote". Leave empty for the front page and the whole hiring thread.

## `maxResults` (type: `integer`):

Up to 1,000. Empty = 100 stories per search, or the whole hiring thread.

## `sort` (type: `string`):

Order of stories. Ask HN and Show HN are newest first unless you choose here.

## `minPoints` (type: `integer`):

Only stories with at least this many points.

## `lastHours` (type: `integer`):

Only stories posted in this many hours, e.g. 24. 0 = any time. Good for a daily schedule.

## `hiringMonth` (type: `string`):

For job posts: e.g. "October 2026". Empty = the newest thread.

## Actor input object example

```json
{
  "mode": "search",
  "searches": [
    "web scraping",
    "llm agents"
  ],
  "minPoints": 0,
  "lastHours": 0,
  "hiringMonth": "October 2026"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search"
};

// Run the Actor and wait for it to finish
const run = await client.actor("rowfeed/hacker-news-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "mode": "search" }

# Run the Actor and wait for it to finish
run = client.actor("rowfeed/hacker-news-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search"
}' |
apify call rowfeed/hacker-news-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rowfeed/hacker-news-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9Yari93cUgjGBYX8X/builds/8UfYOupzrFGglI9Wx/openapi.json
