crawler.sh logo
Web Scraping · Seo Tools

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.

Active GDPR compliant Free plan Freemium No public API 18+ Verified by Guidaio
Overview

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
Audience

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
Get started

How to use crawler.sh

A typical end-to-end flow, from setup to results.

  1. Install the CLI with a single command: curl -fsSL https://install.crawler.sh | sh
  2. Or download the desktop app as a macOS DMG (universal binary) or a Linux .deb package
  3. Start crawling immediately without an account, capped at 50 pages per session
  4. Sign in when you need more headroom, which raises the free cap to 400 pages
  5. Run a first crawl with crawler crawl https://example.com, which writes a .crawl file
  6. Inspect the result with crawler info to see page count, status codes and response times
  7. Add --extract-content, or leave extraction on by default, to capture each page as Markdown
  8. Force or disable JavaScript rendering with --render and --no-render, or via the desktop Settings card
  9. Run crawler seo on the .crawl file to get the 24 SEO checks grouped by category
  10. Export with crawler export, or use Downloads then Content Archive in the desktop app for the Markdown bundle
Quick read

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

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.

Free — 0 USD
  • 50 pages per session with no account and 400 once signed in
  • SEO analysis with CSV/TXT export
  • JSON and sitemap XML export
Desktop Pro — 99 USD per year
  • visual dashboard
  • real-time crawl feed with status badges
  • SEO issues panel with per-URL detail
  • Content Archive export as Markdown
Prices and plans listed above may evolve. Always check the official pricing page before subscribing.
Trust & Privacy

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

Retention summary
Account data is kept for as long as the account stays active. Deleting the account removes the email address and the associated records from the vendor's systems, and GDPR requests are answered within 30 days. Authentication tokens are generated from secure random values and expire after a period the policy does not quantify. Crawl data falls outside all of this: it is written to the user's own machine, never uploaded, and therefore deleted whenever the user decides to delete it. No retention period is stated in days or months anywhere on the site, and no anonymisation process is described.
Trains on customer data
No
GDPR contact

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.

Watch-outs

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

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

Desktop app

Integrations

Claude Code Claude Desktop Cursor OpenCode Zed

Supported languages

English
Company

Behind crawler.sh

Company name
INFORMATION_NOT_FOUND
Founded
30/11/2021
Country of origin
INFORMATION_NOT_FOUND
UBO
Mehmet Kose
UBO country
INFORMATION_NOT_FOUND
Domain registrar country
INFORMATION_NOT_FOUND
Legal contact
Support contact
Official links

Resources

All the official URLs gathered for verification and reference.

Compare

Alternatives

Tools that compete with or complement crawler.sh.

C Crawl4AIF FirecrawlJ Jina ReaderM MarkItDownP PlaywrightS ScrapingBeeS Screaming Frog
FAQ

Frequently asked questions

Do I need an account to use crawler.sh?
No. You can crawl up to 50 pages per session with no account at all. Signing in raises the free cap to 400 pages and links the CLI and desktop app to the same plan.
Which platforms are supported?
macOS 12 Monterey or later on Apple Silicon and Intel, and Linux on x86_64 or ARM64 with glibc 2.31 or newer. A native Windows build is in progress; until it ships, the Linux CLI runs under WSL2.
How does crawler.sh handle JavaScript-heavy pages?
It uses its own render engine rather than headless Chrome. In the default Auto mode it samples the first few pages and switches rendering on when it detects a client-side framework. You can force it with --render or turn it off with --no-render.
What output formats does it produce?
The default is NDJSON with a .crawl extension, one JSON object per line. You can also export a JSON array, a W3C-compliant sitemap XML, an SEO report as CSV or TXT, and, on the Pro tier, a ZIP archive with one Markdown file per page.
What does the SEO analysis actually check?
Twenty-four categories across every 2xx HTML page, including missing, short and long titles and meta descriptions, thin content, long URLs, noindex and nofollow directives, non-self canonicals, duplicate titles and H1 problems, broken outgoing links and content freshness signals.
How much does it cost and what does Pro add?
The free plan costs nothing. Pro is 99 USD per year and one subscription covers both the CLI and the desktop app. It raises the session cap to 10,000 pages and unlocks the Content Archive Markdown export.
Does any of my crawl data reach the vendor?
No. The privacy policy states that crawl data, results and exported files never leave the machine, and that browsing history, crawl targets, crawl results and extracted content are not collected. Only an email address, a subscription status and authentication tokens are held for accounts.
Is there an API?
Not yet as a hosted service. Crawler Cloud is announced as coming soon and a local API server mode is planned for Q3 2026. Since May 2026 there is an MCP server, so agents such as Claude Code, Claude Desktop, Cursor, OpenCode and Zed can drive crawls directly.
How do I get support, and in which language?
By email at hello@crawler.sh. Support is provided in English only, typically within one business day, with no live chat, no ticket SLA and no dedicated account manager on any tier.
Is there a minimum age to use it?
Yes. Clause 1.1 of the terms requires users to be at least 18 years old or to have parental or guardian consent. The privacy policy separately states that the product is not directed at children under 13.
Conclusion

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.