Back to Directory/Documentation

Kreuzcrawl

Scrape, crawl, and map websites to Markdown or JSON via local CLI.

DocumentationRustv0.3.0

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.

What and Why?

You need data that lives on the web, and raw HTML is not it. Crawlberg does the crawling, scraping, and cleanup end-to-end: it fetches pages, follows links, converts each one to Markdown, and hands you structured metadata (titles, links, images, social-card and JSON-LD data) — so you skip the parsing and go straight to the content.

It runs from a single Rust core with identical results across 14 language bindings, and it handles the awkward parts for you: JavaScript-heavy pages fall back to a real headless browser, bot filters are detected and worked around, robots and sitemaps are respected, requests are throttled per domain, and requests to private or internal addresses are refused by default. Drive it from your code, an AI agent, a REST service, or the CLI.

Every part of the pipeline is a trait you can swap — the crawl frontier, rate limiter, storage, event stream, and content filters — so you can plug in your own behavior. Managed extras like proxy pools, tuned bot-evasion, authenticated sessions, scheduling, and billing live in xberg-enterprise.

Features

FeatureDescription
Structured extractionText, metadata, links, images, assets, JSON-LD, Open Graph, hreflang, favicons, headings, response headers
Markdown conversionClean Markdown with citations, document structure, and fit-content mode
Concurrent crawlingDepth-first, breadth-first, or best-first traversal with configurable depth, page limits, and concurrency
14 language bindingsRust, Python, Node.js, Ruby, Go, Java, Kotlin (Android), C#, PHP, Elixir, Dart, Swift, Zig, and WebAssembly
Smart filteringBM25 relevance scoring, URL include/exclude patterns, robots.txt compliance, sitemap discovery
Browser renderingOptional headless browser for JavaScript-heavy SPAs with WAF detection and bypass
Batch & streamingScrape or crawl hundreds of URLs concurrently; real-time crawl events via async streams
SSRF-safe by defaultRefuses loopback, private, link-local, and cloud-metadata addresses; opt out via env var or CrawlConfig
Auth & rate limitingHTTP Basic, Bearer, and custom-header auth with cookie jars; per-domain request throttling
MCP server & REST APIModel Context Protocol integration for AI agents plus an HTTP server with OpenAPI spec

Supported Platforms

Precompiled binaries for glibc Linux (x86_64/aarch64), macOS, and Windows across every binding. On musl Linux (Alpine) coverage is deliberately partial — the CLI, Docker image, Rust, Ruby, Java, and Elixir work there; the Node, Python, Go, PHP, and C# bindings do not ship musl artifacts. See the platform support matrix for the full table and the Alpine workarounds.

Quick Start

Language Packages

Python
pip install crawlberg

See Python README for full documentation.

Node.js
pnpm add @xberg-io/crawlberg

See Node.js README for full documentation.

Rust
cargo add crawlberg

See Rust README for full documentation.

Go
go get github.com/xberg-io/crawlberg/packages/go

See Go README for full documentation.

Java

Available on Maven Central as io.xberg.crawlberg:crawlberg. See Java README for the dependency snippet and current version.

C#
dotnet add package XbergIo.Crawlberg

See C# README for full documentation.

Ruby
gem install crawlberg

See Ruby README for full documentation.

PHP
composer require xberg-io/crawlberg

See PHP README for full documentation.

Elixir

Add {:crawlberg, "~> 0.3"} to your mix.exs dependencies. See Elixir README for full documentation.

Dart / Flutter
dart pub add crawlberg

See Dart README for full documentation.

Kotlin (Android)

Available on Maven Central as io.xberg.crawlberg.android:crawlberg-android. See Kotlin README for the dependency snippet and current version.

Swift

Add via Swift Package Manager. See Swift README for full documentation.

Zig

See Zig README for installation and usage.

WebAssembly
pnpm add @xberg-io/crawlberg-wasm

See WebAssembly README for full documentation.

C/C++ (FFI)

