Product Hunt API — Launches and Leaderboards as JSON | FetchLayer
Unofficial Third-party API
9 endpoints live

Every launch. Every day.
Ranked and ready as JSON.

Daily & yearly leaderboards Nested comment threads Topics, collections, makers AI-ready JSON

Pull the ranked board for any day, week, month or year back to 2013, read a launch in full with its nested comment threads, and watch a topic fill up over time. Products, launches, makers, collections — as structured JSON. No Product Hunt developer account, no OAuth, no token to refresh.

Start building free
Free tier included No credit card No scraper maintenance

Trusted by developers shipping real products.

9,200,835 served today

POST /producthunt/leaderboard
200 OK

Request

$ curl -X POST \
  https://api.fetchlayer.dev/producthunt/leaderboard \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"period":"daily","date":"2026-09-01"}'

Response

{
  "entries": [{
    "rank": 1,
    "launch": {
      "name": "Granola 2.0",
      "tagline": "Notes that write themselves",
      "upvotes": 1842,
      "commentsCount": 214,
      "productSlug": "granola"
    }
  }],
  "notes": ["Dropped 3 promoted entries."]
}

Used by developers at

Individual developers or teams — not official partnerships

Built for feedback workflows

Fetch the public signal. Use it wherever your team works.

Leaderboards back to 2013

Pull the ranked board for any day, week, month or year. Poll it on a schedule and you have a launch history you can query — what shipped, where it placed, and how the category has moved.

A launch in full

Upvotes, launch-day upvotes, comment count, launch date, daily, weekly and monthly rank, pricing label, topics, makers, the hunter who posted it, and the ranking badges it earned.

Comment threads, nested

Launch-day feedback comes back as a tree: each thread carries its own replies, which carry theirs. Maker answers stay attached to the question they answer — walk it recursively, do not flatten it.

A category as a watchlist

List every product in a topic by most recent launch, rating, followers or post count, narrowed by tags. The same call on a schedule is an early-signal feed for one slice of the market.

The people behind the launch

Go from a launch’s maker list to public profiles: headline, links, join date, followers, upvotes given, launches submitted, and every product they are credited on.

Promoted entries removed, and said so

Product Hunt seeds three promoted entries per twenty into a leaderboard feed. Those are dropped, and the count dropped is reported in notes — so a number that differs from the website has a stated reason, not a silent gap.

AI-ready JSON

Hand launches, taglines, ranks and comment threads to an LLM or an MCP agent to cluster a category, summarise objections, or draft the competitive brief — no HTML parsing, no wrapper code.

FetchLayer Research Chat

Track a category’s launches with AI—then export it to CSV.

Prefer not to write code? Give FetchLayer Research Chat a topic or a date range, ask what launched and how it landed, and turn the whole set into a structured file for your market map, investor memo, or competitive tracker.

  • ✓Ask questions in plain English
  • ✓Analyze themes, sentiment, and pain points
  • ✓Download the structured results as CSV or JSON
Research launches in Chat

No code or setup required · Uses your FetchLayer credits

Product Hunt research

Pull every AI note-taking product that has launched in the last 90 days. Rank them by upvotes, tell me which makers are repeat launchers, then export it as CSV.

Y

I walked the daily boards for the last 90 days, found 41 launches in the topic, ranked them by upvotes and launch-day upvotes, and flagged 7 makers with more than one launch in the window. The full breakdown is ready to download.

product-hunt-launches-90-days.csv

41 launches · 14 columns · ready to download

CSV

From raw feedback to action

One request is the start of the workflow.

Store the structured response, run it on a schedule, pass it to an LLM, or feed it into the system your team already uses. FetchLayer handles retrieval so you can focus on the outcome.

  1. 01

    Pick a window or a topic

    Pull yesterday’s board, a week in 2024, or every product in developer-tools sorted by most recent launch.

  2. 02

    Follow the launches that matter

    Each entry carries a launch slug and a product slug. Take them into the full launch record and its comment threads.

  3. 03

    Turn launches into intelligence

    Build a category tracker, diff the board week over week, spot repeat makers early, or hand the JSON to an agent to write the memo.

One command. Your agent does the rest.

Use the Product Hunt endpoint directly from your MCP-compatible agent. Ask it to retrieve public feedback, identify patterns, and turn the result into a useful brief without writing integration glue.

Claude Code Codex

1 Run one command, then sign in

$ npx fetchlayer

◇  Agents

│  Claude Code and Codex

◇  Signed in as you@company.com

◇  Connected

│  ✓ Claude Code  ✓ Codex

It opens a sign-in page in your browser. New here? Signing in creates your free account.

2 Ask

›What launched in developer tools last week, how did it place, and what were people actually asking the makers?

fetchlayer.producthunt_leaderboard

