Product Hunt Scraper — Real-Time Launch Data avatar

Product Hunt Scraper — Real-Time Launch Data

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Product Hunt Scraper — Real-Time Launch Data

Product Hunt Scraper — Real-Time Launch Data

Get real-time Product Hunt data: top launches, keyword search, category browsing, full product details, and maker lead details — emails, phones, and socials scraped from product websites. Streaming JSON output, webhook support, and a free tier with pay-per-event upgrades.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Emmanuel

Emmanuel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Product Hunt Real-Time Data — Launch & Maker Lead Data at Scale

Turn Product Hunt launches into clean, structured product and maker-lead data. Give it keywords, categories, or specific launch pages — and get one flat JSON row per launch, complete with name, tagline, description, topics, upvotes, comments, website, makers, and (optionally) enriched lead contact details. Rows stream into your Apify dataset as they are collected, so even very long runs stay light and nothing is lost mid-run.

No Product Hunt API keys. No spreadsheets. No cleanup. Just enter what you want and press Start.

⚡ Real-time streaming output • 🎯 Multi-mode runs • 🧩 Flat, predictable JSON • 🤝 Lead details without filtering • 💸 Pay only for what you export


✅ Pricing & free-plan note (read first)

This Actor uses Apify's pay-per-result model — you're charged per exported row (see Pricing).

  • Apify free plan: runs are limited to a 2-result sample per run, and the log tells you to upgrade. This is an Apify platform plan restriction, applied transparently — it is not an error.
  • Any paid Apify plan (Bronze and above): full, uncapped output. You get exactly what your input asks for.
  • Every run also honors your max run charge (spending limit): the Actor finishes gracefully the moment your configured limit is reached.

Details: Free plan limitations · Pricing


Why this Actor

Product Hunt Real-Time DataTypical scraper
SpeedFast per-result collection, parallel enrichmentOften slow & fragile
Memory512 MB default2–4 GB+
SetupOrganized input UI — run immediatelyOften needs tuning
OutputFlat, stable JSON field namesMessy, inconsistent
StreamingRows saved live during the runResults only at the end
ScaleUp to 50,000 rows per runOften capped much lower
FreshnessCollected at run time ("real-time")Cached or stale

What you get — per launch

Every row includes featureType and scrapedAt so you can filter, join, and pipe into any workflow.

GroupFields
IdentitypostId, productName, tagline, productUrl, websiteUrl
Contentdescription, topics[]
Tractionupvotes, commentsCount, rating, reviewCount
TimelinefeaturedAt, publishedAt
PeopleauthorName, lead.makerName, lead.makerHeadline, lead.makerUsername, lead.makerProfileUrl
MedialogoUrl, screenshotUrls[]
Lead detailslead.email, lead.phone, lead.socials (twitter, linkedin, github, facebook, instagram, youtube), lead.leadFound
ContextsearchKeyword, searchCategory (when the row came from keyword search or category browse)

Missing values are null — field names are stable across runs, so your transforms won't break.


Features

🚀 Top Launches (on by default)

Collect the launches currently featured on Product Hunt — today's front page, straight into your dataset.

Add one or more keywords ("ai agent", "fintech", "notion template") and collect the launches that match. Multiple keywords run in parallel.

🗂️ Category Browse

Collect recent launches from Product Hunt categories — "Artificial Intelligence", "Developer Tools", "Fintech", "Marketing" and more. Multiple categories run in parallel.

📎 Product URLs

Already have launch pages? Collect full details for them directly — alone or combined with any other mode.

🧩 Full product details (on by default)

Every launch is enriched with the full detail set: description, topics, upvotes, comments, rating, makers, website, logo, and screenshots. Adds a little extra time per launch.

🤝 Enable lead details (on by default) — enrichment, never a filter

Adds lead contact details to each launch — maker name, headline, profile, company website, emails, phone, and social profiles — when they are publicly available.

Every launch is still exported even when no lead details are found. Nothing is ever dropped for lacking contact info, so the time and cost of a run stay predictable (this is deliberate: you always know what a run of N launches costs).


