↑ ↓ to move ↵ to open
Website scraper API · Tool

Website to Markdown API

Read one page, PDF, spreadsheet, CSV, JSON or feed as clean content: Markdown, text, title, links, images and tables.

  • 1 credit per call
  • Failed calls are free
  • Updated
  • web.markdown
Response completed
{  "content_type": "text/html; charset=utf-8",  "final_url": "https://stripe.com/privacy",  "status_code": 200,  "page": {    "title": "Privacy Policy",    "canonical_url": "https://stripe.com/privacy",    "lang": "en-US"  },  "parsed": {    "markdown": "# Privacy Policy\n\n#### Last updated: April 28, 2026\n\nThis Privacy Policy includes important information about your personal data and we enc…",    "status": "parsed",    "metadata": {      "title": "Privacy Policy",      "canonical_url": "https://stripe.com/privacy",      "language": "en-US"    }  },  "warnings": []}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

FieldTypeRequiredWhat it doesExample
url string yes The public page or file to capture: a web page, PDF, DOCX, XLSX, CSV, JSON, XML or feed. https://stripe.com/privacy
accept_statuses array<integer> no Error statuses you still want returned, such as [404], to inspect the page.
allow_browser_fallback boolean no Open the page in a real browser when it needs JavaScript or blocks a plain request. On by default.
allow_truncated boolean no Return what was read when a page is larger than the size limit, instead of failing.
archive object no Also save the page as self-contained HTML or a ZIP of the page and its files.
detail string no How much to return: summary (title and counts), standard (the clean content: Markdown, text, links, images and tables) or full. summary · standard · full
document object no Options for PDFs and other files, such as whether to read scanned pages. Ignored for ordinary web pages.
exclude_selectors array<string> no Leave out parts of the page matching simple CSS selectors, such as .ads.
headers object no Extra request headers to send, such as Accept-Language.
include_selectors array<string> no Keep only the part of the page matching a simple CSS selector, such as article or #content.
main_content_only boolean no Keep the Markdown to the page's main content, without menus, banners and footers.
max_body_bytes integer no The largest page or file to read, in bytes.
max_total_bytes integer no The most bytes to read in all, redirects included.
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeWhat it isExample
page object The page this response holds. 3 fields
page.title string The page's title. Privacy Policy
page.lang string The page's language. en-US
page.canonical_url string The address the page names as its main one. https://stripe.com/privacy
final_url string The address the page ended at, after any redirects. https://stripe.com/privacy
status_code integer The site's HTTP status for the page, such as 200. 200
content_type string The kind of content the page is. text/html; charset=utf-8
parsed object The page's content, read and cleaned. 3 fields
parsed.metadata.title string The page's title. Privacy Policy
parsed.markdown string The page as Markdown: headings, lists, links and tables kept, menus and footers left out. # Privacy Policy #### Last updated: April 28, 2026 This Privacy…
parsed.metadata object The title, language and canonical address the page declares. 3 fields
parsed.metadata.canonical_url string The address the page names as its main one. https://stripe.com/privacy
parsed.metadata.language string The page's language. en-US
parsed.status string Whether the page was read. parsed
warnings array Anything that limited the read, such as a page cut at the size limit; empty when all went well. empty in this sample
Know before you build

What this endpoint covers

REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "web.markdown",  "input": {    "url": "https://stripe.com/privacy"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

Using Upscrape, read stripe.com/privacy and give me the page as Markdown with its links.

The agent finds the endpoint, shows you the price, and runs it with your credits.
Website Scraper API

The other website tools

Questions

Website to Markdown API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the Website to Markdown API cost?

1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Send url. The input fields below list every option with its type and limits.

Which sites does it work on?

Any public page a visitor can open without logging in. A page that is blocked or gone fails with its reason.

Can my AI agent call it?

Yes, over MCP: the agent finds web.markdown, checks its price and runs it with the same credits as the REST API.

Get started

Your first page is free.

Up to 100 free credits to start, no card needed.