---
title: "Get a Hacker News story"
method: GET
path: "/v1/hackernews/story"
tags: ["Hacker News"]
---

# Get a Hacker News story

`GET /v1/hackernews/story`

## Request

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

Retrieve one Hacker News item by numeric ID: title, submitted URL, author, points, self-post text, poll options and creation time, with the IDs of its direct child comments. Set includeCounts to add the live score and total comment count from the official API. The item type is returned; comment IDs are accepted and return that comment. Use the comments endpoint for the nested discussion. Each successful request costs 1 account credit, including partial results. Failed requests cost 0 credits.

## Query parameters

- `id` string, required
- `includeCounts` 'true' | 'false'

## Response `200`

Inspect the response status and failure or coverage fields.

- union
  - object
    - `id` integer, required
    - `created_at` string, required
    - `created_at_i` integer, required
    - `type` string, required
    - `author` string, nullable, required
    - `title` string, nullable, required
    - `url` string, nullable, required
    - `text` string, nullable, required
    - `points` integer, nullable, required
    - `parent_id` integer, nullable, required
    - `story_id` integer, nullable, required
    - `options` unknown[], required
      - unknown
    - `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', required
      - `complete` boolean, required
      - `warnings` string[], required
    - `score` integer, nullable
    - `descendants` integer, nullable
    - `children` integer[], 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)
