ProductHunt API endpoint
Searches Product Hunt for the required `query`. `type` is `product` (default), `user` or `launch`, and `page` starts at 1. `featured` and `topics` apply to launch search only. Results come as `edges` with `pageInfo` and `pagesCount`; launch search also returns topic aggregations.
/producthunt/searchQuery parameters:
query: required. Search keywords. Example: "ai".type: optional. Result type: product (default), user, or launch. Default: product. Allowed values: product,user,launch.page: optional. Page number (1-based). Example: 2. Minimum: 1.featured: optional. Launch search only: featured launches only. Default: false.topics: optional. Launch search only: comma-separated topic slugs. Example: ai-chatbots,chrome-extensions.Notable response behavior:
data shape depends on type: product returns product edges, user returns user edges, and launch returns post edges plus topic aggregations.| Field | Filled in, of 20 checked |
|---|---|
| node | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Search keywords | "ai" | |
| type | string | No | Result type: **product** (default), **user**, or **launch** Allowed values: product, user, launch. | ||
| page | integer | No | Page number (1-based) Minimum: 1. | 2 | |
| featured | boolean | No | Launch search only: featured launches only | ||
| topics | string | No | Launch search only: comma-separated topic slugs | ai-chatbots,chrome-extensions | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/producthunt/search?query=%22ai%22&type=product&page=1&featured=true" \ -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
}
}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 | object | No | Topic counts for the matching launches. Returned for launch searches. | |||
| data.aggregations.topics | array | No | Launch counts per topic for the search results. | |||
| data.aggregations.topics[].count | integer | No | 11979 | Number of matching launches in the topic. | ||
| data.aggregations.topics[].topic | object | No | Topic the count applies to, with its `id` and `name`. | |||
| data.aggregations.topics[].topic.id | string | No | 268 | |||
| data.aggregations.topics[].topic.name | string | No | Artificial Intelligence | |||
| data.edges | array | No | Search results on this page, one per entry. | |||
| data.edges[].node | object | No | Search result: a product, user or launch, depending on `type`. | |||
| data.pageInfo | object | No | Paging details for the results. | |||
| data.pageInfo.hasNextPage | boolean | No | Whether another page of results follows this one. | |||
| data.pageInfo.hasPreviousPage | boolean | No | Whether a page of results precedes this one. | |||
| data.pageInfo.page | integer | No | 1 | Page number returned. | ||
| data.pagesCount | integer | No | 394 | Total number of result pages. | ||
| msg | string | No | OK |
| 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 |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/producthunt/search?query=%22ai%22&type=product&page=1&featured=true" \
-H "x-api-key: $CRAWLORA_API_KEY"