Fetch URL as Markdown

TypeScriptTools
POST api.upapi.io/fetch-markdown.post

Convert any web page into clean, LLM-ready Markdown. Fetches over plain HTTP with browser headers (retrying once through a residential or datacenter proxy when the origin serves a bot wall), removes boilerplate with Mozilla Readability, and converts with GitHub-flavored Markdown tables, lists and code blocks. Article mode is verified against a whole-page conversion and downgrades itself when Readability strips too much, so you are never handed a gutted page. Returns the markdown plus title, byline, language, excerpt, the extracted link list, the final URL after redirects, and which transport served the body. No browser is used, so a client-rendered page is reported as an error rather than as empty content.

markdownhtmlreadabilityllmragscrapercontentconverter
AuthAPI key
Cost3 units
Timeout25s
Cache300s

Request schema

FieldTypeDescription
urlreq
stringAbsolute http(s) URL of the page to convert (e.g. https://en.wikipedia.org/wiki/Markdown). Private, loopback and link-local destinations are refused.
mode
stringarticle = Mozilla Readability main-content extraction, verified against the whole page and auto-downgraded when it strips too much; full = the whole body with nav/footer/aside/form removed (e.g. article).· default: "article"
maxChars
integerMaximum characters of markdown to return (e.g. 100000). Output is cut at the nearest paragraph/line boundary and truncated is set.· default: 100000
timeoutMs
integerTotal network budget in milliseconds across the direct attempt and the one proxied retry (e.g. 20000). Capped below the 28s API-gateway edge timeout.· default: 20000
includeLinks
booleanKeep inline [text](url) links in the markdown and return the extracted link list (e.g. true). false unwraps every anchor to plain text.· default: true
includeImages
booleanKeep ![alt](url) image references in the markdown (e.g. false). Images are dropped by default because they cost tokens and rarely help an LLM.· default: false

Response schema

FieldTypeDescription
langreq
stringnullLanguage tag from <html lang> (e.g. "en"); null if absent.
links
arrayAbsolute http(s) links found in the extracted content, capped at 500. Present only when includeLinks is true; reflects the extracted document, which may be longer than a truncated markdown body.
titlereq
stringPage/article title, or an empty string if none was found.
bylinereq
stringnullAuthor line, when Readability or a meta tag exposes one; null otherwise.
excerptreq
stringnullShort summary from Readability or the meta description; null if absent.
finalUrlreq
stringURL actually fetched, after following redirects.
markdownreq
stringThe converted document. Prefixed with the page title as an H1 when the extracted content does not already start with a heading.
charCountreq
integerLength of the returned markdown.
extractorreq
stringWhich stage produced the markdown. In article mode this reads "full-dom" when Readability failed the content-density check.
fetchedAtreq
stringISO-8601 timestamp of the fetch.
truncatedreq
booleanTrue when the markdown was cut to fit maxChars.
httpStatusreq
integerHTTP status of the response that produced the markdown.
fetchedWithreq
stringTransport that produced the returned body: direct = straight from the worker; datacenter/residential = the proxy-pool tier used for the retry.

Try it

Try it

Absolute http(s) URL of the page to convert (e.g. https://en.wikipedia.org/wiki/Markdown). Private, loopback and link-local destinations are refused.

article = Mozilla Readability main-content extraction, verified against the whole page and auto-downgraded when it strips too much; full = the whole body with nav/footer/aside/form removed (e.g. article).

Maximum characters of markdown to return (e.g. 100000). Output is cut at the nearest paragraph/line boundary and truncated is set.

Total network budget in milliseconds across the direct attempt and the one proxied retry (e.g. 20000). Capped below the 28s API-gateway edge timeout.

Keep inline [text](url) links in the markdown and return the extracted link list (e.g. true). false unwraps every anchor to plain text.

Keep ![alt](url) image references in the markdown (e.g. false). Images are dropped by default because they cost tokens and rarely help an LLM.

Run this endpoint live

Jump in as a guest — no signup — and run fetch-markdown.post with your own inputs. Create a free account anytime to get your own API key.

Sign in

Code examples

curl -X POST https://api.upapi.io/fetch-markdown.post \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "url": "https://en.wikipedia.org/wiki/Markdown", "mode": "article", "maxChars": 100000, "timeoutMs": 20000, "includeLinks": true, "includeImages": false }'

Developer tools

OpenAPI specImport the spec or collection into Postman, Insomnia, or any codegen tool.