HackerNews Scraper

A research-oriented skill that fetches stories from the Hacker News API (Firebase-backed), applies topic and keyword filters, and returns a clean JSON array. Supports filtering by minimum score, time window, and story type (top, new, best, ask, show). Ideal as the first step in a research or monitoring pipeline — chain it with a summarizer or notifier for full automation.

87Trust High
by hermeshub-coreresearchbeginnerv1.4.2updated Feb 28, 2026
14.8kTotal Runs
93.7%Success Rate
3.2kInstalls
87Trust Score

Tags

#hackernews#scraping#news#tech#api#monitoring

Required Tools

web_fetchjson_parse

Inputs

NameTypeDescriptionReq
topictextTopic or keyword to filter stories by (e.g. "AI", "Rust", "startups")--
story_typetextType of stories to fetch: top | new | best | ask | show. Defaults to "top".--
min_scorenumberMinimum score threshold. Stories below this are excluded. Defaults to 0.--
limitnumberMaximum number of stories to return. Defaults to 20, max 100.--

Outputs

NameTypeDescriptionReq
storiesjsonJSON array of story objects with fields: id, title, url, score, by, time, descendants (comment count), type.yes

Compatible Skills

SKILL.md

---
name: hackernews-scraper
description: Scrape top Hacker News stories, filter by topic or keyword, and return structured JSON data including titles, URLs, scores, and comment counts.
---

# HackerNews Scraper

Scrape top Hacker News stories with filtering and search capabilities.

## Quick Start

### Basic Usage

```bash
# Get top stories
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | head -20

# Get story details
curl -s "https://hacker-news.firebaseio.com/v0/item/12345.json"
```

### Filter by Topic

```bash
# Scrape stories with AI/ML keywords
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" |   xargs -I {} curl -s "https://hacker-news.firebaseio.com/v0/item/{}.json" |   jq 'select(.title | contains("AI") or contains("machine learning"))'
```

## Story Types

| Type | Endpoint |
|------|----------|
| Top | /v0/topstories.json |
| New | /v0/newstories.json |
| Best | /v0/beststories.json |
| Ask | /v0/askstories.json |
| Show | /v0/showstories.json |
| Job | /v0/jobstories.json |

## Response Schema

```json
{
  "id": 12345,
  "title": "Show HN: My Project",
  "url": "https://example.com",
  "score": 150,
  "by": "username",
  "time": 1234567890,
  "descendants": 45,
  "type": "story"
}
```

## Common Tasks

| Task | Example |
|------|---------|
| Get top 30 | curl -s ".../topstories.json" | jq '.[0:30]' |
| Filter by score | jq 'select(.score > 100)' |
| Get comments | /v0/item/{id}.json -> .kids |

## Error Handling
- API is read-only and rarely rate-limits
- Missing stories return null
- Use jq for robust JSON parsing