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.

1,000 free credits a month · no card required

acme.com/docs

maxUrls 2,500

maxDepth 3

Crawling · 1,840 / 2,500

DISCOVERED PAGES

  1. /docsdepth 0
  2. /docs/quickstartdepth 1
  3. /docs/api/authenticationdepth 2
  4. /docs/api/webhooksdepth 2
  5. /docs/guides/rate-limitsdepth 2
  6. /docs/guides/paginationdepth 3
  7. /docs/guides/errorsqueued

Each page returned as Markdown

1 credit per page · failed pages are free

POST /v1/batch/submit

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 25,000 pages in the background, then you read every page as Markdown.

  • SubmitA start URL, a page cap, and a URL pattern
  • CrawlRendered in a real browser, in the background
  • ReadMarkdown and metadata for every page
npm install context.dev

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.

CompareYour 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 25,000 pages per batch crawl
CostServers, proxies, and engineering time1 credit per page, failed pages are free

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 25,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.