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. Optionally crawl each product's website to find emails, LinkedIn, Twitter, and phone numbers. Supports daily/weekly/monthly leaderboard, keyword search, and topic scraping.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

6

Monthly active users

19 days ago

Last modified

Share

ProductHunt Scraper Pro — Extract Listings with Email & LinkedIn Enrichment

Extract structured data from ProductHunt — product names, upvote counts, makers, taglines, website URLs, topics, and more. Optionally crawl each product's website to find email addresses, LinkedIn company pages, Twitter handles, Facebook pages, and phone numbers — all in a single actor run.

Supports four scraping modes: daily/weekly/monthly/yearly leaderboard, keyword search, topic/category browsing, and direct URL scraping.


What This Actor Extracts

From ProductHunt (always)

FieldTypeDescription
product_namestringOfficial product name
taglinestringOne-line product description
descriptionstringFull product description
upvote_countintegerTotal upvotes received
comment_countintegerNumber of comments
daily_rankintegerLeaderboard position (#1 = most upvoted)
launch_datestringDate featured on PH (YYYY-MM-DD)
product_hunt_urlstringFull PH product page URL
website_urlstringProduct's own website
topicsarrayCategory tags (e.g. "AI", "Productivity")
thumbnail_urlstringProduct logo/image URL
makersarrayFounders with name, username, Twitter, PH profile
featuredbooleanWhether PH editorially featured this product

From Product Websites (when enrichContacts: true)

FieldTypeDescription
emailsarrayEmail addresses found on the site
linkedin_urlstringLinkedIn company page
twitter_urlstringTwitter/X profile
facebook_urlstringFacebook page
phone_numbersarrayPhone numbers (tel: links)

Scraping Modes

1. Leaderboard (default)

Scrape ProductHunt's ranked lists for any time period.

{
"mode": "leaderboard",
"leaderboardPeriod": "daily",
"maxResults": 50
}

Supported periods: daily, weekly, monthly, yearly.

Find products matching a keyword or niche.

{
"mode": "search",
"searchQuery": "AI writing tools",
"maxResults": 100
}

3. Topic / Category

Scrape all products under a ProductHunt topic.

{
"mode": "topic",
"topic": "artificial-intelligence",
"maxResults": 200
}

Popular topic slugs: artificial-intelligence, developer-tools, marketing, productivity, saas, chrome-extensions, no-code, design-tools.

4. Direct URLs

Scrape specific ProductHunt pages.

{
"mode": "urls",
"startUrls": [
{ "url": "https://www.producthunt.com/posts/notion-ai" },
{ "url": "https://www.producthunt.com/leaderboard/daily/2026/3/28" }
]
}

Contact Enrichment Example

Get emails and social links for every product in today's top 50:

{
"mode": "leaderboard",
"leaderboardPeriod": "daily",
"maxResults": 50,
"enrichContacts": true
}

Output: Two record types in the same dataset, joined on product_hunt_url:

  • record_type: "product" — full PH data for each product
  • record_type: "contact_enrichment" — emails, LinkedIn, Twitter from their website

How It Works

ProductHunt is built on Next.js with Apollo GraphQL. Instead of fragile CSS selector parsing (which breaks every time PH updates their frontend), this actor extracts data directly from the Apollo client cache embedded in window.__NEXT_DATA__. This normalized JSON cache contains all product data in a structured format, making extraction reliable regardless of UI changes.

For contact enrichment, a separate CheerioCrawler visits each product's website and:

  • Scans mailto: links for email addresses
  • Runs a regex scan of the page text for additional email patterns
  • Decodes platform redirect wrappers (/redirect?url=https://linkedin.com/...) before filtering social links — a key detail many scrapers miss
  • Extracts LinkedIn, Twitter/X, Facebook, and tel: phone links

Pricing

This actor uses PAY_PER_EVENT pricing — you pay only for what you actually use:

  • result-found — charged per product record extracted from ProductHunt
  • result-enriched — charged per website enrichment record (email/LinkedIn/Twitter)

You can set a budget cap in the Apify console to control total spend per run.


Output Format

Results are stored in the default Apify dataset. Filter and join records by record_type:

// Product records
const products = results.filter(r => r.record_type === 'product');
// Enrichment records
const contacts = results.filter(r => r.record_type === 'contact_enrichment');
// Join them
const enriched = products.map(p => ({
...p,
...contacts.find(c => c.product_hunt_url === p.product_hunt_url),
}));

Typical Use Cases

Lead generation for B2B sales — Find newly launched SaaS products and contact their founders before they hit scale.

Market research — Track which categories are growing on ProductHunt week over week.

Competitor monitoring — Get notified when a competitor launches or when products in your category surge in upvotes.

Investor sourcing — Identify high-upvote early-stage products with their maker contact info.

Content creation — Build "Top ProductHunt launches this week" roundups automatically.

AI agent pipelines — Feed ProductHunt data into Claude, ChatGPT, or any LLM agent via the Apify MCP server.


FAQ

Does this require a ProductHunt API key? No. This actor scrapes the public ProductHunt website. No API key or account is needed.

How fresh is the data? Data is scraped in real time when you run the actor. Daily leaderboard data reflects the current day's standings at the time of the run.

How accurate is the contact enrichment? Email accuracy depends on how openly each product's website publishes contact info. Most SaaS products publish at least one email. Social links (LinkedIn, Twitter) are found on ~70-80% of product websites.

Can I scrape historical leaderboards? Yes — ProductHunt keeps historical leaderboard pages. Use mode urls and provide the historical leaderboard URL (e.g. https://www.producthunt.com/leaderboard/daily/2025/12/25).

What's the maximum results I can get per run? The maxResults cap is 5,000. For larger datasets, run the actor multiple times with different date ranges or topics.


Integration with AI Agents (MCP)

This actor is fully compatible with the Apify MCP server (mcp.apify.com). When connected to Claude, ChatGPT, or Cursor via MCP, AI agents can call this actor directly using natural language:

"Find today's top 20 AI tools on ProductHunt and get their founders' emails"

The agent will set mode: "leaderboard", leaderboardPeriod: "daily", maxResults: 20, enrichContacts: true and return a complete dataset.


Support

Found a bug or have a feature request? Leave a review or open an issue on the actor's GitHub page. Pull requests welcome.

Built by: USERNAME/producthunt-scraper-pro