Social media · Live on Apify

Product Hunt Launches Scraper

Get Product Hunt daily leaderboards for any day or period up to 31 days. Each launch is one row with votes, rank, topics and website.

About $1.00 for 1,000 launches$0.001 per launch + $0.001 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

namengram 2.0
taglineCreate explainers, screencasts, and AI avatar videos
urlhttps://www.producthunt.com/products/ngram/launches/ngram-2-0-2

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: 1 in Days back. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Get Product Hunt daily leaderboards for any day or period up to 31 days: one row per launch with name, tagline, votes, comments, daily rank, topics, website and public makers. No login and no API token.

Good for

  • Marketers: a daily list of new tools in your niche, with website and tagline, for newsletters, competitor watch or partner outreach.
  • Investors: the top launches of a week or month with votes, comments and rank, to spot early products.
  • Sales: new products with their website and public maker names, as a starting list for lead research.

Not a good fit

  • The Actor does not collect emails, phone numbers or other private contact data. Makers have only public name, username and profile URL.
  • No comments text, reviews, followers or maker profiles.
  • Up to 31 days in one run. For a longer period, run it again with the next dates.
  • Votes and ranks are live numbers. They can change after the launch day. Today's leaderboard (daysBack: 0) is not final.
  • Only Product Hunt launches. No other launch sites.

Who uses it

Investors

See the top launches of a week or month to spot early products.

Newsletter writers

Get a daily list of new tools in your niche.

Sales teams

Start a lead list of new products and their websites.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.001Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Launch$0.001 (from $0.00085 on paid Apify plans)One Product Hunt launch row saved to the Dataset.
Leaderboard page$0.0005One Product Hunt daily leaderboard page read (up to 20 launches checked against your filters).

Examples

  • One launch: about $0.002.
  • 1,000 launches: about $1.00.
  • Every day 100 launches, for 30 days: about $3.03 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 4,900 launches.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need a Product Hunt API token?

No. The tool reads public leaderboard pages without login or token.

Does it give maker emails?

No. You get the public name, username and profile link only.

Why are votes different from the website?

Votes change during and after the day. A separate field keeps the launch-day count.

Can I get non-featured launches too?

Yes. Turn off featured-only to get the full daily list, except ads.

Why are votes different from the Product Hunt page?

Votes are live. They change during the day and a little after it. launchDayVotesCount keeps the number from the end of the launch day. fetchedAt shows when the row was read.

Are all launches of a day included?

With featuredOnly: true, you get the featured launches. With featuredOnly: false, you get all launches on the daily leaderboard, except ads.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep Days back (daysBack) = 1. This reads yesterday's final leaderboard.
  3. Keep Max launches (maxItems) = 20, or set your own number.
  4. Optional: add Topics (topics), for example artificial-intelligence.
  5. Click Start.
  6. Open the Output tab and check the Launches view: rank, name, votesCount, website.
Use cases
TaskInputYou getKey fieldsNext step
Daily digest of new toolsdaysBack: 1, topicsLaunchname, tagline, website, topicsSchedule + export to Sheets or Slack
Top launches of a week for deal flowdateFrom, dateTo, minVotesLaunchrank, votesCount, commentsCount, weeklyRankCSV / Excel
Lead list of new productsdaysBack: 7, topicsLaunchwebsite, makers, productUrlYour CRM via API
Full day, also non-featuredfeaturedOnly: falseLaunchfeatured, rank, votesCountDataset API
Tips for better results
  • Filter by topic and minimum votes to keep only strong launches.
  • Use yesterday, not today; today's leaderboard is not final.
  • For 31 days with details, set the timeout to 3600 seconds.
