Product Hunt [Only $0.80💰] Scraper · Launches + Emails
Pricing
from $0.80 / 1,000 results
Product Hunt [Only $0.80💰] Scraper · Launches + Emails
[Only $0.80💰] Scrape Product Hunt launches, daily leaderboards, topics, and maker profiles in one actor. For every product, contact emails are auto-harvested from its website. 50+ fields per product · auto-classifies any PH URL · JSON or CSV out. No browser, no third-party services.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Product Hunt Scraper — Launches, Makers, Topics & Contact Emails
Auto-classify any Product Hunt URL — daily leaderboards, topic pages, individual products, or maker profiles — and get a clean structured dataset with 50+ fields per product plus contact emails harvested directly from each product's website. Pure HTTP, no browser, no third-party services.
How it works
Why use this scraper
- All Product Hunt URL kinds in one input — paste a daily leaderboard, a topic page, a product URL, and a maker profile in the same array. Each is auto-classified and routed to the right handler. No separate actors per URL shape.
- Contact emails included — for every product, the scraper fetches the product's own website and extracts emails (mailto: links + plain-text patterns + obfuscation decode), with a junk filter for image filenames, tracking sentinels, and retina
@2x.pngpatterns. Cached per-URL so duplicate websites aren't refetched. - 50+ fields per product — name, tagline, description, websiteUrl, social links (Twitter / Facebook / Instagram / LinkedIn / AngelList / Threads / Medium / GitHub / iOS / Android), follower count, reviews count + rating, categories, latest launch summary (launch number, scheduled date, launch state, vote score), pros/cons sentiment tags (Positive vs Negative with counts), alternatives, funding amount, Y Combinator alumni flag, "is top product" flag, employee size band.
- Cloudflare-clean — uses
impit's Chrome TLS fingerprint. No proxy required for most runs; supports your own residential pool when you need geo-locked output. - Honest cost — pure HTTP, single fetch per page, deduped website cache. A daily leaderboard run (17–30 products + email harvest) typically completes in 15–30 seconds.
Overview
Product Hunt indexes thousands of new product launches every month. Anyone serious about competitive intel, deal sourcing, or B2B prospecting eventually needs the data in CSV — not in their browser tab. This actor turns any Product Hunt URL into a structured dataset, and goes one step further by following each product's websiteUrl to harvest contact emails directly from the source.
The actor uses Product Hunt's server-rendered Apollo cache (the same data the page UI reads) rather than scraping rendered HTML — so the parser is resilient to PH's frequent visual redesigns. The 5 supported URL kinds (leaderboard / topic / product / post / maker) are auto-classified by URL shape; you don't tell the actor "what kind of URL this is", you just paste URLs.
Supported inputs
| Input | Row(s) emitted |
|---|---|
Daily leaderboard — /leaderboard/daily/YYYY/M/D | Fans out to every product on the leaderboard (typically 17–30 launches per day). Each emits 1 product row (rowType: "product") with the full schema + harvested emails. |
Topic page — /topics/{slug} | Fans out to all products in the topic. Auto-paginates until maxItems is reached. Examples: /topics/artificial-intelligence, /topics/developer-tools, /topics/saas. |
Product detail URL — /products/{slug} | 1 product row, no pagination. Useful for refreshing a known product or scraping a list of bookmarked products. |
Launch post URL — /posts/{slug} | Same shape as /products/{slug} — Product Hunt aliases them. Both work. |
Maker profile URL — /@{username} | 1 maker row (rowType: "maker") — name, username, headline, avatar, Twitter username, followers count, products count, list of launched products. No email harvest (PH doesn't expose personal websites for makers). |
Mix any of these in the same startUrls[] array — the actor auto-classifies each one. JSON + CSV output.
Pure HTTP. No Playwright, no Puppeteer, no headless Chromium, no third-party services.
Use cases
- Competitive intel — pull every product launched in your category last month (via topic pages), see launch counts, vote scores, founder backgrounds, websites.
- B2B prospecting — daily leaderboard runs + email harvest = a ready-to-use lead list of newly launched SaaS founders.
- Deal sourcing — VCs and operators track new launches in AI, dev tools, fintech, etc. Filter the output by funding amount, YC alumni flag, employee size.
- Market research — track follower growth, review counts, pros/cons sentiment over time by re-running daily leaderboards.
- Press/PR list-building — every product on the daily leaderboard with its tagline, description, founder names, contact email — straight into your outreach CRM.
- Trend tracking — pros/cons sentiment tags surface what users love (and complain about) on each launch.
How it works (under the hood)
Five stages, all pure HTTP, ~15-30 seconds per leaderboard run:
- Classify URL — every input URL is matched against a deterministic regex set. Five URL shapes, one classifier function.
- Fetch via impit Chrome — Product Hunt is hosted behind Cloudflare.
impit's real Chrome TLS fingerprint passes the challenge directly; no proxy required for most runs. Apify Proxy is wired up as a fallback when you need geo-locked output. - Parse Apollo SSR data transports — every PH page ships a server-rendered Apollo Client cache as
window[Symbol.for("ApolloSSRDataTransport")].push({...})script blocks. The parser extracts those blocks (bracket-balanced JSON arg parser handles multi-line nested objects), sanitizes Apollo'sundefined/NaN/Infinityliterals soJSON.parsesucceeds, and picks the richest data block for each entity type. - Harvest product emails — for each parsed product with a
websiteUrl, we fetch the site (via the same impit Chrome stack) and extract emails. Cached per URL so multiple launches of the same SaaS only fetch the website once. - Push enriched row to dataset — one row per product or maker. CSV-flat, JSON-rich.
End-to-end live smoke test (May 2026): 5/5 products + 1 maker scraped from a mixed input (leaderboard + product + maker URL), 1 contact email harvested, 0 hard failures.
Input configuration
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | string[] | yes | Any mix of leaderboard / topic / product / maker URLs. Auto-classified. |
enrichMakerEmails | boolean | no | Default true. For each parsed product, follow the product's websiteUrl and harvest emails (mailto + plain-text, junk-filtered, capped at 10 per site). Cached per URL. Disable for pure PH metadata (~30% faster). |
maxItems | integer | no | Safety cap on total dataset rows, not URLs. A topic URL with 500 results emits up to 500 product rows. Default 200. Free-tier users are capped at 100. |
maxConcurrency | integer | no | Detail pages fetched in parallel. Default 8. PH's anti-bot is forgiving; 6–10 is the sweet spot. |
minConcurrency | integer | no | Minimum parallelism. Default 1. |
maxRequestRetries | integer | no | Per-URL retry budget. Transient errors (CF soft-blocks, thin bodies) are auto-detected and don't count against this. Default 5. |
proxy | object | no | Default: Apify Proxy. Provide your own residential pool if you encounter rate limits or want geo-locked output. |
Example input
{"startUrls": ["https://www.producthunt.com/leaderboard/daily/2026/5/22","https://www.producthunt.com/topics/artificial-intelligence","https://www.producthunt.com/products/bolt-new","https://www.producthunt.com/@ericsimons40"],"enrichMakerEmails": true,"maxItems": 200}
That yields up to 200 rows: the daily leaderboard fans out to ~20 products, the AI topic page fans out and paginates through up to 180 more, the bolt.new direct URL adds 1 (deduped against the leaderboard if already seen), and the maker profile adds 1 standalone maker row.
Output overview
Two row shapes, distinguished by the rowType field: product and maker.
rowType: "product" — every product page
{"rowType": "product","sourceUrl": "https://www.producthunt.com/products/bolt-new","canonicalUrl": "https://www.producthunt.com/products/bolt-new","productId": "599447","slug": "bolt-new","name": "bolt.new","tagline": "Prompt, run, edit & deploy full-stack web apps","description": "Build, run, edit, and deploy full-stack apps...","logoUuid": "ed53e95b-37b8-4a87-aa0f-...","websiteUrl": "https://bolt.new","cleanUrl": "bolt.new","githubUrl": null,"iosUrl": null,"androidUrl": null,"twitterUrl": "https://twitter.com/stackblitz","facebookUrl": null,"instagramUrl": null,"linkedinUrl": "https://www.linkedin.com/company/stackblitz","angellistUrl": null,"threadsUrl": null,"mediumUrl": null,"reviewsCount": 43,"reviewsRating": 4.6,"followersCount": 28495,"postsCount": 7,"addonsCount": 0,"founderDetailedReviewsCount": 0,"categoriesCount": 5,"employeeSize": "11-50","fundingAmount": 105800000,"wasInYCombinator": false,"isNoLongerOnline": false,"isClaimed": true,"isTopProduct": true,"firstLaunch": false,"categories": [{ "id": "44", "name": "Artificial Intelligence", "slug": "artificial-intelligence", "path": "/topics/artificial-intelligence" },{ "id": "267", "name": "Developer Tools", "slug": "developer-tools", "path": "/topics/developer-tools" }],"latestLaunch": {"id": "608123","slug": "bolt-new","name": "bolt.new","tagline": "Prompt, run, edit & deploy...","launchNumber": 7,"launchState": "default","launchedThisWeek": false,"isMaker": false,"isHunter": false,"createdAt": "2026-05-22T07:01:00Z","scheduledAt": "2026-05-22T07:01:00Z","thumbnailImageUuid": "...","primaryLinkUrl": "https://bolt.new"},"firstPost": { "...same shape as latestLaunch..." },"proConTags": [{ "id": "1", "name": "Fast", "count": 18, "type": "Positive" },{ "id": "2", "name": "Reliable", "count": 12, "type": "Positive" },{ "id": "3", "name": "Limited", "count": 4, "type": "Negative" }],"alternatives": [{ "id": "...", "name": "v0", "slug": "v0-by-vercel", "path": "/products/v0-by-vercel" },{ "id": "...", "name": "Replit Agent", "slug": "replit-agent", "path": "/products/replit-agent" }],"harvestedEmails": ["founders@generalcompute.com"],"makersEnriched": [], // reserved — see FAQ"searchContext": {"discoveryUrl": "https://www.producthunt.com/leaderboard/daily/2026/5/22","resultPosition": 1,"leaderboardDate": { "year": 2026, "month": 5, "day": 22 },"topicSlug": null},"raw": { /* full Apollo product block, 56 fields */ },"scrapedAt": "2026-05-25T01:02:14.123Z"}
rowType: "maker" — for direct /@username URLs
{"rowType": "maker","sourceUrl": "https://www.producthunt.com/@ericsimons40","userId": "3660","username": "ericsimons40","name": "Eric Simons","headline": "CEO @StackBlitz","avatarUrl": "https://ph-avatars.imgix.net/3660/bdf5be7a-60eb-44a5-9193-0316c3d4db7d.jpeg","twitterUsername": "ericsimons40","websiteUrl": null, // PH doesn't expose personal websiteUrl on profiles"productsCount": 8,"followersCount": 1944,"products": [{ "id": "599447", "name": "bolt.new", "username": null, "headline": null, "avatarUrl": null, "twitterUsername": null, "websiteUrl": null, "profileUrl": null },{ "id": "...", "name": "StackBlitz", "username": null, "headline": null, "avatarUrl": null, "twitterUsername": null, "websiteUrl": null, "profileUrl": null }],"emails": [],"raw": { /* full Apollo profile block, 28 fields */ },"scrapedAt": "2026-05-25T01:02:14.123Z"}
Key output fields
The most-used fields for filtering / scoring:
followersCount— primary popularity metric for products. Bolt.new = 28,495. WordPress 7.0 = 333. Use to filter "top-tier launches".reviewsCount+reviewsRating— community signal. Products with 5+ reviews + ≥4.0 rating are typically validated.proConTags— Product Hunt's AI-curated sentiment tags. Count of Positive vs Negative gives a quick read on community reception.latestLaunch.launchNumber—1= first-ever launch,7= launched 7 times (re-launches signal sustained traction).fundingAmount— surfaced when PH has it. Useful for VC deal sourcing.wasInYCombinator— boolean alumni flag.harvestedEmails—string[]of plausible contact emails extracted from the product'swebsiteUrl. Empty when the site is gated, hides emails, or has none.searchContext.leaderboardDate— the date of the leaderboard the row came from (when fanned out from/leaderboard/daily/...). Use to group rows by launch day.
FAQ
Q: Why is makersEnriched always []?
A: Product Hunt does NOT server-render the makers list onto product or launch pages (verified empirically — the GraphQL fragments reference Maker / Hunter types but the data is fetched lazily after page hydration, only visible to a real browser). We kept the field on the row for output-shape continuity but it's always empty. The recommended workflow for "founder emails" is to use the harvestedEmails field (which pulls from the product's own website, where the founders' email typically IS published).
Q: Why does the maker row have websiteUrl: null?
A: Product Hunt doesn't store a personal website for makers — only Twitter and the makers' own product pages. The maker row exists for profile-context use cases (founder name, follower count, list of products); for email harvest, pass product URLs instead.
Q: Some product rows have harvestedEmails: [] even though the site looks like it has emails. Why?
A: Common causes: (1) the site is gated behind Cloudflare's interactive challenge (the email harvester uses a simpler impit fetch and won't bypass interactive challenges), (2) the email is rendered by JavaScript after page load (we read server HTML only), (3) the email is image-encoded or obfuscated in a non-standard way. Realistic harvest rate: 30–50% of product sites yield at least one email.
Q: Can I scrape historical leaderboards?
A: Yes — /leaderboard/daily/YYYY/M/D accepts any past date. Topic pages also paginate backward.
Q: Does this work for Product Hunt's weekly / monthly / yearly leaderboards?
A: Daily leaderboards (/leaderboard/daily/...) are confirmed working. Weekly / monthly / yearly leaderboards use a different page structure — not currently in scope. Submit feedback if you want them added.
Q: What's the rate limit?
A: Product Hunt doesn't publish official rate limits. We run at maxConcurrency=8 cleanly in testing. If you see soft-blocks in logs, drop concurrency to 4 or supply a residential proxy pool.
Q: Do I need a Product Hunt account / OAuth token? A: No. Everything in scope here is publicly accessible without auth. The OAuth-gated GraphQL API (developers.producthunt.com) is a different surface — out of scope.
Q: Output format? A: JSON (Apify Dataset default) or CSV via the Apify Console "Export" tab. CSV flattens nested arrays into JSON-encoded strings.
Support
Found a bug, hit a soft-block pattern we don't detect, or want a new URL kind supported? File feedback via the Apify Console "Issues" tab on this actor's page.
Additional services
Open to building custom scrapers, data enrichment pipelines, or co-developing actors. Reach out via the Apify Console contact form on the memo23 profile.
Explore more scrapers
If you scrape Product Hunt, you're probably tracking competitive launches, founders, and B2B prospects. These pair well:
- Y Combinator Scraper — pull jobs + companies from YC's directory. Cross-reference with the
wasInYCombinatorflag on PH product rows to find founded-by-YC alums. - G2 Scraper — see how a SaaS surfaced on Product Hunt ranks on G2 reviews + comparison categories.
- Trustpilot Scraper — customer sentiment + reviews for the products you discover via PH.
- LinkedIn Profiles Scraper — backfill founder profiles for the makers behind interesting launches.
- Clutch.co Scraper — when a PH founder is looking for agency partners, find them here.
- PagesJaunes Leads Scraper — bulk B2B leads with emails included, complement the PH harvest.
Full portfolio: apify.com/memo23.
⚠️ Disclaimer
This scraper accesses publicly available data on producthunt.com. It does NOT bypass authentication, scrape private content, or access content not intended for public consumption.
Users are responsible for ensuring their use of this scraper complies with:
- Product Hunt Terms of Service — review at producthunt.com/legal/terms
- Applicable data protection laws including GDPR (Europe), CCPA (California), and equivalent regulations in your jurisdiction. Email harvesting falls under data-protection obligations — process responsibly, honor opt-outs, and consult legal counsel if using harvested emails for outbound marketing.
robots.txtand rate-limiting guidance from Product Hunt- Local jurisdiction laws regarding web scraping and data collection
The scraper is provided for legitimate purposes such as market research, competitive intelligence, product discovery, and personal use. Commercial use, redistribution, or use that violates Product Hunt's Terms of Service is the user's responsibility.
This actor is independently built and is not affiliated with, endorsed by, or sponsored by Product Hunt or AngelList.
By using this scraper, you acknowledge that you understand and accept these responsibilities.
SEO Keywords
product hunt scraper, producthunt scraper, product hunt api, product hunt data extraction, product hunt leaderboard scraper, product hunt launches, product hunt makers scraper, product hunt maker emails, product hunt topic scraper, product hunt daily leaderboard, product hunt csv export, product hunt founder contacts, saas launch tracker, ai product tracker, indie maker tracker, b2b prospecting product hunt, vc deal sourcing product hunt, yc alumni tracker, product hunt competitive intel, product hunt market research, product hunt trends, new saas launches, daily product launches, top products today, product hunt website scraper, product hunt apify, product hunt automation, scrape product hunt without api, product hunt without oauth, no-code product hunt scraper.