Product Hunt Scraper (with Email Enrichment) avatar

Product Hunt Scraper (with Email Enrichment)

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Product Hunt Scraper (with Email Enrichment)

Product Hunt Scraper (with Email Enrichment)

Extract product names, upvotes, makers, taglines, and website URLs from ProductHunt MCP-ready. $2.00/1K.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

2

Bookmarked

67

Total users

10

Monthly active users

2 days ago

Last modified

Share

Product Hunt Lead Generator — Products, Websites & Verified Emails

Turn Product Hunt launches into reviewable company-lead records for product, growth, research, and sales teams. Give the Actor a daily range, weekly/monthly/yearly period, search, topic, direct post, or dated leaderboard URL; each dataset row returns the product, verified website, up to three ranked emails, exact EmailListVerify status, discovery provenance, and lead score.

Use this Actor when

Use this Actor when Product Hunt is the discovery source and you need structured product rows with reviewed website and email provenance.

  • Product Hunt is the source list and you need one normalized row per published product.
  • You need the real product website, not only Product Hunt's redirect URL.
  • You want public product-site and maker-homepage emails checked before a paid contact-finder fallback.
  • You need verification statuses and provenance to review contacts before downstream use.

Avoid this Actor when you need private contact data, complete email coverage, consent or outreach automation, a general-purpose crawler for arbitrary websites, or Product Hunt API use that is not permitted by the access and commercial terms attached to your account.

Best fit and connected workflows

This Actor fits workflows that start with Product Hunt discovery and end with a usable lead list or product research table. It is a good route when you want:

  • Product Hunt launch monitoring by daily, weekly, monthly, or yearly views
  • keyword-based discovery from Product Hunt search
  • topic-based routing from a Product Hunt topic slug
  • direct enrichment from a known post or leaderboard URL
  • verified external websites and ranked public email contacts in one dataset
  • use through Apify MCP for agent-driven Product Hunt research and lead qualification

When you need a Product Hunt record plus website provenance, this Actor keeps the workflow in one place. It also supports internal agent workflows through Apify MCP, so an AI agent can request products, inspect the dataset, and continue downstream processing with the returned rows.

Focused standalone workflow

Product Hunt Lead Generator — Products, Websites & Verified Emails is designed as a focused standalone workflow.

Practical scenario

Maya, a sales ops analyst, starts with a weekly Product Hunt leaderboard and a list of products relevant to developer tools. She runs the Actor with mode set to leaderboard, leaderboardPeriod set to weekly, and email enrichment enabled. The Actor returns records with product_name, website_url, emails, verified_emails, lead_status, and lead_tier. Maya uses the verified email fields to route qualified products into her outreach queue and uses website_resolution_source and lead_signals to review where each contact came from before exporting the dataset.

Input fields

FieldTypeDescription
modestringScraping mode: leaderboard, search, topic, or urls.
leaderboardPeriodstringUsed with leaderboard: daily, weekly, monthly, or yearly.
searchQuerystringKeyword used in search mode.
topicstringProduct Hunt topic slug used in topic mode.
startUrlsarraySpecific Product Hunt post URLs or leaderboard URLs used in urls mode.
maxResultsintegerMaximum number of products to return.
excludeProductHuntUrlsarrayProduct Hunt launch URLs to skip before enrichment, for cost-efficient continuation after a prior capped run.
productHuntResumeCursorstringOptional opaque cursor from RUN_SUMMARY.nextProductHuntCursor; resumes the same query directly after a capped page.
includeAllProductsbooleanIncludes featured and non-featured published products when enabled.
maxConcurrencyintegerMaximum concurrent enrichment jobs.
enrichEmailsbooleanEnables website-based email discovery.
resolveWebsitesbooleanResolves and verifies external product websites.
maxWebsitePagesintegerMaximum verified website pages assessed per product, up to 5.
maxEmailsPerProductintegerMaximum public emails returned per product, up to 3.
verifyEmailsbooleanVerifies selected public emails with EmailListVerify.
findContactsbooleanUses the managed contact finder when public pages return fewer deliverable emails.
websiteUrlOverridesarrayApproved mapping from a Product Hunt item to an external website.
startDatestringStart date for daily leaderboard mode, in YYYY-MM-DD.
endDatestringEnd date for daily leaderboard mode, in YYYY-MM-DD.
lookbackDaysintegerRolling recent window when startDate is omitted.
outputModestringfull, lean, or leads.

