Introducing Highlights: the context that matters

Crawl the web. Every page, clean Markdown.

Web crawling without running a crawler. Send one URL and Context.dev follows the links, renders JavaScript, gets past bot walls, and returns every page as LLM-ready Markdown.

POST /v1/batch/submit

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

Teams crawling the web with Context.dev

  • SiteGPT
  • Hyperspell
  • Sourcely
  • Soria
  • Construct
  • Adapt
“Context.dev was stupidly easy to drop in and replace that whole setup. The API makes sense, the docs are actually useful, and we got it working fast.”
Conor Brennan-BurkeCofounder and CEO, HyperspellRead the Hyperspell story
for SiteGPT to move its website crawling off Firecrawl
< 1 day
replaced Hyperspell’s waterfall of fallback crawlers
1 API

One URL in. The whole site out.

Submit a start URL as a batch with a page cap, a depth, and a URL pattern. Context.dev crawls up to 100,000 pages in the background, then you read every page as Markdown.

  1. 1SubmitA start URL, a page cap, and a URL pattern
  2. 2CrawlRendered in a real browser, in the background
  3. 3ReadMarkdown and metadata for every page
npm install context.dev
Read the batch crawl guide

1,000 free credits a month · no card required

crawl.ts
import ContextDev from 'context.dev';

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

const batch = await client.batch.submit({
  input: {
    mode: 'crawl',
    data: {
      format: 'markdown',
      source: {
        type: 'start_url',
        url: 'https://acme.com/docs',
        controls: {
          maxUrls: 2500,
          maxDepth: 3,
          regex: '^https://acme\\.com/docs/',
        },
      },
      options: { useMainContentOnly: true },
    },
  },
});

// Poll every 10-30 seconds, or receive a batch webhook instead
let status: string = batch.status;
while (status === 'queued' || status === 'running') {
  await new Promise((resolve) => setTimeout(resolve, 15_000));
  ({ status } = await client.batch.retrieve(batch.id));
}

let cursor: string | undefined;
do {
  const results = await client.batch.getResults(batch.id, {
    limit: 100,
    cursor,
  });
  for (const page of results.data ?? []) {
    if (page.status === 'ok') console.log(page.url, page.markdown);
  }
  cursor = (results.has_more && results.next_cursor) || undefined;
} while (cursor);

What teams crawl with Context.dev.

Crawl jobs our customers run in production, from support bots to research corpora.

  • Support chatbot knowledge bases

    Crawl a customer’s help center and docs, then train their bot on clean Markdown.

    SiteGPT
  • Company brains for AI agents

    Bring public website content in next to Slack, email, and Drive as one source of truth.

    Hyperspell
  • Academic journals and PDFs

    Crawl journal sites and PDFs at scale into text a research product can cite.

    Sourcely
  • Search connectors and agent tools

    Give an agent one connector for search, crawling, and reading pages.

    Construct
  • Healthcare and public data pages

    Re-crawl the sources a terminal depends on without running scrapers on AWS.

    Soria
  • Thousands of company websites

    Read 6,000 account websites for the signals a GTM team acts on.

    Adapt

Skip the crawler you’d have to maintain.

Everything a homegrown web crawler needs before it returns a usable page, and what Context.dev does instead.

Your own crawlerbuild and maintainContext.devone API key
JavaScript-heavy pagesRun and scale a fleet of headless browsersEvery page rendered in a real browser
Bot protectionBuy proxies, rotate them, and write retry logicAutomatic proxy escalation and retries
Clean outputWrite HTML-to-Markdown cleanup for every siteMarkdown with the main content only
Large sitesBuild queues and workers to fan outUp to 100,000 pages per batch crawl
CostServers, proxies, and engineering time1 credit per page, failed pages are free

Crawling in production, in their words.

All customer stories

Web crawling, answered.

More details in the API documentation.

What is web crawling?

Web crawling means starting from one URL and following links to discover and download every page of a site. Context.dev runs the crawl for you, renders each page in a real browser, and returns clean Markdown instead of raw HTML.

What’s the difference between web crawling and web scraping?

Web scraping extracts content from a page whose URL you already have. Web crawling discovers the pages first by following links from a starting URL, then scrapes each one. Context.dev does both: Scrape for a single URL, Crawl for a whole site.

How do I crawl an entire website?

Submit a crawl batch to /v1/batch/submit with the starting URL and an optional maxUrls, maxDepth, and regex. The crawler follows same-domain links and renders each page in the background, up to 100,000 pages. Poll the batch or receive a webhook, then read each page’s Markdown from the results.

How much does it cost to crawl a website?

1 credit per successfully crawled page. Failed pages are not billed. The free plan includes 1,000 credits every month, enough for 1,000 pages.

Can I crawl subdomains?

By default the crawler stays on the starting domain and treats www and the apex as the same site. Set followSubdomains to true to include subdomains such as docs.example.com.

Crawl your first site today.

1,000 free credits every month, enough for 1,000 crawled pages. No credit card required.

1,000free credits

Every month. No credit card required.

Start for freeRead the docs