---
title: "URL to markdown"
method: GET
path: "/api/v1/markdown/url"
tags: ["Web"]
---

# URL to markdown

`GET /api/v1/markdown/url`

## Request

- Base URL: `https://scrapewhale.dev`
- URL: `https://scrapewhale.dev/api/v1/markdown/url`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Any public web page as clean, LLM-ready markdown — headings, lists, tables, links, and images preserved; nav, ads, and boilerplate removed. JavaScript-rendered pages included. Plain page reading only: YouTube, X, Facebook, and other structured sources have their own endpoints and are not auto-detected here. Recently read pages are served from cache for free.

**Credits: 1** (refunded on failure).

## Query parameters

- `url` string, uri, required

## Response `200`

Success.

- ConvertResult: A completed markdown conversion.
  - `id` string, required
  - `status` 'completed', required
  - `title` string, nullable
  - `sourceType` 'url' | 'file', required
  - `sourceUrl` string, nullable
  - `provider` string, required: Conversion engine: "jina", "cloudflare", or "tools-api".
  - `extractor` string: Present when the URL routed through a structured extractor.
  - `markdown` string, required
  - `data` object: Raw structured payload (present when an extractor claimed the URL).
  - `contentChars` integer
  - `creditsCharged` integer, required
  - `createdAt` integer, required: Unix epoch milliseconds.

## Other responses

- `400`: Invalid parameters.
- `401`: Missing or invalid API key.
- `402`: Insufficient credits.
- `422`: Extraction/conversion failed — credits refunded. `code` carries the failure category.
- `429`: Rate limit exceeded (60 requests/min per key).

---

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