Focused JSON input example

{
"mode": "leaderboard",
"leaderboardPeriod": "daily",
"startDate": "a source-provided date",
"endDate": "a source-provided date",
"maxResults": 50,
"includeAllProducts": true,
"resolveWebsites": true,
"enrichEmails": true,
"maxWebsitePages": 5,
"maxEmailsPerProduct": 3,
"verifyEmails": true,
"findContacts": true,
"outputMode": "leads"
}

Output fields

FieldTypeDescription
product_namestringpublic Product Hunt product name.
taglinestring or nullShort Product Hunt tagline.
descriptionstring or nullFull Product Hunt description.
upvote_countinteger or nullTotal upvotes.
comment_countinteger or nullTotal comments.
reviews_countinteger or nullNumber of reviews.
reviews_ratingnumber or nullAverage rating.
daily_rankinteger or nullDaily leaderboard rank.
weekly_rankinteger or nullWeekly leaderboard rank.
monthly_rankinteger or nullMonthly leaderboard rank.
yearly_rankinteger or nullYearly leaderboard rank.
launch_datestring or nullProduct Hunt launch date.
product_hunt_urlstring or nullCanonical Product Hunt post URL.
website_urlstring or nullVerified external website.
product_hunt_website_urlstring or nullOriginal Product Hunt website field, kept for provenance.
website_resolution_sourcestringHow the website was resolved.
website_resolution_statusstringWebsite resolution status.
website_resolution_confidenceintegerConfidence score from 0 to 100.
website_resolution_signalsarrayEvidence used to accept the website.
company_domainstring or nullNormalized domain used for email ranking.
emailsarrayRanked contact emails found for the product.
verified_emailsarrayEmails verified as deliverable.
risky_emailsarrayEmails that were returned with a non-ok verification status.
rejected_emailsarrayEmails excluded from the final lead list.
email_verificationsarrayExact EmailListVerify result objects.
email_verification_requestedbooleanIndicates whether verification was requested for the run.
email_sourcestringpage_scrape, maker_website, emaillistverify_contact_finder, mixed, or none.
email_resultstringEmail enrichment result summary.
email_coveragestringCrawl coverage summary.
email_terminal_reasonstringBounded reason for the email result.
email_pages_visitedintegerNumber of verified external pages assessed.
email_page_urlsarraySame-origin website pages assessed for email extraction.
maker_email_pages_visitedintegerNumber of public Product Hunt maker homepages assessed after the product-site pass.
maker_email_page_urlsarrayPublic maker homepages assessed for gap-filling email discovery.
contact_discovery_requestedbooleanIndicates whether managed contact discovery was eligible.
contact_discovery_attemptsintegerNumber of bounded contact-finder requests made.
contact_discovery_creditsintegerContact-finder credit ceiling used.
lead_statusstringLead classification.
lead_scoreintegerDeterministic qualification score.
lead_tierstringLead tier derived from score.
lead_signalsarrayPlain-language signals explaining the lead score.
enrichment_warningsarraySafe per-record warnings.
topicsarrayProduct Hunt category tags.
thumbnail_urlstring or nullProduct Hunt thumbnail URL.
makersarrayMaker records from the public API.
featuredbooleanWhether the product was featured on Product Hunt.
scraped_atstringISO timestamp of extraction.

Illustrative JSON output record

{
"product_name": "Notion AI",
"tagline": "AI-powered writing for everyone",
"upvote_count": 1284,
"launch_date": "a source-provided date",
"product_hunt_url": "https://www.producthunt.com/posts/notion-ai",
"website_url": "https://notion.so",
"website_resolution_source": "dataforseo_organic",
"website_resolution_status": "verified_external",
"website_resolution_confidence": 91,
"company_domain": "notion.so",
"emails": ["hello@notion.so", "support@notion.so"],
"verified_emails": ["hello@notion.so"],
"risky_emails": ["support@notion.so"],
"email_verifications": [
{
"email": "hello@notion.so",
"provider": "emaillistverify",
"status": "ok",
"source": "public_website",
"confidence": null,
"checkedAt": "2026-08-24T14:30:00.000Z"
}
],
"email_source": "mixed",
"email_result": "emails_found",
"email_coverage": "complete",
"email_pages_visited": 3,
"lead_status": "verified_contact",
"lead_score": 84,
"lead_tier": "A",
"topics": ["Productivity", "Artificial Intelligence", "Writing"],
"featured": true,
"scraped_at": "2026-03-28T14:30:00.000Z"
}