Pulled the weekly board and 23 launches in the topic. The top three averaged 1,200 upvotes, and across their comment threads the same two questions repeat: pricing after the free tier and self-hosting.

No key to copy and nothing to install. New accounts are free, with no credit card.

How it works
The same command connects
Cursor
VS Code
Antigravity
OpenCode
Hermes
ChatGPT, Perplexity, the Claude app and others

Use cases

What teams build with Product Hunt data.

Same API, endless applications. Here is what teams ship with public launch data.

01

Launch tracking

Watch a competitor or a whole category launch: rank, upvotes, comments, and the makers behind every product.

competitorslaunchesresearch
02

AI agent context

Hand Claude, Codex, or your MCP agent structured launches, taglines, ranks and nested comment threads as JSON.

llmagentsmcp
03

Category monitoring

Poll a topic on a schedule and get an early-signal feed the day a rival ships something into your market.

alertsmonitoringcron
04

Launch feedback research

Read nested launch-day threads where makers answer objections — the clearest record of what buyers questioned.

feedbackcommentsobjections
05

Leaderboard datasets

Pull daily, weekly, monthly and yearly boards back to 2013 and export a launch history you can query.

leaderboardshistorycsv
06

Maker scouting

Go from a launch to the makers and hunters behind it, with followers, join date, and everything they shipped.

makersprofilesscouting

Compare approaches

Spend time on the insight, not the collection layer.

What you needFetchLayerOfficial APIBuild it yourself
Launches, comments and leaderboards in one API✓PartialYou build it
Historical boards back to 2013✓LimitedYou build it
Promoted entries removed and reported✓Mixed into the feedYou detect them
Bearer auth from one account✓OAuth applicationYou manage it
Ready for AI and MCP workflows✓Your integrationYour integration

FetchLayer provides access to publicly available data. It is not affiliated with, endorsed by, or sponsored by the platform.

Start free. Scale when ready.

Try it free, buy credits as you go, or take a monthly plan when your volume is steady.

Free

$0

30 requests

Enough to call the platforms you care about and read real responses before you pay anything.

  • Every platform and endpoint
  • REST and MCP
  • No credit card
Start free

Pay as you go

$1.99

per 1,000

Buy credits when you need them. They stay on your account until you use them.

  • Credits never expire
  • No monthly commitment
  • Same access as subscribers
  • ∞ req/min, ∞ API keys
Get API key

Monthly plan

Starter

$25

per month

15,000 requests a month, about 500 a day.

$1.67 per 1,000, $5 less than credits each month

  • ∞ req/min, ∞ API keys
Get started

1 page fetched is 1 credit

A normal call reads one page. Ask for more pages and each one is one more credit.

The same on every platform

No multiplier for harder targets, and no charge per result returned.

Nothing back, nothing billed

If a request does not return usable data, it costs 0 credits.

Not sure which volume fits?

15 minutes with the founder. Tell us the workload, we tell you what it needs.

Book a call

Guaranteed throughput on the platform you run on

A dedicated platform from $400/mo, plus $500 for each ~21 req/s. Every other platform on the same key. 99.8% uptime, 24-hour support on Slack or Telegram.

Build your plan

API reference

Every parameter, documented.

All requests are POST with a JSON body and Bearer auth header.

POST /producthunt/leaderboard

The ranked launches for any day, week, month or year, back to 2013. Promoted placements are dropped and the number dropped is reported in notes, so a count that differs from the website has a stated reason.

period string 'daily' | 'weekly' | 'monthly' | 'yearly'. Defaults to daily.
date string YYYY-MM-DD — the day, or any day inside the week, month or year wanted. Defaults to today.
year number Year (2013-2100), instead of date.
month number Month 1-12, with year.
week number ISO week 1-53, with year.
sortBy string 'DAILY_RANK' | 'WEEKLY_RANK' | 'MONTHLY_RANK' | 'YEARLY_RANK' | 'VOTES' | 'SCORE'.
limit number Maximum entries returned, or -1 for everything available. Defaults to 30.
pages number Pages of results to collect in one request (max 100).
cursor string Resume from a previous response's nextCursor.
POST /producthunt/search-products

Search Product Hunt by keyword. Returns each product with its slug, tagline, logo, follower count, review count and average rating, plus a cursor for the next page.

query* string Keyword or phrase to search Product Hunt for
limit number Maximum products returned, or -1 for everything available. Defaults to 30.
pages number Pages of results to collect in one request (max 100).
cursor string Resume from a previous response's nextCursor.
delayMs number Milliseconds to wait between pages (max 30000).
POST /producthunt/product-detail

One product and one launch in full: description, website, categories, media, upvotes, launch-day upvotes, daily, weekly and monthly rank, topics, makers, hunter and ranking badges. Defaults to the product's most recent launch.

