DEV Community

Alex Spinov
Alex Spinov

Posted on • Edited on

Hacker News Has a Free API — No Key, No Auth, No Limits

Hacker News serves 10+ million pageviews per day. And they give away ALL their data through a free Firebase API.

No API key. No rate limits. No authentication. Just raw JSON.

The API

Base URL: https://hacker-news.firebaseio.com/v0/

That's it. No signup. No OAuth. No headers needed.

Get the Top 500 Stories Right Now

curl https://hacker-news.firebaseio.com/v0/topstories.json | python3 -m json.tool | head -20
Enter fullscreen mode Exit fullscreen mode

Returns an array of up to 500 item IDs, sorted by rank.

Get Any Story's Details

curl https://hacker-news.firebaseio.com/v0/item/41967900.json
Enter fullscreen mode Exit fullscreen mode
{
  "by": "dang",
  "descendants": 245,
  "id": 41967900,
  "kids": [41968234, 41968567, ...],
  "score": 834,
  "time": 1711234567,
  "title": "Show HN: Something cool",
  "type": "story",
  "url": "https://example.com"
}
Enter fullscreen mode Exit fullscreen mode

You get: author, score, comment count, timestamp, URL, title. Everything.

Useful Endpoints

Endpoint What it returns
/topstories.json Top 500 stories (by rank)
/newstories.json Newest 500 stories
/beststories.json Best 500 stories (by score)
/askstories.json Ask HN posts
/showstories.json Show HN posts
/jobstories.json Job posts
/item/{id}.json Any item (story, comment, poll)
/user/{username}.json User profile
/maxitem.json Current max item ID
/updates.json Recently changed items

Build a "Top HN Stories" Dashboard in 15 Lines

import requests

top_ids = requests.get("https://hacker-news.firebaseio.com/v0/topstories.json").json()[:10]

for story_id in top_ids:
    story = requests.get(f"https://hacker-news.firebaseio.com/v0/item/{story_id}.json").json()
    score = story.get("score", 0)
    title = story.get("title", "")
    url = story.get("url", "")
    comments = story.get("descendants", 0)
    print(f"{score:>4}pts | {comments:>3} comments | {title}")
    print(f"         {url}\n")
Enter fullscreen mode Exit fullscreen mode

Run it. You'll get something like:

 834pts | 245 comments | Show HN: Something cool
         https://example.com

 612pts | 189 comments | Why X is better than Y
         https://blog.example.com/post
Enter fullscreen mode Exit fullscreen mode

Monitor Any Topic on HN

import requests, time

def monitor_hn(keywords, interval=300):
    seen = set()
    while True:
        stories = requests.get("https://hacker-news.firebaseio.com/v0/newstories.json").json()[:50]
        for sid in stories:
            if sid in seen:
                continue
            seen.add(sid)
            story = requests.get(f"https://hacker-news.firebaseio.com/v0/item/{sid}.json").json()
            title = (story.get("title") or "").lower()
            if any(kw in title for kw in keywords):
                print(f"🔥 {story["title"]}")
                print(f"   https://news.ycombinator.com/item?id={sid}")
        time.sleep(interval)

monitor_hn(["python", "rust", "ai", "llm"])
Enter fullscreen mode Exit fullscreen mode

Free monitoring. No Algolia account needed.

Get a User's Entire History

curl https://hacker-news.firebaseio.com/v0/user/pg.json
Enter fullscreen mode Exit fullscreen mode
{
  "about": "Bug Fixer.",
  "created": 1160418111,
  "id": "pg",
  "karma": 157236,
  "submitted": [39849234, 39849233, ...]
}
Enter fullscreen mode Exit fullscreen mode

Paul Graham's karma: 157K. His submitted array has every story and comment he's ever posted.

Pro Tips

  1. Algolia alternative: HN also has a search API at hn.algolia.com/api/v1/search?query=YOUR_QUERY — also free, also no auth
  2. Real-time updates: The Firebase API supports Server-Sent Events — append ?print=event to any endpoint
  3. Bulk data: If you need ALL of HN (40M+ items), use the BigQuery public dataset instead of hammering the API
  4. Comment threads: Each item's kids array contains child comment IDs — recurse to build full threads

Why This Matters

HN is where developers discover tools. If your product lands on the front page, you get 10,000-50,000 visits in 24 hours.

With this API you can:

  • Monitor when competitors are mentioned
  • Track trending topics in your niche
  • Build alerts for job posts matching your skills
  • Analyze what content performs best
  • Find early-stage startups to partner with

All free. All real-time. All without signing up for anything.


I track developer trends across HN, GitHub, and Reddit. Follow for weekly breakdowns of what's trending in tech.

Want to scrape Hacker News without writing code? Try my HN Scraper Actor on Apify — get stories, comments, jobs, and Ask HN posts as CSV/JSON in 2 minutes, no API key needed.

Need custom data collection? Email me at spinov001@gmail.com — I've built 88 production web scrapers.
Also: Neon Free Postgres | Vercel Free API | Hetzner 4x More Server
NEW: I Ran an AI Agent for 16 Days — What Works
More free APIs: Cloudflare AI | Notion API | Resend API | Telegram API | Discord | Spotify | NASA API | Stripe API | Supabase


If you liked this, check out my list of 36+ Free APIs Every Developer Should Bookmark — all with generous free tiers, no credit card required.

Top comments (0)