How it works

The Actor routes Product Hunt inputs through the public Product Hunt API. Bounded daily, weekly, monthly, and yearly timelines paginate newest-first because creation time is stable while vote totals can change during a long run; vote and rank fields remain in every result. For website enrichment, it first uses an available external ProductLink or approved override, then resolves redirects, evaluates listed maker sites, follows likely product links published on those maker sites, and checks identity-confirmed vendor pages for protected foundation-model launches before using DataForSEO or SerpApi as bounded search fallbacks. Search starts with the full launch name and may use one conservative core-brand query when a compound launch name does not resolve; documented transient DataForSEO failures may consume that second attempt as a retry instead. Before consuming the scarce free SerpApi fallback, the resolver also tests a bounded set of obvious brand-domain hypotheses. Known launch directories and software catalogs are rejected, while official Claude, Gemini, and GPT model launches are restricted to their vendors' domains to prevent lookalike-site contamination. Each candidate website is accepted only after its homepage or exact official product page passes identity checks; ambiguous one-word product names also need purpose/tagline evidence.

After website resolution, the Actor assesses up to five same-origin public product pages, starting with the homepage and then directly linked contact, about, team, privacy, or terms pages. Static and browser-rendered navigation are merged so JavaScript-injected footer links do not hide an eligible page. Extraction covers visible/plain addresses, mailto: links, JSON-LD, percent-encoded links, common [at] / [dot] and JavaScript-escaped forms, and Cloudflare-protected public email attributes. It keeps a bounded reserve of up to six ranked product-site candidates, then verifies them in order only until three usable addresses are secured. This avoids ending the crawl after three raw addresses when some later fail verification, while avoiding unnecessary verification calls once the output is full. Verification transport, HTTP 429, and HTTP 5xx failures receive one bounded retry; invalid or disabled addresses do not. If deliverable slots remain, it checks up to two public maker homepages listed by Product Hunt for published contact addresses, verifies those candidates, and only then uses managed Contact Finder. The final row is ranked and capped at three contacts.

The record is then written to the default dataset with provenance, lead status, lead score, lead tier, and per-record warnings.

Pricing and platform usage

This Actor uses Apify Pay per event pricing plus Apify platform usage.

  • Each product row successfully stored in the default dataset costs $0.002.
  • Each selected email returned in that stored row costs $0.04.
  • Actor start costs $0.00005 per GB of allocated memory, with at least one start event.
  • Platform compute, storage, and any configured Apify resources are separate from event charges.
  • For current pricing details, use the live Pricing tab on the Actor page.

Worked example: at the default 4 GB memory, a run that stores 20 result rows and returns 5 emails costs about $0.2402 in Actor events: 20 × $0.002 + 5 × $0.04 + 4 × $0.00005, plus Apify platform usage. Fewer returned emails cost less. Upstream discovery is ordered to try Product Hunt evidence and public pages before usage-billed fallbacks.

Use with AI agents (MCP)

This Actor is usable through Apify MCP as a tool for Product Hunt discovery and lead enrichment. The tool can accept a Product Hunt mode, resolve websites, return email-rich lead rows, and expose dataset records for follow-up agent steps.

Actor identity: khadinakbar/producthunt-scraper-pro

Find Product Hunt products from the weekly leaderboard, resolve the company websites, and return only records with verified emails. Use the dataset rows to summarize the top leads and their source provenance.

The returned output is best interpreted as row-level evidence. website_resolution_source and website_resolution_signals explain how the website was accepted, email_verifications captures exact provider statuses, and lead_status plus lead_tier provide a deterministic summary for downstream agent filtering. Pagination is governed by maxResults, and cost scales with the number of stored product rows and selected emails. For agent workflows, lean output mode can reduce context size while preserving product name, tagline, website, upvotes, rank, emails, and topics.

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
mode: "topic",
topic: "developer-tools",
maxResults: 10,
resolveWebsites: true,
enrichEmails: true,
verifyEmails: true,
findContacts: true,
outputMode: "leads",
};
const run = await client.actor("khadinakbar/producthunt-scraper-pro").call(input);
const datasetItems = await client.dataset(run.defaultDatasetId).listItems();
for (const item of datasetItems.items) {
console.log(item.product_name, item.website_url, item.verified_emails);
}

