Skip to content

crawlberg

Turn any website into clean, structured data. Point crawlberg at a URL and get back Markdown, metadata, and links — from a single page or a whole site — in the language you already use.

Crawl a whole site or a single page

Follow links across an entire site or fetch one URL, with concurrent requests and live progress events. Tune how it walks the site with breadth-first, depth-first, best-first, or adaptive strategies.

Clean Markdown, every time

Every page comes back as ready-to-use Markdown — feed it straight to an LLM or your own pipeline. Generate a citation list when you need one.

Know what's on every page

Titles, links, images, feeds, and social-card data arrive already extracted and structured, so you skip the HTML parsing. Covers Open Graph, Twitter Card, Dublin Core, JSON-LD, and hreflang.

Handles JS-heavy and bot-protected sites

When a page needs JavaScript or trips a bot filter, crawlberg renders it in a real browser for you. It escalates to a Chromium (CDP) or native browser backend only when a page needs it.

Use it from your agent, API, or CLI

Drive crawlberg from an AI agent over MCP, a REST service, or the command line — no glue code required. The MCP and REST servers are gated behind cargo features.

Works in the language you already use

One Rust engine, identical results across 14 languages: Python, TypeScript, Go, Java, Kotlin Android, C#, Ruby, PHP, Elixir, Dart, Swift, Zig, WebAssembly, and C FFI.

See all features →

Language Package Docs
Rust cargo add crawlberg API Reference
Python pip install crawlberg API Reference
TypeScript / Node npm install @xberg-io/crawlberg API Reference
WebAssembly npm install @xberg-io/crawlberg-wasm API Reference
Go go get github.com/xberg-io/crawlberg/packages/go API Reference
Java Maven Central io.xberg.crawlberg:crawlberg API Reference
Kotlin (Android) Maven Central io.xberg.crawlberg:crawlberg-android API Reference
C# dotnet add package Crawlberg API Reference
Ruby gem install crawlberg API Reference
PHP composer require xberg-io/crawlberg API Reference
Elixir {:crawlberg, "~> 0.3.0"} API Reference
Dart / Flutter dart pub add crawlberg API Reference
Swift Swift Package Manager API Reference
Zig zig fetch --save from GitHub API Reference
C (FFI) Shared library + header API Reference
CLI cargo install crawlberg-cli CLI Guide
Docker ghcr.io/xberg-io/crawlberg Docker Guide
src/main.rs
use crawlberg::{CrawlConfig, ContentConfig, create_engine, crawl};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = CrawlConfig {
max_depth: Some(2),
max_pages: Some(50),
content: ContentConfig::default(),
..Default::default()
};
let engine = create_engine(Some(config))?;
let result = crawl(&engine, "https://example.com").await?;
for page in &result.pages {
let title = page.metadata.title.as_deref().unwrap_or("(no title)");
println!("{} — {}", page.url, title);
}
Ok(())
}