ProductHunt API endpoint
Search for products, users, or launches on Product Hunt
Performs a full-text Product Hunt search and returns matching products, users, or launches.
/producthunt/searchParameters
| Name | In | Type | Required | Enum | Example | Description |
|---|---|---|---|---|---|---|
| query | query | string | Yes | "ai" | Search keywords | |
| type | query | string | No | product, user, launch | Result type: **product** (default), **user**, or **launch** | |
| page | query | integer | No | 2 | Page number (1-based) | |
| featured | query | boolean | No | Launch search only: featured launches only | ||
| topics | query | string | No | ai-chatbots,chrome-extensions | Launch search only: comma-separated topic slugs | |
| x-api-key | header | string | Yes | API key required |
Authentication
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Billing
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
- Credit cost
- 3 credits/request
- Charged response
- Successful 2xx responses
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
Response behavior
- The `data` shape depends on `type`: `product` returns product edges, `user` returns user edges, and `launch` returns post edges plus topic aggregations. Example response: ```json { "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 } } ```
Failure responses
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 404 | No results found | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Example response
{
"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
}
}Request schema
No body schema
Response schema
#/definitions/producthunt.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | producthunt.searchDataDoc | No | ||||
| data.aggregations | producthunt.searchAggregationsDoc | No | ||||
| data.aggregations.topics | array | No | ||||
| data.aggregations.topics[].count | integer | No | 11979 | |||
| data.aggregations.topics[].topic | object | No | ||||
| data.aggregations.topics[].topic.id | string | No | 268 | |||
| data.aggregations.topics[].topic.name | string | No | Artificial Intelligence | |||
| data.edges | array | No | ||||
| data.edges[].node | object | No | ||||
| data.pageInfo | producthunt.searchPageInfoDoc | No | ||||
| data.pageInfo.hasNextPage | boolean | No | ||||
| data.pageInfo.hasPreviousPage | boolean | No | ||||
| data.pageInfo.page | integer | No | 1 | |||
| data.pagesCount | integer | No | 394 | |||
| msg | string | No | OK |
Example request
curl -X GET "https://api.crawlora.net/api/v1/producthunt/search?query=%22ai%22&page=2&topics=ai-chatbots%2Cchrome-extensions" -H "x-api-key: <api-key>"
TypeScript fetch
const url = new URL("https://api.crawlora.net/api/v1/producthunt/search");
url.searchParams.set("query", "\"ai\"");
url.searchParams.set("page", "2");
url.searchParams.set("topics", "ai-chatbots,chrome-extensions");
const headers = new Headers();
headers.set("x-api-key", "<api-key>");
const response = await fetch(url, {
method: "GET",
headers,
});
const payload = await response.json();