Comparisons

Best Web Crawling Tools & Software (2026)

Seven web crawling tools tested and compared for 2026, with real cost at 1,000 pages, honest breakage notes, and a pick for every budget and stack.

MMotherlode Lab10 min read
Magpie title card: Best Web Crawling Tools & Software (2026), over a faint scraped storefront page
Seven web crawling tools, each tested against real sites and priced at 1,000 pages. Illustration: Magpie.

Every crawler works on the demo site. Point it at a real target (a docs portal that lazy-loads its sidebar, a store that paginates with XHR) and the clean markdown comes back streaked with navigation sludge. That gap between demo and production is what actually separates web crawling tools. I ran seven of them against real sites and priced each one at 1,000 pages, because the sticker price and the crawl price are never the same number.

The table is the short version. The entries are what broke.

The best web crawling tools at a glance

Tool Type Best for License LLM-ready output Cost at 1,000 pages
Firecrawl Hosted API Fastest setup, managed scale AGPL + paid API Yes ~$4 (fits the $19/mo tier)
Crawl4AI Python library Local RAG pipelines, zero API cost Apache-2.0 Yes $0 (your hardware)
Scrapy Python framework Large structured crawls, pipelines BSD-3 No (DIY) $0 (a $5 VPS runs it)
Crawlee Node/Python library Production crawlers on JS-heavy sites Apache-2.0 Partial $0 local; RAM-hungry
Colly Go library Simple scheduled internal crawls MIT No $0
Katana Go CLI URL and endpoint discovery MIT No $0
Magpie Desktop app + CLI Local-first: data never leaves your machine AGPL or commercial Yes 1 run (5 free, then $49/mo)

Ranking logic: output quality first, then cost at 1,000+ pages, then how much code stands between you and the first result. Hosted versus local is a preference, not a rank. I flag it where it changes the answer.

1. Firecrawl: the hosted default

Firecrawl’s /crawl endpoint starts at one URL and follows links, with max_discovery_depth, include_paths, and exclude_paths controlling scope. It renders JavaScript, follows pagination, strips ads and nav, and returns markdown. Credit metering is simple: scrape, crawl, map, and monitor each cost 1 credit per page; search costs 2 credits per 10 results.

from firecrawl import Firecrawl

app = Firecrawl()
result = app.crawl(
    url="https://docs.stripe.com/api",
    limit=50,
    include_paths=["/api/*"],
    scrape_options={"formats": ["markdown"], "only_main_content": True},
)

Pros

  • Fastest zero-to-markdown path of anything here; paid plans start at $19/month for 5,000 credits
  • JS rendering, pagination, and boilerplate stripping happen inside the crawl, not in your code
  • SDKs for Python, Node, Go, and Rust, plus an MCP server for agent workflows

Cons

  • Cost scales with pages. Their top published tier is $399/month for 500,000 credits; a one-off crawl that size costs more than the VPS you’d rent to run Scrapy on
  • The self-hosted version covers core crawling only; some capabilities stay cloud-side
  • Every page you crawl passes through their servers. If that’s a compliance problem for you, it’s a dealbreaker, not a con

Firecrawl is the right call when delivery speed beats cost and the data isn’t sensitive.

2. Crawl4AI: local and LLM-first

Crawl4AI turns pages into markdown tuned for LLM context windows without calling an external API. It launched in mid-2024 and passed 58k GitHub stars, putting it among the most-starred crawler repos on the platform, because it solved the exact problem RAG teams had: HTML to tokens, locally, for free.

The feature I’d keep it for is the BM25 content filter. Give it your query and it ranks page sections, keeping only the relevant ones before you embed anything. Fewer junk chunks means a smaller vector bill and better answers, which is the entire game at RAG scale.

Pros

  • No per-request costs and no accounts; everything runs on your box
  • Local model support through Ollama for extraction steps
  • Adaptive crawling reuses strategies that worked on a domain, which speeds up repeat crawls

Cons

  • Python only, and the async API leaks. Expect asyncio ceremony in scripts that do anything else
  • No GUI and no built-in storage targets; you wire the output side
  • Markdown quality is good, not surgical. Docs sites with nested sidebars still need CSS scoping to stay clean

