Nimbryxo Studio

Product Hunt Launch & Topic Data Exporter

Export Product Hunt launches with votes, comments, makers, hunter and topics from the daily leaderboard, a topic, a maker's history, or specific product slugs.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredPick the launch feed, a leaderboard period, a date range, a topic, a category, a keyword search, specific products, or specific launches.
periodstringoptionalUsed when mode is `leaderboard`. Daily = one day, weekly = ISO week, monthly = calendar month, yearly = calendar year.
datestringoptionalOptional date for mode=leaderboard, in YYYY-MM-DD form. The daily period uses the exact day; weekly, monthly and yearly use that day's ISO week, month or year. Defaults to today.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredPick the launch feed, a leaderboard period, a date range, a topic, a category, a keyword search, specific products, or specific launches.
periodstringoptionalUsed when mode is `leaderboard`. Daily = one day, weekly = ISO week, monthly = calendar month, yearly = calendar year.
datestringoptionalOptional date for mode=leaderboard, in YYYY-MM-DD form. The daily period uses the exact day; weekly, monthly and yearly use that day's ISO week, month or year. Defaults to today.
fromstringoptionalOptional first day for mode=dailyRange, in YYYY-MM-DD form. Defaults to the `to` date, or yesterday.
tostringoptionalOptional last day for mode=dailyRange, in YYYY-MM-DD form. Defaults to the `from` date, or yesterday.
topicSlugsarrayoptionalTopics for mode=topic, e.g. `artificial-intelligence`, `developer-tools`, or a full `/topics/...` URL.
categorySlugsarrayoptionalCategories for mode=category, e.g. `ai-code-editors`, `productivity`, or a full `/categories/...` URL.
searchQuerystringoptionalKeyword for mode=search, e.g. `notion`, `ai browser`, `invoice`. Product Hunt searches products, then the actor resolves each product's latest launch.
productSlugsarrayoptionalProducts for mode=product, e.g. `notion`, `figma`, or full `https://www.producthunt.com/products/...` URLs. Each product's latest launch is returned.
postIdsarrayoptionalLaunches for mode=launch, e.g. `strawberry-1-0`, or full `https://www.producthunt.com/products/...?launch=...` URLs.
maxItemsintegeroptionalStop after this many launch records. One record is one launch (comments and reviews stay attached to it).
maxPagesintegeroptionalPage cap per feed, topic, category, search query, product history, comment thread or review feed. A full Product Hunt day is about 40-60 pages of 20 launches.
maxCommentsintegeroptionalUsed when `includeComments` is on. Comments are read 20 threads per page, including replies, and capped at this number.
maxReviewsintegeroptionalUsed when `includeReviews` is on. Reviews are read 10 per page and capped at this number.
includeDetailsbooleanoptionalFetch the full launch page for description, hunter, makers, media, website, pricing, ranks and review score. Turn off for a faster, lighter feed.
includeCommentsbooleanoptionalAttach the discussion thread (comments and nested replies) to each launch. Adds one or more requests per launch.
includeReviewsbooleanoptionalAttach Product Hunt's detailed reviews, ratings, pros and cons to each launch. Adds one request per 10 reviews.
includeHistorybooleanoptionalAttach every earlier launch from the same product, newest first.
featuredOnlybooleanoptionalKeep only launches that Product Hunt selected for the homepage.
proxyConfigurationobjectoptionalOptional. The actor works without a proxy; add one only if Product Hunt blocks your network or you need a specific location.

Download the published input schema

