Product Hunt API

What launched today, and how it actually did

The Product Hunt API returns daily, weekly and monthly launch leaderboards as clean JSON.

no credit card1,000 free credits · instant API key · live in 10 seconds
Missing a Product Hunt endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
P
/producthunt/v1

13 active endpoints, on 0 and 1 credit tiers.

  • POST/producthunt/v1/posts
  • POST/producthunt/v1/post
  • POST/producthunt/v1/reviews
  • POST/producthunt/v1/topics
  • POST/producthunt/v1/topic_posts
  • POST/producthunt/v1/categories
  • POST/producthunt/v1/category
  • +6 more

What Product Hunt endpoints does ReefAPI ship?

13 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

13 endpoints

posts

1 cr

Today's or historical leaderboard launches (daily/weekly/monthly/yearly).

required
optional
date, year, month, day, week, period, page

post

1 cr

Full launch/product detail by slug.

required
slug
optional

reviews

1 cr

Product reviews by slug.

required
slug
optional
page

topics

0 cr

Browse Product Hunt topics (interest tags applied to launches).

required
optional
page

topic_posts

1 cr

Launches filtered by topic slug.

required
slug
optional
page

categories

1 cr

Browse Product Hunt product categories (the curated category tree, distinct from topics).

required
optional
page

category

1 cr

Products and launches inside one product category by slug.

required
slug
optional
page

search

1 cr

Keyword search across Product Hunt.

required
query
optional
type, page

collections

1 cr

Public curated product collections index.

required
optional
page

collection

1 cr

Single collection (its products) by user+collection slug or full path.

required
optional
path, username, collection_slug

user

1 cr

Maker/user profile plus their submitted launches.

required
username
optional
page

discussions

1 cr

Product Hunt discussions/forum thread feed (popular or newest).

required
optional
order, page

discussion

1 cr

Single discussion thread with its full nested comment tree.

required
slug
optional
forum, path

Every parameter, every allowed value →

Product Hunt API

3 of 13 endpoints, ready to run

View docs ↗

The launches for a period with upvotes, launch-day score, comment count and the product's page — the leaderboard as data.

