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.

Free tier included No credit card No scraper maintenance

Trusted by developers shipping real products.

493,590 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.

MCP & agents

Live

Your AI already knows how to use this.

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.

1
Pick your editor
2
Agent discovers 9+ tools
3
Query any platform instantly
connect your agent ~30s

Pick your editor and we hand you the config with your key already in it — no JSON to hand-edit, no wrapper code.

Get your free API key

Free tier · no credit card · any MCP host

New chat fetchlayer connected

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

Used 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.

Ask a follow-up…

Works with every MCP-compatible tool

Cursor
Claude
VS Code
Windsurf
Cline
Hermes
OpenClaw
Kiro
No wrapper code
All 9 endpoints exposed as tools
Official & maintained
Free to install

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 APIPartialYou build it
Historical boards back to 2013LimitedYou build it
Promoted entries removed and reportedMixed into the feedYou detect them
Bearer auth from one accountOAuth applicationYou manage it
Ready for AI and MCP workflowsYour integrationYour integration

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

Pricing

Start free. Scale when ready.

Pay per request with no commitment, or lock in a flat monthly rate with built-in savings.

Free plan — 30 requests

Verify responses, inspect the API, no credit card required.

Try free

Pay as you go

$1.99

per 1,000 requests

$0.00199 per request · credits never expire

How credits work — no multipliers

One credit = one API call, on every endpoint and platform. No matter how many results come back, you pay for the call, not the output size. Most scraping APIs charge multipliers of 5x, 25x, even 75x per call depending on the target — here it's always 1.

  • No multipliers — 1 request = 1 credit
  • No monthly commitment
  • Credits never expire
  • Same API & MCP access as subscribers
  • ∞ req/min, ∞ API keys
Get API key

Expiry

Credits stay until you use them. No monthly reset, no pressure to hit a quota.

0

Commitments

No subscription, no contract, no minimums. Start, pause, or scale whenever.

100%

Access

Every endpoint and MCP included. Not a limited tier — same data as any subscriber.

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, at standard pricing.

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.