Product Hunt Launches Scraper – Daily Top, No Login avatar

Product Hunt Launches Scraper – Daily Top, No Login

Pricing

from $0.85 / 1,000 launches

Go to Apify Store
Product Hunt Launches Scraper – Daily Top, No Login

Product Hunt Launches Scraper – Daily Top, No Login

Scrape Product Hunt daily leaderboards for any day or period: name, tagline, votes, comments, rank, topics, website and public maker names. Filter by topic and minimum votes. No login, no API token.

Pricing

from $0.85 / 1,000 launches

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

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.

Add how many days to read (or a date range), click Start, and you get the launches in a dataset you can export to JSON, CSV or Excel. A typical run (yesterday's top 20) takes about 10–25 seconds and costs about $0.02.

Product Hunt Launches Scraper: pick days and topics, read the daily leaderboard, get clean rows with rank, votes, website and makers

Table of contents

What it does

The Actor reads the public Product Hunt daily leaderboard for each day you choose. Days follow Product Hunt's calendar (Pacific Time). For each launch it saves one dataset row. With details on (default), it also opens the launch page and adds the product website, makers, hunter, description and pricing type.

You can keep only some launches: by topic (for example artificial-intelligence or Marketing) and by a minimum number of votes.

Data comes from Product Hunt. This Actor is not made by or connected to Product Hunt.

Good fit

  • 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 fit / limits

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

Quick start

  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.

Expected result: up to 20 rows from yesterday's featured leaderboard, best rank first.

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
daysBackDays backintegernodefault 1, prefill 10–31Reads N full days before today. 0 = today (live, not final). Ignored when dateFrom or dateTo is set.7Best for daily schedules: no dates to edit.
dateFromFrom datestringnononeYYYY-MM-DD, not in the futureFirst day of the period. Alone, it reads one day.2026-10-01Use for a fixed past period.
dateToTo datestringnononeYYYY-MM-DD, ≥ dateFrom, period ≤ 31 daysLast day, included. Alone, it reads one day.2026-10-07
featuredOnlyFeatured launches onlybooleannotruetrue / falsetrue: the featured launches (usually 10–60 a day). false: all launches of the day (often several hundred).falseKeep true unless you need small launches too.
topicsTopicsarray of stringsnoemptyup to 20 names or slugs, any caseKeeps launches with at least one of these topics. Empty = all topics.["artificial-intelligence", "Marketing"]Use the slug from the topic page URL.
minVotesMinimum votesintegerno0≥ 0Keeps launches with votesCount ≥ this number.100Makes runs faster: the Actor stops a day early when votes drop below it. Product Hunt sorts by votes, so a very low value (under 10) can rarely skip a launch.
includeDetailsInclude website and makersbooleannotruetrue / falsetrue: one extra request per launch for website, makers, hunter, description, pricingType. false: leaderboard fields only.falseTurn off when you need only votes and ranks: much faster for big runs.
maxItemsMax launchesintegernodefault 100, prefill 201–10,000Stops after this many rows in total. Newest day first.500Each row is one paid result.

Empty input ({}) reads yesterday with up to 100 rows. Wrong dates (future date, dateFrom after dateTo, more than 31 days) stop the run at once with INVALID_INPUT, before any source request and without row charges.

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Both setdaysBackdateFrom / dateToDates win, daysBack is ignoreddaysBack: 7, dateFrom: 2026-10-01 → only 2026-10-01none
Filter + captopics / minVotesmaxItemsFilters first, then the cap counts saved rows7 days, topics: ["saas"], maxItems: 50You pay only for saved rows
All launches + filter with few matchesfeaturedOnly: falsetopicsThe Actor still reads every leaderboard page of every day31 days, a rare topicMany pages: see Pricing
Vote filterminVotesanyThe leaderboard is sorted by votes, so the Actor stops a day after a full page below minVotesminVotes: 50Fewer pages, lower cost
No detailsincludeDetails: falsetopicsTopic filter uses the topics shown on the leaderboard (up to 3 per launch)Faster; website, makers are null

Input examples

Yesterday's top 20 (prefill)

{
"daysBack": 1,
"maxItems": 20
}

Expected behavior: reads one leaderboard page and opens each launch page. Expected output: up to 20 launches with rank, name, votesCount, website, makers. Cost note: about $0.02.

AI launches with 100+ votes in one week

{
"dateFrom": "2026-10-05",
"dateTo": "2026-10-11",
"topics": ["artificial-intelligence"],
"minVotes": 100,
"maxItems": 200
}

Expected behavior: reads 7 days, keeps AI launches with at least 100 votes. Expected output: launches with topics containing "Artificial Intelligence" and votesCount ≥ 100.

Output

Each dataset row is one launch from one leaderboard day. Rows go from the newest day to the oldest, and by rank inside a day.

Output example

{
"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"
}

This is one row from a run for 2026-10-12. The description is shortened and maker names are hidden here. null means Product Hunt did not give this value or details were off. It is never used instead of 0.

Output fields

FieldMeaningTypeCan be empty?Example / enumNotes
nameLaunch namestringnongram 2.0
taglineOne-line taglinestringyesCreate explainers, screencasts, and AI avatar videos
urlProduct Hunt launch pagestringnohttps://www.producthunt.com/products/ngram/launches/ngram-2-0-2
productUrlProduct Hunt product pagestringyeshttps://www.producthunt.com/products/ngram
websiteProduct websitestringyeshttps://www.ngram.comnull when details are off or there is no link
votesCountUpvotes nowintegeryes269null when Product Hunt does not return it; never 0 for missing
launchDayVotesCountUpvotes at the end of the launch dayintegeryes248
votesHiddenThe maker hides the vote countbooleannofalse
commentsCountNumber of commentsintegeryes42
rankDaily leaderboard rankintegeryes2null for launches without a rank
weeklyRank, monthlyRankWeekly and monthly rankintegeryes3, 35
topicsTopic namesarrayno (can be [])["Education", "Artificial Intelligence", "Video"]All topics with details, up to 3 without
topicSlugsTopic slugsarrayno["education", "artificial-intelligence", "video"]
makersMakers: public name, username, profile URLarrayyes[{"name": "…", "username": "…", "profileUrl": "…"}][] = none listed; null = details not read
hunterWho posted the launchobjectyes{"name": "…", "username": "…", "profileUrl": "…"}
descriptionLaunch descriptionstringyesTurn ideas, documents, and recordings into narrated videos…HTML entities decoded; email addresses replaced with [email removed]
pricingTypePricing set by the makerstringyesfree, free_options, payment_required
featuredFeatured by Product Huntbooleannotrue
launchDateLeaderboard day (Pacific Time)stringno2026-10-12
launchedAtLaunch time, UTCstringyes2026-10-12T07:01:00.000Z
thumbnailThumbnail image URLstringyeshttps://ph-files.imgix.net/….png
postId, slug, productSlugProduct Hunt IDsstringproductSlug yes1266889, ngram-2-0-2, ngramUse postId to remove duplicates between runs
detailsStatusDid the details load?stringnook, not_found, skippednot_found = the launch page no longer exists; the row keeps leaderboard fields
sourceData sourcestringnoProduct Hunt (https://www.producthunt.com/)
fetchedAtWhen the row was read, UTCstringno2026-10-14T03:40:18.334Z

Output entities and surfaces

SituationWhereResult shapeUser action
Normal runDataset, view Launches; RUN_SUMMARY status COMPLETE or CAPPEDLaunch rowsExport or use the fields
No launches on these daysRUN_SUMMARY status NOT_FOUND, run SUCCEEDEDEmpty datasetCheck the dates (Product Hunt started in 2013)
Filters removed everythingRUN_SUMMARY status NO_RESULTS, run SUCCEEDEDEmpty datasetUse a wider topic or a lower minVotes
Some data could not be readRUN_SUMMARY status PARTIAL with reasonSaved rows; some rows may have website/makers = nullRead message and warnings; run again for missing days
Source error, nothing savedRUN_SUMMARY status ERROR with errorCode, run FAILEDEmpty datasetRun again later; if SOURCE_QUERY_CHANGED, open an issue

RUN_SUMMARY (in the run's key-value store) has status, reason, errorCode, message, the normalized input, counts (days, pages, rows saved, filtered out, cut by maxItems), one line per day and request statistics.

Pricing

Pricing unit

You pay per event:

EventWhenPrice
Actor startOnce per run (per GB of memory; default 256 MB = 1 event)$0.001
Leaderboard pageEach leaderboard page read (up to 20 launches)$0.0005
LaunchEach row saved to the dataset$0.001 (FREE plan) → $0.00085 (GOLD and higher)

Launch price by Apify plan: FREE $0.001, BRONZE $0.00095, SILVER $0.0009, GOLD and higher $0.00085. Website and makers (includeDetails) do not cost extra.

A run with no rows still pays for the start and the pages it read. An empty day or a filter with no matches on one day costs about $0.0015. Invalid input costs only the $0.001 start event: no pages or rows are charged. If you set a maximum charge for the run, the Actor stops at that limit and keeps the saved rows (PARTIAL, reason CHARGE_LIMIT).

Cost examples (FREE plan prices)

ScenarioInput scopeRowsPagesApprox. chargeStop/cap behavior
10 launchesdaysBack: 1, maxItems: 10101$0.012Stops at 10 rows
Yesterday's top 20 (prefill)daysBack: 1, maxItems: 20201$0.022Stops at 20 rows
One week, featureddaysBack: 7, maxItems: 100100up to 14$0.11Stops at 100 rows
One busy day, all launchesfeaturedOnly: false, maxItems: 10001,000~50$1.03Stops at 1,000 rows
Empty day or no matches1 day01$0.0015SUCCEEDED, NOT_FOUND / NO_RESULTS
31 days, all launches, rare topicfeaturedOnly: false, 31 days, topics0–few~1,400–1,600$0.70–0.80 + rowsReads every page; set a charge limit

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
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

Scheduling

To get new launches every day, create an Apify schedule with this input and run it once a day, after midnight Pacific Time:

{
"daysBack": 1,
"maxItems": 100
}

Each run reads the last full day, so you do not edit dates. The Actor does not compare runs: each run is a full snapshot of that day. Use postId to remove duplicates if your periods overlap.

API, export and integrations

  • Export: from the Output tab as JSON, CSV, Excel, XML or HTML.
  • API: start the Actor with the Apify API, then read the dataset items. postId is a stable key.
  • No-code: connect the dataset to Google Sheets, Slack, Make, Zapier or n8n with Apify integrations.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/product-hunt-launches (see Apify MCP server).
  • Smallest useful input: {"daysBack": 1, "maxItems": 20}.
  • Key output fields: name (launch), rank (daily place), votesCount (current votes), website (product site), topics (topic names).
  • A typical call takes 10–25 seconds and costs about $0.02. Limits: 31 days and 10,000 rows per run; INVALID_INPUT explains a wrong date in RUN_SUMMARY.message.

Limits and partial results

  • 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.
  • 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).
  • Rows from a PARTIAL run can have website and makers = null when details were not read. detailsStatus shows this for each row.

Moving from another Product Hunt scraper

If you already use a dataset from another Product Hunt scraper, these renames are often enough:

Common field elsewhereField hereNote
upvotesCountvotesCountSame number (live votes)
dayRankrank
weekRank, monthRankweeklyRank, monthlyRank
thumbnailUrlthumbnail
tagstopicsHere: all topics with details, not only one
website.urlwebsiteHere: a plain string
teammakers + hunterHere: only the launch makers and the hunter, public fields only

name, tagline, url, commentsCount and launchDate have the same names.

Troubleshooting

The dataset is empty

Symptom: the run SUCCEEDED but there are no rows. Likely reason: RUN_SUMMARY.status is NO_RESULTS (filters removed all launches) or NOT_FOUND (no launches on these days). Check: RUN_SUMMARY.counts.launchesListed and filteredOut. Action: use a topic slug from the Product Hunt topic page, lower minVotes, or choose other dates.

Ranks have gaps (for example 1, 2, 4)

Symptom: a rank number is missing in a day. Likely reason: Product Hunt removed or hid that launch, or the place is an ad. The Actor skips ads and counts them in RUN_SUMMARY.skippedFeedTypes. Action: nothing to fix; the other rows are complete.

Some rows have website and makers = null

Symptom: leaderboard fields are filled, details are empty. Likely reason: includeDetails is off (detailsStatus: skipped), the launch page no longer exists (not_found), or the run was PARTIAL. Action: check detailsStatus and RUN_SUMMARY.warnings; run that day again if needed.

The run ended with PARTIAL and reason DEADLINE

Symptom: not all days were read. Likely reason: a long period with all launches and details needs more than the run timeout. Action: set timeout to 3600 seconds, or split the period into smaller runs.

FAQ

Do I need a Product Hunt account or API token?

No. The Actor reads public leaderboard pages. You do not add a login, cookie or token.

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.

Does it give maker emails?

No. Only public name, username and profile URL. Emails in descriptions are replaced with [email removed].

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.

Support

For bugs, questions or feature requests, open an issue in the Issues tab. Include the run ID, your input (without private data) and the RUN_SUMMARY message. Do not send tokens or private data.