---
title: "Get a Product Hunt forum or discussion"
method: GET
path: "/v1/producthunt/forum"
tags: ["Product Hunt"]
---

# Get a Product Hunt forum or discussion

`GET /v1/producthunt/forum`

## Request

- Base URL: `https://api.scrapeatlas.com`
- URL: `https://api.scrapeatlas.com/v1/producthunt/forum`
- Auth: API key in header `x-api-key`

List the threads in a Product Hunt forum: the community forums such as general, or a product's own forum by its slug, each with title, preview, votes, comments, author and featured or pinned flags, sorted by trending, new, popular or featured and paged with cursor. Pass discussion to retrieve one discussion instead: title, full HTML body, votes, comments, page views, status, flags, author and forum. Each successful request costs 1 account credit, including partial results. Failed requests cost 0 credits.

## Query parameters

- `slug` string, required
- `order` 'trending' | 'new' | 'popular' | 'featured'
- `window` 'now' | 'week' | 'month' | 'year' | 'all'
- `cursor` string
- `limit` string
- `discussion` string

## Response `200`

Inspect the response status and failure or coverage fields.

- union
  - object
    - `requestId` string, uuid, required
    - `accounting` object, required
      - `upstreamRequests` integer, required
      - `responseBytes` integer, required
      - `durationMs` number, required
    - `success` true, required
    - `status` 'success' | 'partial', required
    - `sourceUrl` string, uri, required
    - `fetchedAt` string, date-time, required
    - `coverage` object, required
      - `source` 'public_api' | 'public_feed', required
      - `complete` boolean, required
      - `warnings` string[], required
    - `forum` object, required
      - `id` string, required
      - `slug` string, required
      - `path` string, required
      - `url` string, required
      - `subject` object, nullable, required
        - `type` string, required
        - `id` string, required
        - `slug` string, required
        - `name` string, required
        - `description` string, nullable
    - `threads` object[], required
      - `id` string, required
      - `slug` string, required
      - `title` string, required
      - `descriptionPreview` string, nullable, required
      - `createdAt` string, required
      - `isFeatured` boolean, required
      - `isPinned` boolean, required
      - `commentsCount` integer, required
      - `votesCount` integer, nullable, required
      - `subjectType` string, nullable, required
      - `path` string, required
      - `url` string, required
      - `user` object, nullable, required
        - `id` string, required
        - `name` string, nullable, required
        - `username` string, required
        - `headline` string, nullable, required
        - `avatarUrl` string, nullable, required
        - `url` string, required
    - `totalCount` integer, nullable, required
    - `nextCursor` string, nullable, required
    - `hasMore` boolean, required
  - object
    - `requestId` string, uuid, required
    - `accounting` object, required
      - `upstreamRequests` integer, required
      - `responseBytes` integer, required
      - `durationMs` number, required
    - `success` false, required
    - `status` 'failed' | 'challenged', required
    - `failure` object, required
      - `code` 'invalid_request' | 'unauthorized' | 'not_found' | 'upstream_challenged' | 'upstream_rate_limited' | 'upstream_error' | 'unsupported_page' | 'response_too_large' | 'unsafe_redirect' | 'request_limit' | 'timeout' | 'busy' | 'payload_too_complex', required
      - `message` string, required
  - object
    - `requestId` string, uuid, required
    - `accounting` object, required
      - `upstreamRequests` integer, required
      - `responseBytes` integer, required
      - `durationMs` number, required
    - `success` true, required
    - `status` 'success' | 'partial', required
    - `sourceUrl` string, uri, required
    - `fetchedAt` string, date-time, required
    - `coverage` object, required
      - `source` 'public_api' | 'public_feed', required
      - `complete` boolean, required
      - `warnings` string[], required
    - `discussion` object, required
      - `id` string, required
      - `slug` string, required
      - `title` string, required
      - `description` string, nullable, required
      - `createdAt` string, required
      - `isFeatured` boolean, required
      - `isPinned` boolean, required
      - `commentsCount` integer, required
      - `votesCount` integer, nullable, required
      - `pageViewsCount` integer, nullable, required
      - `status` string, nullable, required
      - `aiSummary` string, nullable, required
      - `forum` object, required
        - `id` string, required
        - `slug` string, required
      - `path` string, required
      - `url` string, required
      - `user` object, nullable, required
        - `id` string, required
        - `name` string, nullable, required
        - `username` string, required
        - `headline` string, nullable, required
        - `avatarUrl` string, nullable, required
        - `url` string, required
  - object
    - `requestId` string, uuid, required
    - `accounting` object, required
      - `upstreamRequests` integer, required
      - `responseBytes` integer, required
      - `durationMs` number, required
    - `success` false, required
    - `status` 'failed' | 'challenged', required
    - `failure` object, required
      - `code` 'invalid_request' | 'unauthorized' | 'not_found' | 'upstream_challenged' | 'upstream_rate_limited' | 'upstream_error' | 'unsupported_page' | 'response_too_large' | 'unsafe_redirect' | 'request_limit' | 'timeout' | 'busy' | 'payload_too_complex', required
      - `message` string, required

## Other responses

- `400`: Request could not complete; inspect error or failure.code.
- `401`: Request could not complete; inspect error or failure.code.
- `402`: Request could not complete; inspect error or failure.code.
- `403`: Request could not complete; inspect error or failure.code.
- `404`: Request could not complete; inspect error or failure.code.
- `408`: Request could not complete; inspect error or failure.code.
- `413`: Request could not complete; inspect error or failure.code.
- `429`: Request could not complete; inspect error or failure.code.
- `500`: Request could not complete; inspect error or failure.code.
- `502`: Request could not complete; inspect error or failure.code.
- `503`: Request could not complete; inspect error or failure.code.
- `504`: Request could not complete; inspect error or failure.code.

---

[API](https://skmtc.dev/scrapeatlas/apis/scrapeatlas-api.md) · [All operations](https://skmtc.dev/scrapeatlas/apis/scrapeatlas-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scrapeatlas/apis/scrapeatlas-api/revisions/9ba049316894?raw)
