Fixed the four columns that were always empty — description, makers,
makerNames and makerUsernames.
- Enrichment was fetching the bare product page,
/products/{product}.
That URL carries the vote tally but renders the product's latest launch, not
the one being scraped, and on established products it embeds no makers data at
all — its user records there are forum commenters and reviewers. Enrichment
now requests the canonical launch URL,
/products/{product}?launch={postSlug}, which server-renders the same
votes/rank/tagline data plus that launch's own makers list and description.
Same number of requests, no extra cost. (/posts/{slug} is not used: it
308-redirects to the canonical URL and following that redirect from the
platform trips Product Hunt's edge protection.)
- Makers and the description were additionally gated behind
enrichDetails,
which defaults to off — so even users who did get the right page saw empty
columns. Both now come with the standard enrichment step. Measured on a live
daily-leaderboard run of 17 launches: description 0% → 100%, and
makers / makerNames / makerUsernames 0% → 94% (the one miss is a
launch whose page carries no maker list). Overall cell fill on that run is
99.3%.
- Coverage note: makers are inlined on fresh launch pages. When the daily
leaderboard is unavailable and the Actor falls back to topic pages, those
return older, established launches whose pages often omit the maker strip, so
expect lower maker coverage there. Rows beyond
enrichLimit (default 60) are
still returned but carry no enriched fields at all — raise it or set it to 0
if you need every row enriched.
- Descriptions no longer ship raw HTML entities (
don't → don't).
- Removed a fallback that returned every user found on the page as a "maker"
when no maker list could be located. On a product page that meant handing back
seven random commenters as the founders of a product. Makers are now only the
users Product Hunt explicitly declares as makers of that launch; if none can
be read, the field is empty rather than wrong.
enrichDetails is now obsolete in no-key mode and documented as such. It is
still accepted so existing runs and saved tasks keep working unchanged.
- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Output verified on a live run: 25 columns returned, 84.0% of cells populated.
- Run reliability reviewed: 98.5% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
- Noted that 4 column(s) came back empty in this sample (
description, makers, makerNames, makerUsernames); these are under review.
- Fixed a silent failure: when every page came back truncated or blocked, the run finished successfully with an empty dataset, which was indistinguishable from a day with no launches. The run now says so explicitly, names the cause, and tells you which proxy group works for Product Hunt.
- Verified end-to-end against live pages; unchanged output fields and types.
- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.
- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Maintenance & reliability pass — re-verified end-to-end against live data via the Apify API; confirmed the Actor completes successfully and returns non-empty, well-formed results within the 5-minute quality window on its default input.
- Refreshed build so the latest version is current; no change to inputs, output fields or scraping logic.
- Empty input
{} now always returns data. When the no-key daily/dateRange leaderboard embeds no launches (Product Hunt client-side renders those pages), the actor now falls back to browsing a set of popular topic pages and returns recent, real launches. The working topic data path is unchanged.
- Made the Topic / Category field a dropdown (select) with the common Product Hunt topic slugs plus an empty "(none)" option that triggers the recent-launches default.
- No filters are required — every field is optional.
- Added a time budget (~3.5 min) to the product-page enrichment step so runs always finish and push what was collected.
- Top-level errors are now logged and the run exits gracefully (no hard-fail), preserving any data already pushed.
- Added JSON-schema
fields (title + description per column) to the dataset schema. Output field keys are unchanged.
- Health check passed — actor verified working end-to-end on Apify platform.
- Changelog refreshed for Store quality compliance.
- Fixed no-key scraping after Product Hunt's migration to the Next.js App Router. Topic pages are now parsed from the updated embedded Apollo data (Post objects are merged by id), and each launch is enriched with votes + tagline from its product page.
- Added an
enrichLimit option (default 60) so the default run completes comfortably within the 5-minute window.
- Note: with PH's new client-side rendering, the no-key
daily / dateRange leaderboard modes are no longer reachable without API credentials — use topic mode for no-key runs, or supply a Product Hunt API token for daily/date-range data.
- Verified end-to-end against live data (71 launches per run with real vote counts and taglines).