Who it's for

  • Investors & scouts — track launches in your theses by keyword and category, with traction numbers (upvotes, comments) and maker identities.
  • Growth & partnership teams — find newly launched products with websites and maker profiles ready for outreach.
  • Sales & lead-gen teams — maker names, emails, phones, and social profiles where publicly available, flowing straight to your CRM via webhooks.
  • Founders — monitor your category daily: who launched, what got traction, which niches are heating up.
  • Journalists & analysts — a clean, structured feed of product launches with descriptions and topics for trend stories.
  • AI & automation builders — stable flat JSON for LLM prompts, scoring, and enrichment pipelines via the Apify API and MCP.
  • Data teams — flat rows that drop straight into Postgres, BigQuery, Airtable, or Sheets.

Use cases

  • Daily launch monitoring — schedule a run on Top Launches + a webhook; get every new featured product in Slack or your CRM the moment it's collected.
  • Category prospecting — collect "Artificial Intelligence" or "Fintech" launches weekly; enrich with lead details and feed your outreach queue.
  • Keyword market maps — run several keywords in parallel ("invoice", "agent", "hr tech") and compare traction per niche.
  • Competitive watch — collect launches in your own category; track upvotes and comments run over run.
  • Investor deal flow — filter post-run on upvotes thresholds; route standouts to your pipeline by webhook.
  • Maker contact lists — maker profile URLs, emails, and socials where publicly available, ready for partnership or press outreach.
  • AI product summaries — feed description, tagline, and topics to an LLM to cluster and summarize every day's launches.
  • Content sourcing — journalists: today's most upvoted launches with descriptions, ready to draft from.
  • Community building — collect maker profiles from launches in your niche for ambassador and community programs.
  • Backlink & press outreach — new products actively want visibility; their makers are reachable with public contact details.
  • Ecosystem research — join launch data with your own datasets by stable postId / websiteUrl keys.
  • Enrich your own lists — bring launch URLs you already have; leave with complete records.

Quick start

  1. Open the Actor in Apify Console.
  2. Leave Top Launches on — or switch on Keyword Search / Category Browse and add terms.
  3. Leave Full product details and Enable lead details on for maximum data per row.
  4. Press Start and watch rows stream into the dataset.
  5. Export as JSON / CSV / Excel, pull via the Apify API, wire up a webhook, or use MCP.

Example — today's top launches

{
"enableTopLaunches": true,
"topLaunchesMaxResults": 20,
"enableProductDetails": true,
"enableLeadDetails": true
}

Example — keyword watch across niches

{
"enableSearch": true,
"searchKeywords": ["ai agent", "fintech", "analytics"],
"searchMaxResults": 15
}

Example — category prospecting

{
"enableCategoryBrowse": true,
"categories": ["Artificial Intelligence", "Developer Tools"],
"categoryMaxResults": 30
}

Example — enrich your own launch URLs

{
"enableTopLaunches": false,
"enableProductUrls": true,
"productUrls": [
"https://www.producthunt.com/products/example-app"
],
"enableProductDetails": true,
"enableLeadDetails": true
}

Example — results to a webhook (Slack-friendly)

{
"enableTopLaunches": true,
"topLaunchesMaxResults": 25,
"webhookUrl": "https://hooks.slack.com/services/T000/B000/XXXX",
"webhookFormat": "slack"
}

Input reference

The input is organized into one section per collection mode. Each mode has its own enable toggle (all off by default except Top Launches) and its own max results — there is no global cap; the run's total is simply the sum of what each enabled section collects.

🚀 Top Launches

FieldTypeDefaultDescription
enableTopLaunchesbooleantrueCollect the launches currently featured on Product Hunt.
topLaunchesMaxResultsinteger10Max launches to collect from the featured feed (1–500).
FieldTypeDefaultDescription
enableSearchbooleanfalseCollect launches matching the keywords below.
searchKeywordsstring[][]Keywords or phrases — one launch set per keyword.
searchMaxResultsinteger10Max matching launches per keyword (1–500). Matching is applied during collection, so results are best-effort for rare terms.

🗂️ Category Browse

FieldTypeDefaultDescription
enableCategoryBrowsebooleanfalseCollect recent launches from the categories below.
categoriesstring[][]Product Hunt category names (e.g. Artificial Intelligence, Developer Tools).
categoryMaxResultsinteger10Max launches per category (1–500).

