crawler.sh
crawler.sh is a local-first web crawler written in Rust. It turns any website into clean, RAG-ready Markdown, renders JavaScript without headless Chrome, and runs 24 automated SEO checks, all on your own machine with no per-page cloud fees.
What is crawler.sh?
crawler.sh is a local-first web crawler and SEO auditor written in Rust by Mehmet Kose, an independent developer. Its purpose is narrow and practical: turn a website into clean Markdown that a retrieval pipeline, a fine-tuning corpus or an AI agent can use, without routing a single page through someone else's cloud.
The tool ships in three surfaces that share one crawling engine. The command-line binary exposes four subcommands — crawl, info, export and seo — and is a single static executable with no runtime dependencies, easy to drop into CI jobs, scheduled tasks and shell scripts. The desktop application wraps the same engine in a dashboard of cards covering the live crawl feed, SEO issues, status codes, redirects, extracted content, downloads and account settings. Since version 0.8.1, released on 14 May 2026, a local MCP server lets agents such as Claude Code, Claude Desktop, Cursor, OpenCode and Zed run a crawl from a conversation.
Extraction is the heart of the product. Each page is reduced to its main article body and converted to Markdown, carrying the title, URL, language, author byline, word count and excerpt. The default output is NDJSON, one streamable JSON object per line; a crawl can also be exported as a JSON array, a W3C-compliant sitemap, SEO reports in CSV or TXT, or, on the paid tier, a ZIP archive holding one Markdown file per page.
JavaScript is handled by a purpose-built render engine instead of headless Chrome. React, Vue, Next and Nuxt applications are auto-detected and rendered in-process, outbound handshakes carry a Chrome 131 TLS fingerprint, and the render path shares its cookie jar with the crawler so session-dependent pages resolve correctly. Politeness is on by default: Disallow, Allow and Crawl-delay are honoured, and per-host delays double after a 429 or 403 before easing back.
Session caps draw the commercial line at 50 pages anonymously, 400 once signed in and 10,000 on Pro. Because crawl data never leaves the machine, there is no API key, no quota and no per-page charge. The current release is v0.8.4, dated 20 May 2026.
What it does
- Crawl an entire website from the terminal or the desktop app
- Extract each page's main content as clean Markdown with title, language, byline and word count
- Run 24 automated SEO checks across every 2xx HTML page of a crawl
- Export results as NDJSON, JSON, W3C sitemap XML, SEO CSV or SEO TXT
- Bundle a whole crawl into a Markdown archive on the Pro tier
- Render JavaScript-heavy pages without spinning up headless Chrome
- Let an AI agent run crawls through the local MCP server
When to use crawler.sh / When not to
A quick filter to help you decide if crawler.sh is the right fit.
When to use crawler.sh
- Developers assembling RAG corpora or fine-tuning datasets from public documentation and reference sites
- Technical SEO specialists who audit whole sites and need the findings as CSV, TXT or a CI check
- Content teams archiving, migrating or auditing a site and wanting every page as a Markdown file
- Agent users who want a crawler their assistant can drive directly through Claude Code, Cursor or Zed
- Teams whose crawl volume makes a cloud scraper's per-page billing the dominant line item
When not to use crawler.sh
- Windows users who need a native build today, since only the Linux CLI under WSL2 is available
- Anyone expecting a hosted HTTP API, as Crawler Cloud and API server mode are still announced rather than shipped
- Mobile-only users, because there is no iOS or Android app and no browser version of the product
- Buyers who require a support SLA, live chat or a named account manager, none of which exist on any tier
- Non-technical users uncomfortable with a terminal, package installation and command flags
How to use crawler.sh
A typical end-to-end flow, from setup to results.
- Install the CLI with a single command: curl -fsSL https://install.crawler.sh | sh
- Or download the desktop app as a macOS DMG (universal binary) or a Linux .deb package
- Start crawling immediately without an account, capped at 50 pages per session
- Sign in when you need more headroom, which raises the free cap to 400 pages
- Run a first crawl with crawler crawl https://example.com, which writes a .crawl file
- Inspect the result with crawler info to see page count, status codes and response times
- Add --extract-content, or leave extraction on by default, to capture each page as Markdown
- Force or disable JavaScript rendering with --render and --no-render, or via the desktop Settings card
- Run crawler seo on the .crawl file to get the 24 SEO checks grouped by category
- Export with crawler export, or use Downloads then Content Archive in the desktop app for the Markdown bundle
Pros & Cons
Pros
- Zero marginal cost per page, against roughly 50 to 200 USD for 10,000 rendered pages on cloud scrapers
- Crawl data never leaves the machine, so there is no API key, no quota and nothing to leak to a vendor
- JavaScript rendering without headless Chrome, at a fraction of the memory and startup cost
- Polite by default, honouring robots.txt directives and backing off on 429 and 403 responses
- A single 99 USD per year subscription covers both the CLI and the desktop app
- Single static binary with no dependencies, which makes CI and cron integration trivial
- A real permanent free tier: 50 pages with no account at all, 400 once signed in
Cons
- No native Windows build yet, leaving Windows users with the Linux CLI under WSL2
- No hosted API: Crawler Cloud is marked coming soon and API server mode is only planned for Q3 2026
- No legal entity, registered address or company registration is published anywhere on the site
- No DPA, no named subprocessors and no stated hosting country for the account data the vendor does hold
- Support is email-only, in English, with no SLA, no live chat and no account manager on any tier
- The site contradicts itself on figures, quoting 8 and 9 dashboard cards and 24 and 16 SEO check categories
- The terms of service describe cloud and self-hosted offerings that do not match the shipped product
Pricing & Plans
A permanent free plan is available at no cost, covering 50 pages per crawl session without an account and 400 pages once signed in. The lowest paid entry point is 99.00 USD per year, charged annually, which applies identically to CLI Pro and Desktop Pro; a single subscription covers both surfaces. No monthly rate, usage-based charge or enterprise price is published.
- 50 pages per session with no account and 400 once signed in
- SEO analysis with CSV/TXT export
- JSON and sitemap XML export
- 10
- 000 pages per session
- NDJSON
- JSON and sitemap XML output
- content extraction to Markdown
- SEO analysis with CSV/TXT export
- visual dashboard
- real-time crawl feed with status badges
- SEO issues panel with per-URL detail
- Content Archive export as Markdown
Data, GDPR & hosting
A consolidated view of how crawler.sh handles your data.
GDPR overview
The privacy policy, last updated on 14 January 2025, carries an explicit GDPR section: users in the EU may access, update or delete their personal data by writing to support@crawler.sh, and the vendor undertakes to answer within 30 days and to keep data only as long as the service requires. Traffic between the device and the vendor's API is encrypted with HTTPS/TLS, cookies are limited to essential ones, and no advertising or cross-site tracking is used. The documentation stops there. No Data Processing Agreement is published or offered, no subprocessor is named beyond two unattributed categories, no hosting country or region is disclosed, and no Article 27 EU representative is designated. Compliance is asserted; the paperwork that usually evidences it is absent.
Who owns the data?
The split is unusually clear. Crawl data, results and exported files stay on the user's own machine and, according to the privacy policy, never reach the vendor: browsing history, crawl targets, crawl results and extracted page content are explicitly not collected. What the vendor does hold is account data — an email address, a subscription status and authentication tokens, the tokens themselves stored locally in ~/.crawler/auth.json or in browser storage. The terms of service reserve all software, designs and site content as the intellectual property of Crawler, and state that personally identifiable information is never shared without consent except where the law requires it.
Reuse rights
Nothing in the terms restricts what a user does with the pages a crawl produces: the software is licensed for use on the user's own projects, subject to applicable law, and the vendor never takes possession of the output. Responsibility travels with that freedom — users agree to lawful use only and to complying with the regulations that apply to them, which matters because an --ignore-robots flag exists and the rights attached to crawled pages belong to their publishers, not to crawler.sh. On the vendor's own side, account and usage data may be used to run the service, and clause 4.2 of the terms adds that usage data may serve to improve it. Reselling, reverse engineering or redistributing the software itself is prohibited.
Data retention & training
Hosting summary
There are two very different answers depending on which data you mean. Crawl data is hosted nowhere: pages, extracted Markdown and exports are written to the user's own disk and, according to the privacy policy, are never uploaded to the vendor's servers. Authentication tokens are equally local, kept in ~/.crawler/auth.json for the CLI or in browser storage for the desktop app. Account data — email address and subscription status — is the exception: it is processed by the vendor's own API, and neither the hosting country nor the region is disclosed anywhere on the site. Payments run through an unnamed third-party processor, with no card details stored by the vendor. The website itself is served behind Cloudflare on an anycast address, which says nothing about where account data is actually processed. No jurisdiction is stated, no DPA is offered and no subprocessor is named, so the hosting posture for the small amount of personal data involved has to be taken on trust.
Things to keep in mind
Risks and trade-offs to weigh before adopting crawler.sh.
- No legal entity or postal address is published, so there is no identified counterparty if something goes wrong
- The terms of service govern cloud and self-hosted offerings that do not match the shipped product, leaving the real contract unclear
- The privacy policy says nothing from your crawls is collected while clause 4.2 of the terms allows usage data to improve the service
- An --ignore-robots flag exists, and the legal responsibility for crawling a site you do not own stays entirely with you
- Content you extract belongs to its publishers: feeding it into a training set or a RAG index is a rights question the tool cannot answer for you
- Published figures contradict each other between pages, so treat any single number on the site as indicative rather than contractual
- The privacy policy predates most of the features described elsewhere, which weakens it as a description of current practice
Setup & Integrations
Technical difficulty
Low for anyone at home in a terminal. The CLI installs with one curl command as a dependency-free static binary; the desktop app is a DMG to drag into Applications or a .deb package. No account is needed for a first crawl. Expect two common frictions: macOS Gatekeeper may quarantine the binary, cleared with xattr -d com.apple.quarantine, and on Linux the install directory has to be on your PATH. Requirements are macOS 12 or later, or Linux with glibc 2.31 or newer. Getting real value beyond a first crawl means learning the flags.
Deployment
Integrations
Supported languages
Behind crawler.sh
Resources
All the official URLs gathered for verification and reference.
Alternatives
Tools that compete with or complement crawler.sh.
Frequently asked questions
Do I need an account to use crawler.sh?
Which platforms are supported?
How does crawler.sh handle JavaScript-heavy pages?
What output formats does it produce?
What does the SEO analysis actually check?
How much does it cost and what does Pro add?
Does any of my crawl data reach the vendor?
Is there an API?
How do I get support, and in which language?
Is there a minimum age to use it?
Should you pick crawler.sh?
crawler.sh makes a single trade and makes it well: you give up the convenience of an API call and you get a crawler whose marginal cost per page is zero and whose output never touches someone else's infrastructure. For anyone building RAG corpora, assembling training data or auditing sites at volume, that arithmetic is compelling — a flat 99 USD a year against cloud scrapers that bill per page and route every byte through their own servers. The engineering behind it is serious for a solo project: a custom JavaScript render engine instead of headless Chrome, a Chrome 131 TLS fingerprint, a shared cookie jar, adaptive per-host backoff and robots.txt honoured out of the box. Twenty-nine releases and an MCP server shipped in May 2026 suggest real momentum.
The reservations are about the company, not the code. No legal entity is named anywhere, no postal address is published, and the terms of service invoke Delaware law while describing cloud and self-hosted offerings that do not exist. GDPR compliance is claimed in plain terms but comes with no DPA, no named subprocessors and no disclosed hosting location. Several figures disagree between pages, and three different contact addresses circulate. None of this is disqualifying for a developer tool that runs locally and holds almost nothing about you, but a procurement team will notice.
Practically, the product suits people already comfortable in a terminal, on macOS or Linux, who want predictable costs and full control over the data path. Windows users and anyone waiting on the hosted API should check the roadmap before committing. At version 0.8.4 it is young, actively maintained, and free enough to evaluate properly before paying.
- Choosing a selection results in a full page refresh.
- Opens in a new window.