ProductHunt API endpoint
Returns the core Product Hunt product details. The path takes an exact Product Hunt slug; if you only know the product name, look the slug up first with `/producthunt/search` (live) or `/datasets/producthunt-products/search` (indexed). Unknown slugs return 404, and that 404 is cached for one hour.
/producthunt/product/{id}The path takes an exact Product Hunt slug. If you only know the product name, find the slug first:
/api/v1/producthunt/search?query=<name>&type=product (live Product Hunt search; each result carries slug)/api/v1/datasets/producthunt-products/search?q=<name> (indexed archive; each result carries slug)Unknown slugs return 404. That 404 is cached for one hour, so retrying the same guessed slug does not trigger a new upstream call.
Path parameters:
id: required. Product Hunt slug or numeric ID. Example: "chronicle-6".| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| name | 20 | “Claude by Anthropic” and 19 other values |
| categories | 20 | median 2 entries |
| rating | 20 | 0 to 5, median 4.5 |
| review_count | 20 | 0 to 1,041, median 4 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Product Hunt slug or numeric ID | "chronicle-6" | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/producthunt/product/%22chronicle-6%22" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "chronicle-6",
"name": "Chronicle",
"tagline": "Stunning presentations with AI. No design skills required.",
"description": "Chronicle combines AI with taste to help you go from raw thoughts to polished presentations. Designed for serious work: Start with templa...",
"rating": 4.8,
"review_count": 38
}
}Request schema
No body schema
Response schema
#/definitions/producthunt.productResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | producthunt.Product | No | ||||
| data.categories | array | No | ["Design","Productivity"] | Names of the Product Hunt categories the product belongs to. | ||
| data.daily_rank | integer | No | 1 | Daily leaderboard rank. `0` when Product Hunt shows none. | ||
| data.date_published | string | No | 2024-07-21T12:34:56Z | Time the product was first published on Product Hunt, as an RFC 3339 timestamp. | ||
| data.description | string | No | Chronicle lets designers and developers review every iteration in one place. | Description of the product from its Product Hunt page. | ||
| data.followers_count | integer | No | 2000 | Number of Product Hunt users following the product. | ||
| data.id | string | No | chronicle-design | Product Hunt slug of the product. Use it with the product endpoint. | ||
| data.monthly_rank | integer | No | 1 | Monthly leaderboard rank from the product's awards. `0` when Product Hunt shows none. | ||
| data.name | string | No | Chronicle | Name of the product. | ||
| data.rating | number | No | 4.8 | Average review rating on Product Hunt, out of 5. | ||
| data.review_count | integer | No | 152 | Number of reviews the product has on Product Hunt. | ||
| data.similar_products | array | No | Products Product Hunt lists as alternatives. | |||
| data.similar_products[].categories | array | No | ["Presentation Software"] | Product Hunt categories the similar product is listed in. | ||
| data.similar_products[].id | string | No | beautiful-ai | Product Hunt slug of the similar product. | ||
| data.similar_products[].name | string | No | Beautiful.ai | Name of the similar product. | ||
| data.similar_products[].rating | number | No | 3.3 | Average review rating of the similar product. | ||
| data.similar_products[].review_count | integer | No | 20 | Number of reviews the similar product has. | ||
| data.social_links | array | No | ["https://twitter.com/chronicle","https://github.com/chronicle"] | Links to the product's social and app store pages, sorted alphabetically. Product Hunt's own links are left out. | ||
| data.tagline | string | No | Visual version control for teams | Short tagline of the product. | ||
| data.website | string | No | https://chronicle.design | Product website address. | ||
| data.weekly_rank | integer | No | 1 | Weekly leaderboard rank from the product's awards. `0` when Product Hunt shows none. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 404 | Product not 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/product/%22chronicle-6%22" \
-H "x-api-key: $CRAWLORA_API_KEY"