🔗 Product URLs

FieldTypeDefaultDescription
enableProductUrlsbooleanfalseCollect full details for the launch pages below.
productUrlsstring[][]Product Hunt product or post URLs.

🧩 Data enrichment

FieldTypeDefaultDescription
enableProductDetailsbooleantrueEnrich each launch with the full detail set. Adds a little extra time per launch.
enableLeadDetailsbooleantrueAdd lead contact details when publicly available. Never filters — every launch is exported either way.

📡 Webhooks & connection

FieldTypeDefaultDescription
webhookUrlstring""Optional. Each row is saved to the dataset and delivered to this URL in real time.
webhookFormatselectjsonjson (full record) or slack (message payload).
proxyConfigurationproxyUS residentialApify proxy settings (US residential on by default).

Provide at least one enabled mode. All modes can run together in a single run — the keyword and category that produced each row are tagged on the row itself, and duplicates are removed automatically across modes.

Output reference

Every exported record is a flat JSON object in the run's dataset:

FieldTypeDescription
featureTypestringtop_launch, keyword_search, category, or product_details.
sourcestringWhich stage produced the row (e.g. feed, feed+details).
scrapedAtstringISO 8601 UTC timestamp of collection.
postIdstring | nullProduct Hunt launch post ID (stable join key).
productNamestring | nullProduct name.
taglinestring | nullLaunch tagline.
productUrlstring | nullProduct Hunt page URL for the launch.
websiteUrlstring | nullThe product's own website, when available.
descriptionstring | nullFull description (when details are on).
topicsstring[]Product Hunt topics/categories (when details are on).
upvotesinteger | nullLaunch upvotes (when details are on).
commentsCountinteger | nullComment count (when details are on).
ratingnumber | nullStar rating (0–5), when available.
reviewCountinteger | nullNumber of reviews, when available.
featuredAtstring | nullWhen the launch was featured.
publishedAtstring | nullWhen the launch was published.
authorNamestring | nullWho posted the launch.
logoUrlstring | nullProduct logo image URL.
screenshotUrlsstring[]Product screenshot image URLs.
leadobject | nullLead contact block (when lead details are on) — see below.
searchKeywordstring | nullThe keyword that produced this row (keyword search only).
searchCategorystring | nullThe category that produced this row (category browse only).

Lead contact block (lead)

FieldTypeDescription
makerNamestring | nullMaker's name, when available.
makerHeadlinestring | nullMaker's headline (e.g. "Founder of Example Co").
makerUsernamestring | nullMaker's Product Hunt username.
makerProfileUrlstring | nullMaker's Product Hunt profile URL.
emailstring | nullA contact email publicly available on the product's website.
phonestring | nullA contact phone publicly available on the product's website.
socialsobjectPublic social profile URLs: twitter, linkedin, github, facebook, instagram, youtube (each string | null).
websiteUrlstring | nullThe company website the details came from.
leadFoundbooleantrue when at least one contact detail was found. Rows are exported regardless of this flag.

Run summary (OUTPUT key-value store)

Each run also writes a summary you can read via the Apify API:

{
"totalPushed": 120,
"enabledFeatures": ["top_launches", "product_details", "lead_details"],
"errors": [],
"spendingLimitReached": false,
"paywall": {
"detected": true,
"isPaying": true,
"pricingTier": "SILVER",
"blocked": false,
"limited": false,
"mode": "limit",
"freeTierMaxItems": null
},
"finishedAt": "2026-09-25T12:00:00.000Z"
}
Summary fieldMeaning
totalPushedRows exported this run.
enabledFeaturesModes that ran (e.g. top_launches, keyword_search, category_browse, product_urls, product_details, lead_details).
errorsNon-fatal failures, expressed as fixed user-facing sentences.
spendingLimitReachedtrue when your max run charge was reached — the run then finishes gracefully.
paywallFree-plan gate transparency: detected, isPaying, pricingTier, blocked, limited, mode, freeTierMaxItems.
finishedAtWhen the run wrapped up.

Dataset views

The dataset ships with ready-made views: Overview, Launches, and Leads — switch between them in the Console's Dataset tab.


Webhooks — real-time delivery to your stack

