GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - spider-rs/spider: Foundational low latency web data collecting in Rust

BranchesTags
Open more actions menu

Latest commit

 

History

2,321 Commits
2,321 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.github
.github
 
 
assets
assets
 
 
benches
benches
 
 
examples
examples
 
 
spider
spider
 
 
spider_agent
spider_agent
 
 
spider_agent_html
spider_agent_html
 
 
spider_agent_types
spider_agent_types
 
 
spider_cli
spider_cli
 
 
spider_mcp
spider_mcp
 
 
spider_utils
spider_utils
 
 
spider_worker
spider_worker
 
 
.editorconfig
.editorconfig
 
 
.gitignore
.gitignore
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
default.nix
default.nix
 
 
release.sh
release.sh
 
 

Repository files navigation

Spider

Spider

The fastest web crawler and scraper for Rust.

Crates.io Downloads Documentation Discord License

spider.cloud · Guides · Docs · Examples · Discord


Spider is a concurrency-first crawling engine written in Rust. It streams pages as they arrive, renders JavaScript only on pages that need it, and scales from a single script to a distributed fleet without changing your code. The same engine runs Spider Cloud, so you can prototype locally and move to managed infrastructure with one config change.

Start in the cloud

The hardest part of crawling at scale isn't the code. It's the proxies, headless browsers, and constant anti-bot churn. Spider Cloud runs all of that for you behind the same API.

Get a free API key → (no card required)

[dependencies]
spider = { version = "2", features = ["spider_cloud"] }
use spider::configuration::{SpiderCloudConfig, SpiderCloudMode};
use spider::website::Website;

let cloud = SpiderCloudConfig::new("sk-...")
    .with_mode(SpiderCloudMode::Smart); // proxy by default, stealth scrape when blocked

let mut website = Website::new("https://example.com")
    .with_spider_cloud_config(cloud)
    .build()?;

Smart mode routes through proxies first and escalates to a stealth /scrape only on pages that fight back, so you pay for bypass only where it's needed.

Or run it locally

No key, no service. Just the crawler.

[dependencies]
spider = "2"
use spider::{tokio, website::Website};

#[tokio::main]
async fn main() {
    let mut website = Website::new("https://example.com");
    let mut rx = website.subscribe(16);

    tokio::spawn(async move {
        while let Ok(page) = rx.recv().await {
            println!("{}  {}", page.status_code, page.get_url());
        }
    });

    website.crawl().await;
    website.unsubscribe();
}

Pages stream in as they're fetched. The crawler finds the links, stays inside the limits you set, and stops on its own.

How it works

Spider runs HTTP-first and launches headless Chrome only when a page needs JavaScript. Both the HTTP and Chrome paths stream, so pages come back as they're fetched instead of batching at the end. The same API drives one async task or a distributed worker fleet, and the concurrency model doesn't change between them. Proxies, retries, rate limiting, and stealth are built in.

Install

You want… Run
Rust library cargo add spider
Command-line tool cargo install spider_cli
Node.js package npm i @spider-rs/spider-rs
Python package pip install spider_rs
MCP server (Claude, Cursor, …) cargo install spider_mcp
Managed crawling spider.cloud

Configuration

Every option has a sensible default, so set only what you need.

let mut website = Website::new("https://example.com")
    .with_limit(50)                    // concurrent requests
    .with_depth(10)                    // how deep to follow links
    .with_delay(500)                   // pause between requests (ms)
    .with_respect_robots_txt(true)
    .with_subdomains(true)
    .with_user_agent(Some("MyBot/1.0"))
    .with_stealth(true)
    .build()
    .unwrap();

Full reference in the Configuration docs.

For JavaScript-heavy sites, enable features = ["chrome"] and call crawl_smart(). Spider tries HTTP first and only launches Chrome on pages that need it.

Use cases

Teams use Spider to feed the open web into vector stores for LLM and RAG pipelines, monitor sites for SEO and price changes, export pages as Markdown, JSON, or WARC, and drive headless Chrome for AI browsing agents. There are 50+ runnable examples to start from.

Learn more

  • Guides for recipes and integrations
  • API docs for every option and method
  • Discord for questions and ideas
  • Issues for bugs and feature requests
  • Spider Shield, a free firewall app built on the same blocklists as the firewall feature

Contributing

PRs welcome. See CONTRIBUTING.md.

cargo test -p spider                  # unit tests
RUN_LIVE_TESTS=1 cargo test           # live network tests

License

MIT.

About

Foundational low latency web data collecting in Rust

spider.cloud/github

Topics

ai-agentautomationcrawlerheadless-chromerustscrapingspiderweb-crawlerweb-dataweb-scraping

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

2.8k stars

Watchers

19 watching

Forks

326 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.