
Scrapling MCP Server
io.github.D4VinciPublished by GitHub account D4Vinciv0.5.1Updated Nov 5, 2026
Web scraping with stealth HTTP, real browsers, and Cloudflare bypass. CSS selectors supported.
Overview
Scrapling MCP server lets an AI assistant fetch, render and crawl websites with stealth browsers and extract structured data.
- What you can do
- Fetch pages over HTTP or through stealth browsers, including JavaScript rendering and Cloudflare challenge handling
- Interact with sites and capture the background API calls behind them
- Parse and extract data with CSS, XPath, text and regex selection, plus clean Markdown output
- Run concurrent crawls with proxy rotation, retries, pause/resume and JSON, JSONL, CSV or XML exports
- When to use it
- Useful when an assistant needs to collect data from live websites, including JavaScript-heavy or bot-protected pages, or to run a multi-page crawl and export the results instead of relying on a single page fetch.
- Requirements
- Runs as a local process over stdio, installed from PyPI with uvx (or the published container image), so a Python/uv runtime is needed. No authentication, environment variables or headers are declared. Network access to the target sites is required.
Installation
In SourceWeft
- Open Scrapling MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[Scrapling Poster]
Effortless Web Scraping for the Modern Web
[D4Vinci%2FScrapling | Trendshift]
[Star History Rank]
[README بالعربية]
[README en Español]
[README em Português (Brasil)]
[README en Français]
[README auf Deutsch]
[简体中文版自述文件]
[日本語のREADME]
[Русская версия README]
[한국어 README]
[Tests]
[PyPI version]
[Docker Pulls]
[PyPI package downloads]
[Static Badge]
[OpenClaw Skill]
[Discord]
[X (formerly Twitter) Follow]
[Supported Python versions]
Selection methods · Fetchers · Spiders · Proxy Rotation · CLI · MCP
Scrapling is a Python Web Scraping framework that brings fast HTTP requests, stealth browsers, powerful parsing, and concurrent crawling into one library.
Scrape static pages, render JavaScript, interact with websites, and extract data from the API calls behind them. Build crawlers with reusable sessions, proxy rotation, automatic retries, pause/resume, and built-in data exports.
Use it from Python, the terminal, or your AI agent through its MCP server and Agent Skill. From extracting a few fields to collecting a whole website as clean Markdown, Scrapling covers the full scraping workflow.
What you can do with Scrapling
- Fetch & interact: Fast HTTP requests, stealth browsers, JavaScript rendering, Cloudflare Turnstile/Interstitial handling, persistent sessions, and background API capture.
- Parse & extract: CSS, XPath, text and regex search, adaptive element tracking, similar-element matching, and clean Markdown output.
- Crawl & export: Concurrent spiders, proxy rotation, retries, AutoThrottle, pause/resume, streaming, ready-made templates, and JSON/JSONL/CSV/XML exports.
- Scrape with AI or from your terminal: An MCP server for AI agents to browse and extract data, an Agent Skill, CLI commands, and an interactive shell.
Start with a single page:
Or scale up with a spider:
This prints 10 and saves the quotes and authors to quotes.json.
Platinum Sponsors
Do you want to show your ad here? Click here
Sponsors
[Image] [Image] [Image] [Image] [Image] [Image]
Do you want to show your ad here? Click here and choose the tier that suits you!
Key Features
Spiders - A Full Crawling Framework
- 🕷️ Scrapy-like Spider API: Define spiders with
start_urls, asyncparsecallbacks, andRequest/Responseobjects. - ⚡ Concurrent Crawling: Configurable concurrency limits, per-domain throttling, and download delays.
- 🔄 Multi-Session Support: Unified interface for HTTP requests, and stealthy headless browsers in a single spider - route requests to different sessions by ID.
- 💾 Pause & Resume: Save pending requests and seen URLs with
crawldir. Press Ctrl+C to stop gracefully and restart with the same directory. - 📡 Streaming Mode: Stream scraped items as they arrive via
async for item in spider.stream()with real-time stats - ideal for UI, pipelines, and long-running crawls. - 🛡️ Blocked Request Detection: Automatic detection and retry of blocked requests with customizable logic.
- 🚦 AutoThrottle: Stop guessing delays. The spider tunes the delay of each domain on its own from how fast the website responds, then doubles it (or waits what
Retry-Afterasks) whenever the website starts blocking or rate-limiting you, and speeds back up once it stops. - 🤖 Robots.txt Compliance: Optional
robots_txt_obeyflag that respectsDisallow,Crawl-delay, andRequest-ratedirectives with per-domain caching. - 🧪 Development Mode: Cache responses to disk on the first run and replay them on subsequent runs - iterate on your
parse()logic without re-hitting the target servers. - 🧩 Ready-made Spider Templates: Skip the boilerplate with
CrawlSpiderfor rule-based link following,SitemapSpiderfor sitemap/robots.txt-driven crawls,XMLFeedSpider/CSVFeedSpiderfor iterating XML/RSS and CSV feeds, andShopifySpiderto collect products from public Shopify stores, one item per variant. - 🔗 Link Extraction: A standalone
LinkExtractorprimitive with allow/deny patterns, domain filters, CSS/XPath scoping, extension filtering, and canonicalization - use it inside the templates or on its own. - 📦 Built-in Export: Export results through hooks and your own pipeline or the built-in JSON/JSONL/CSV/XML exporters with
result.items.to_json(),to_jsonl(),to_csv(), andto_xml().
Advanced Websites Fetching with Session Support
- HTTP Requests: Fast and stealthy HTTP requests with the
Fetcherclass. Can impersonate browsers' TLS fingerprint, headers, and use HTTP/3. - Dynamic Loading: Fetch dynamic websites with full browser automation through the
StealthyFetcherclass supporting Playwright's Chromium and Google's Chrome. - Anti-bot Bypass: Advanced stealth capabilities with
StealthyFetcherand fingerprint spoofing. Can easily bypass all types of Cloudflare's Turnstile/Interstitial with automation. - Session Management: Persistent session support with
FetcherSessionandStealthySessionclasses for cookie and state management across requests. - Proxy Rotation: Built-in
ProxyRotatorwith cyclic or custom rotation strategies across all session types, plus per-request proxy overrides. - Domain & Ad Blocking: Block requests to specific domains (and their subdomains) or enable built-in ad blocking (~3,500 known ad/tracker domains) in browser-based fetchers.
- DNS Leak Prevention: Optional DNS-over-HTTPS support to route DNS queries through Cloudflare's DoH, preventing DNS leaks when using proxies.
- Remote Browsers: Instead of launching a browser locally, connect to one that's already running through CDP with
cdp_url, whether it's on the same machine, another host, or a managed browser provider. You can also point any browser fetcher at your own Chromium build withexecutable_path. - Background API Capture: Enable
record_requests=Trueon a browser session, then search its saved responses withsession.network.search(limit=None). Read API data and HTTP errors across page loads without sending requests again. History is bounded and saves text response bodies. - Async Support: Complete async support across all fetchers and dedicated async session classes.
Parsing and Data Extraction
- 🔄 Smart Element Tracking: Relocate elements after website changes using intelligent similarity algorithms.
- 🎯 Smart Flexible Selection: CSS selectors, XPath selectors, filter-based search, text search, regex search, and more.
- 🔍 Find Similar Elements: Automatically locate elements similar to found elements.
AI Features
- 🤖 MCP Server: Let AI chatbots and agents (Claude/Cursor/etc) scrape through Scrapling with HTTP requests, browser actions, screenshots, saved login state, and background API responses. Uses our stealthy browser with the right tools to enable suitable AI models to bypass any CAPTCHA is faces while working (not to mention our Cloudflare solver). It uses a lot of methods to reduce the content sent to the model, block ads, and protect it against Prompt-Injection. Remote browsers over CDP and HTTP transport with authentication options are included. (demo video)
- 🧠 Agent Skill: A ready-to-install Agent Skill that teaches coding agents the whole library, so the code they write with Scrapling matches the current API instead of guessing.
- 📚 RAG-ready Markdown: Turn any page into clean, sanitized, LLM-ready Markdown with one line (
page.markdown()), or crawl a whole website into a Markdown corpus with theContentSpidertemplate, all without an LLM in the loop. (docs)
High-Performance & battle-tested Architecture
- 🚀 Lightning Fast: Optimized performance outperforming most Python scraping libraries.
- 🔋 Memory Efficient: Optimized data structures and lazy loading for a minimal memory footprint.
- ⚡ Fast JSON Serialization: 10x faster than the standard library.
- 🏗️ Battle tested: Not only does Scrapling have 92% test coverage and full type hints coverage, but it has been used daily by hundreds of Web Scrapers over the past year.
Developer/Web Scraper Friendly Experience
- 🎯 Interactive Web Scraping Shell: Optional built-in IPython shell with Scrapling integration, shortcuts, and new tools to speed up Web Scraping scripts development, like converting curl requests to Scrapling requests and viewing requests results in your browser.
- 🚀 Use it directly from the Terminal: Optionally, you can use Scrapling to scrape a URL without writing a single line of code!
- 🛠️ Rich Navigation API: Advanced DOM traversal with parent, sibling, and child navigation methods.
- 🧬 Enhanced Text Processing: Built-in regex, cleaning methods, and optimized string operations.
- 📝 Auto Selector Generation: Generate robust CSS/XPath selectors for any element.
- 🔌 Familiar API: Similar to Scrapy/BeautifulSoup with the same pseudo-elements used in Scrapy/Parsel.
- 🤝 Drop-in Scrapy Integration: Already invested in Scrapy? Decorate any callback with
scrapling_responseto parse the responses you already fetch with Scrapling's parser, no rewrite needed. - 📘 Complete Type Coverage: Full type hints for excellent IDE support and code completion. The entire codebase is automatically scanned with PyRight and MyPy with each change.
- 🔋 Ready Docker image: With each release, a Docker image containing all browsers is automatically built and pushed.
Getting Started
Let's give you a quick glimpse of what Scrapling can do without deep diving.
Basic Usage
HTTP requests with session support
Advanced stealth mode
Full browser automation
Spiders
Build full crawlers with concurrent requests, multiple session types, and pause/resume:
Use multiple session types in a single spider:
Pause and resume long crawls with checkpoints by running the spider like this:
With crawldir set, press Ctrl+C to save pending requests and seen URLs. Restart with the same crawldir to resume. Save scraped items separately.
Or skip writing the crawling logic altogether with the ready-made templates, like pulling an entire Shopify store's catalog:
The template reads products exposed through public collection endpoints, one item per variant.
Advanced Parsing & Navigation
You can use the parser right away if you don't want to fetch websites like below:
And it works precisely the same way!
Async Session Management Examples
CLI & Interactive Shell
Scrapling includes a powerful command-line interface:
Launch the interactive Web Scraping shell
Extract pages to a file directly without programming. Use --css-selector to pick the content, or --ai-targeted to select and sanitize the body content. Use .txt for text, .md for Markdown, or .html for HTML.
[!NOTE] There are many additional features, but we want to keep this page concise, including the MCP server and the interactive Web Scraping Shell. Check out the full documentation here
Performance Benchmarks
Scrapling isn't just powerful-it's also blazing fast. The following benchmarks compare Scrapling's parser with the latest versions of other popular libraries.
Text Extraction Speed Test (5000 nested elements)
Element Similarity & Text Search Performance
Scrapling's adaptive element finding capabilities significantly outperform alternatives:
All benchmarks represent averages of 100+ runs. See benchmarks.py for methodology.
Installation
Scrapling requires Python 3.10 or higher:
[!IMPORTANT] This installation only includes the parser engine and its dependencies, without any fetchers or commandline dependencies. So importing anything from
scrapling.fetchersorscrapling.spiders, like in the examples above, will raiseModuleNotFoundErrorwith this installation alone. If you are going to use any of the fetchers or spiders, install the fetchers' dependencies first as shown below.
Optional Dependencies
-
If you are going to use any of the extra features below, the fetchers, or their classes, you will need to install fetchers' dependencies and their browser dependencies as follows:
This downloads all browsers, along with their system dependencies and fingerprint manipulation dependencies.
Or you can install them from the code instead of running a command like this:
-
Extra features:
- Install the MCP server feature:
- Install dependencies for (building RAG systems):
- Install shell features (Web Scraping shell and the
extractcommand): - Install everything:
Run
scrapling installwhen you need browser fetchers. HTTP requests do not need a browser installation.
Docker
You can also install a Docker image with all extras and browsers with the following command from DockerHub:
Or download it from the GitHub registry:
This image is automatically built and pushed using GitHub Actions and the repository's main branch.
Contributing
We welcome contributions! Please read our contributing guidelines before getting started.
Disclaimer
[!CAUTION] This library is provided for educational and research purposes only. By using this library, you agree to comply with local and international data scraping and privacy laws. The authors and contributors are not responsible for any misuse of this software. Always respect the terms of service of websites and robots.txt files.
🎓 Citations
If you have used our library for research purposes please quote us with the following reference:
License
This work is licensed under the BSD-3-Clause License.
Acknowledgments
This project includes code adapted from:
- Parsel (BSD License)-Used for translator submodule
Source: README.md at commit 3a4bb5b
Tools
0Version history
2- v0.5.1LatestNov 5, 2026
- v0.4.15Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts