Introducing Highlights: the context that matters

Scrape thousands of URLs. Run one batch.

Bulk web scraping in the background. Submit up to 100,000 URLs or crawl a large website, track the job, collect the results, and move on to building your product.

Get API key

Powering agents and products with the world's data.

Super.com logo
Passionfroot logo
Mintlify logo
Chatwoot logo
Similarweb logo
Klarna logo
Ferndesk logo
DocsBot logo
Daily.dev logo
Sixtyfour logo
Comp AI logo
Squad logo

Thousands of pages. One job.

Hand off a URL list or a whole site, let it run in the background, and collect the results when it finishes.

  • Massive URL lists

    Submit up to 100,000 URLs in one batch, with identifiers and metadata for your own records.

  • Full-site collection

    Start from a URL or sitemap and set the scope of the crawl.

  • Collect the dataset

    Track progress, page through results, and receive a completion webhook when the job finishes.

Submit the job. Let the batch run.

Pass your URL list to the batch API. Keep the returned job ID to inspect progress and retrieve results without holding open one long request.

npm install context.dev
Read the API reference
TypeScript
batches.ts
import ContextDev from 'context.dev';

const client = new ContextDev({ apiKey: 'YOUR_API_KEY' });

const urls = [
  'https://example.com',
  'https://example.com/pricing',
  'https://example.com/docs',
];

const batch = await client.batch.submit({
  input: {
    mode: 'scrape',
    data: {
      formats: { markdown: true },
      urls: urls.map((url) => ({ url })),
    },
  },
});

console.log(batch.id, batch.status);

Go from pages to production datasets.

Collect content at the scale your knowledge base and application need.

  • Scrape anything

    Turn every page in the batch into Markdown, HTML, structured fields, images, or screenshots.

  • Ground RAG in fresh content

    Crawl a whole site into clean Markdown and send it straight into your embeddings, with no brittle parsers in between.

A few things to know.

More details in the API documentation.

How do I scrape a list of URLs?

Submit the list to Batches in one request, up to 100,000 URLs per batch. Keep the batch ID, then poll for progress, receive the batch.completed webhook, or download the result files when the job finishes.

How much does bulk scraping cost?

Batches cost 1 credit per successful URL, plus 1 per PDF page recovered by OCR. Credits are reserved when you submit, only successful pages are charged, and unused reserved credits are refunded when the batch settles.

How many URLs can I submit in a batch?

A scrape batch accepts up to 100,000 URLs. Use separate jobs when your dataset is larger, and apply the concurrency and credit limits for your account.

Can a batch discover pages for me?

Yes. Crawl mode starts from a URL or sitemap with controls for the scope of the job.

How do I collect a large result set?

Use the batch results API and follow its pagination cursor. Keep your item identifiers or metadata to connect the results back to your records.

Can I receive a webhook when it finishes?

Yes. Configure batch webhooks for completion and other supported final states, with optional retry settings.

Collect your first dataset.

Submit a list of URLs or a whole site and get the results back as one job. The same API key works for scraping, map, and monitors.

1,000free credits

Every month. No credit card required.

Start for freeRead the docs