Every row is always saved to the run's dataset. Optionally, set Webhook URL and each row is also delivered to your URL the moment it is collected — perfect for CRMs, Slack, Zapier, Make, n8n, or Google Sheets.

SettingValues
webhookUrlYour receiving URL (any service that accepts a POST).
webhookFormatjson = the full record; slack = Slack message payload.

Payload example (json format):

{
"featureType": "top_launch",
"productName": "Example App",
"tagline": "Turn screenshots into demo videos",
"description": "Example App helps you create polished demo videos from screenshots in minutes.",
"topics": ["Artificial Intelligence", "Video"],
"upvotes": 127,
"commentsCount": 21,
"productUrl": "https://www.producthunt.com/products/example-app",
"websiteUrl": "https://example.app",
"lead": {
"makerName": "Jane Doe",
"makerHeadline": "Founder of Example",
"makerUsername": "janedoe",
"makerProfileUrl": "https://www.producthunt.com/@janedoe",
"email": "jane@example.app",
"phone": null,
"socials": { "twitter": "https://x.com/janedoe", "linkedin": null },
"leadFound": true
},
"scrapedAt": "2026-09-25T12:00:00.000Z"
}

Payload example (slack format):

{
"text": ":rocket: *Example App*\nTurn screenshots into demo videos\n*Topics:* Artificial Intelligence, Video\n*Upvotes:* 127 • *Comments:* 21\n*Maker:* Jane Doe • Founder of Example\n*Email:* jane@example.app\n*Website:* https://example.app\n<View on Product Hunt|...>"
}

Webhook payloads contain the same curated fields as the dataset — nothing else. Failed deliveries are logged as a single warning (Webhook delivery failed) and never interrupt the run or dataset writes.

Apify's own webhooks (run succeeded / failed / aborted) are configured separately under your run's Storage → Webhooks in the Console and work with any Actor.


Integrations — API, MCP, and automations

Apify API

Pull results programmatically as JSON, CSV, or Excel:

  • GET https://api.apify.com/v2/datasets/{DATASET_ID}/items — your rows.
  • Full reference: Apify API v2

Start and monitor runs with POST /v2/acts/{actorId}/runs — schedule them with Schedules for daily launch or lead refreshes.

MCP usage (AI assistants)

Use the Apify MCP server so AI assistants (Claude, ChatGPT, Cursor, and others) can run this Actor and read its results directly in chat:

  1. Connect the Apify MCP server to your assistant (setup guide).
  2. Ask in natural language — the assistant calls this Actor with the right input.
  3. Results come back as dataset items the assistant can summarize, tabulate, or chain onward.

Example prompts:

"Collect today's top 20 Product Hunt launches and summarize each in one sentence."
"Run the Product Hunt actor for the Artificial Intelligence category and list the 10 most upvoted launches in a table."
"Find Product Hunt launches matching 'invoice' and pull maker names and websites for outreach."

Typical MCP flow:

User: "Collect 10 AI launches from Product Hunt and draft outreach to their makers"
→ MCP runs Actor with enableTopLaunches=true, topLaunchesMaxResults=10, enableCategoryBrowse=true, categories=["Artificial Intelligence"], categoryMaxResults=10
→ MCP reads dataset items (productName, upvotes, lead.makerName, lead.email)
→ Assistant drafts the outreach

LLM & RAG pipelines

Output is stable, flat JSON — ideal for ChatGPT, Claude, Gemini, LangChain, and LlamaIndex:

{
"featureType": "top_launch",
"productName": "Example App",
"upvotes": 127,
"topics": ["Artificial Intelligence"],
"lead": { "makerName": "Jane Doe", "email": "jane@example.app" },
"scrapedAt": "2026-09-25T12:00:00.000Z"
}

Workflow: run the Actor → fetch dataset items via the API → pass records to your LLM or vector store.

Native integrations

Push rows straight from the dataset to Google Sheets, Airtable, Dropbox, Google Drive, Zapier, Make, and more via Apify Integrations — no code required.


Pricing

  • Pay per exported result (pay-per-event). You are charged for rows actually delivered to your dataset — not for time, and not for work you don't receive.
  • Spending limit respected: if you set a max charge for a run in Apify, the Actor stops gracefully the moment that limit is reached, with a clear status message — never an overrun. See Apify's pay-per-event docs.
  • Cost levers: lower each section's Max results, enable only the modes you need, and turn off Full product details / Enable lead details for lighter runs.

Free plan limitations

Apify free-plan accounts are limited to a 2-result sample per run (across all enabled modes). The run log shows an explicit notice to upgrade to a paid Apify plan for full, unlimited data, and the run's paywall summary object records the decision (detected, isPaying, pricingTier, blocked, limited). This is a transparent platform plan restriction — runs finish cleanly; nothing errors. Paid plans (Bronze and above) always get the full, normal output with no cap.


Performance & scale

  • Streaming: rows are written to the dataset as they are collected — memory stays light and a long run never loses completed work.
  • Parallel enrichment: multiple launches are enriched concurrently; 512 MB default memory is plenty (configurable up to 2 GB).
  • 10,000-second run timeout — supports very large multi-mode runs.
  • Per-section scaling: each mode collects up to its own max results, so run size is exactly what you configure per section.
  • US residential connectivity enabled by default for consistent results.
  • Lead details add a little extra time per launch; turn the toggle off for the fastest possible runs.

FAQ

Do I need a Product Hunt API key or account? No. Just pick your modes and press Start.

What does "real-time" mean here? Data is collected when your run executes — not served from a stale cache. Schedule runs to keep it fresh.

I'm on the Apify free plan — why only 2 results? That's the platform free-plan restriction for this Actor: 2 results per run across all enabled modes plus an upgrade notice in the log. Upgrade to any paid Apify plan for full, unlimited output. See Free plan limitations.

Will launches without contact details be dropped? Never. Enable lead details adds contact information when it's publicly available — it never filters. Every collected launch is exported, so run time and cost stay predictable.

Why does a run take a little longer with lead details on? Lead details add a little extra time per launch. Turn the toggle off if you only need product facts.

Can I run several modes at once? Yes — Top Launches, Keyword Search, Category Browse, and Product URLs can all run in the same run. Each row is tagged with the keyword/category that produced it, and duplicates are removed automatically across modes.

How is the run size controlled? Per section: each enabled mode collects up to its own "Max results" value (per feed, per keyword, per category — or one per URL). There is no separate global cap; the run's total is the sum of what each enabled section collects.

How many keywords/categories can I add? As many as you like. They run in parallel; searchMaxResults applies per keyword and categoryMaxResults per category.

Can I filter by upvotes or category? You can collect broadly and filter post-run — rows carry upvotes, topics, and featureType, so simple spreadsheet/API filtering gives you full control without unpredictable run times.

Some launches have no postId or empty fields — why? Every field is optional and filled when available; missing values are null. Launches are only exported when successfully collected; unavailable ones are skipped and noted in the log with a fixed, generic message.

How do webhooks work? Set webhookUrl (and webhookFormat) and each row is delivered to your URL as it is collected, in addition to being saved to the dataset. Failures log one warning and never stop the run.

Can AI assistants use this Actor? Yes — connect the Apify MCP server and run it with natural language. See MCP usage.

How do I control cost? Keep each section's "Max results" realistic, enable only the modes you need, and set a run spending limit in Apify — the Actor honors it and stops gracefully.

What does spendingLimitReached: true mean? Your configured max charge for that run was reached. The run wrapped up cleanly with everything collected so far saved.

What do the paywall fields mean? They make the free-plan gate visible in the run output: whether it was detected, whether the account is paying, the pricing tier, and whether results were capped or blocked.

Is the data public? The Actor collects publicly displayed launch information only.

Which categories work? Any category Product Hunt lists. Use the display name (e.g. "Artificial Intelligence", "Developer Tools", "Marketing").

How often can I run it? As often as you like, bounded by your Apify plan and spending limits. Scheduled runs are supported.

What does "Webhook delivery failed" in the log mean? Your receiving URL rejected or timed out the delivery. Dataset writes are unaffected — fix the receiver or re-deliver from your own queue.

How do I export data? Console export (JSON/CSV/Excel), the Apify API, native integrations, or your webhook.


Support

Open an issue on this Actor's GitHub repository or contact the developer through the Apify Store page.

License

See repository for license details.