docs / producthunt
Product Hunt API
Product Hunt API
base /producthunt/v18 endpoints
post
/producthunt/v1/posts1 credittoday or historical leaderboard posts (daily/weekly/monthly/yearly)
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| period = daily | optional | daily · weekly · monthly · yearly | Leaderboard window. Unknown values fall back to the daily board. |
| date | optional | — | Leaderboard date (YYYY-MM-DD). Overrides year/month/day when given. |
| year | optional | 2013– | Leaderboard year (used with month/day/week; defaults to today). |
| month | optional | 1–12 | Leaderboard month 1-12 (for daily/monthly periods). |
| day | optional | 1–31 | Leaderboard day of month 1-31 (for the daily period). |
| week | optional | 1–53 | ISO week number 1-53 (for the weekly period). |
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
post
/producthunt/v1/post1 creditsingle launch post/product detail by slug
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| slug | required | — | Launch post or product slug (the segment in producthunt.com/products/<slug> or /posts/<slug>). |
post
/producthunt/v1/topicsfreebrowse Product Hunt topics/categories
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
post
/producthunt/v1/topic_posts1 creditposts filtered by topic slug
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| slug | required | — | Topic slug (the segment in producthunt.com/topics/<slug>). |
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
post
/producthunt/v1/search1 creditkeyword search across Product Hunt products
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | Free-text search across Product Hunt products. |
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
post
/producthunt/v1/collections1 creditpublic curated collections index
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
post
/producthunt/v1/collection1 creditsingle collection by user+collection slug or full path
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| path | optional | — | Full collection path (e.g. /@user/collections/<slug>). Alternative to username + collection_slug. |
| username | optional | — | Collection owner's username (with/without @). Combine with collection_slug, or pass the full path. |
| collection_slug | optional | — | Collection slug — the trailing segment of a collection path. |
post
/producthunt/v1/user1 creditmaker profile plus submitted posts
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| username | required | — | Product Hunt username/handle, with or without @ (the name in producthunt.com/@<username>). |
| page = 1 | optional | 1– | Result page number (1-based). Use meta.next_page to go further. |
Example request · posts
curl -X POST https://api.reefapi.com/producthunt/v1/posts \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'Response shape
{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}