1 credit0 required · 3 optional
POST/producthunt/v1/posts
ok1383 ms · 38 records · sample
{
  "ok": true,
  "meta": {
    "api": "producthunt",
    "endpoint": "posts",
    "mode": "live",
    "latency_ms": 1383.4,
    "record_count": 38,
    "cache_hit": false
  },
  "data": {
    "posts": [
      {
        "id": "488879",
        "slug": "wispr-flow",
        "name": "Wispr Flow",
        "tagline": "Voice productivity for your writing and your meetings.  ",
        "description": null,
        "website_url": null,
        "product_hunt_url": "https://www.producthunt.com/posts/wispr-flow",
        "thumbnail_url": null,
        "upvotes": 2725,
        "launch_day_score": 1511,
        "comments_count": 538,
        "daily_rank": null,
        "weekly_rank": null,
        "monthly_rank": null,
        "featured_at": "2024-09-30T00:01:00-07:00",
        "created_at": "2024-09-30T00:01:00-07:00",
        "is_featured": true,
        "topics": [
          {
            "id": "46",
            "slug": "productivity",
            "name": "Productivity",
            "description": null,
            "followers_count": null,
            "image_url": null
          },
          {
            "id": "268",
            "slug": "artificial-intelligence",
            "name": "Artificial Intelligence",
            "description": null,
            "followers_count": null,
            "image_url": null
          },
          {
            "id": "471",
            "slug": "audio",
            "name": "Audio",
            "description": null,
            "followers_count": null,
            "image_url": null
          }
        ],
        "product": {
          "id": "606339",
          "slug": "wisprflow",
          "name": "Wispr Flow",
          "tagline": "Voice productivity for your writing and your meetings.  ",
          "description": null,
          "website_url": null,
          "product_hunt_url": "https://www.producthunt.com/products/wisprflow",
          "logo_url": null,
          "reviews_count": null,
          "reviews_rating": null,
          "followers_count": null,
          "is_no_longer_online": null
        }
      },
      {
        "id": "1195558",
        "slug": "1752vc-pitch-deck-analyzer",
        "name": "1752vc Pitch Deck Analyzer",
        "tagline": "Know what investors will say before you ever hit send.",
        "description": null,
        "website_url": null,
        "product_hunt_url": "https://www.producthunt.com/posts/1752vc-pitch-deck-analyzer",
        "thumbnail_url": "https://ph-files.imgix.net/3239530f-92c7-4e13-afa7-66b4172dcb92.png?auto=format",
        "upvotes": 146,
        "launch_day_score": 145,
        "comments_count": 49,
        "daily_rank": "1",
        "weekly_rank": "33",
        "monthly_rank": "421",
        "featured_at": "2026-08-29T00:01:00-07:00",
        "created_at": "2026-08-29T00:01:00-07:00",
        "is_featured": true,
        "topics": [
          {
            "id": "208",
            "slug": "venture-capital",
            "name": "Venture Capital",
            "description": null,
            "followers_count": null,
            "image_url": null
          },
          {
            "id": "268",
            "slug": "artificial-intelligence",
            "name": "Artificial Intelligence",
            "description": null,
            "followers_count": null,
            "image_url": null
          },
          {
            "id": "791",
            "slug": "fundraising",
            "name": "Fundraising",
            "description": null,
            "followers_count": null,
            "image_url": null
          }
        ],
        "product": {
          "id": "1268864",
          "slug": "1752vc-pitch-deck-analysis",
          "name": null,
          "tagline": null,
          "description": null,
          "website_url": null,
          "product_hunt_url": "https://www.producthunt.com/products/1752vc-pitch-deck-analysis",
          "logo_url": null,
          "reviews_count": null,
          "reviews_rating": null,
          "followers_count": null,
          "is_no_longer_online": null
        }
      },
      {
        "id": "1235140",
        "slug": "hy4-preview",
        "name": "Hy4 preview",
        "tagline": "Tencent’s 770B open model for long-horizon work",
        "description": null,
        "website_url": null,
        "product_hunt_url": "https://www.producthunt.com/posts/hy4-preview",
        "thumbnail_url": "https://ph-files.imgix.net/52cfdc3c-65a6-4d2e-ae8b-68ae2984735c.svg?auto=format",
        "upvotes": 138,
        "launch_day_score": 138,
        "comments_count": 1,
        "daily_rank": "2",
        "weekly_rank": "37",
        "monthly_rank": "503",
        "featured_at": "2026-08-29T00:01:00-07:00",
        "created_at": "2026-08-29T00:01:00-07:00",
        "is_featured": true,
        "topics": [
          {
            "id": "89",
            "slug": "open-source",
            "name": "Open Source",
            "description": null,
            "followers_count": null,
            "image_url": null
          },
          {
            "id": "268",
            "slug": "artificial-intelligence",
            "name": "Artificial Intelligence",
            "description": null,
            "followers_count": null,
            "image_url": null
          }
        ],
        "product": {
          "id": "1082094",
          "slug": "hunyuan-a13b",
          "name": null,
          "tagline": null,
          "description": null,
          "website_url": null,
          "product_hunt_url": "https://www.producthunt.com/products/hunyuan-a13b",
          "logo_url": null,
          "reviews_count": null,
          "reviews_rating": null,
          "followers_count": null,
          "is_no_longer_online": null
        }
      }
    ],
    "has_more": true,
    "next_date": "2026-08-28",
    "date": "2026-08-29",
    "period": "daily"
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Product Hunt API works

Product Hunt is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /producthunt/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
0 or 1 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Tracking a category week by week

The useful question is not what launched today. It is what has been launching in your category, how it has been received, and whether the volume is going up.

01posts
POST/producthunt/v1/posts
{"period": "daily", "date": "2026-08-28"}

One day's leaderboard with upvotes, launch score and comment counts. The response returns the next date, so walking backwards is one field.

02search
POST/producthunt/v1/search
{"query": "your category"}

Then search to check whether the thing you are about to build already launched, which is a cheaper answer than building it.

Upvotes, launch-day score and comment count together separate a launch that got attention from one that got engagement — they diverge more often than you would expect.

request
curl -X POST https://api.reefapi.com/producthunt/v1/posts \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "producthunt",
    "endpoint": "posts",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

A launch and a product are two different objects

Product Hunt keeps a launch post and the product it launched as separate records with separate ids and, very often, separate slugs. Most integration bugs here come from treating them as one. Values below are from a live daily board for 2024-06-01 and from product and user calls.

WhatMeasured exampleWhere it comes from
launch post id and slug456434 and artizyouthe id and slug on a posts row. The slug is the /posts/ segment
product id and slug460056 and b-ip-certificatethe product object nested in the same row. Frequently a different slug from the launch it appeared under
upvotes, comments_count, daily_rank518, 76 and "1"the leaderboard feeds. daily_rank, weekly_rank and monthly_rank are numeric strings, not integers
daily board pagingmeta.next_date 2024-05-31daily boards walk backwards one calendar day at a time. page is for the other feeds
topic id and slug268 and artificial-intelligencenumeric string ids again. Topics embedded in a launch row carry only id, slug and name
topic follower countsdesign-tools has 262,104 followersonly the topics action fills followers_count, description and image_url. 26 topics per page
product review aggregatesreviews_rating 4.83 over 1,392 reviewsrating_breakdown came back as 5:1189, 4:180, 3:18, 2:4, 1:3
user profilerrhoover is id "2", 854 submitted posts, 76 productsthe user action, which also returns followers_count, is_maker and that member's launches

A daily board is not purely ranked. The 2024-06-01 call returned 19 rows, of which 17 carried a daily_rank string from 1 to 17 and two carried daily_rank null while showing 696 and 2,723 upvotes. Filter on daily_rank being non-null if you are rebuilding the leaderboard, or those two unranked rows will land at the top of any sort by upvotes.

Which fields are reliable and which are patchy

Measured across daily leaderboards. The second row is a real coverage gap and it is worth knowing before you design around it.

The engagement numbers are the solid part

Upvotes, launch-day score and comment count were populated on every row we measured, together with the slug and the product's page URL. Those are the fields the leaderboard is actually built from, and they are the ones a trend or a ranking should be computed on.

Against us: descriptions, websites and thumbnails are frequently empty

Across the rows we measured, the description, website URL and thumbnail came back null, and the tagline was present on some rows and absent on others. The ranking fields for weekly and monthly position were also unset on the daily view. Build a gallery on those fields and you get a page of blanks — build on the engagement numbers and the product link, and follow the link when you need the rest.

Paging backwards through time is built in

A day's response returns the next date to ask for along with a has-more flag, so walking a category back through weeks is a loop over one field rather than date arithmetic on your side.

Daily, weekly and monthly are the same call

The period parameter switches the leaderboard, and the day, week, month and year fields let you address a specific one. Comparing a launch against the week it landed in is one extra call with one field changed.

Reviews, topics and collections are covered too

Beyond launches there are product reviews, the topic taxonomy with per-topic launch lists, categories, collections and user profiles — enough to follow a category rather than only a day.

What people build with Product Hunt

The jobs this data is most often used for.

13

endpoints

0/1

credits per call

01

Startup and VC research tools call posts to track top launches by day, week and topic.

02

Lead-gen products use search and topic_posts to find new tools in a specific category.

03

Trend trackers use reviews and upvotes to gauge community reception of a launch.

What Product Hunt data costs

The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 184 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/producthunt/v1/posts \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/producthunt/v1/posts",
    headers={"x-api-key": REEF_KEY},
    json={},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Product Hunt.

Get a free key →
I passed a product slug to post and got back a launch I did not ask for. Why?

post resolves to a product page and returns that product's most recent launch in the post block. Asking for notion returned product notion with id 106091, and a post block for ship-os-by-notion with id 1192317, its July 2026 launch. Asking for linkedcrm-ai returned product 585651 with slug linkedcrm-ai and a post whose slug was linkedin-email-finder. The launches array is the honest view: it lists every launch that product has had, 11 of them for figma, so read that rather than assuming post is the one you meant.

Why are upvotes and comments_count null when I call post?

The product page does not print launch counters, so post returns them as null. Measured across notion, figma, linear, raycast and three leaderboard slugs, upvotes, comments_count and daily_rank were null every time on the post action while name, tagline, website_url, topics, media, links and alternatives came back populated. Vote counts live on the leaderboard feeds: the same launch that read null through post read 518 upvotes and 76 comments as a row on the daily board for its launch date.

Are the ids integers?

No, every id in this engine is a numeric string, and so are the rank fields. A post came back as id "456434", its product as "460056", a topic as "268" and the founder's user account as "2". daily_rank came back as "1" and weekly_rank as "22". If you parse them into integers you lose nothing on the ids, but the ranks can be null, so a naive int conversion on a rank will throw on the unranked rows that appear in every board.

How do I walk back through historical leaderboards?

Set date to a YYYY-MM-DD and then follow meta.next_date, which came back as 2024-05-31 for a 2024-06-01 daily call. Daily boards page by date, not by page number. Change period to weekly, monthly or yearly for the wider boards, in which case year with week, or year with month, is how you address a specific one. period has on_invalid set to ignore, so a misspelled window silently gives you the daily board.

Why do the topics on a launch have no follower counts?

Because a launch row embeds only the topic stub. On the daily board, each post carried topics with id, slug and name filled in and description, followers_count and image_url all null. The topics action is the hydrated view and returns 26 per page with the counts attached, for example design-tools with 262,104 followers. Join the two on the topic slug, which is also what topic_posts takes when you want the launches inside one topic.

What review data comes back with a product?

Three layers. The aggregate is reviews_count and reviews_rating, 1,392 and 4.83 on Notion. rating_breakdown is the histogram, which came back as an array of rating and count pairs: 1,189 fives, 180 fours, 18 threes, 4 twos and 3 ones. pro_con_tags is Product Hunt's own tagging of review themes, each with a name, a type of Positive or Negative and a count, such as all-in-one workspace at 198. There is also ai_review_summary, a generated paragraph, which is a summary rather than a quotable review.

What is the difference between topics and categories?

They are two separate taxonomies and they do not share ids. Topics are the interest tags attached to individual launches, addressed by slug through topic_posts, and a launch usually has two or three of them. Categories are Product Hunt's curated product tree, returned by the categories action with a path and a nested subcategories array, and browsed with the category action. A product sits in a category, while a launch is tagged with topics.

How many rows does a page return?

It depends on the surface, and the response tells you. A daily leaderboard returned 19 rows, the topics index returned 26, topic_posts returned 70, and a user profile returned 55 of that member's launches. Every one of these carries meta.has_more and meta.next_page, or meta.next_date on the daily boards. There is no page-size parameter, so plan around what you get back rather than requesting a size.

What is the Product Hunt API?

Product Hunt API is a ReefAPI endpoint group for product hunt It returns live JSON through POST requests under /producthunt/v1.

Is the Product Hunt API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Product Hunt calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Product Hunt login or account?

No login to Product Hunt is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Product Hunt data?

The page example is captured from a live posts call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Product Hunt API use?

Product Hunt actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Product Hunt from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call producthunt actions with the same key, credit pool and JSON envelope used by normal REST requests.

18 Developer Tools APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Product Hunt, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-30.