↑ ↓ to move ↵ to open

Website Scraper API

Five APIs that read any public page: fields, Markdown, a crawl, URLs or a screenshot.

For a site with no ready-made endpoint, Upscrape has five APIs that read any public page. Each costs 1 credit a call, a failed call costs nothing, and each has a short address of its own.

You needAPIAddress
Named fields from a page: a price, a rating, a team sizeExtract APIPOST /extract
A page, PDF or document as clean MarkdownWebsite to Markdown APIPOST /markdown
Every page of a site, each as MarkdownWeb Crawling APIPOST /crawl
Every URL a site hasSitemap Extractor APIPOST /sitemap
A picture of a pageScreenshot APIPOST /screenshot

One request shape

Send the page and the options as the body, with your API key:

curl https://data.upscrape.com/markdown \  -H "Authorization: Bearer $UPSCRAPE_API_KEY" \  -H "Content-Type: application/json" \  -H "Prefer: wait=30" \  -d '{"url": "https://stripe.com/privacy"}'

The answer is the same job as every other call: state, the data in results[0].data and billing.credits_charged. A call still running after 30 seconds answers 202; fetch its poll_url, as Jobs and results shows.

Each API is also an endpoint like any other, so POST /execute with {"capability": "web.markdown", "input": {"url": "…"}} runs the same job, and an AI agent finds them over MCP.

What they share

  • Public pages only. Anything a visitor can see without signing in.

  • Pages that need JavaScript are opened in a real browser for you, at the same price.

  • Robots rules. The crawl and sitemap APIs follow a site's robots.txt by default.

  • Honest failures. A page that is blocked, empty or gone fails with its reason, such as website_not_found or unsupported_content, and costs nothing. Errors and retries lists them.

  • Same headers as every call: Prefer: wait=N, Idempotency-Key and X-Max-Credits.

Something missing or unclear? Ask the team that builds the endpoints.