View complete JSON
{
  "description": "Collect Product Hunt launches, products, comments and reviews without a Product Hunt account or API token.",
  "properties": {
    "categorySlugs": {
      "default": [],
      "description": "Categories for mode=category, e.g. `ai-code-editors`, `productivity`, or a full `/categories/...` URL.",
      "editor": "stringList",
      "prefill": [],
      "title": "Category slugs or URLs",
      "type": "array"
    },
    "date": {
      "description": "Optional date for mode=leaderboard, in YYYY-MM-DD form. The daily period uses the exact day; weekly, monthly and yearly use that day's ISO week, month or year. Defaults to today.",
      "editor": "textfield",
      "title": "Leaderboard date",
      "type": "string"
    },
    "featuredOnly": {
      "default": false,
      "description": "Keep only launches that Product Hunt selected for the homepage.",
      "prefill": false,
      "title": "Featured launches only",
      "type": "boolean"
    },
    "from": {
      "description": "Optional first day for mode=dailyRange, in YYYY-MM-DD form. Defaults to the `to` date, or yesterday.",
      "editor": "textfield",
      "title": "From date",
      "type": "string"
    },
    "includeComments": {
      "default": false,
      "description": "Attach the discussion thread (comments and nested replies) to each launch. Adds one or more requests per launch.",
      "prefill": false,
      "title": "Include comments and replies",
      "type": "boolean"
    },
    "includeDetails": {
      "default": true,
      "description": "Fetch the full launch page for description, hunter, makers, media, website, pricing, ranks and review score. Turn off for a faster, lighter feed.",
      "prefill": true,
      "title": "Include launch and product details",
      "type": "boolean"
    },
    "includeHistory": {
      "default": false,
      "description": "Attach every earlier launch from the same product, newest first.",
      "prefill": false,
      "title": "Include launch history",
      "type": "boolean"
    },
    "includeReviews": {
      "default": false,
      "description": "Attach Product Hunt's detailed reviews, ratings, pros and cons to each launch. Adds one request per 10 reviews.",
      "prefill": false,
      "title": "Include product reviews",
      "type": "boolean"
    },
    "maxComments": {
      "default": 50,
      "description": "Used when `includeComments` is on. Comments are read 20 threads per page, including replies, and capped at this number.",
      "maximum": 500,
      "minimum": 1,
      "prefill": 20,
      "title": "Maximum comments per launch",
      "type": "integer"
    },
    "maxItems": {
      "default": 50,
      "description": "Stop after this many launch records. One record is one launch (comments and reviews stay attached to it).",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum records",
      "type": "integer"
    },
    "maxPages": {
      "default": 10,
      "description": "Page cap per feed, topic, category, search query, product history, comment thread or review feed. A full Product Hunt day is about 40-60 pages of 20 launches.",
      "maximum": 60,
      "minimum": 1,
      "prefill": 1,
      "title": "Maximum pages per source",
      "type": "integer"
    },
    "maxReviews": {
      "default": 20,
      "description": "Used when `includeReviews` is on. Reviews are read 10 per page and capped at this number.",
      "maximum": 200,
      "minimum": 1,
      "prefill": 10,
      "title": "Maximum reviews per product",
      "type": "integer"
    },
    "mode": {
      "default": "latest",
      "description": "Pick the launch feed, a leaderboard period, a date range, a topic, a category, a keyword search, specific products, or specific launches.",
      "editor": "select",
      "enum": [
        "latest",
        "leaderboard",
        "dailyRange",
        "topic",
        "category",
        "search",
        "product",
        "launch"
      ],
      "enumTitles": [
        "Latest launches (today's full feed)",
        "Leaderboard (daily, weekly, monthly or yearly)",
        "Daily range (one or more days)",
        "Topic launches",
        "Category launches",
        "Keyword product search",
        "Specific products (latest launch)",
        "Specific launches"
      ],
      "prefill": "latest",
      "title": "What to scrape",
      "type": "string"
    },
    "period": {
      "default": "daily",
      "description": "Used when mode is `leaderboard`. Daily = one day, weekly = ISO week, monthly = calendar month, yearly = calendar year.",
      "editor": "select",
      "enum": [
        "daily",
        "weekly",
        "monthly",
        "yearly"
      ],
      "enumTitles": [
        "Daily",
        "Weekly",
        "Monthly",
        "Yearly"
      ],
      "prefill": "daily",
      "title": "Leaderboard period",
      "type": "string"
    },
    "postIds": {
      "default": [],
      "description": "Launches for mode=launch, e.g. `strawberry-1-0`, or full `https://www.producthunt.com/products/...?launch=...` URLs.",
      "editor": "stringList",
      "prefill": [],
      "title": "Launch slugs or URLs",
      "type": "array"
    },
    "productSlugs": {
      "default": [],
      "description": "Products for mode=product, e.g. `notion`, `figma`, or full `https://www.producthunt.com/products/...` URLs. Each product's latest launch is returned.",
      "editor": "stringList",
      "prefill": [],
      "title": "Product slugs or URLs",
      "type": "array"
    },
    "proxyConfiguration": {
      "default": {
        "useApifyProxy": false
      },
      "description": "Optional. The actor works without a proxy; add one only if Product Hunt blocks your network or you need a specific location.",
      "editor": "proxy",
      "prefill": {
        "useApifyProxy": true
      },
      "title": "Proxy configuration",
      "type": "object"
    },
    "searchQuery": {
      "description": "Keyword for mode=search, e.g. `notion`, `ai browser`, `invoice`. Product Hunt searches products, then the actor resolves each product's latest launch.",
      "editor": "textfield",
      "title": "Search query",
      "type": "string"
    },
    "to": {
      "description": "Optional last day for mode=dailyRange, in YYYY-MM-DD form. Defaults to the `from` date, or yesterday.",
      "editor": "textfield",
      "title": "To date",
      "type": "string"
    },
    "topicSlugs": {
      "default": [],
      "description": "Topics for mode=topic, e.g. `artificial-intelligence`, `developer-tools`, or a full `/topics/...` URL.",
      "editor": "stringList",
      "prefill": [],
      "title": "Topic slugs or URLs",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Product Hunt Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
launchesstringoptionalDataset containing launch records. Comments and reviews are nested arrays on the launch when enabled.
productsstringoptionalBackward-compatible alias of the same launch dataset.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "One dataset row per Product Hunt launch, with product details, ranks, makers, media, optional comments/replies, optional reviews and optional launch history.",
  "properties": {
    "launches": {
      "description": "Dataset containing launch records. Comments and reviews are nested arrays on the launch when enabled.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Product Hunt launches",
      "type": "string"
    },
    "products": {
      "description": "Backward-compatible alias of the same launch dataset.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Product Hunt launches (legacy link)",
      "type": "string"
    }
  },
  "title": "Product Hunt Launch, Comment and Review Exporter Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Product Hunt launches",
      "transformation": {
        "fields": [
          "name",
          "tagline",
          "votesCount",
          "commentsCount",
          "reviewsCount",
          "reviewsRating",
          "dailyRank",
          "featuredAt",
          "topics",
          "website",
          "url"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Product Hunt Launch, Comment & Review Exporter

Collect Product Hunt launches from the full daily feed, daily/weekly/monthly/yearly leaderboards, a topic, a category, a keyword search, a list of products, or a list of specific launches. No Product Hunt account, API token, cookie or browser is needed.

Each row is one launch with votes, comments count, rank, hunter, makers, topics, media, website, pricing, review score, and an optional discussion thread, review list, and launch history.

Modes

Mode What it returns
latest Today's complete daily feed (falls back to yesterday while today's feed is still empty). Cursor-paginated: a busy day has roughly 700-950 launches, not just the visible top 20.
leaderboard One daily, weekly, monthly or yearly leaderboard, cursor-paginated. Pick the period and an optional date.
dailyRange Every launch on each day between from and to, deduplicated across days.
topic Products in a topic, resolved to each product's latest launch.
category Products in a category, resolved to each product's latest launch.
search Product Hunt product search for a keyword, resolved to each product's latest launch.
product One or more product slugs/URLs, returning each product's latest launch with full product data.
launch One or more launch slugs/URLs, returning those exact launches.

Turn on includeDetails for the full launch page (description, maker/hunter profiles, media, website, pricing, ranks, review score). Turn on includeComments, includeReviews, and includeHistory to attach the discussion thread, detailed reviews, and earlier launches from the same product.

Input

Field Type Default Description
mode select latest latest, leaderboard, dailyRange, topic, category, search, product, or launch.
period select daily Leaderboard period: daily, weekly, monthly, yearly.
date string — Leaderboard date (YYYY-MM-DD). Weekly/monthly/yearly use that day's ISO week, month, or year.
from, to string — Inclusive day range for dailyRange.
topicSlugs array [] Topic slugs or /topics/... URLs.
categorySlugs array [] Category slugs or /categories/... URLs.
searchQuery string – Keyword for search.
productSlugs array [] Product slugs or product URLs.
postIds array [] Launch slugs or launch URLs.
maxItems integer 50 Record cap, 1-1000.
maxPages integer 10 Page cap per source, 1-60. A full day is about 40-60 pages of 20 launches.
maxComments integer 50 Comment cap per launch, 1-500. Threads are read 20 per page.
maxReviews integer 20 Review cap per product, 1-200. Reviews are read 10 per page.
includeDetails boolean true Fetch the full launch page.
includeComments boolean false Attach comments and nested replies.
includeReviews boolean false Attach detailed reviews, ratings, pros and cons.
includeHistory boolean false Attach the product's earlier launches.
featuredOnly boolean false Keep only homepage-featured launches.
proxyConfiguration object off Optional. The actor works without a proxy.

The default prefill reads three latest launches with details on, comments/reviews/history off.

Output

Every launch row uses camelCase fields and omits empty values entirely (no null, no empty strings or arrays):

  • Identity — id, slug, name, tagline, description, url, phUrl, sourceUrl, recordType, scrapedAt
  • Votes and discussion — votesCount, launchDayScore, commentsCount, reviewsCount, reviewsRating
  • Rank and timing — dailyRank, weeklyRank, monthlyRank, launchNumber, featured, featuredAt, createdAt, scheduledAt, updatedAt, launchState, isPromoted
  • People and taxonomy — hunter, makers, topics, topicDetails
  • Product — website, websiteDomain, pricingType, product (id, slug, name, tagline, website, social links, categories, followers, reviews count/rating, first launch date)
  • Media and badges — media (image/video URL, dimensions, platform), thumbnailUrl, badges, promo
  • Optional arrays — comments (with nested replies), reviews (ratings, text, pros/cons, reviewer, source launch), launchHistory

phUrl is the legacy short launch link (/posts/<slug>); url is the canonical Product Hunt product/launch link. website is the product's own site. pricingType is Product Hunt's value when present (free, free_options, payment_required) and otherwise a normalized free/paid from the product's structured data.

Examples

Full feed for one busy day

{
  "mode": "dailyRange",
  "from": "2026-10-25",
  "to": "2026-10-25",
  "maxItems": 1000,
  "maxPages": 60,
  "includeDetails": true
}

Weekly AI leaderboard with comments

{
  "mode": "leaderboard",
  "period": "weekly",
  "date": "2026-10-26",
  "featuredOnly": true,
  "maxItems": 50,
  "includeComments": true,
  "maxComments": 40
}

Latest launches in a topic, with reviews

{
  "mode": "topic",
  "topicSlugs": ["artificial-intelligence"],
  "maxItems": 20,
  "includeDetails": true,
  "includeReviews": true,
  "maxReviews": 20
}

One product with its launch history

{
  "mode": "product",
  "productSlugs": ["notion"],
  "includeDetails": true,
  "includeHistory": true,
  "maxPages": 5
}

Specific launches by URL

{
  "mode": "launch",
  "postIds": [
    "https://www.producthunt.com/products/strawberry?launch=strawberry-1-0"
  ],
  "includeComments": true,
  "maxComments": 100
}

How it works

The actor uses Product Hunt's public frontend GraphQL endpoint with the same persisted queries the website loads, a desktop browser user agent, X-Requested-With, the Product Hunt timezone header, and apollo-require-preflight. It sends the full query document plus its sha256 persisted-query hash, so no token or cookie is ever involved.

If Product Hunt ships a new frontend build and a persisted hash stops matching, the actor refreshes the query document from the page's Apollo SSR payload, retries once, and then falls back to the page's embedded JSON state. A 200 response with an empty block is treated as a block or a source fault, never as a successful empty run.

Comments paginate 20 threads per page with reply cursors; reviews paginate 10 per page; launch history paginates 10 per page. Records are deduplicated by launch, comment, and review id.

Reliability and limits

  • Retries with backoff on 429/5xx/timeouts; a Cloudflare challenge produces a failed run with a clear status message instead of an empty dataset.
  • maxItems, maxPages, maxComments, and maxReviews are hard caps. A day with more launches than maxItems stops exactly at the cap.
  • Product Hunt's maker profile pages are protected by a challenge, so maker emails and social handles are not part of this dataset. Launch data includes maker names, usernames, headlines, avatars and follower counts when the source exposes them.
  • Funding amount and employee count are not reliably exposed by the public product pages and are omitted.
  • Very large launches can have hundreds of comments; raise maxComments up to 500 for those threads.
  • Topic/category/search results are products, so the actor resolves each product's latest launch. Older launches from the same product are available with includeHistory.
  • Search is product search (the same search the Product Hunt site uses), not a free-text search over historical launch descriptions.

FAQ

Do I need a Product Hunt account or API token? No. The actor reads the same public frontend data the website renders. There is nothing to sign up for.

Why do I get more than 20 launches per day? The visible leaderboard is a preview. The actor follows the cursor until the source is exhausted, which is normally 700-950 launches on a busy day.

Are comments and reviews included by default? No. They are opt-in because they add requests. Set includeComments and/or includeReviews to attach them to each launch record.

What happens if Product Hunt blocks the request? The actor retries, optionally rotates your proxy session if you supplied a proxy, and fails the run with a status message. It never reports a blocked or empty page as a successful empty dataset.

Can I get older launches? Yes: set a past from/to for dailyRange, pick a past leaderboard date, use product with includeHistory, or pass an old launch URL in launch mode.

Is this affiliated with Product Hunt? No. This is an independent, third-party exporter that reads Product Hunt's public web data. It is not affiliated with or endorsed by Product Hunt.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build Gt2QpRfveJ3Ze6KsE. Documentation is regenerated from the default published build; private drafts are not included.