Best results and outcome guidance

Use the narrowest input that matches the task:

  • Use leaderboard for ranked Product Hunt discovery by time period.
  • Use search when you already have a keyword theme.
  • Use topic when you know the Product Hunt topic slug.
  • Use urls when you have specific posts or leaderboard URLs.
  • Use leads output mode when your next step is outreach or CRM import.

If you want a compact lead list, keep website resolution and email verification enabled. If you want broader product research, use full or lean and inspect the ranking and topic fields. For daily leaderboard ranges, startDate and endDate provide a clear date window in one run.

Design note

I found that the live contract returns up to three ranked emails per product, while the output schema keeps separate arrays for verified_emails, risky_emails, and rejected_emails. That structure makes it straightforward to distinguish contact quality from raw discovery.

FAQ

Can I use this Actor for Product Hunt daily leaderboard tracking?

Yes. Use mode: "leaderboard" with leaderboardPeriod: "daily", then set startDate and endDate for a date window or lookbackDays for a rolling recent window.

Can I pass a Product Hunt post URL directly?

Yes. Use mode: "urls" and add the post or leaderboard URL to startUrls.

It can return featured and non-featured products. Keep includeAllProducts enabled for broader coverage, or disable it for featured-only results.

How should I connect this to an outreach workflow?

Use the leads output mode, then filter by lead_status, lead_tier, and verified_emails before exporting to your CRM or enrichment pipeline.

Can an AI agent consume the output directly?

Yes. The Actor is MCP-ready, and lean or leads output mode can keep the dataset compact enough for agent-based follow-up.

Limitations and troubleshooting

  • Email coverage may be incomplete. Many product sites publish no business address, and some block automated browsers or render contact details behind forms.
  • The five-page limit applies to the verified product website: homepage first, followed only by contact, about, team, privacy, or terms links actually published on that homepage. Up to two Product Hunt maker homepages may be checked separately for a public contact when product-site slots remain.
  • A Product Hunt redirect, maker link, or search result is not accepted merely because its name looks similar. Failed identity checks remain unresolved; use websiteUrlOverrides only when you have reviewed the correct external site.
  • PARTIAL means useful rows were stored but at least one website, provider call, or charge-limit branch did not complete. Inspect RUN_SUMMARY, website_resolution_status, and enrichment_warnings before retrying.
  • If RUN_SUMMARY.resultLimitReached is true, rerun with the same mode, filters, and date range; pass RUN_SUMMARY.nextProductHuntCursor as productHuntResumeCursor and the prior dataset's product_hunt_url values as excludeProductHuntUrls. The cursor jumps directly past the capped page. Long runs also update RUN_CHECKPOINT; after an interruption, use its productHuntResumeCursor together with stored launch URLs to resume from the latest safely completed page. For older runs without a cursor, exclusions still work: the Actor pages past them with lightweight Product Hunt index queries, without website/email enrichment, then switches to full-page queries at the first unseen launch.
  • If verification or managed contact discovery reports a provider-credit warning, keep the public-page results, replenish the owner-managed pay-as-you-go balance if appropriate, and rerun only the affected products.
  • Verification reports likely deliverability at check time. It does not prove ownership, relevance, consent, or permission to contact someone.

Validation snapshot

On 2026-09-06, the v1.4 source passed 52 deterministic tests, including stable timeline ordering, the six-candidate verification reserve, transient provider retry, encoded-email recovery, merged static/rendered page planning, and safe cursor checkpoint selection. Exact-build cloud evidence and terminal RUN_SUMMARY readback remain the release gate.

Responsible use

Product Hunt is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Product Hunt.

Use Product Hunt data only under the access and commercial terms that apply to your account. Respect destination-site terms, robots directives where applicable, privacy and anti-spam laws, lawful-basis requirements, suppression lists, and opt-outs. Verification indicates deliverability, not consent to contact.