---
title: "Read web page"
method: POST
path: "/v1/tools/read_page"
---

# Read web page

`POST /v1/tools/read_page`

## Request

- Base URL: `https://unstuckapi.com`
- URL: `https://unstuckapi.com/v1/tools/read_page`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Fetch any URL and get the page's main content as clean markdown. Renders JavaScript in a real browser, so it works on modern sites where a plain fetch returns nothing. Use to read articles, docs, product pages or search results.

Price: $0.005 per call. Charged once per call that returns a result, including an empty result list. Failed calls are free.

## Request body

- object
  - `url` string, required: The http(s) URL of the web page to read.

## Response `200`

Success

- object
  - `tool` 'read_page', required
  - `result` object, required
    - `url` string, required: Page URL after redirects.
    - `title` string, required: Page or article title.
    - `byline` string, nullable, required: Author line, if found.
    - `site_name` string, nullable, required: Site name, if found.
    - `lang` string, nullable, required: Page language, if declared.
    - `extraction` 'article' | 'body', required: article = main content detected; body = whole page text.
    - `markdown` string, required: The readable content as markdown.
    - `truncated` boolean, required: True if the markdown was cut at the size limit.
  - `charged_usd` number, required
  - `balance_usd` number, required

## Other responses

- `400`: Invalid JSON or input. Not charged.
- `401`: Paid tool without a valid API key.
- `402`: Balance too low for this call. Not charged.
- `404`: Unknown tool.
- `422`: The tool failed. Not charged.
- `429`: Rate limited, free tries used up, or the uncharged-result limit reached. See Retry-After.

---

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