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

A scatter chart of 28 Python tools, with GitHub stars on the horizontal axis and PyPI downloads in 30 days on the vertical axis, both on log scales. The dots are spread out with no clear trend. markdownify has about 2,000 stars and 55 million downloads. MarkItDown has about 190,000 stars and 14 million downloads. pyspider has about 17,000 stars and 350 downloads
The 28 Python tools that have a GitHub repository, as of October 18, 2026. Orange dots are archived, or had no release in the 12 months before. Beautiful Soup isn't on GitHub, so it isn't shown.

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.
2 GitHub repository pages. pyspider shows a banner that says the repository was archived by the owner on June 10, 2024, and 16.8k stars. fake-useragent shows a banner that says it was archived on April 1, 2026, and 4k stars
Both repositories on October 18, 2026. Download numbers are from PyPI for September 18 to October 17, 2026.

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.

A terminal window. fake-useragent 2.2.0. Newest Chrome in its data, 136. Chrome stable from Google, 155
Real output from a short script that reads the package's bundled data and Google's Chrome version API, run on October 18, 2026.

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.

MarkItDown's pyproject.toml on GitHub, with outlines around beautifulsoup4 and markdownify in its list of dependencies
MarkItDown's package file on GitHub, October 18, 2026.

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

ToolRegistryGitHub starsDownloads in 30 daysLatest release
ScrapyPyPI64,8724,375,385Sep 2026
Crawl4AIPyPI85,7321,308,222Oct 2026
ScraplingPyPI88,325945,967Oct 2026
Crawlee for PythonPyPI9,596920,985Oct 2026
Crawleenpm26,179630,045Sep 2026
requests-htmlPyPI13,804370,885Feb 2019
GerapyPyPI3,515367Jul 2023
pyspider (archived)PyPI16,756350Apr 2018
Playwrightnpm97,951434,848,047Oct 2026
Playwright for PythonPyPI15,047106,845,345Oct 2026
Puppeteernpm95,71547,056,101Oct 2026
SeleniumPyPI34,55529,236,515Oct 2026
SeleniumBasePyPI13,0841,436,069Oct 2026
puppeteer-clusternpm3,513764,429Nov 2025
ZendriverPyPI1,459224,409Oct 2026
PydollPyPI7,12470,812Sep 2026
HeliumPyPI8,32529,087Jul 2026
Browser UsePyPI118,3498,109,495Oct 2026
Beautiful SoupPyPINot on GitHub291,910,494Jun 2026
Cheerionpm30,518111,784,189Jan 2026
markdownifyPyPI2,25455,268,513Jun 2026
Turndownnpm11,47738,322,609Apr 2026
MarkItDownPyPI190,79714,172,525Sep 2026
TrafilaturaPyPI6,97914,045,972Oct 2026
html2textPyPI2,17312,609,351Apr 2025
Readability.jsnpm11,50311,555,962Mar 2025
selectolaxPyPI1,6935,707,624Oct 2026
ParselPyPI1,3623,175,834Sep 2026
Defuddlenpm9,7172,245,808Oct 2026
mdreamnpm1,02184,313Oct 2026
NiquestsPyPI2,4711,442,229Sep 2026
hrequestsPyPI1,02613,095Dec 2024
curl_cffiPyPI6,73030,897,255Sep 2026
fake-useragent (archived)PyPI4,0486,568,346Apr 2025
PatchrightPyPI1,5684,062,527Oct 2026
BrowserForgePyPI1,2732,113,140Feb 2026
CamoufoxPyPI12,621983,935Oct 2026
CloakBrowserPyPI32,273807,424Oct 2026
puppeteer-real-browsernpm1,647203,442Sep 2025

If you want the data or the scripts, email me and I’ll share them.

Doccraft writes research and tutorials like this for web data and AI infrastructure companies.