Skip to content
scrapeatlas.Dashboard

Search Product Hunt

Try in Playground

Search Product Hunt by keyword across products, launches, users, topics, discussions, categories and stories, or restrict results to one type. Each result carries a type and that record's fields. Page with cursor.

GET/v1/producthunt/searchx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
4
querystringrequiredquery

Required search text, 1–200 characters.

min 1 chars · max 200 chars

Examplenotion
typeenumquery

all (default), products, launches, users, topics, discussions, categories or stories.

one of: all, products, launches, users, topics, discussions, categories, stories

Exampleproducts
cursorstringquery

Opaque nextCursor from the previous page. Omit for the first page.

limitstringquery

Records per page, 1–20; defaults to 20 (the source's page ceiling).

Response fields
80
requestIdstring

Request correlation identifier.

HTTP attempts, decoded bytes and duration for the operation, including the single shared retry.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed, or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Public Product Hunt page for the request.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

source is public_api (Product Hunt's public web GraphQL) or public_feed (the Atom launch feed). Complete means this bounded page was returned without known omissions; votes_hidden marks launches whose vote count Product Hunt hides during their first hours (returned as null).

coverage.sourceenum

Always included.

one of: public_api, public_feed

coverage.completeboolean

Always included.

coverage.warningsstring[]

Always included.

querystring

Required search text, 1–200 characters.

typeenum

all (default), products, launches, users, topics, discussions, categories or stories.

one of: all, products, launches, users, topics, discussions, categories, stories

Results in source relevance order. type is Product, Post (a launch), User, Topic, DiscussionThread, ProductCategory or AnthologiesStory; the remaining fields match that record type in the product, launch, profile, topic, forum, category and story endpoints.

up to 20 items

results.idstring

Always included.

results.slugstringoptional

Optional.

results.namestring | stringoptional

Optional.

results.taglinestringnullableoptional

Optional.

results.urlstring

Always included.

results.websiteUrlstringnullableoptional

Optional.

results.logoUuidstringnullableoptional

Optional.

results.logoUrlstringnullableoptional

Optional.

results.reviewsRatingnumbernullableoptional

Optional.

results.reviewsCountintegeroptional

Optional.

results.followersCountintegeroptional

Optional.

results.postsCountintegeroptional

Optional.

results.isTopProductbooleanoptional

Optional.

results.isNoLongerOnlinebooleanoptional

Optional.

results.typestring

Source record type.

results.createdAtstringoptional

Optional.

results.featuredAtstringnullableoptional

Optional.

results.scheduledAtstringnullableoptional

Optional.

results.votesCountintegernullableoptional

Optional.

results.hideVotesCountbooleanoptional

Optional.

results.commentsCountintegeroptional

Optional.

results.dailyRankstringnullableoptional

Optional.

results.weeklyRankstringnullableoptional

Optional.

results.monthlyRankstringnullableoptional

Optional.

results.thumbnailImageUuidstringnullableoptional

Optional.

results.thumbnailImageUrlstringnullableoptional

Optional.

Optional.

results.user.idstring

Always included.

results.user.namestringnullable

Always included.

results.user.usernamestring

Always included.

results.user.headlinestringnullable

Always included.

results.user.avatarUrlstringnullable

Always included.

results.user.urlstring

Always included.

Optional.

results.product.idstring

Always included.

results.product.slugstring

Always included.

results.product.namestring

Always included.

Optional.

up to 50 items

results.topics.idstring

Always included.

results.topics.slugstring

Always included.

results.topics.namestring

Always included.

results.usernamestringoptional

Optional.

results.headlinestringnullableoptional

Optional.

results.avatarUrlstringnullableoptional

Optional.

results.descriptionstringnullableoptional

Optional.

results.imageUuidstringnullableoptional

Optional.

results.imageUrlstringnullableoptional

Optional.

results.pathstringoptional

Optional.

results.titlestringoptional

Optional.

results.descriptionPreviewstringnullableoptional

Optional.

results.minsToReadintegernullableoptional

Optional.

results.publishedAtstringnullableoptional

Optional.

results.headerImageUuidstringnullableoptional

Optional.

results.headerImageUrlstringnullableoptional

Optional.

Optional.

results.author.idstring

Always included.

results.author.namestringnullable

Always included.

results.author.usernamestring

Always included.

results.author.headlinestringnullable

Always included.

results.author.avatarUrlstringnullable

Always included.

results.author.urlstring

Always included.

totalCountintegernullable

Total records the source reports for this list, or null when it does not report one.

nextCursorstringnullable

Pass as cursor to read the next page; null on the last page.

hasMoreboolean

Whether another page exists.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
11
HTTPfailure.codeMeaning
200partialUsable data with votes_hidden warnings.
400invalid_requestMissing, duplicate, malformed or unsupported parameters, including incomplete or impossible leaderboard dates.
401unauthorizedMissing or invalid worker API key.
404not_foundThe product, launch, comment, topic, category, forum, discussion or user does not exist.
429upstream_rate_limitedSource throttling; no automatic retry.
502upstream_challengedSource rejected or challenged the unauthenticated request.
502unsupported_pageMalformed, mismatched or non-JSON source data, or a GraphQL error.
502response_too_large payload_too_complexResponse exceeded byte or parsing limits.
502unsafe_redirect request_limit upstream_errorBounded source retrieval could not complete.
503busyAll worker slots are occupied.
504timeoutTotal request deadline expired.