mrkeyoor.com_
Wed 16 Sept 22:10 UTC
AI Toolsevaluationupdated 27 Aug 2026

Scrapling review

Scrapling is a Python scraping framework that combines HTML parsing, HTTP fetching, browser automation, adaptive selectors, spiders, and an MCP server. It is meant for jobs that start with one page but may grow into concurrent crawls with sessions, proxies, pause and resume, or agent access.

+1,779stars / 7d
Verdict

Our Scrapling run installed in 24 seconds and passed 258 tests, but 5 failed and 110 more hit setup errors, with the log showing curl_cffi was missing. Try it when one Python project genuinely needs HTTP requests, browsers, adaptive parsing, spiders, and MCP access under one API. Use Scrapy for conventional large crawls, or a smaller parser when adaptive and anti-bot features would only add maintenance.

We ran it

Lab card: what happened when we ran ScraplingScreenshot of Scrapling (scrapling.readthedocs.io/en/latest)
Install✓ · 24s39 packages · 49 MB
Build✓ · 14s
Tests✗ · 80s258 passed · 5 failed · 110 errors of 373 (pytest)
Known vulns0(pip-audit)
Repo254 files~28,220 lines of source · 4.4 MB · 4 CI workflows · Dockerfile · tests dir

Answers from our run

Does Scrapling build from source?

Dependencies installed in 24 seconds (39 packages), and the build succeeded in 14 seconds. We cloned commit 4ce0fb1 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Scrapling's tests pass?

Not all of them: 258 of 373 passed and 5 failed when we ran the project's own test command (pytest), with 110 collection errors. Some failures need services or credentials a bare container does not have.

Does Scrapling have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use Scrapling?

Teams that only parse stable HTML already fetched elsewhere: Beautiful Soup or Parsel has a smaller dependency and behavior surface.

What are the alternatives to Scrapling?

Scrapy, Crawlee for Python, ScrapeGraphAI. Our Scrapling run installed in 24 seconds and passed 258 tests, but 5 failed and 110 more hit setup errors, with the log showing curl_cffi was missing.

Setup3/5Small base install; optional fetchers complicated the test run
Docs4/5Detailed fetcher, spider, CLI, MCP, and migration guides
Community4/576,676 stars and an August 2026 release
Maturity3/5Broad API, but v0.4.15 carried MCP breaking changes

Discussed on

  1. hnScrapling: Fast, Adaptive Web Scraping for Python4 points

Who it’s for

Python developers who need one API for plain HTTP, Chromium, stealth fetches, parsing, and spiders.
Scraping teams dealing with changing page structure and willing to verify adaptive selector matches.
AI developers who want an MCP server or cleaned Markdown output from fetched pages.
Crawlers that need sessions, proxy rotation, throttling, checkpoints, and streamed results.

Who it’s NOT for

Teams that only parse stable HTML already fetched elsewhere: Beautiful Soup or Parsel has a smaller dependency and behavior surface.
Operators unwilling to maintain browsers and optional extras: our suite produced 110 setup errors, including missing curl_cffi in CLI parser tests.
Anyone treating anti-bot claims as permission to scrape: the README advertises Turnstile handling, but site terms, robots policy, rate limits, privacy, and applicable law remain separate obligations.
MCP users who need update compatibility without review: v0.4.15 explicitly introduced breaking tool, session, and authentication changes.

Setup reality

Our sandbox installed 39 Python packages in 24 seconds and used 49 MB, then built in 14 seconds. Tests failed after 80 seconds: 258 passed, 5 failed, and 110 collection/setup errors out of 373. The log tail repeatedly reported ModuleNotFoundError: No module named 'curl_cffi'.

Basic HTTP work needs Python and target access. Browser or stealth paths add Chromium or Chrome, optional package extras, and sometimes proxies. The MCP HTTP transport needs a bearer token unless deliberately started without authentication.

The 4.4 MB checkout held 254 files and about 28,220 source lines. Pip-audit found 0 known vulnerabilities in the installed environment. The Docker image includes browsers, while local extras determine which fetchers and AI features are available.

One API spans requests, browsers, parsing, and spiders

Scrapling starts as a page fetcher and parser, then extends into a crawler framework. Fetcher handles ordinary HTTP work, DynamicFetcher drives Chromium or Chrome, and StealthyFetcher targets sites with anti-bot checks. Responses support CSS, XPath, text, regular expression, and traversal methods. The spider layer adds concurrency, sessions, request scheduling, pause and resume, proxy rotation, throttling, streaming output, and exporters. This consolidation is useful when a scraping job keeps outgrowing its first script.

The project is compact compared with that feature list. Our checkout contained 254 files, about 28,220 source lines, and occupied 4.4 MB before dependencies. GitHub showed 76,676 stars, 0 open issues and pull requests, and a last push on August 25, 2026. Release v0.4.15 arrived August 23. Zero open items is a snapshot of the public queue, not proof that every target site or optional installation combination works.

