Enterprise-Grade, Self-Hosted SEO Crawler & Technical Auditing Platform
An open-source alternative to Screaming Frog, Sitebulb & Ahrefs β unlimited URLs, zero subscription, 100% local.
Features Β· Installation Β· Usage Β· Configuration Β· Contributing
Crawler is an enterprise-grade, self-hosted technical SEO platform built for SEO professionals, developers, and website owners. It provides limitless crawling and deep technical auditing without subscription fees or per-URL limits.
At its core, Crawler is driven by a multithreaded engine capable of analyzing thousands of URLs concurrently β with per-host politeness, adaptive rate-limit backoff, and WAF detection baked in. It goes beyond basic HTML parsing by offering headless JavaScript rendering for modern frameworks (React, Vue, SPAs) and intelligent CMS detection with one-click recommended settings.
Unlike cloud-based SEO platforms, Crawler runs 100% locally. Your website data, crawl histories, and architectural insights never leave your machine, ensuring absolute privacy and security.
- Unlimited URLs β crawl 10 or 10,000+ pages concurrently, no paywall.
- Multithreaded β
ThreadPoolExecutor-based workers (1β20) with per-host politeness delays. - Adaptive Rate Limiting β automatic slow-down and host pause on
429/403/503, with WAF detection (Wordfence, Cloudflare, Sucuri, SiteGround). - Smart Retries β exponential backoff,
Retry-Aftersupport, and User-Agent fallback. - robots.txt Aware β full Google wildcard spec (
*,$, longest-match-wins), with an opt-out toggle. - Headless JS Rendering β optional Playwright integration for React, Vue, and SPA frameworks, plus a JS vs non-JS content diff that shows what AI crawlers (GPTBot, ClaudeBotβ¦) would miss.
- Bot-Challenge Solver β headed-browser fallback (Linux/Xvfb) for hosts behind Cloudflare "Just a momentβ¦" interstitials.
- Crawl Identity β crawl as Chrome, Firefox, Googlebot, bingbot, or a custom User-Agent.
- On-Page SEO β Titles, Meta Descriptions, H1/H2, Canonicals, Hreflang, and anchor-text quality.
- Images β missing/empty alt classification (W3C accessible-name aware), decorative & tracker filtering.
- Structured Data β JSON-LD and Microdata (Schema.org) detection.
- Indexability β
noindex,X-Robots-Tag, robots.txt rules, and AI-crawler blocking detection (GPTBot, ClaudeBot, PerplexityBot, Bytespiderβ¦). - Technical Health β broken links, redirect chains, 4xx/5xx, mixed content, and SSL-chain issues.
- Content Quality β thin content, near-duplicate pages (n-gram shingling), URL-trap / soft-404 probing.
- Performance β per-page estimates (TTFB, document weight, render-blocking resources, DOM size) + real Lighthouse audits via Google PageSpeed Insights.
- SEO Score β a live 0β100 score per crawl, computed from the weighted issue results.
- Issue Prioritization β every issue grouped by severity (Errors / Warnings / Info) with expert "why it matters" context and sources.
- Aggregated Reports β duplicate titles / metas / H1s / bodies, redirect chains, orphan pages (sitemap diff), depth distribution, response codes.
- Crawl Compare β diff two crawls: added / removed / changed URLs, aggregate metrics, and structure shifts.
- Saved History β automatic 30-day crawl history with save / load / delete, plus suspend & resume and continue-at-page-cap support.
- Bulk Export β
CSV, styled multi-sheet.xlsx(Excel), and standards-compliantsitemap.xml(auto split into a sitemap index beyond 50,000 URLs).
- In-App Auto-Update β one click reconciles your checkout to
origin/main(Windows-safe). - Proxy Support β round-robin proxy pool via
proxies.txt. - Docker Ready β single
docker compose updeployment.
| Feature | Crawler (This Project) | Screaming Frog (Free) | Screaming Frog (Paid) | Ahrefs |
|---|---|---|---|---|
| URL Limit | Unlimited | 500 | Unlimited | Per-credit |
| Price | Free | Free | Β£199 / yr | $129+ / mo |
| Headless JS Rendering | β Yes | β Yes | β Yes | β No |
| AI-Crawler Visibility Report | β Yes | β No | β No | β No |
| Data Export | β CSV, XLSX & XML | β CSV/Excel | β CSV/Excel | β CSV |
| Self-Hosted | β Yes | β Yes | β Yes | β Cloud |
| Open Source | β Yes | β No | β No | β No |
Prerequisite: Python 3.10+
git clone https://github.com/alfa546/Crawler.git
cd Crawler
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 app.pyThen open http://localhost:5002/ in your browser.
π‘ For JavaScript-rendered sites (React / Vue / SPAs), also install Playwright:
pip install playwright && playwright install chromium
git clone https://github.com/alfa546/Crawler.git
cd Crawler
docker compose up -dThe container listens on port 5002 (JS rendering included).
Automated setup scripts that register Crawler to start on boot and auto-update daily:
Linux (Ubuntu / Debian / Mint)
curl -fsSL https://raw.githubusercontent.com/alfa546/Crawler/main/install.sh -o install.sh && chmod +x install.sh && ./install.shmacOS
curl -fsSL https://raw.githubusercontent.com/alfa546/Crawler/main/install-macos.sh -o install-macos.sh && chmod +x install-macos.sh && ./install.shWindows 10/11 (PowerShell)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/alfa546/Crawler/main/install-windows.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File .\install.ps1- Enter a website URL in the main dashboard.
- Click Apply recommendations for your detected CMS to auto-configure settings.
- Tweak parameters if needed (Max Pages, Workers, Crawl Delay, Render JS).
- Hit Start crawl β the Summary Dashboard streams live results as pages are audited.
- Review reports (Issues, Duplicates, Redirects, Images, Sitemap diff), then download bulk reports via
.csv,.xlsx, orsitemap.xml.
Handy mid-crawl controls: pause & resume, continue past the page cap, adjust include/exclude rules and crawl delay live, and re-crawl any single URL for a fresh audit.
Crawler works with zero configuration. Optional settings:
| Setting | How | Purpose |
|---|---|---|
PAGESPEED_API_KEY |
.env file |
Raises Google PageSpeed Insights quota for real Lighthouse audits. Get a free key. |
FLASK_DEBUG=1 |
Environment variable | Enables Flask debug mode (development only β never expose publicly). |
proxies.txt |
Project root | One proxy per line (IP:PORT, IP:PORT:USER:PASS, or http://β¦). Round-robin rotation. |
SITE_CRAWLER_EXTRA_CRAWL_DIRS |
Environment variable | :-separated extra read-only folders for shared crawl history. |
π Privacy: crawls are stored locally in
~/.site-crawler-crawls/and are never uploaded anywhere. The.envfile is excluded from the repository and Docker images.
| Layer | Technology |
|---|---|
| Backend | Python 3.10+, Flask, Requests |
| Parsing | BeautifulSoup4, lxml |
| Concurrency | ThreadPoolExecutor, per-host politeness locks, adaptive backoff |
| JS Rendering | Playwright (headless Chromium; headed mode for challenge solving) |
| Data Export | Openpyxl (.xlsx), stdlib (.csv, .xml, .zip) |
| Frontend | Vanilla HTML/CSS/JS (Jinja2 templates), Server-Sent Events for live streaming |
Crawler/
βββ app.py # Flask entrypoint
βββ crawler/
β βββ engine.py # Concurrent crawl engine + SSE streaming
β βββ routes.py # REST API & UI routes
β βββ seo_analyzer.py # On-page audit rules, CMS detection
β βββ performance.py # Perf estimates + PageSpeed Insights client
β βββ export_utils.py # XLSX / sitemap.xml exports
β βββ utils.py # URL normalization, robots.txt, sitemap walk
β βββ proxy_manager.py # Proxy pool
β βββ globals.py # Shared crawl state
βββ challenge_browser.py # Headed-browser Cloudflare fallback
βββ static/ # Frontend assets
βββ templates/ # Jinja2 UI
Contributions are warmly welcome! Whether you are reporting bugs, improving the UI, or adding new features (like Core Web Vitals site-wide passes or custom XPath extraction), please read our CONTRIBUTING.md.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open-source software licensed under the MIT License. Copyright (c) 2026 Nouman Sajid.
Your data stays yours. Crawler runs entirely on your machine β no telemetry, no cloud sync, no per-URL limits.
If you find Crawler useful, please consider giving it a β β it helps other SEO professionals discover the project.
Built with β€οΈ by Nouman Sajid and the Open Source Community.