product* string Product slug, or any Product Hunt product or launch URL
launch string A specific launch slug or URL, instead of the product's most recent launch
includeLaunches boolean Also list every launch the product has had. Defaults to false.
POST /producthunt/product-comments

A launch’s comment threads, with replies nested under their parent rather than flattened into one list. Sort by score, date or votes, and page through with a cursor.

product* string Product slug, launch slug, or any Product Hunt product or launch URL
launch string A specific launch, instead of the product's most recent one
limit number Maximum comments returned (max 300), replies included. Defaults to 30.
pageSize number Comment threads fetched per page (max 50). Defaults to 10.
sortBy string 'SCORE' | 'DATE' | 'DATE_DESC' | 'VOTES' | 'DEFAULT'. Defaults to SCORE.
pages number Pages of threads to collect in one request (max 100).
POST /producthunt/topic-products

Every product filed under a topic, ordered by most recent launch, rating, followers, post count or shoutouts. Poll one topic on a schedule and it becomes a category watchlist.

topic* string Topic slug (for example "developer-tools"), or a Product Hunt topic URL
sortBy string 'most_recent_launch' | 'most_recent' | 'oldest' | 'posts_count' | 'most_followed' | 'best_rated' | 'highest_rated' | 'most_shoutouts' | 'no_order'.
featuredOnly boolean Only products that have launched on Product Hunt. Defaults to true.
tags string[] Narrow the topic to these tags (max 10).
limit number Maximum products returned, or -1 for everything available. Defaults to 30.
POST /producthunt/collections

Search collections by name, or omit the query to browse the newest ones. Each carries its curator, product count and a preview of what it holds — a human-curated shortlist in one theme.

query string Search collections by name. Omit to browse the newest ones.
limit number Maximum collections returned (max 200). Defaults to 20.
pages number Pages of results to collect in one request (max 100).
POST /producthunt/user-profile

A maker or hunter’s public profile: headline, about text, links, join date, follower counts, upvotes given, launches submitted, plus the products they built and every product they are credited on.

user* string Username, "@username", or a Product Hunt profile URL
POST /producthunt/resolve-url

Parse any Product Hunt URL into the structured input it encodes — product, launch, user, topic, category, collection, leaderboard or search, plus the slugs, comment id or period it carries. Free: it never consumes a credit.

url* string Any Product Hunt URL, to be parsed into structured input

Fields marked * are required. Full API reference →

FAQ

Common questions.

Is Product Hunt data public?

Yes. Product Hunt publishes launches, leaderboards, topics, collections, comment threads and member profiles on the open web. FetchLayer retrieves those publicly visible records and returns them as structured JSON. FetchLayer is not affiliated with, endorsed by, or sponsored by Product Hunt.

Do I need a Product Hunt developer account or an OAuth token?

No. You authenticate with your FetchLayer API key — the same Bearer token you use for every other platform. There is no Product Hunt application to register, no OAuth flow, and no token to refresh.

What identifiers can I pass in?

A product slug like "notion", a launch slug, a username or "@username", a topic slug like "developer-tools" — or any Product Hunt URL for the same things. If all you have is a URL, /resolve-url parses it into the structured input the other endpoints take, and it does not consume a credit.

How far back do the leaderboards go?

To 2013. Address a board by date, or by year plus month, day or week, for daily, weekly, monthly and yearly rankings. Pulling the same board on a schedule is how most people build a launch history they can query.

Why does a leaderboard return fewer entries than the website shows?

Because promoted placements are removed. Product Hunt seeds three promoted entries into every twenty of a leaderboard feed. Those are dropped from the results, and the number dropped is reported in the response’s notes array — so a count that differs from the site always has a stated reason rather than a silent gap.

How do launch comments come back?

Nested, not flattened. Each top-level thread carries its own replies array, which carries theirs, to whatever depth the conversation reaches. Walk the tree recursively — a flat loop over comments sees only the opening posts and misses the maker answers underneath them, which are usually the interesting part.

What is the notes array for?

It is where the API tells you what it could not do. A reply walk that stopped early, an upstream ceiling it ran into, promoted entries it dropped — all reported there instead of failing the request or quietly returning less. An empty notes array means nothing was held back. Read it before treating a result as complete.

Can I use this with an AI model or MCP agent?

Yes. Every response is structured JSON you can store, embed, or hand to an LLM, and eight endpoints are exposed through FetchLayer’s MCP server — so an agent can pull yesterday’s board, read a launch’s comment threads, and look up the makers without any wrapper code.

How does billing work?

One API request equals one credit, the same as every other FetchLayer platform — no multipliers. Each page walked counts as one request, so pages: 10 bills as ten. Parsing a URL with /resolve-url is free and consumes nothing; streaming an image bills as a normal request. Product Hunt is in Beta while coverage expands, billed at half credit.

Start pulling Product Hunt data today.

Get a free API key, make your first request, and put public feedback to work in your own product or research workflow.