Back to Changelog

Batch Scrape

You can now scrape an explicit list of URLs in a single request. No crawling, no polling loop per URL: send the list, get a batch ID back, and collect results when the batch finishes.

What you get

  • POST /v2/batch/scrape takes up to your plan's item limit of URLs (100 during trial) and returns a batch id and a status_url.
  • GET /v2/batch/scrape/{id} returns progress (total, completed, failed, canceled) and a paginated list of items with links to each page's markdown, cleaned or HTML output.
  • GET /v2/batch/scrape/{id}/errors lists only the URLs that failed, with error codes.
  • DELETE /v2/batch/scrape/{id} cancels a running batch. Pages that did not start are not charged.
  • Pass webhook_url to get one call when the whole batch finishes.
  • Invalid and duplicate URLs are skipped and reported in invalid_urls, or set ignore_invalid_urls to false to reject the whole request.
  • Use max_concurrency to cap how many URLs run in parallel.

Options

Same options as single scrape: output_formats, main_content_only, clean_selectors, max_age and respect_robots_txt.

Pricing

Each page is billed at the same per-page rate as a crawled page. Cached pages follow the usual caching rules.

Read the batch scrape guide and the API reference to get started.