# Product Hunt Product Details Scraper

Fastest and Most Detailed Product Hunt Product Details Scraper only @ 10 USD per month. Easily fetch detailed, structured Product Hunt launch data for any given Product Page URL. From product metadata and rankings to reviews, media, and competitor insights – all in one JSON response.

## Actor Statistics

- Total users: 3
- Monthly users: 3
- Runs succeeded: 100.00%
- Categories: Lead generation, Automation

## Pricing

$10.00/month + usage

## Input Schema

- **startUrls** (type: array): Product Hunt Product URLs

## API example

## Product Hunt Product Details Scraper

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

Fastest and Most Detailed Product Hunt Product Details Scraper only @ 10 USD per month. Easily fetch detailed, structured Product Hunt launch data for any given Product Page URL. From product metadata and rankings to reviews, media, and competitor insights – all in one JSON response.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/sanjeta~product-hunt-product-details-scraper/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls`**

  `array` — Product Hunt Product URLs

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "startUrls": [
    {
      "url": ""
    }
  ]
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/sanjeta~product-hunt-product-details-scraper/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls`**

  `array` — Product Hunt Product URLs

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "startUrls": [
    {
      "url": ""
    }
  ]
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/sanjeta~product-hunt-product-details-scraper/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls`**

  `array` — Product Hunt Product URLs

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "startUrls": [
    {
      "url": ""
    }
  ]
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`startUrls`**

  `array` — Product Hunt Product URLs

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "startUrls": [
    {
      "url": ""
    }
  ]
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.producthunt.com/products/tidyread"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sanjeta/product-hunt-product-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.producthunt.com/products/tidyread" }] }

# Run the Actor and wait for it to finish
run = client.actor("sanjeta/product-hunt-product-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.producthunt.com/products/tidyread"
    }
  ]
}' |
apify call sanjeta/product-hunt-product-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?actors=sanjeta/product-hunt-product-details-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## 🚀 Product Hunt Scraper

**Fastest and Most Detailed Product Hunt Product Details Scraper. Get powerful insights from Product Hunt in real time. Just pass a date, and receive a full report on rankings, reviews, alternatives, and more – directly from Product Hunt.**

***

### 🔥 What Does It Do?

With just one API call, fetch all key data about a Product Hunt launch on a given day:

- ✅ Product name, tagline & description
- 📈 Votes, reviews, ratings
- 🎯 Categories & tags
- 👥 User reviews with avatars
- 📸 Media assets (images/videos/screenshots)
- 🔁 Alternatives with metadata
- 🌐 Product URL & website
- 🧠 Valuable sentiment data from reviews

***

### 📌 Use Cases

- 💼 **Startup Market Research:** Track launch performance & public sentiment
- 📊 **Competitive Analysis:** Discover alternatives and category trends
- 📰 **Content Creation:** Use data for blog articles, newsletters, or reports
- 📈 **Product Tracking:** Monitor how your (or competitors') product performed on launch day
- 🤖 **Automated Tools & Dashboards:** Build analytics tools and visualizations

***

### 📌 How to find URLs for Input :

You can use the [Product Hunt Archive List Scraper](https://apify.com/sanjeta/product-hunt-archive-list-scraper) to quickly retrieve product page URLs, which can then be used in this actor to fetch detailed information.

***

### 🛠️ Sample Output

```javascript
  {
    "id": "953458",
    "slug": "xcreate",
    "followersCount": 370,
    "name": "XcreateAI",
    "tagline": "Brand Seeding on Social Media – From $5",
    "description": "XcreateAI connects visionary brands with dynamic nano-influencers globally through AI. Looking to boost your SEO, social media marketing, or brand communication? We’ve got you covered. XcreateAI—Let You Collaborate Like a Billion-Dollar Brand.",
    "reviewsCount": 5,
    "twitterUrl": "https://x.com/xxxxcreate",
    "facebookUrl": "",
    "instagramUrl": "",
    "linkedinUrl": "",
    "angellistUrl": "",
    "threadsUrl": "",
    "mediumUrl": "",
    "awards": [],
    "websiteUrl": "https://www.xcreate.ai",
    "iosUrl": null,
    "androidUrl": null,
    "githubUrl": "",
    "categories": [],
    "reviewsRating": 5,
    "categoriesCount": 6,
    "url": "https://www.producthunt.com/products/xcreate",
    "ratingSpecificCount": {
      "1": 0,
      "2": 0,
      "3": 0,
      "4": 0,
      "5": 5
    },
    "media": [
      "https://ph-files.imgix.net/974fdbb6-dc98-47fc-b0bc-03e755aa4e75.png",
      "https://ph-files.imgix.net/a1642763-b7d7-4130-81ac-68a0dbbcd0cd.jpeg",
      "https://ph-files.imgix.net/6e86348c-8ffd-4b6d-92f6-e4f70a44f48a.jpeg"
    ],
    "productReviews": [
      {
        "description": "Great idea! Can't wait for your launch!",
        "rating": 5,
        "createdAt": "2025-02-24T06:48:09-08:00",
        "user": {
          "name": "Alexander Seletskiy",
          "username": "alex_seletsky",
          "avatarUrl": "https://ph-avatars.imgix.net/8117453/7b197ec4-9a12-4909-be8d-ff2b55a6e385.jpeg"
        },
        "threads": []
      },
      {
        "description": "Great idea to expand your reach effortlessly! It’s perfect for boosting your brand with real, authentic connections.",
        "rating": 5,
        "createdAt": "2025-02-24T06:03:30-08:00",
        "user": {
          "name": "Irina Buzun",
          "username": "irina_buzun",
          "avatarUrl": "https://ph-avatars.imgix.net/8118414/0ab78c29-5a2b-4bf4-a859-fd36eccba976.jpeg"
        },
        "threads": []
      },
      {
        "description": "This software has already helped me make money. I think it’s a great platform and a great start",
        "rating": 5,
        "createdAt": "2025-02-14T00:33:43-08:00",
        "user": {
          "name": "fanthus",
          "username": "fanthus",
          "avatarUrl": "https://ph-avatars.imgix.net/5848879/0d688ee4-2262-4578-86e0-3d817764a405.jpeg"
        },
        "threads": []
      }
    ],
    "avatarUrl": "https://ph-files.imgix.net/0cb4de33-a6ac-49b9-a12e-ec466c0aedbf.jpeg",
    "alternatives": [],
    "launches": [
      {
        "createdAt": "2025-03-04T00:01:00-08:00",
        "slug": "xcreateai",
        "name": "XcreateAI",
        "tagline": "Brand Seeding on Social Media – From $5",
        "dailyRank": "19",
        "weeklyRank": "105",
        "monthlyRank": "436",
        "productURL": "https://www.producthunt.com/products/xcreate",
        "awards": [],
        "avatarUrl": "https://ph-files.imgix.net/52a01242-87c8-49df-bad6-89346700be65.png",
        "featuredAt": null,
        "latestScore": 85,
        "launchDayScore": 101,
        "commentsCount": 44,
        "votesCount": 201
      }
    ],
    "makers": [
      {
        "name": "Xenia",
        "headline": "XcreateAI Cofounder",
        "username": "xenia1234",
        "avatarUrl": "https://ph-avatars.imgix.net/7548972/77818e8b-aa54-443c-b5a0-81daf372f645.jpeg"
      }
    ],
    "topics": [
      "Social Media",
      "Artificial Intelligence",
      "Influencer marketing"
    ],
    "inputURL": "https://www.producthunt.com/products/xcreate?launch=xcreateai"
  }
```
