Web scraping API. Return it your way.
Turn websites and PDFs into Markdown, HTML, structured fields, images, and screenshots. Choose the formats your product needs in one request.
Any page, any format. One request.
Choose the outputs your product needs and get them back together, from clean Markdown to a full-page screenshot.
Choose your output
Request multiple formats together. Read clean content, keep the HTML, or capture the page visually.
Extract JSON with AI
Send a JSON Schema and get typed fields back from any page, without writing selectors.
Read dynamic pages
Every request renders JavaScript. Add browser actions and wait controls when content depends on clicks or scrolling.
Start with a URL. Get usable data.
Request the outputs you need through the SDK. Use the same API key when you are ready to map domains, run batches, or create monitors.
npm install context.devimport ContextDev from 'context.dev';
const client = new ContextDev({ apiKey: 'YOUR_API_KEY' });
const page = await client.web.scrape({
url: 'https://linear.app',
formats: {
markdown: true,
html: true,
screenshot: true,
},
sharedParams: { mainContentOnly: true },
});
if (page.markdown.success) console.log(page.markdown.data);
if (page.screenshot.success) console.log(page.screenshot.data);From a single page to your next feature.
Feed your knowledge pipeline, or collect pages across a much larger job with the same API key.
Ground RAG in fresh content
Crawl a sitemap, convert every page to clean Markdown, and send it straight into your embeddings, with no brittle parsers in between.
Run batches at scale
Scrape thousands of URLs in one job, or crawl an entire site, then collect the results when the batch completes.
A few things to know.
More details in the API documentation.
Is there a free web scraping API?
Yes. The free plan includes 1,000 credits every month with no credit card. A standard scrape costs 1 credit, so that covers 1,000 pages, with JavaScript rendering and proxies included. Paid plans start at $19 a month for 7,500 credits.
Does the API render JavaScript?
Yes. Every request loads in a real browser, so single-page apps and lazy-loaded content come back complete. Add browser actions when a page needs clicks or scrolling first.
Can I request several formats at once?
Yes. Enable the formats you need in the same scrape request. Markdown, HTML, images, screenshots, parsed fields, and the original response body have their own output controls.
Can I scrape PDFs as well as websites?
Yes. Pass the public document URL to Scrape and request Markdown or HTML. PDF parsing options let you choose pages and enable OCR for scanned content. Use Parse File when you already have the file bytes.
How do I request fresh content?
Set maxAgeMs to 0 to request a fresh capture. A higher value lets the API reuse content captured within that time window.
How do I scrape a large list of URLs?
Use Batches to submit up to 100,000 URLs or crawl a website asynchronously. Keep the job ID to track progress, collect paginated results, or receive a completion webhook.
Scrape your first page in minutes.
Turn any URL into the format your product needs. The same API key works for crawling, batches, and monitors.