Adaptive selectors trade brittleness for possible ambiguity

Scrapling can save information about a selected element and later relocate it when a page structure changes. That can keep an extractor alive after class names or nesting move. The cost is that a similarity match may select the wrong element while still returning plausible data. Use adaptive lookup as recovery, then validate fields with types, ranges, required labels, and record counts. A scraper that never crashes can be more dangerous than one that fails loudly if it silently shifts to a nearby price or title.

The framework also supplies ready-made spider templates for rule-based links, sitemaps, XML or CSV feeds, Shopify data, and site-to-Markdown jobs. Development mode caches responses so parser changes do not keep hitting the target. Those are practical features for repeated work. They do not remove target-specific tests. Save representative pages, including blocked and malformed responses, and run extraction assertions before deploying a selector change across 10,000 URLs.

What happened when we ran it

Our sandbox cloned commit 4ce0fb1 into a fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM. Installation succeeded in 24 seconds, adding 39 Python packages and consuming 49 MB. The build succeeded in 14 seconds. Pip-audit reported 0 known vulnerabilities in the installed Python environment.

Tests failed with exit code 1 after 80 seconds. Pytest reported 258 passed, 5 failed, and 110 collection or setup errors out of 373. The final lines listed errors in spider templates, throttling, and shell functionality. Seven shown CLI parser cases raised ModuleNotFoundError: No module named 'curl_cffi', including basic curl parsing, headers, data, cookies, proxies, conversion to a fetcher, and invalid commands.

The log tail establishes one missing module in those errors, but it does not show that all 110 errors share that cause or why the package was absent. We therefore treat the run as mixed: the 24-second install and 14-second build passed, 258 tests worked, and the full suite did not. Anyone adopting optional shell, browser, spider, or AI features should install the matching extras and run the relevant suites in the intended image.

Browser and stealth modes carry the operating cost

Plain HTTP scraping is cheap. Browser sessions add executable downloads, memory, process cleanup, page timeouts, and behavior that changes with browser versions. Scrapling can keep tabs open across requests, connect to remote browsers over CDP, capture matching XHR responses, block resource domains, and use DNS over HTTPS. Each feature solves a real class of target, but each also expands the failure surface beyond a normal Python request.

Release v0.4.15 changed tab reuse so sessions keep pages open and apply per-request settings to the reused tab. It also fixed error replacement and added close_pages(). Long-running workers should still expose browser counts, open pages, request failures, memory, and shutdown success. A leaked tab repeated across 500 requests becomes an operational problem. Use the cheapest fetcher that reliably obtains the data, and reserve browsers for pages that truly require them.

MCP access should stay local or authenticated

Scrapling's MCP server lets agents perform plain, stealth, and browser fetches, maintain sessions, capture screenshots, and narrow pages with selectors. The project says it strips scripts, styles, and hidden prompt-injection content before returning page material. That cleaning is useful, but fetched text can still contain misleading instructions in visible content. An agent should treat page text as data rather than authority.

Version 0.4.15 reworked the server's 13 tools into one-shot and session modes, renamed get to make_request, and added persistent HTTP sessions. The release labels these as breaking changes. HTTP transport now binds to localhost and requires a bearer token by default; network exposure needs an explicit host setting. Keep that default, rotate the token, restrict reachable destinations, and review upgrades before changing an agent configuration.

Scraping claims need legal and data-quality checks

The README says stealth fetchers can handle Cloudflare Turnstile and advertises browser fingerprint impersonation, proxies, and blocked-request retries. Technical capability is not authorization. Operators need a documented purpose, target terms review, privacy controls, respectful request rates, and a deletion policy. The optional robots setting can honor Disallow, Crawl-delay, and Request-rate; decide policy centrally instead of leaving each script author to toggle it.

Scrapling earns a trial when a team wants one Python interface from a single fetch through a resumable crawl or MCP tool. Its 49 MB installed footprint is modest, while the failed optional-feature test setup shows why extras must be pinned and checked. For stable sites, simpler tools remain easier to trust. For difficult targets, Scrapling offers useful control, provided the team validates extracted data and owns the browser, proxy, policy, and upgrade work.

Alternatives

ProjectWhat it isPick it when
Scrapy gh↗A mature Python crawling framework with pipelines, middleware, scheduling, and selectors.pick this instead when a long-established crawler ecosystem matters more than built-in stealth browsers and MCP.
Crawlee for PythonA Python crawling library with request queues, storage, browsers, and autoscaling controls.pick this instead when Apify-style crawler orchestration and storage fit your deployment.
ScrapeGraphAI gh↗A scraping framework that uses language models to extract structured information.pick this instead when model-directed extraction matters more than Scrapling's parser and fetcher control.

What people are saying

  1. [github-trending] D4Vinci/Scrapling

Sources

  1. Scrapling README
  2. Scrapling v0.4.15 release
  3. Scrapling documentation
  4. Scrapling MCP server documentation

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →