# Hacker News Scraper | Stories, Ask HN, Show HN & Who Is Hiring (`resounding_diplomacy/hacker-news-scraper`) Actor

Scrape Hacker News front page stories, Ask HN, Show HN posts, and Who Is Hiring threads. Extract titles, URLs, points, authors, comment counts, and job postings. Sort by points or comments. Export scraped data as JSON or CSV, run via API, schedule recurring runs, or integrate with Zapier and Make.

- **URL**: https://apify.com/resounding\_diplomacy/hacker-news-scraper.md
- **Developed by:** [alars num](https://apify.com/resounding_diplomacy) (community)
- **Categories:** News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Hacker News Scraper

Scrape top stories from Hacker News (Y Combinator) — front page posts, Ask HN, Show HN, and the monthly "Who Is Hiring" thread. Extract titles, points, comment counts, authors, and timestamps as structured JSON. No API key required.

This actor uses CheerioCrawler for fast HTTP-based scraping, automatically paginates through results, and supports filtering and sorting so you get exactly the data you need. Export to JSON, CSV, Excel, or via API.

### Features

- Scrape front page stories with automatic pagination
- Filter stories by minimum upvote threshold (`minPoints`)
- Sort results by points or comment count
- Automatic detection of `Show HN`, `Ask HN`, and standard story types
- "Who Is Hiring" mode to extract job postings from the monthly Ask HN thread
- Extracts story ID, title, URL, points, author, comment count, and timestamp
- No API key, authentication, or login required

### Input

Configure the actor through the input schema. All fields are optional with sensible defaults.

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | Integer | `30` | Maximum number of stories to scrape |
| `minPoints` | Integer | `0` | Only include stories with at least this many points |
| `sortBy` | String | `points` | Sort order: `points` or `comments` |
| `includeComments` | Boolean | `false` | Include comment data (reserved for future use) |
| `whoIsHiring` | Boolean | `false` | Scrape the latest "Ask HN: Who is Hiring" thread for job postings |

#### Example input

```json
{
    "maxItems": 50,
    "minPoints": 100,
    "sortBy": "points",
    "whoIsHiring": false
}
```

### Output

Results are stored in the default dataset and can be exported as JSON, CSV, Excel, or via API.

#### Story output (default mode)

```json
{
    "id": "39482071",
    "title": "Show HN: A new way to build web apps",
    "url": "https://example.com/project",
    "points": 342,
    "author": "pg",
    "commentsCount": 128,
    "timeAgo": "2026-07-04T10:23:00",
    "isInternal": false,
    "type": "show_hn"
}
```

#### Job posting output (Who Is Hiring mode)

```json
{
    "text": "Company Name | Senior Engineer | Remote | $120k-$180k...",
    "type": "job_posting"
}
```

### Use cases

- **Market research** — track trending tech topics and discussions
- **Lead generation** — identify active founders, makers, and companies launching products via Show HN
- **Job monitoring** — extract job postings from the monthly Who Is Hiring thread
- **Content discovery** — surface viral stories and breaking news for newsletters or aggregators
- **Sentiment analysis** — feed story data into NLP pipelines to gauge developer community trends
- **Competitive intelligence** — monitor competitor launches and community reactions

### How to use

1. Open the actor on the [Apify Store](https://apify.com/store).
2. Click **Try for free** or **Start with Free Trial**.
3. Adjust the input fields (max items, minimum points, sort order) — or leave defaults.
4. Click **Start** and wait for the run to complete.
5. Export the results to JSON, CSV, or connect via the Apify API.

For scheduled runs, use Apify's scheduler to scrape Hacker News daily or weekly and auto-export to your webhook, database, or Google Sheets.

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum number of stories to scrape

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

Only return stories with at least this many points

## `sortBy` (type: `string`):

Sort results by points (highest first) or comments (most discussed first)

## `whoIsHiring` (type: `boolean`):

Scrape the latest 'Ask HN: Who is Hiring' thread for job postings

## Actor input object example

```json
{
  "maxItems": 30,
  "minPoints": 0,
  "sortBy": "points",
  "whoIsHiring": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("resounding_diplomacy/hacker-news-scraper").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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call resounding_diplomacy/hacker-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=resounding_diplomacy/hacker-news-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6GdjKocfL8UHwaxql/builds/wdNfdfBpRnWpbbPmp/openapi.json
