> **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/topics>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/product-hunt/topics.mdx>

---

# Product Hunt Topics API

The public topic list, up to 100 per page, each with its description and follower count.

`GET /v1/product-hunt/topics` returns `data.topics`, `data.totalCount` and `data.page`. Each topic has `id`, `slug`, `name`, `description` and `followersCount`. The topic list is the one Product Hunt list that returns more than 20 rows: this route returns up to 100 per page.

Use a topic's `slug` on `GET /v1/product-hunt/topics/{slug}` for one record, or on `GET /v1/product-hunt/topics/{slug}/posts` for its posts. The list is `found` on every successful request, including a page with no rows.

## Request

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

## FAQ

### How many topics fit on a page?

Up to 100. The other Product Hunt list routes hold up to 20 rows, but the topic list reads up to 100 per page.

### How do I get the next page?

When `data.page.hasMore` is true, send `data.page.nextCursor` as the `cursor` query parameter. A cursor only works on this route and with the same filters.

### What fields does a topic row have?

`id`, `slug`, `name`, `description` and `followersCount`. The same fields are on `GET /v1/product-hunt/topics/{slug}`.

### Can the list be empty?

The route reports `lookupStatus: found` on success. A page can be empty if there are no more rows; check `page.hasMore` before asking for another page.

### 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. Each paginated page is a separate billed request.
