nvNeuralVerge
Startup & Funding Data

Product Hunt User Upvotes API and MCP — Launches a User Upvoted

Send a username or profile link and get the launches that user upvoted, newest first: launch name, tagline, votes, comments, daily, weekly and monthly rank, and dates. The platform serves at most the latest 200 upvotes of a user, so that is the ceiling for this source however high max_items is.

You send
a Product Hunt username or profile link, and how many results to return
You get back
launches the user upvoted, newest first, with votes, comments, ranks 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.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Product Hunt directlyOpen the page on Product Hunt and scroll through the listFree, and slowFine for one record, useless across a list, and the layout differs on every platform
Building a scraperWrite it, host it, and repair it when Product Hunt changes its pagesEngineering timeA maintenance commitment for something that isn't your product
NeuralVergeOne request, the same shape as every other source in the catalog$1 per 1,000, misses not billedReturns what Product Hunt publishes at request time. Other platforms are separate sources with the same request format
Response

What you get back

Every field in the example response below.

FieldTypeDescription
session_idstringId of this run, for tracing.
kindstringSource type of the response.
userstringThe username you sent.
max_itemsnumberThe cap you sent on returned records.
start_pagenumberPage the run started from.
partialbooleanWhether the run stopped before reaching everything that matched.
humanstringReadable summary of the run.
total_pointsnumberPoints charged for the run: 1 per returned record.
machine.total_itemsnumberNumber of records returned in this response.
machine.total_foundnullEmpty in the sample because the platform gave no total for this request.
machine.page_countnumberPages read for the run.
machine.first_itemobjectThe first returned record, repeated from items[]. Fields below are described on items[].
machine.blockedbooleanWhether the platform refused the request.
machine.proxy_traffic_bytesnumberSize of the data transferred for the run, in bytes.
machine.items[].idstringLaunch slug.
machine.items[].namestringLaunch name.
machine.items[].urlstringLink to the launch page.
machine.items[].aliasstringThe launch slug.
machine.items[].launch_idstringNumeric launch id.
machine.items[].taglinestringTagline shown on the launch.
machine.items[].votes_countnumberUpvotes on the launch.
machine.items[].comments_countnumberComments on the launch.
machine.items[].daily_ranknumberRank on the launch day.
machine.items[].weekly_ranknumberRank in the launch week.
machine.items[].monthly_ranknumberRank in the launch month.
machine.items[].topics[]arrayTopics on the launch; empty in the sample.
machine.items[].imagestringLaunch image link.
machine.items[].product_slugstringSlug of the product the launch belongs to.
machine.items[].product_urlstringLink to that product.
machine.items[].featured_atstringDate and time the launch was featured.
machine.items[].created_atstringDate and time the launch was created.
Response

Example response

A real response, as returned.

{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "kind": "producthunt_users_upvotes",
  "user": "kevin",
  "max_items": 2,
  "start_page": 1,
  "partial": false,
  "human": "# Product Hunt — user upvotes\n\n- **User:** kevin\n- **Results:** 2\n- **Proxy traffic:** 17.4 KB",
  "machine": {
    "total_items": 2,
    "first_item": {
      "id": "openseo-2",
      "name": "OpenSEO",
      "url": "https://www.producthunt.com/posts/openseo-2",
      "alias": "openseo-2",
      "launch_id": "1272262",
      "tagline": "The open source Semrush alternative",
      "votes_count": 354,
      "comments_count": 39,
      "daily_rank": 2,
      "weekly_rank": 9,
      "monthly_rank": 12,
      "topics": [],
      "image": "https://ph-files.imgix.net/2c78fe4a-262c-48b2-a376-365b77bf6eeb.png?auto=format&fit=crop&w=128&h=128",
      "product_slug": "openseo",
      "product_url": "https://www.producthunt.com/products/openseo",
      "featured_at": "2026-10-08T00:01:00-07:00",
      "created_at": "2026-10-08T00:01:00-07:00"
    },
    "items": [
      {
        "id": "openseo-2",
        "name": "OpenSEO",
        "url": "https://www.producthunt.com/posts/openseo-2",
        "alias": "openseo-2",
        "launch_id": "1272262",
        "tagline": "The open source Semrush alternative",
        "votes_count": 354,
        "comments_count": 39,
        "daily_rank": 2,
        "weekly_rank": 9,
        "monthly_rank": 12,
        "topics": [],
        "image": "https://ph-files.imgix.net/2c78fe4a-262c-48b2-a376-365b77bf6eeb.png?auto=format&fit=crop&w=128&h=128",
        "product_slug": "openseo",
        "product_url": "https://www.producthunt.com/products/openseo",
        "featured_at": "2026-10-08T00:01:00-07:00",
        "created_at": "2026-10-08T00:01:00-07:00"
      },
      {
        "id": "openswarm-3",
        "name": "OpenSwarm",
        "url": "https://www.producthunt.com/posts/openswarm-3",
        "alias": "openswarm-3",
        "launch_id": "1271048",
        "tagline": "A swarm of agents, in the same place you work",
        "votes_count": 376,
        "comments_count": 60,
        "daily_rank": 1,
        "weekly_rank": 6,
        "monthly_rank": 9,
        "topics": [],
        "image": "https://ph-files.imgix.net/ea2bfd22-7652-444c-b680-8028ef82bdc8.png?auto=format&fit=crop&w=128&h=128",
        "product_slug": "openswarm-3",
        "product_url": "https://www.producthunt.com/products/openswarm-3",
        "featured_at": "2026-10-08T00:01:00-07:00",
        "created_at": "2026-10-08T00:01:00-07:00"
      }
    ],
    "total_found": null,
    "page_count": 1,
    "blocked": false,
    "proxy_traffic_bytes": 17845
  },
  "total_points": 2
}
Integration

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-users-upvotes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user":"kevin","max_items":2}'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Interest mapping

See which kinds of products an active account backs.

Launch discovery

Find recent launches that people in your market upvote.

Signal tracking

Re-run on a schedule to catch what an account upvotes next.

Audience research

Compare upvoted launches across several accounts to find overlap.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Product Hunt records with a public page.

Freshness

Read at request time, so the answer reflects the platform as it stands when you ask.

Handling

This source returns information Product Hunt shows publicly. Every response carries the session id you can trace.

What it will not do
  • —Upvotes are personal activity. Use them as a signal about products, not to profile the individual.
  • —Only the latest 200 upvotes per user are available from the platform.
  • —The sample returned no total (total_found is null).
FAQ

Questions, answered

The platform serves only the latest 200 upvotes of a user, so older upvotes cannot be returned.

Related

Related sources

Try product hunt user upvotes on your own data

One request format across every source in the catalog.

Get started