3. Scrapy: the incumbent

Scrapy shipped version 2.19 in September 2026, eighteen years into the project, and the new release says a lot: a RemoteControl extension that lets you inspect and steer a running crawl over HTTP. That’s the kind of feature you earn from a decade of people crawling at scale and reporting what hurt. If your output is structured records rather than markdown, Scrapy is still the best answer in Python.

Pros

  • Battle-tested across millions of pages; spiders survive restarts with job persistence
  • Auto-throttle, per-domain rules, retries, and a debugging story that never surprises you
  • The plugin ecosystem (scrapy-playwright, scrapy-redis) covers every gap the core leaves, and there’s now an MCP server built on RemoteControl

Cons

  • You write a project, not a script. The first crawl takes an hour of scaffolding before any data arrives
  • No markdown output. LLM pipelines need a conversion layer you build and maintain
  • JS sites need scrapy-playwright, which doubles the moving parts and the failure modes

4. Crawlee: for teams living in JavaScript

Crawlee wraps Puppeteer and Playwright with the parts everyone rebuilds: request queues, retries, proxy rotation. Its CheerioCrawler handles static sites at speed while PlaywrightCrawler takes the JS ones, both sharing one queue and one storage layer. It powers most of the ready-made scrapers on Apify’s store, which tells you where it’s been stress-tested.

Pros

  • One queue and one proxy layer across static and browser crawls
  • Request-level storage and resume built in; a crashed crawl picks up where it died
  • Works from a single file for small jobs and scales to a full project

Cons

  • Browser crawls eat RAM. Twenty parallel Playwright tabs wants a real machine, not a laptop
  • Markdown conversion is DIY. Output is DOM and HTML; cleaning and conversion are your code
  • The Python port lags the Node version in features

5. Colly: the Go minimalist

Colly does one thing cleanly: callback-driven crawling with Visit, OnHTML, and per-domain rate limiting in about 15 lines of Go. 25k+ stars, MIT license, a single binary at the end. I’ve run Colly spiders on cron jobs for years without touching them, which is the whole point.

Pros

  • Smallest API surface of anything here; readable by anyone who knows Go
  • Real concurrency with sane defaults. Forty pages a second is normal on modest hardware
  • Compiles to a static binary your cron job can run forever

Cons

  • No JS rendering. A React site returns an empty shell
  • No cleaning, no markdown, no export. You get raw HTML in a callback and figure out the rest
  • When a site redesigns, callbacks break silently. Add your own alerting or find out from your users

6. Katana: discovery first

Katana (ProjectDiscovery, 14k+ stars) crawls to find endpoints and URLs, not content. Security teams use it to map attack surface: JS file endpoints, subdomains, parameters. katana -u site.com -d 3 -jc prints every discovered endpoint as JSON, and that’s the product.

Pros

  • Fastest URL discovery per line of config in this list
  • Scope filters, field filters, and headless mode built into the CLI
  • Pairs with anything downstream. Output is endpoints; something else fetches them

Cons

  • Not a content tool. It will not clean, convert, or store what it finds
  • Scope discipline is your job. A bad glob crawls hosts you didn’t mean to touch
  • Deduplication across large runs needs your own tooling; the output is a firehose

7. Magpie: the local-first crawler that fixes its own selectors

Full disclosure up front: I build with this one, so weigh my word accordingly. Magpie is a Go crawler with a desktop app and a CLI that takes a site from fetch to clean markdown or JSON in one pipeline. No account, no cloud, and the data never leaves your machine. The non-LLM parts need no API key at all.

magpie crawl https://example.com/docs \
  --max-pages 200 --format markdown --out ./docs-corpus

The feature that earns its slot is the self-healing selector cache. Extraction selectors are stored per domain and schema in SQLite, and when a redesign breaks one, the null rate climbs and Magpie re-synthesizes the selector with an LLM pass instead of failing silently. Every other tool in this list alerts you at best when a selector dies. On sites you crawl weekly, that difference compounds.

The crawl feature page documents the scoping options: depth and page caps, same-domain scope, live progress, and a resumable visited-set.

