Skip to main content

Web scraping API

A web scraping API for the URLs you already have

One call renders the page in real Chrome and hands back its Markdown, metadata and a screenshot — or any mix of 11 results — from a single visit.

By · Last updated: October 2026

TL;DR

POST a URL and a list of operations to /scrape and get every result from one page visit: the page is rendered in real Chrome, and its Markdown, metadata, screenshot, PDF, rendered HTML, console output, technologies, summary, keywords or structured data come back in one JSON response. Each operation costs what its own endpoint costs — Markdown, metadata and a screenshot are 3 credits together — and cache hits and failed requests are free.

Free plan, no credit card. 1,000 credits a month.

Try it now — no signup

Free · no signup · 2 runs every 10 minutes

…or try one of these

Your result will appear here.

Enter a URL above, or pick one of the example pages.

The request

One POST, one bearer token

POST /scrape
curl -X POST https://urlpipe.dev/scrape \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "operations": ["markdown","meta","screenshot"], "sync": true}'
Response
{
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "operations": {
    "markdown": {
      "success": true,
      "result": "# Example Domain\n\nThis domain is for use in…",
      "cached": false
    },
    "meta": {
      "success": true,
      "result": { "title": "Example Domain", "description": "…", "language": "en" },
      "cached": true
    },
    "screenshot": {
      "success": true,
      "result": "iVBORw0KGgoAAAANSUhEUg…",
      "cached": false
    }
  }
}

One visit

What one call returns

Name the results you want in operations. The page loads once, and every result is read off that visit: the rendered HTML, the screenshot and the console come from the capture, and the Markdown, metadata and AI results are derived from the HTML. Loading the page is the slow part of any scrape, so three results cost one wait instead of three.

OperationWhat it returnsCredits
markdownThe page's main content as Markdown1
htmlThe rendered HTML, after JavaScript1
metaTitle, description, share image, authors, dates, feeds1
screenshotThe page as PNG, JPEG or WebP1
pdfThe page as a PDF1
consoleErrors, warnings and uncaught exceptions1
technologiesCMS, frameworks, analytics, CDN, with versions1
lighthouseLighthouse scores and Core Web Vitals lab metrics2
keywordsKeywords from the page, by an AI model15
summarizeA summary of the page, by an AI model17
extractData in the fields you define, by an AI model24

Every result is identical to what its own endpoint returns and is stored under the same key, so a scrape can be answered from a /markdown call you made yesterday, and a /meta call tomorrow from today's scrape. Operations fail one at a time: a failed one leaves its siblings intact and costs nothing. How the single visit works.

Rendering

JavaScript sites come back complete

Every page loads in real headless Chrome and its scripts run before anything is read, so a React, Vue or Angular app returns its content instead of an empty <div id="root">. There is no rendering flag to remember and no surcharge for it. page_options removes cookie banners, ads and popups before the capture, and applies to every operation of the scrape. Rendered and raw HTML, compared.

Responsibility

robots.txt, followed by default

Each project follows the robots.txt of the sites it fetches unless you switch it off in the project's settings. A page robots.txt disallows is never requested, and the call fails with an error that says why, at no cost. Switching it off is your call, and so is the right to fetch what you fetch. How the rules are read.

Residential

Residential IPs for sites that block data centers

Some sites show a data center address a block page, a captcha or a thinner page than they show a person. Add residential: true and the page is fetched from a home broadband connection instead, for 25 credits on top of the operations. On /scrape that is charged once per visit, so five results from one residential visit pay it once, not five times. How residential fetches work.

Billing

A bill that matches the work

  • Cache hits are free. Results are stored and reused while they are fresher than max_age, so scraping a page you already scraped costs nothing. Caching.
  • Failures are free. A page that doesn't load, a bot check that isn't cleared, an operation that fails: none of them spend credits.
  • Never cut off. On a paid plan, a busy month doesn't stop your pipeline: past the allowance, extra credits are billed at the overage rate.
  • One request against your parallel limit. A scrape counts once however many operations it runs, because it is one page visit.

Limits

What it does not do

  • No crawling. It scrapes the URLs you send and doesn't discover or follow links. For whole-site crawls, look at Apify or Crawl4AI.
  • No interaction. It doesn't click, type or fill forms; it reads the page as it loads — signed in, for a page behind a login, when the request names an auth profile.
  • Public addresses only. Private, loopback and intranet addresses are refused.

Pricing

What it costs

CallCreditsFree (calls/mo)Starter (calls/mo)Pro (calls/mo)Scale (calls/mo)
/markdown1 credit1,00020,00055,000175,000
/meta1 credit1,00020,00055,000175,000
/screenshot1 credit1,00020,00055,000175,000

Cache hits and failed requests cost nothing. Paid plans are never cut off: past the allowance, extra credits are $1.50 per 1,000 credits. See every plan.

FAQ

Frequently asked questions

Yes. Every page loads in headless Chrome with its scripts running before anything is read, at no extra cost.

Make your first request in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.