Product Hunt Product Launches API and MCP — Votes, Comments, Ranks and Dates
Send a product slug or link and get its launches as a list: name, tagline, votes, comments, daily, weekly and monthly rank, and the launch date. All pages are read, up to the max_items you set (up to 250).
- You send
- a Product Hunt product slug or link, and how many results to return
- You get back
- each launch of the product with votes, comments, daily, weekly and monthly rank and dates
- Coverage
- Product Hunt records with a public page.
- Price
- 1 point per returned record — $1 per 1,000
- Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Product Hunt directly | Open the page on Product Hunt and scroll through the list | Free, and slow | Fine for one record, useless across a list, and the layout differs on every platform |
| Building a scraper | Write it, host it, and repair it when Product Hunt changes its pages | Engineering time | A maintenance commitment for something that isn't your product |
| NeuralVerge | One request, the same shape as every other source in the catalog | $1 per 1,000, misses not billed | Returns what Product Hunt publishes at request time. Other platforms are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
session_id | string | Id of this run, for tracing. |
kind | string | Source type of the response. |
product | string | The product slug you sent. |
max_items | number | The cap you sent on returned records. |
start_page | number | Page the run started from. |
partial | boolean | Whether the run stopped before reaching everything that matched. |
human | string | Readable summary of the run. |
total_points | number | Points charged for the run: 1 per returned record. |
machine.total_items | number | Number of records returned in this response. |
machine.total_found | null | Empty in the sample because the platform gave no total for this request. |
machine.page_count | number | Pages read for the run. |
machine.first_item | object | The first returned record, repeated from items[]. Fields below are described on items[]. |
machine.blocked | boolean | Whether the platform refused the request. |
machine.proxy_traffic_bytes | number | Size of the data transferred for the run, in bytes. |
machine.items[].id | string | Launch slug. |
machine.items[].name | string | Launch name. |
machine.items[].url | string | Link to the launch page. |
machine.items[].alias | string | The launch slug. |
machine.items[].launch_id | string | Numeric launch id. |
machine.items[].tagline | string | Tagline shown on the launch. |
machine.items[].votes_count | number | Upvotes on the launch. |
machine.items[].comments_count | number | Comments on the launch. |
machine.items[].daily_rank | number | Rank on the launch day. |
machine.items[].weekly_rank | number | Rank in the launch week. |
machine.items[].monthly_rank | number | Rank in the launch month. |
machine.items[].topics[] | array | Topics on the launch; empty in the sample. |
machine.items[].image | string | Launch image link. |
machine.items[].product_slug | string | Slug of the product the launch belongs to. |
machine.items[].product_url | string | Link to that product. |
machine.items[].featured_at | string | Date and time the launch was featured. |
machine.items[].created_at | string | Date and time the launch was created. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "producthunt_products_launches",
"product": "doplac-crm",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Product Hunt — product launches\n\n- **Product:** doplac-crm\n- **Results:** 2\n- **Proxy traffic:** 2.4 KB",
"machine": {
"total_items": 2,
"first_item": {
"id": "doplac-crm-2",
"name": "Doplac CRM",
"url": "https://www.producthunt.com/posts/doplac-crm-2",
"alias": "doplac-crm-2",
"launch_id": "489807",
"tagline": "CRM for digital agencies",
"votes_count": 372,
"comments_count": 131,
"daily_rank": 5,
"weekly_rank": 16,
"monthly_rank": 83,
"topics": [],
"image": "https://ph-files.imgix.net/01659dc3-ffbb-4337-a3a1-8150ae81bc72.jpeg?auto=format&fit=crop&w=128&h=128",
"product_slug": "doplac-crm",
"product_url": "https://www.producthunt.com/products/doplac-crm",
"featured_at": "2024-09-24T00:01:00-07:00",
"created_at": "2024-09-24T00:01:00-07:00"
},
"items": [
{
"id": "doplac-crm-2",
"name": "Doplac CRM",
"url": "https://www.producthunt.com/posts/doplac-crm-2",
"alias": "doplac-crm-2",
"launch_id": "489807",
"tagline": "CRM for digital agencies",
"votes_count": 372,
"comments_count": 131,
"daily_rank": 5,
"weekly_rank": 16,
"monthly_rank": 83,
"topics": [],
"image": "https://ph-files.imgix.net/01659dc3-ffbb-4337-a3a1-8150ae81bc72.jpeg?auto=format&fit=crop&w=128&h=128",
"product_slug": "doplac-crm",
"product_url": "https://www.producthunt.com/products/doplac-crm",
"featured_at": "2024-09-24T00:01:00-07:00",
"created_at": "2024-09-24T00:01:00-07:00"
},
{
"id": "doplac-crm",
"name": "Doplac CRM",
"url": "https://www.producthunt.com/posts/doplac-crm",
"alias": "doplac-crm",
"launch_id": "426271",
"tagline": "Your CRM partner",
"votes_count": 413,
"comments_count": 166,
"daily_rank": 7,
"weekly_rank": 19,
"monthly_rank": 85,
"topics": [],
"image": "https://ph-files.imgix.net/604baef1-62aa-4544-88ba-cf142fecaf05.jpeg?auto=format&fit=crop&w=128&h=128",
"product_slug": "doplac-crm",
"product_url": "https://www.producthunt.com/products/doplac-crm",
"featured_at": "2023-11-22T00:01:00-08:00",
"created_at": "2023-11-22T00:01:00-08:00"
}
],
"total_found": null,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 2478
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged. max_items caps how many records are returned and billed.
curl -X POST https://api.neuralverge.ai/functions/v1/run-producthunt-products-launches \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product":"doplac-crm","max_items":2}'What teams use it for
Where this field shows up in an actual workflow.
Compare votes, comments and ranks across a product's launches, or against competitors' launches.
Read how a product's launches performed before you take a call with its team.
See when and how often a product has launched again.
Place launch dates on a company timeline next to funding and hiring events.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Product Hunt records with a public page.
Read at request time, so the answer reflects the platform as it stands when you ask.
This source returns information Product Hunt shows publicly. Every response carries the session id you can trace.
- —Ranks and counts are as the platform shows them at request time and can change after a launch.
- —The topics list was empty in the sample.
- —The sample returned no total (total_found is null), so the number of launches is what max_items allows or the platform lists.
Questions, answered
This one lists launches of a product. The user launches source lists launches a given user submitted, which can cover several products.
Related sources
Full profile of one product: rating, followers, categories, makers and similar products.
Launches a user submitted, with votes and ranks.
Reviews of a product with rating and text.
Startup directories, funding databases, launch platforms and investor data.
Try product hunt product launches on your own data
One request format across every source in the catalog.