Tony Wang6 min readHow to Scrape Product Hunt in 2026 (API & Python)
Get Product Hunt launch, product, and maker data in 2026 — the official GraphQL API, no-code tools, or one structured API — with real JSON examples.
Product Hunt is one of the platforms in this series with a real, free, self-serve official API — register an OAuth app, get a token, and query its GraphQL schema. So the honest question isn't "does Product Hunt have an API," it's "when do you still want a scraping API instead of building GraphQL queries by hand." This guide covers Product Hunt's own API, no-code options, and a structured multi-platform API, with the legal reality of each laid out up front.
Why scrape Product Hunt?
Product Hunt is one of the best public signals for early-stage products — daily launches, rankings, categories, makers, and community reaction, all in one place. That feeds:
- Launch monitoring — track what ships daily or weekly in a category you compete in or invest in.
- Startup and competitor research — enrich a company database with tagline, category, maker, and traction signals as soon as a product launches.
- Alternatives and positioning research — see what a product's own "alternatives" list says about its competitive set.
- Customer and testimonial signal — pull the "customers" a product lists to see who's actually adopting it.
- Trend and category tracking — pair category leaderboards with Google Trends search demand to separate hype from real interest.
Is it legal to scrape Product Hunt?
Option 1: Product Hunt's own GraphQL API (and its real friction)
Product Hunt's API v2 is real GraphQL, not REST. First you register an OAuth application at api.producthunt.com/v2/oauth/applications, then either exchange client_id/client_secret for a token or generate a non-expiring developer token from your app's dashboard page. Every request goes to a single endpoint with a query body:
curl -X POST "https://api.producthunt.com/v2/api/graphql" \
-H "Authorization: Bearer YOUR_DEVELOPER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "query { posts(first: 5, order: RANKING) { edges { node { id name tagline votesCount url } } } }"}'
That's a legitimate, free way to query Product Hunt's own launch and product graph — no scraping needed. Where it starts to add friction for a real pipeline:
- OAuth registration, not a plain API key. You need an app registration and a redirect URI before you get a usable token, even for read-only, single-user access — more setup than a copy-paste API key.
- You're writing GraphQL, not calling named endpoints. Every field you want has to be named in the query yourself against Product Hunt's schema; there's no
/product/{id}shortcut. - Complexity-based rate limiting. The GraphQL endpoint budgets roughly 6,250 complexity points per 15 minutes — a query's cost depends on the fields and nesting you request, not just the request count, so a couple of deep queries can eat the whole window.
- Commercial use needs a real conversation with Product Hunt. The API documentation states it isn't for commercial use by default and asks businesses to reach out directly — worth checking against your actual use case (see our commercial-use guide) before you build on it.
Option 2: No-code tools
Marketplace scraper actors exist for Product Hunt launch and product listings. They're fine for a one-off pull or a spreadsheet export, but for a scheduled pipeline they add a layer of indirection, carry the same site-terms exposure as scraping the page directly, and don't solve the multi-platform schema problem either.
Option 3: A structured Product Hunt API (via Crawlora)
If you want Product Hunt alongside other platforms in one normalized shape — a plain REST call and an API key instead of a GraphQL query — a Product Hunt scraping API gives you that. Search products:
curl "https://api.crawlora.net/api/v1/producthunt/search?query=cursor" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"edges": [
{
"node": {
"id": "1050265",
"name": "HeroUI Chat",
"tagline": "Build and ship beautiful UIs with AI and HeroUI",
"slug": "heroui-chat",
"reviewsRating": 4.8,
"reviewsCount": 5
}
}
],
"pageInfo": { "page": 1, "hasPreviousPage": false, "hasNextPage": true },
"pagesCount": 394
}
}
Then resolve the id and pull product detail, leaderboard, and alternatives in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/producthunt"
hits = requests.get(f"{base}/search", headers=h, params={"query": "cursor"}).json()["data"]["edges"]
product_id = hits[0]["node"]["id"]
product = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
alternatives = requests.get(f"{base}/product/{product_id}/alternatives", headers=h).json()["data"]
leaderboard = requests.get(f"{base}/leaderboard", headers=h, params={"scope": "daily"}).json()["data"]
Product detail is normalized JSON (real fields — check the docs):
{
"code": 200,
"msg": "OK",
"data": {
"id": "chronicle-design",
"name": "Chronicle",
"tagline": "Visual version control for teams",
"description": "Chronicle lets designers and developers review every iteration in one place.",
"rating": 4.8,
"review_count": 152,
"followers_count": 2000,
"daily_rank": 1,
"weekly_rank": 1,
"monthly_rank": 1,
"date_published": "2024-07-21T12:34:56Z",
"categories": ["Design", "Productivity"],
"website": "https://chronicle.design",
"social_links": ["https://twitter.com/chronicle", "https://github.com/chronicle"]
}
}
The daily leaderboard is scoped by scope, year/month/day/week, and order, and returns ranked items with vote-adjacent scores:
{
"code": 200,
"msg": "OK",
"data": {
"scope": "daily",
"year": 2026,
"month": 4,
"day": 27,
"items": [
{
"type": "post",
"post": {
"id": "1101061",
"name": "Kitty Points Leaderboard",
"slug": "kitty-points-leaderboard",
"tagline": "Find interesting community members and see how you stack up",
"latest_score": 140,
"daily_rank": 3,
"weekly_rank": 9,
"comments_count": 18
}
}
]
}
}
Category, category products, makers, launches, customers, and reviews all follow the same id-in-JSON-out shape — store one row per product (or per launch) and re-run on a schedule.
What you can collect
Public Product Hunt data: search across products (id, name, tagline, slug, rating, review count); product detail (rating, follower count, daily/weekly/monthly rank, date published, categories, website, social links); leaderboards by day/week/month with rank and comment counts; category detail and category-scoped product listings with an AI summary and tag counts; makers per product; launch history per product; alternatives with tag counts; and customers a product lists. Note that Product Hunt's comments endpoint was deprecated by the upstream source in May 2026 due to unstable reliability and now returns a 410 Gone response — comment threads are not currently retrievable through this route.
Limitations and common challenges
- Know which door you're using. Product Hunt's own GraphQL API is free and legitimate for non-commercial, single-platform work; scraping producthunt.com pages directly is explicitly against Product Hunt's site terms either way.
- Commercial use needs a real conversation with Product Hunt. The official API's terms flag commercial use for direct contact with Product Hunt, whichever tool ends up calling it.
- Some upstream endpoints degrade over time. The comments endpoint here returns
410 Goneafter an upstream deprecation — build with the assumption that any single endpoint can lose coverage and check current responses before depending on a field. - Per-product fan-out. A full record (product plus makers, launches, alternatives, reviews) is several calls per id, not one.
- Public data only. This collects what Product Hunt already exposes publicly — never a way to bypass Product Hunt's site restrictions or its commercial API terms.
Where this gets used
- Launch monitoring — track daily and weekly launches in a category you follow.
- Startup database enrichment — attach tagline, category, rating, and maker data to a company record as it launches.
- Competitive and positioning research — read a product's own alternatives list and customer roster.
- Trend tracking — pair category leaderboards with search-demand data to separate real traction from launch-day noise.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the search, product, and leaderboard endpoints in the Playground, check the schema in the API docs, and review pricing. Product Hunt tells you what launched today and who's building it; pair it with GitHub for the developer and repo activity behind a launch, or with PitchBook for the funding history behind the company — launch traction and funding data are the two halves of an early-stage startup research pipeline. Once a product has real traction, how to scrape TrustMRR tracks whether that traction turns into verified revenue. See also how to choose a web scraping API and is web scraping legal.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
Does Product Hunt have an official API?
Yes. Product Hunt's GraphQL API v2, at api.producthunt.com/v2/api/graphql, is real and free to register for — but it requires an OAuth app registration and building GraphQL queries against Product Hunt's schema, and its docs state the API isn't for commercial use by default.
Is it legal to scrape Product Hunt?
Product Hunt's site terms prohibit crawling or scraping producthunt.com pages directly. The sanctioned path for automated access is Product Hunt's own GraphQL API, and its commercial-use terms are separate from that scraping restriction — see our commercial-use guide for the checklist.
What are Product Hunt's official API rate limits?
The GraphQL endpoint is complexity-based: roughly 6,250 complexity points per 15 minutes, where cost depends on the fields and nesting in your query rather than a flat request count. Other v2 REST-style endpoints allow up to 450 requests per 15 minutes.
Can I get Product Hunt comments through the API?
Not currently through this route — the product comments endpoint was deprecated upstream in May 2026 due to unstable reliability and now returns a 410 Gone response.
Can I use Product Hunt data commercially?
Product Hunt's own API documentation says the API may not be used for commercial purposes by default and asks businesses to contact Product Hunt directly. Review that alongside the site terms and any tool's own terms before shipping a commercial product.
How do I get a Product Hunt product's alternatives or customers?
Both are id-scoped endpoints — pull a product's alternatives list (with tag counts) or its customers list by product id, same shape as product detail and makers.
What's the fastest way to pull Product Hunt data across many products?
A structured REST API with one auth header and consistent JSON, rather than hand-building GraphQL queries per field set, is faster to iterate over search results and fan out to detail, makers, and leaderboard endpoints on a schedule.