Producthunt Scraper avatar
Producthunt Scraper

Pricing

$10.00 / 1,000 results

Go to Store
Producthunt Scraper

Producthunt Scraper

Developed by

Runtime

Runtime

Maintained by Community

A web scraper that extracts comprehensive product information from Product Hunt using Apify.

5.0 (1)

Pricing

$10.00 / 1,000 results

1

Total users

6

Monthly users

6

Runs succeeded

>99%

Last modified

3 days ago

Product Hunt Scraper

A web scraper that extracts comprehensive product information from Product Hunt using Apify and Crawlee.

Quick Start

  1. Input: Configure your scraping parameters in the input field
  2. Run: Click "Start" to begin scraping
  3. Output: Download results from the Dataset tab

Input Configuration

Note: If you provide a Start Date (and/or End Date), the Start URLs field will be ignored. Only one method (date range OR Start URLs) will be used per run.

Basic Configuration

{
"startUrls": ["https://www.producthunt.com/"],
"maxRequestRetries": 3,
"maxConcurrency": 5,
"maxRequestsPerCrawl": 100,
"scrapeComingSoon": true
}

Daily Leaderboard Scraping

{
"startUrls": ["https://www.producthunt.com/leaderboard/daily/2025/7/5/all"],
"scrapeDailyLeaderboard": true,
"maxRequestsPerCrawl": 50
}

Input Parameters

ParameterTypeDefaultDescription
startUrlsArray["https://www.producthunt.com/"]Starting URLs for scraping
maxRequestRetriesNumber3Maximum retry attempts for failed requests
maxConcurrencyNumber5Number of concurrent requests
maxRequestsPerCrawlNumber100Maximum pages to crawl
scrapeComingSoonBooleantrueWhether to scrape "Coming Soon" products
scrapeDailyLeaderboardBooleanfalseWhether to scrape daily leaderboard
sortByDateBooleanfalseWhether to sort output by date
sortOrderString"desc"Sort order: "asc" (oldest first) or "desc" (newest first)
startDateStringnullStart date for daily leaderboard range (format: YYYY-MM-DD or YYYY/MM/DD)
endDateStringnullEnd date for daily leaderboard range (defaults to yesterday if not specified)

Input Method Exclusivity

  • If you provide a Start Date (and/or End Date), the Start URLs field will be ignored.
  • If you do not provide a Start Date, the scraper will use the Start URLs.
  • If neither is provided, the scraper will default to scraping the daily leaderboard for yesterday (today - 1 day).

Examples

