> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/product-hunt/search>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/product-hunt/search.mdx>

---

# Product Hunt Search API

Search products, users, posts, topics and categories, or narrow the search to one kind.

`GET /v1/product-hunt/search?query=notion` returns `data.query`, `data.type`, `data.results`, `data.totalCount` and `data.page`. `type` defaults to `all` and can be `product`, `user`, `post`, `topic` or `category`; `type=product` returns the products tab first. A result carries the fields that belong to its kind: a user has `username`, `headline` and `followersCount`; a post has `slug` and `createdAt`; a product has `tagline` and its review counts; a topic or category has `slug` and `name`. Irrelevant fields are omitted rather than returned as null.

Results are best match first, up to 20 per page. Pass `data.page.nextCursor` as `cursor` with the same query and type for the next page. A mixed search is capped at 1,000 results by Product Hunt. A query with no matches is `not_found` with an empty list.

## Request

- **Endpoint:** `GET /v1/product-hunt/search`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by query
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/product-hunt/search/get)
- **Platform page:** [/platforms/product-hunt](https://www.socialfetch.dev/platforms/product-hunt)

## FAQ

### Can I search only users or only posts?

Send `type=user`, `type=post`, `type=topic` or `type=category`. Omit `type` for a mixed search, or use `type=product` for the products search.

### How do I read the next page?

When `data.page.hasMore` is true, send `data.page.nextCursor` as the `cursor` query parameter with the same `query` and `type`. A cursor from another query or kind is refused.

### Why is totalCount capped?

Product Hunt caps a mixed search at 1,000 results. `totalCount` is Product Hunt's count for the search and page, so it can be lower on a later page; it is not a promise that every match is reachable.

### How much does it cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
