Skip to content
scrapeatlas.Dashboard

Get a Product Hunt profile

Try in Playground

Retrieve a public Product Hunt profile. view=overview (default) returns name, headline, bio, avatar, join date, follower and following counts, verification, X (Twitter) and LinkedIn links, website links, and counts of launches made, hunted and upvoted. view=launches lists the launches the user made or hunted, with votes, comments, ranks, hunter, product and topics, paged with cursor.

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

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

Query parameters
5
usernamestringrequiredquery

Required username, with or without the leading @ (for example rrhoover).

Examplechrismessina
viewenumquery

overview (default) or launches.

one of: overview, launches

kindenumquery

launches view only: made (default, launches the user is a maker of) or hunted (launches the user submitted).

one of: made, hunted

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
32
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.

The profile (overview), or its id and username (launches view).

profile.idstring

Product Hunt user ID (string).

profile.namestringnullable

Display name.

profile.usernamestring

Username, as in producthunt.com/@username.

profile.headlinestringnullable

Profile headline, or null.

profile.aboutstringnullable

Bio text, or null.

profile.avatarUrlstringnullable

Avatar image URL, or null.

profile.createdAtstring

Join time.

profile.followersCountinteger

Followers.

profile.followingsCountinteger

Accounts followed.

profile.isAccountVerifiedboolean

Whether the account is verified.

profile.twitterUrlstringnullable

X (Twitter) URL, or null.

profile.linkedInUrlstringnullable

LinkedIn URL, or null.

Profile links: url.

up to 50 items

profile.links.urlstring

Always included.

profile.madePostsCountinteger

Launches the user is a maker of.

profile.submittedPostsCountinteger

Launches the user hunted (submitted).

profile.votedPostsCountinteger

Launches the user upvoted.

profile.urlstring

Public profile URL.

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.