Limits and good to know
  • Up to 31 days and 10,000 rows per run; up to 150 leaderboard pages per day
  • Speed: about 1 leaderboard page per second; details add about 0.5 seconds per row. A page read from the site's HTML (see below) takes a few seconds more
  • Default timeout is 30 minutes. 31 days with all launches and details may need more: set timeout to 3600 seconds. When time runs out, the Actor saves what it has and ends with PARTIAL, reason DEADLINE
  • PARTIAL means some data was not read, but the saved rows are correct. RUN_SUMMARY.reason says why: DEADLINE (time limit), CHARGE_LIMIT (your maximum charge), REQUEST_CAP (internal request limit) or SOURCE_ERROR (Product Hunt failed after retries). A PARTIAL run with SOURCE_ERROR ends as FAILED on Apify, with its rows kept
  • Rows from a PARTIAL run can have website and makers = null when details were not read. detailsStatus shows this for each row

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "name": "ngram 2.0",
  "tagline": "Create explainers, screencasts, and AI avatar videos",
  "url": "https://www.producthunt.com/products/ngram/launches/ngram-2-0-2",
  "productUrl": "https://www.producthunt.com/products/ngram",
  "website": "https://www.ngram.com",
  "votesCount": 269,
  "launchDayVotesCount": 248,
  "votesHidden": false,
  "commentsCount": 42,
  "rank": 2,
  "weeklyRank": 3,
  "monthlyRank": 35,
  "topics": ["Education", "Artificial Intelligence", "Video"],
  "topicSlugs": ["education", "artificial-intelligence", "video"],
  "makers": [{ "name": "…", "username": "…", "profileUrl": "https://www.producthunt.com/@…" }],
  "hunter": { "name": "…", "username": "…", "profileUrl": "https://www.producthunt.com/@…" },
  "description": "Turn ideas, documents, and recordings into narrated videos…",
  "pricingType": "free_options",
  "featured": true,
  "launchDate": "2026-10-12",
  "launchedAt": "2026-10-12T07:01:00.000Z",
  "thumbnail": "https://ph-files.imgix.net/ff626e36-21c0-49e6-9937-f794c9825256.png",
  "postId": "1266889",
  "slug": "ngram-2-0-2",
  "productSlug": "ngram",
  "detailsStatus": "ok",
  "source": "Product Hunt (https://www.producthunt.com/)",
  "fetchedAt": "2026-10-14T03:40:18.334Z"
}

Use it from code

Actor ID: cliqtomedia/product-hunt-launches. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/product-hunt-launches").call(run_input={
    "daysBack": 1,
    "featuredOnly": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~product-hunt-launches/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"daysBack": 1, "featuredOnly": true}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/product-hunt-launches")
result = tool.invoke({"run_input": {"daysBack": 1, "featuredOnly": True}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (28)
FieldTypeMeaning
namestringLaunch name as shown on Product Hunt.
taglinestringOne-line tagline.
urlstringProduct Hunt launch page URL.
productUrlstringProduct Hunt product page URL (all launches of the product).
websitestringProduct website. Null when includeDetails is off or the launch has no link.
votesCountintegerCurrent upvote count. Null when Product Hunt does not return it (never 0 for missing).
launchDayVotesCountintegerUpvotes at the end of the launch day.
votesHiddenbooleanTrue when the maker hides the vote count on the page.
commentsCountintegerNumber of comments.
rankintegerDaily leaderboard rank; null for launches without a rank (e.g. not featured).
weeklyRankintegerWeekly leaderboard rank, if any.
monthlyRankintegerMonthly leaderboard rank, if any.
topicsarrayTopic names, e.g. Artificial Intelligence.
topicSlugsarrayTopic slugs, e.g. artificial-intelligence.
makersarrayMakers: public display name, username and profile URL only. [] = none listed; null = details not fetched.
hunterobjectHunter who posted the launch: public name, username and profile URL.
descriptionstringLaunch description text.
pricingTypestringPricing as set by the maker, e.g. free, free_options, payment_required.
featuredbooleanTrue when Product Hunt featured the launch.
launchDatestringLeaderboard day (YYYY-MM-DD, Pacific Time) the row comes from.
launchedAtstringLaunch time, ISO 8601 UTC.
thumbnailstringThumbnail image URL.
postIdstringProduct Hunt post ID.
slugstringLaunch slug.
productSlugstringProduct slug.
detailsStatusstringok = details fetched; not_found = launch page no longer exists (leaderboard fields only); skipped = details not read: includeDetails off, or Product Hunt changed its launch page (then RUN_SUMMARY.detailsUnavailable is true).
sourcestringData source attribution.
fetchedAtstringWhen the row was read, ISO 8601 UTC.
Input settings (8)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Days backdaysBackinteger1
From datedateFromstring
To datedateTostring
Featured launches onlyfeaturedOnlybooleantrue
Topicstopicsarray
Minimum votesminVotesinteger0
Include website and makersincludeDetailsbooleantrue
Max launchesmaxItemsinteger20

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure