Product Hunt Scraper
Pricing
from $0.08 / 1,000 product row (cached)s
Product Hunt Scraper
Export Product Hunt launches by daily, weekly, monthly, or yearly leaderboard, date, topic, category, and product URL, with available votes, comments, review totals, known-launch history, media, and public outbound links.
Pricing
from $0.08 / 1,000 product row (cached)s
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export Product Hunt launches from the latest feed, archived launch history, or explicit product URLs. Get product names, taglines, launch dates, Product Hunt links, and available outbound links, with optional rankings, media, comments, review totals, and known-launch history.
Use the rows for startup research, editorial shortlists, and launch comparisons. Each run fetches fresh public data. Access is direct only, and individual review bodies, website metadata, and built-with extraction are not supported.
Quick start
- Open the Actor and choose a discovery window, or supply public Product Hunt product URLs.
- Set
maxItemsto a small limit, such as 10, and enable only the supplements you need. - Start the run, review its dataset and run summary, then export the results.
{"discoveryWindow": "daily","maxItems": 10,"includeRedirectUrl": true}
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
These verified public examples prefill an input you can review before starting a run:
- Product Hunt Startup Newsletter Source
- Product Hunt AI Tools Discovery Feed
- Daily Product Hunt Market Scan
What you get
- One row per product: Product name, tagline, launch date, public links, source, and scrape timestamp.
- Flexible discovery: Latest launches, archived daily through yearly windows, date inputs, public topic/category filters, or explicit product URLs.
- Optional context: Available launch rankings, votes, media, review totals, discussion comments, and known-launch history.
- Fresh exports: Public data is fetched anew on every run, with partial-result reporting when some work cannot finish.
Who is it for?
Startup researchers and analysts can use launch records to build product shortlists. Newsletter editors get source links and taglines to investigate. Growth and product teams can compare public launches, while automation builders can retrieve structured rows for their own reporting.
Input settings
Choose a discovery window for a launch list, or provide Product Hunt product URLs for specific targets. Optional supplements add fields to each saved product. The same row limit applies in both cases.
| Setting | JSON key | Purpose |
|---|---|---|
| Discovery window | discoveryWindow | latest, daily, weekly, monthly, or yearly launch discovery. |
| Window date | windowDate | Archive period anchor in YYYY-MM-DD format. |
| Maximum products | maxItems | Limit the number of saved product rows. |
| Label filters | topics, categories | Match available public topic labels. The legacy category filter checks the same labels, not a separate category taxonomy. |
| Launch date | launchDate | Filter the chosen discovery window to one date. Use windowDate to select an older archive first. |
| Product URLs | startUrls | Provide objects containing a public Product Hunt product url. |
| Launch details | includeLaunchDetails | Add available rankings, votes, media, topics, and review totals. |
| Comments | includeComments | Add available public launch discussion comments. |
| Known-launch history | includeLaunchHistory | Add known launch dates, ranks, and votes, not exhaustive relaunch coverage. |
| Outbound links | includeRedirectUrl | Include an available outbound URL, which may remain a Product Hunt redirect. |
| Work budget | runBudgetSeconds | Bound work within the platform timeout. Default: 240 seconds. |
Connection: Requests use a direct connection. Proxy routing is not supported.
Legacy inputs: cacheTtlHours and forceFresh remain accepted but have no effect. Every run fetches fresh data. Omit includeReviews, includeBuiltWith, and includeWebsiteEnrichment, or set them to false. Explicit requests for these withdrawn options fail before Actor charges.
Example input
{"discoveryWindow": "daily","maxItems": 25,"includeRedirectUrl": true}
Output data
The Actor returns one dataset row per public Product Hunt product launch.
| Field | Description |
|---|---|
title | Product name |
tagline | Product tagline or short description |
launchDate | Product Hunt launch date when available |
productUrl | Public Product Hunt product URL |
outboundUrl | Public outbound link when enabled. It may remain a Product Hunt redirect, not a resolved destination |
source | Exact feed, Hunted.Space history, or product fallback page used for the row |
discoveryWindow | Latest, daily, weekly, monthly, or yearly discovery mode |
cacheStatus | Always fresh for new runs. Historical exports remain unchanged |
scrapedAt | Timestamp when the row was saved |
Optional launch details, comments, and known-launch history add their available fields. Missing supplements are not proof that a product has no discussion, reviews, or earlier launches.
Example output
This illustrative row shows the base shape, not a newly scraped product.
{"title": "Example Product","tagline": "A useful product for modern teams","launchDate": "2026-07-03","productUrl": "https://www.producthunt.com/products/example-product","outboundUrl": "https://example.com","source": "https://www.producthunt.com/feed","discoveryWindow": "latest","cacheStatus": "fresh","scrapedAt": "2026-07-03T12:00:00.000Z"}
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
This Actor uses Apify pay-per-event pricing.
- Start charge:
actor-startis charged once after input validation, including a valid run with no matching launches. - Saved products:
product-freshis charged for each successfully saved fresh product row. Repeat runs fetch again and use the fresh-row price. New runs do not emitproduct-cached, so they can cost more than earlier cached runs. - Optional supplements:
launch-details,comments-enrichment, andlaunch-history-enrichmentare additional events charged after the matching product row is saved. Available comments may be empty, and known-launch history is not exhaustive relaunch coverage. - Withdrawn options: Website metadata, individual review bodies, and built-with requests are rejected before Actor events. Historical billing records remain available. New runs do not charge
website-enrichment,reviews-enrichment, orbuilt-with-enrichment.
See the live Pricing tab for current rates and discounts. Apify may also charge platform usage for compute, storage, or data transfer outside this Actor pricing.
Tips for best results
- Start with a small limit. Review 10–25 products before requesting a larger export or optional supplements.
- Anchor historical comparisons. Use an explicit date or archive window so your own reports compare like periods.
- Check the outbound URL. It may remain a Product Hunt redirect rather than a resolved product website.
- Budget for fresh reads. Repeated exports fetch again and use fresh-product charges rather than historical cached-row charges.
- Read the run summary. Check for partial results before treating an export as a complete input to your analysis.
Limits and caveats
- Only public launch data is supported. Private maker contacts, emails, and login-only fields are not collected.
- Direct access may be rate limited. Public sources can lag or become unavailable, and no cross-run cached result substitutes for them.
- Website metadata, resolved outbound destinations, individual review bodies, and built-with extraction are withdrawn. New rows retain
website: null,reviews: [], andbuiltWith: []for compatibility. These empty legacy fields do not mean zero reviews or technologies. Historical exports retain their original fields. - Review counts and ratings, available comments and launch details, media, and known-launch history remain supported. Availability varies by product and source. Maker profiles and separate category records are not currently populated. Their legacy arrays do not prove that none exist.
- An explicit URL with a confirmed unavailable record is skipped with an explanation while useful URLs are retained. Source errors or unfinished work are reported as partial or failed in
RUN_SUMMARY, with recovery details inRUN_CHECKPOINT. - Completed discovery with no matching launch succeeds with an empty dataset and a reason. Source failures still fail when no useful rows can be saved. A work cutoff after saving some rows completes as a partial run, not a complete export.
- The default 240-second work budget leaves time to save diagnostics before the 300-second platform timeout. Larger enrichment requests may need smaller row limits.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~product-hunt-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"discoveryWindow":"daily","maxItems":25}'
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/product-hunt-scraper').call({discoveryWindow: 'daily',maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("fetch_cat/product-hunt-scraper").call(run_input={"discoveryWindow": "daily", "maxItems": 25})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
MCP and AI agents
You can ask your AI assistant to collect data with Product Hunt Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Product Hunt Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/product-hunt-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Product Hunt Scraper by Fetch Cat, or give it the identifier fetch_cat/product-hunt-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
- “Get the latest published daily Product Hunt launches and prepare a shortlist from their names, taglines, and links.”
- “Find launches in Artificial Intelligence and include the available rankings and known-launch history for my research.”
- “Collect public launch details for these Product Hunt product links, then summarize the records that were available.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
Common workflows
- Startup lead research: Collect a small daily launch list with product names, taglines, and outbound links. Review those links in your own lead-research process. The Actor does not supply private maker contacts or resolve redirect destinations.
- Market research: Select a weekly or monthly discovery window and a public topic or category, then compare the returned products and available rankings in your own analysis. The filter narrows source records, not an independently classified market census.
- Launch dashboards: Export date-anchored launch rows and use
productUrlandlaunchDateto join successive datasets. Your workflow handles history, deduplication, and change detection rather than the scraper retaining results across runs. - Newsletter research: Gather taglines and Product Hunt links for a short editorial list. Add launch details when available rankings or media help you choose candidates, then verify claims and write the newsletter outside the Actor.
- Competitive monitoring: Supply known product URLs to inspect their current public launch metadata and available comments. Compare datasets yourself to spot changes. A later run is another fresh fetch, not a built-in alert subscription.
- AI-assisted enrichment: Give returned titles, taglines, and links to your assistant for classification or summary. Those interpretations are downstream analysis, not extra facts extracted or verified by this scraper.
FAQ
Can I scrape older Product Hunt launch dates?
Choose an archived discovery window and set windowDate to the period you want. launchDate only filters records within that selection. It does not independently retrieve an older day from the latest feed. Results depend on available public launch records.
Does this collect emails or individual reviews?
No. It returns public launch metadata and links. Review totals may be available with launch details, but individual review bodies are withdrawn.
How do I avoid stale rows?
Every run fetches fresh public data. forceFresh and cacheTtlHours remain accepted legacy inputs with no effect. Public sources themselves may lag.
Can I export to CSV or Excel?
Yes. Use the dataset's Export option. Choose JSON when you need to retain nested comments, media, or launch details.
Does an empty dataset mean the source worked?
Not by itself. Check RUN_SUMMARY for the reason. Completed discovery with no matching records is different from a source failure or an incomplete run.
Related Actors
- Hacker News Search Scraper — Search stories, comments, Ask HN, and Show HN for discussion alongside launch research.
- GitHub Repositories Search Scraper — Find public repositories by query, language, topics, and activity when researching open-source products.
- Reddit Scraper — Export public posts and comments from subreddit, search, and post URLs for community research.
- Website Contact Finder — Find public contact details and their source URLs on websites or domains you supply.
- Substack Posts Scraper — Collect public newsletter posts, archives, and metadata for editorial research.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review from the Actor page to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