ProductHunt API endpoint

Retrieve Product Hunt product alternatives

Returns paginated alternatives, tags, and related discussions for a Product Hunt product.

GETapiKey2 credits/requestproducthunt.alternativesResponseDoc/producthunt/product/{id}/alternatives

Parameters

NameInTypeRequiredEnumExampleDescription
idpathstringYes"clico"Product Hunt slug
firstqueryintegerNoPage size
cursorquerystringNoPagination cursor
orderquerystringNoSort order
tagsquerystringNoComma-separated tag slugs
x-api-keyheaderstringYesAPI 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
2 credits/request
Charged response
Successful 2xx responses
PlanPriceIncluded creditsDaily capRate limitOverage
Free$0/mo2,000500 daily credits5/minNo overage
Starter$9/mo20,0005,000 daily credits15/min$0.75/1,000 overage credits when enabled
Growth$29/mo100,00025,000 daily credits45/min$0.45/1,000 overage credits when enabled
Pro$79/mo400,000No daily cap120/min$0.30/1,000 overage credits
Business$199/mo1,200,000No daily cap300/min$0.20/1,000 overage credits
Enterprise$499/mo5,000,000No daily cap1,000/min$0.12/1,000 overage credits

Response behavior

- Pass the returned `cursor` value from a previous response to continue pagination. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "1191613", "slug": "clico", "name": "Clico", "followers_count": 577, "categories": [ "Writing assistants" ], "alternative_tags": [ { "name": "chrome extension", "count": 24 } ] } } ```

Failure responses

StatusDescriptionSchema
400Missing or invalid parameters#/definitions/app.Response
404Product not found#/definitions/app.Response
429Rate limit exceeded#/definitions/app.Response
500Internal server error#/definitions/app.Response

Example response

{
  "code": 200,
  "msg": "OK",
  "data": {
    "product_id": "1191613",
    "slug": "clico",
    "name": "Clico",
    "followers_count": 577,
    "categories": [
      "Writing assistants"
    ],
    "alternative_tags": [
      {
        "name": "chrome extension",
        "count": 24
      }
    ]
  }
}

Request schema

No body schema

Response schema

#/definitions/producthunt.alternativesResponseDoc

FieldTypeRequiredEnumBoundsExampleDescription
codeintegerNo200
dataproducthunt.ProductAlternativesPageNo
data.alternative_tagsarrayNo
data.alternative_tags[].countintegerNo
data.alternative_tags[].namestringNo
data.alternatives_markdown_descriptionstringNo
data.categoriesarrayNo
data.discussionsarrayNo
data.discussions[].comments_countintegerNo
data.discussions[].created_atstringNo
data.discussions[].description_previewstringNo
data.discussions[].has_votedbooleanNo
data.discussions[].idstringNo
data.discussions[].pathstringNo
data.discussions[].pinnedbooleanNo
data.discussions[].primary_forumproducthunt.ProductAlternativeDiscussionForumNo
data.discussions[].primary_forum.idstringNo
data.discussions[].primary_forum.slugstringNo
data.discussions[].primary_forum.subject_idstringNo
data.discussions[].primary_forum.subject_namestringNo
data.discussions[].slugstringNo
data.discussions[].titlestringNo
data.discussions[].userproducthunt.ProductAlternativeDiscussionUserNo
data.discussions[].user.avatar_urlstringNo
data.discussions[].user.idstringNo
data.discussions[].user.namestringNo
data.discussions[].user.usernamestringNo
data.discussions[].votes_countintegerNo
data.discussions_has_next_pagebooleanNo
data.end_cursorstringNoMTA
data.followers_countintegerNo577
data.has_next_pagebooleanNotrue
data.itemsarrayNo
data.items[].category_scorenumberNo
data.items[].category_weightnumberNo
data.items[].combined_scorenumberNo
data.items[].embedding_scorenumberNo
data.items[].embedding_weightnumberNo
data.items[].idstringNo
data.items[].productproducthunt.ProductAlternativeProductNo
data.items[].product.badgesarrayNo
data.items[].product.badges[].datestringNo
data.items[].product.badges[].idstringNo
data.items[].product.badges[].periodstringNo
data.items[].product.badges[].positionintegerNo
data.items[].product.badges[].post_namestringNo
data.items[].product.badges[].post_slugstringNo
data.items[].product.categoriesarrayNo
data.items[].product.followers_countintegerNo
data.items[].product.idstringNo
data.items[].product.is_subscribedbooleanNo
data.items[].product.is_top_productbooleanNo
data.items[].product.logo_uuidstringNo
data.items[].product.namestringNo
data.items[].product.reviews_countintegerNo
data.items[].product.reviews_ratingnumberNo
data.items[].product.slugstringNo
data.items[].product.structured_dataproducthunt.ProductAlternativeStructuredDataNo
data.items[].product.structured_data.application_categorystringNo
data.items[].product.structured_data.contextstringNo
data.items[].product.structured_data.date_modifiedstringNo
data.items[].product.structured_data.date_publishedstringNo
data.items[].product.structured_data.descriptionstringNo
data.items[].product.structured_data.idstringNo
data.items[].product.structured_data.imagestringNo
data.items[].product.structured_data.namestringNo
data.items[].product.structured_data.operating_systemstringNo
data.items[].product.structured_data.screenshotarrayNo
data.items[].product.structured_data.urlstringNo
data.items[].product.taglinestringNo
data.items[].product.tagsarrayNo
data.items[].rating_scorenumberNo
data.items[].rating_weightnumberNo
data.namestringNoClico
data.product_idstringNo1191613
data.slugstringNoclico
data.total_countintegerNo50
msgstringNoOK

Example request

curl -X GET "https://api.crawlora.net/api/v1/producthunt/product/%22clico%22/alternatives" -H "x-api-key: <api-key>"

TypeScript fetch

const url = new URL("https://api.crawlora.net/api/v1/producthunt/product/%22clico%22/alternatives");
const headers = new Headers();
headers.set("x-api-key", "<api-key>");
const response = await fetch(url, {
  method: "GET",
  headers,
});
const payload = await response.json();