C header + shared library from GitHub Releases. See FFI crate for full documentation.

CLI
cargo install crawlberg-cli
# Or install the prebuilt binary via cargo-binstall:
cargo binstall crawlberg-cli
brew install xberg-io/tap/crawlberg

Windows users can install the same binary through Scoop:

scoop bucket add xberg https://github.com/xberg-io/scoop-bucket
scoop install crawlberg

See CLI README for full documentation.

AI Coding Assistants

Install the Crawlberg plugin from xberg-io/crawlberg. It ships the Crawlberg agent skills (site crawling, HTML→Markdown scraping, headless-Chrome fallback) plus the crawlberg MCP server, — select your runtime below.

The bundle targets Claude Code, Codex, Cursor, Gemini CLI, Kimi, OpenCode, Factory Droid, Hermes, Pi, Agent Plugins and GitHub Copilot CLI. Read the plugin guide for runtime resources, CLI prerequisites and configuration. MCP-capable adapters expose the product's tools; Hermes uses a local stdio bridge and explicitly selected skills. Pi loads skills and prompt templates and requires the product CLI for executable operations.

Install only the public Agent Skills, without a plugin or MCP registration, using the skills CLI:

npx skills add xberg-io/crawlberg --list
npx skills add xberg-io/crawlberg

Choose the skills and target agents interactively. Installing instructions does not install the product CLI or configure provider credentials.

Claude Code
/plugin marketplace add xberg-io/crawlberg
/plugin install crawlberg@crawlberg
Codex CLI
/plugins add https://github.com/xberg-io/crawlberg

Then search for crawlberg and select Install Plugin.

Cursor

Settings → Plugins → Add from URL → https://github.com/xberg-io/crawlberg, then select crawlberg.

Gemini CLI

From a checkout of this repository:

gemini extensions install ./plugin

The manifest is inside plugin/. See the Gemini extension reference for local installation and updates.

Factory Droid
droid plugin marketplace add https://github.com/xberg-io/crawlberg
droid plugin install crawlberg@crawlberg
GitHub Copilot CLI
copilot plugin marketplace add https://github.com/xberg-io/crawlberg
copilot plugin install crawlberg@crawlberg
Pi

From a checkout of this repository:

pi install ./plugin

After the next plugin release, install the same package used by OpenCode:

pi install npm:@xberg-io/opencode-crawlberg

Pi loads the bundled skills and prompt templates. Use /crawlberg-scrape or /crawlberg-crawl with the input as arguments. Install the crawlberg CLI separately for shell access. This package does not register MCP servers, hooks, or native Pi extensions.

opencode

Add the package to opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@xberg-io/opencode-crawlberg"]
}

Documentation

Full guides, per-language API references, the substrate/operational model, antibot strategy, and observability live at docs.crawlberg.xberg.io.

Contributing

Contributions are welcome! See our Contributing Guide.

Part of Xberg.io

  • Xberg — the open-source content-intelligence engine: text, tables, and metadata from 101 formats (115 file extensions), with OCR, transcription, and code intelligence. MIT.
  • Xberg Pro — a complete self-hosted content-intelligence backend in a single container. Commercial.
  • Xberg Enterprise — the distributed, governed content-intelligence platform, scaled on Kubernetes with team governance and support. Commercial.
  • crawlberg — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
  • html-to-markdown — fast, lossless HTML→Markdown engine.
  • liter-llm — universal LLM API client with native bindings for 14 languages and 165 providers.
  • tree-sitter-language-pack — tree-sitter grammars and code-intelligence primitives.
  • alef — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.

License

MIT License

Links

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
docker run -i --rm ghcr.io/kreuzberg-dev/kreuzcrawl:0.3.0

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-kreuzberg-dev-kreuzcrawl": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/kreuzberg-dev/kreuzcrawl:0.3.0"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

ghcr.io/kreuzberg-dev/kreuzcrawl:0.3.0docker

Compatible MCP Clients

Kreuzcrawl works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More