GitHub stars barely predicted downloads for Python scraping tools: 39 tools compared
GitHub stars are the first number you see when you compare open-source scraping tools.
So I compared stars with real installs for 39 open-source tools for crawling, browser automation and data extraction. Among the 29 Python tools, the number of stars said almost nothing about how often a tool was downloaded.
3 patterns stood out. Stars stay after a project stops. The small libraries underneath popular tools get the installs. And new tools collect stars much faster than older ones.
The test
I collected everything on October 18, 2026.
- Tools. 29 Python packages and 10 npm packages. I picked them from a list of repositories I follow, plus the standard libraries in each group, like Scrapy, Playwright and Beautiful Soup. It’s not a random sample.
- Stars. From the GitHub API, for each tool’s own repository. Selenium’s and Playwright’s repositories hold several languages, so their stars aren’t for one package alone.
- Downloads. For the 30 days from September 18 to October 17, 2026. PyPI numbers come from pypistats, without mirror downloads. npm numbers come from npm’s own downloads API.
- Releases. The date of each tool’s latest release on PyPI or npm.
Downloads aren’t users. They include CI pipelines that install a package on every run, and installs that happen because another package depends on the tool. But they show what really gets installed, which stars don’t.
Stars and downloads, side by side

I measured how closely the 2 numbers rank the tools in the same order, with a rank correlation. A value of 1 means the same order, and 0 means no relationship. For the 28 Python tools with a repository, it was 0.08.
The 10 npm tools were different, at 0.85. One likely reason is that most of them are long established. Cheerio and Turndown started in 2011, and Puppeteer in 2017.
Stars stay after a project stops
A star is a one-time click. When a project stops, its stars stay.
- pyspider has 16,756 stars. It was archived in June 2024, and its last release was in April 2018. It got 350 downloads in 30 days.
- requests-html has 13,804 stars. Its last release was in February 2019. It still got 370,885 downloads in 30 days.
- fake-useragent was archived on April 1, 2026. It got 6.6 million downloads in 30 days.

For a scraper, an inactive library can cause real problems. fake-useragent returns user agent strings from data that ships inside the package. Its newest Chrome version is 136. On October 18, 2026, Chrome’s stable version was 155.

So a scraper that uses it sends a Chrome version 19 releases older than the stable one. In my 472-site test, copying Chrome’s user agent didn’t do better than an honest one anyway.
The libraries underneath get the installs
Some of the most installed tools have few stars. One reason is that other tools depend on them.
- markdownify has 2,254 stars and got 55.3 million downloads in 30 days.
- MarkItDown, from Microsoft, has 190,797 stars, the most of all 39 tools. It got 14.2 million downloads.
MarkItDown lists markdownify and Beautiful Soup as required dependencies. So every MarkItDown install also installs both of them.

Beautiful Soup shows the same pattern at a larger scale. Its code is hosted on Launchpad, not GitHub, so it has no GitHub stars. It got 291.9 million downloads in 30 days, the most of all 29 Python packages.
Trafilatura and html2text are similar. Trafilatura has 6,979 stars and got 14.0 million downloads. html2text has 2,173 stars and got 12.6 million.
New tools collect stars faster
Scrapling started in October 2024 and has 88,325 stars. Scrapy started in 2010 and has 64,872. In the same 30 days, Scrapy got 4.4 million downloads and Scrapling about 950,000.
Close to a million downloads a month is real use for a 2-year-old project. But the stars alone suggest a different order than the downloads do. Crawl4AI shows the same thing, with 85,732 stars and 1.3 million downloads.
Stars and downloads can also both be high. Browser Use has 118,349 stars and got 8.1 million downloads.
What to check before you add a tool
- The latest release date on PyPI or npm, not only the last commit. requests-html had a commit in 2023 but no release since 2019.
- The archive banner at the top of the GitHub page.
- Downloads over time. pypistats.org and npm’s package pages show the trend for free.
- Bundled data. Tools that ship user agents, fingerprints or browser builds get old when releases stop.
- What it depends on. A popular tool can rely on small libraries for its core work. MarkItDown converts HTML with markdownify.
All 39 tools
| Tool | Registry | GitHub stars | Downloads in 30 days | Latest release |
|---|---|---|---|---|
| Scrapy | PyPI | 64,872 | 4,375,385 | Sep 2026 |
| Crawl4AI | PyPI | 85,732 | 1,308,222 | Oct 2026 |
| Scrapling | PyPI | 88,325 | 945,967 | Oct 2026 |
| Crawlee for Python | PyPI | 9,596 | 920,985 | Oct 2026 |
| Crawlee | npm | 26,179 | 630,045 | Sep 2026 |
| requests-html | PyPI | 13,804 | 370,885 | Feb 2019 |
| Gerapy | PyPI | 3,515 | 367 | Jul 2023 |
| pyspider (archived) | PyPI | 16,756 | 350 | Apr 2018 |
| Playwright | npm | 97,951 | 434,848,047 | Oct 2026 |
| Playwright for Python | PyPI | 15,047 | 106,845,345 | Oct 2026 |
| Puppeteer | npm | 95,715 | 47,056,101 | Oct 2026 |
| Selenium | PyPI | 34,555 | 29,236,515 | Oct 2026 |
| SeleniumBase | PyPI | 13,084 | 1,436,069 | Oct 2026 |
puppeteer-cluster | npm | 3,513 | 764,429 | Nov 2025 |
| Zendriver | PyPI | 1,459 | 224,409 | Oct 2026 |
| Pydoll | PyPI | 7,124 | 70,812 | Sep 2026 |
| Helium | PyPI | 8,325 | 29,087 | Jul 2026 |
| Browser Use | PyPI | 118,349 | 8,109,495 | Oct 2026 |
| Beautiful Soup | PyPI | Not on GitHub | 291,910,494 | Jun 2026 |
| Cheerio | npm | 30,518 | 111,784,189 | Jan 2026 |
| markdownify | PyPI | 2,254 | 55,268,513 | Jun 2026 |
| Turndown | npm | 11,477 | 38,322,609 | Apr 2026 |
| MarkItDown | PyPI | 190,797 | 14,172,525 | Sep 2026 |
| Trafilatura | PyPI | 6,979 | 14,045,972 | Oct 2026 |
| html2text | PyPI | 2,173 | 12,609,351 | Apr 2025 |
| Readability.js | npm | 11,503 | 11,555,962 | Mar 2025 |
| selectolax | PyPI | 1,693 | 5,707,624 | Oct 2026 |
| Parsel | PyPI | 1,362 | 3,175,834 | Sep 2026 |
| Defuddle | npm | 9,717 | 2,245,808 | Oct 2026 |
| mdream | npm | 1,021 | 84,313 | Oct 2026 |
| Niquests | PyPI | 2,471 | 1,442,229 | Sep 2026 |
| hrequests | PyPI | 1,026 | 13,095 | Dec 2024 |
| curl_cffi | PyPI | 6,730 | 30,897,255 | Sep 2026 |
| fake-useragent (archived) | PyPI | 4,048 | 6,568,346 | Apr 2025 |
| Patchright | PyPI | 1,568 | 4,062,527 | Oct 2026 |
| BrowserForge | PyPI | 1,273 | 2,113,140 | Feb 2026 |
| Camoufox | PyPI | 12,621 | 983,935 | Oct 2026 |
| CloakBrowser | PyPI | 32,273 | 807,424 | Oct 2026 |
puppeteer-real-browser | npm | 1,647 | 203,442 | Sep 2025 |
If you want the data or the scripts, email me and I’ll share them.