Default (no input, scrapes yesterday's leaderboard):

{}

// Will scrape the daily leaderboard for yesterday

Date range only (Start URLs ignored):

{
"startDate": "2025-07-01",
"endDate": "2025-07-05"
}

Start URLs only (date fields empty):

{
"startUrls": [
"https://www.producthunt.com/leaderboard/daily/2025/7/4/all"
]
}

Both provided (date range takes precedence):

{
"startDate": "2025-07-01",
"endDate": "2025-07-01",
"startUrls": [
"https://www.producthunt.com/leaderboard/daily/2025/7/4/all"
]
}
// Only 2025-07-01 will be scraped

Output Format

Regular Products

{
"name": "Product Name",
"tagline": "Product tagline",
"description": "Detailed description",
"upvotes": 1234,
"categories": ["SaaS", "Productivity"],
"launchDate": "Launch date",
"imageUrl": "https://example.com/image.jpg",
"productUrl": "https://product-website.com",
"socialLinks": [
{
"platform": "twitter",
"url": "https://twitter.com/product"
}
],
"scrapedAt": "2024-01-01T12:00:00.000Z",
"companyWebsite": "https://company.com",
"productHuntUrl": "https://www.producthunt.com/products/product-name",
"makers": [
{ "username": "maker1", "name": "Maker One", "roles": ["Maker"] },
{ "username": "maker2", "name": "Maker Two", "roles": ["Maker"] }
],
"hunter": { "username": "hunter1", "name": "Hunter Name" }
}

Daily Leaderboard Products

{
"name": "Product Name",
"tagline": "Product description",
"categories": ["SaaS", "Productivity"],
"upvotes": "1234",
"launchDate": "July 5, 2025",
"imageUrl": "https://example.com/image.jpg",
"productUrl": "https://www.producthunt.com/products/product-name",
"scrapedFrom": "daily-leaderboard",
"scrapedAt": "2024-01-01T12:00:00.000Z",
"productHuntUrl": "https://www.producthunt.com/leaderboard/daily/2025/7/5/all",
"makers": [
{ "username": "maker1", "name": "Maker One", "roles": ["Maker"] }
],
"hunter": { "username": "hunter1", "name": "Hunter Name" }
}

Team Extraction Output

  • makers: Array of all team members with the "Maker" role. Each object contains:
    • username: Product Hunt username (string)
    • name: Display name (string)
    • roles: Array of roles (e.g. ["Maker"] or ["Hunter", "Maker"])
  • hunter: Object with the first team member who has the "Hunter" role, with:
    • username: Product Hunt username (string)
    • name: Display name (string)
    • If no hunter is found, this field is null.

Usage Examples

Scrape Today's Products

{
"startUrls": ["https://www.producthunt.com/"],
"maxRequestsPerCrawl": 50
}

Scrape Daily Leaderboard

{
"startUrls": ["https://www.producthunt.com/leaderboard/daily/2025/7/5/all"],
"scrapeDailyLeaderboard": true
}

Scrape Coming Soon Products

{
"startUrls": ["https://www.producthunt.com/coming-soon"],
"scrapeComingSoon": true
}

Scrape Specific Categories

{
"startUrls": [
"https://www.producthunt.com/categories/developer-tools",
"https://www.producthunt.com/categories/productivity"
]
}

Scrape with Date Sorting

{
"startUrls": ["https://www.producthunt.com/"],
"sortByDate": true,
"sortOrder": "desc"
}

Scrape Daily Leaderboard with Date Sorting (Oldest First)

{
"startUrls": ["https://www.producthunt.com/leaderboard/daily/2025/7/5/all"],
"scrapeDailyLeaderboard": true,
"sortByDate": true,
"sortOrder": "asc"
}

Scrape Daily Leaderboard Date Range

{
"startDate": "2025-07-01",
"endDate": "2025-07-05",
"scrapeDailyLeaderboard": true,
"maxRequestsPerCrawl": 200
}

Scrape Daily Leaderboard from Date to Yesterday

{
"startDate": "2025-07-01",
"scrapeDailyLeaderboard": true,
"sortByDate": true,
"sortOrder": "desc"
}

Combine Custom URLs with Date Range

{
"startUrls": [
"https://www.producthunt.com/leaderboard/daily/2025/7/5/all",
"https://www.producthunt.com/leaderboard/daily/2025/7/4/all"
],
"startDate": "2025-07-01",
"endDate": "2025-07-03",
"scrapeDailyLeaderboard": true
}

Data Fields

FieldDescriptionAvailable For
nameProduct nameAll products
taglineShort product descriptionAll products
descriptionDetailed product descriptionRegular products
upvotesNumber of upvotesAll products
categoriesArray of product categoriesAll products
makerProduct creator nameAll products
launchDateProduct launch dateAll products
imageUrlProduct image URLAll products
productUrlDirect product website linkAll products
pricingPricing informationRegular products
metaKeywordsMeta keywordsRegular products
socialLinksSocial media linksRegular products
scrapedFromData source identifierAll products
scrapedAtTimestamp of scrapingAll products
sourceUrlOriginal Product Hunt URLAll products

Performance Tips

  • Concurrency: Increase maxConcurrency for faster scraping (be mindful of rate limits)
  • Retries: Higher maxRequestRetries values improve reliability but slow down scraping
  • Request Limits: Adjust maxRequestsPerCrawl based on your needs
  • Proxy: The actor uses Camoufox proxy for anti-detection
  • Sorting: Enable sortByDate to get chronologically ordered results (adds processing time for large datasets)
  • Date Ranges: Large date ranges will generate many URLs; increase maxRequestsPerCrawl accordingly

Troubleshooting

Common Issues

  1. No products found: Product Hunt may have changed their HTML structure
  2. Rate limiting: Reduce maxConcurrency or add delays
  3. Missing data: Some products may not have all fields available
  4. Daily leaderboard issues: Check if the URL format is correct

Debug Mode

Enable debug logging by checking the actor logs in the Apify console.

  • Respect Product Hunt's robots.txt and terms of service
  • Use reasonable request rates
  • Use scraped data responsibly and in accordance with applicable laws
  • This scraper is for educational and research purposes

Support

For issues and questions:

  1. Check the troubleshooting section
  2. Review the actor logs
  3. Contact Apify support

Note: Always respect website terms of service and use data responsibly.