Pros

  • Single static binary on Windows, macOS, and Linux, zero runtime dependencies; runs offline
  • Login sessions, XHR capture, and JS actions (click and fill before extraction) for sites that need them
  • A 13-tool MCP server, so coding agents can crawl without leaving the terminal
  • robots.txt respected and auto-throttle by default; polite-crawler posture, no bot-protection bypass

Cons

  • Pricing is per machine, not per page: 5 free runs per install, then $49/month (failed and stopped runs are free; a crawl counts once no matter its size). If you’d genuinely pay for hosted, Firecrawl’s entry tier is cheaper
  • Local means local. Fifty machines crawling in parallel is an orchestration problem you own; there is no hosted fleet
  • The desktop app is young. The CLI is the mature surface

If your constraint is “the data doesn’t leave this machine” (compliance, your own properties, or principle), Magpie is the strongest local option here.

Also worth a look

Two hosted names kept coming up in my testing notes without earning a full entry. Olostep is a budget crawler API with an MCP server and a CLI; the KDnuggets 2026 comparison measured it cheapest per crawl for docs and knowledge-base targets. Diffbot approaches extraction with computer vision instead of HTML parsing, which is genuinely different technology, at enterprise prices that start conversations rather than end them.

How to choose web crawling software

Picking between website crawling tools comes down to the deliverable:

  • Output feeds an LLM (RAG, agent context): Crawl4AI locally, Firecrawl hosted, Magpie if it must stay on your machine. These three emit markdown natively. Everything else needs a conversion layer you will maintain forever.
  • Output is structured records at scale: Scrapy. Nothing here beats its pipeline model for tabular data.
  • Output is URLs, not pages: Katana, or Colly for simple internal discovery. These are the data crawler tools for when the deliverable is an endpoint list.

Two questions cut the field faster than any feature matrix. Does the target render with JavaScript? That eliminates Colly and vanilla Scrapy on the spot. Does the crawl run more than once? Then selector maintenance dominates total cost, and you want a tool that notices its own breakage (Crawl4AI’s adaptive crawling, Magpie’s self-healing cache) over the one that was fastest to set up.

The math on that last point: a crawler that silently returns broken output costs you whatever you paid for the downstream embeddings, plus the weekend you spend noticing. Pricing a crawler per page is easy; pricing trust in its output is the real comparison. If you’re weighing building instead of buying, the how to build a web crawler guide walks the architecture, and the open-source web crawlers comparison goes deeper on the free options.

FAQ

What’s the difference between a web crawler and a web scraper? A crawler moves between pages by following links. A scraper extracts structured data from the pages it’s given. Most tools here do both; the emphasis differs. The full comparison covers when you need which.

Is web crawling legal? Reading publicly accessible pages is generally lawful; risk lives in what you collect (personal data, copyrighted content) and the site’s terms. Respect robots.txt and rate limits. Every tool in this list can be configured to.

Which of these web crawling tools are free? Crawl4AI, Scrapy, Crawlee, Colly, and Katana are free open source. Firecrawl has a free tier with metered credits. Magpie is a free download with 5 free runs per install before its $49/month license.

Do I need to know how to code? For Scrapy, Crawlee, Colly, and Crawl4AI, yes. Katana and Magpie have CLIs that work with defaults. Firecrawl’s hosted API is the closest to no-code: one HTTP call returns markdown.

What’s the cheapest way to crawl a 1,000-page site? Free and local: Crawl4AI or Scrapy on any machine you own, $0. Hosted: Firecrawl’s $19 tier covers it with 4,000 credits to spare. If one crawl a month is your whole workload, Magpie’s free runs cover it too.

When a crawler breaks, it breaks quietly. Output files keep arriving; they’re just wrong. Whatever you pick from this list of top web crawling tools, schedule a canary: one page you re-crawl daily and diff against yesterday. The day that diff goes empty is the day a selector died, and the canary tells you before your pipeline does. If you’re new to the vocabulary, the web crawler glossary entry defines the terms this article assumed.

Stop renting credits.

One flat price, your machine, your keys.

Download free for Windows, macOS and Linux

Windows · macOS · Linux $49/mo flat, cancel anytime