seotools.pro Blog

How PyPI Gets 153K SEO Visits a Month

PyPI gets about 153K US search visits a month with one plain page per package. Here are 9 SEO lessons you can copy from how it does it.

PyPI gets about 153K visits a month from Google in the US, and it wins them with one plain page per Python package, named exactly what coders type.

PyPI, the Python Package Index, is where coders get packages, ready-made add-ons for the Python language. Every package gets its own page.

We ran PyPI through our whole SEO toolkit. We found what makes those pages win, and how PyPI keeps its many old copies from getting in the way.

Here are 9 lessons you can copy, plus the part you can't.

Give every package its own page

We started with our Organic Traffic Checker. It estimates a site's organic traffic, meaning the people who find it on Google without ads.

seotools.pro Organic Traffic Checker for pypi.org, United States, 4 October 2026: 153,062 estimated monthly visits, no year-over-year figure, a branded share of 4 percent of the traffic across the 100 keywords sampled, a monthly trend that starts near 110K, peaks near 210K in March 2026 and settles around 150K, and a top organic pages table led by pypi.org/project/pip/ with 44.1K visits, a 28.8 percent share and position 1 for pip, then the homepage with 4.8K at position 2 for pypi, certifi with 4.5K at position 1, nose with 3.5K at position 9 for button nose, requests with 2.6K at position 1 for python requests, pandas with 2.0K at position 4, duckduckgo-ai-chat with 1.5K at position 24, opencv-python with 1.3K at position 1 for install opencv in python, SpeechRecognition with 1.2K and yfinance with 1.2K at position 1.
What to notice: about 153K visits, and the pip page alone takes 29% of them.

For pypi.org, that's about 153K visits a month in the US. Only 4% of them come from people typing the name PyPI.

So about 24 in 25 visitors weren't looking for PyPI at all. They typed the name of a package, and Google sent them to its page.

One page stands out. The page for pip earns about 44K visits, close to 1 in 3 of the total.

Pip is the tool coders use to install packages. Here's its page.

PyPI page for pip 26.2.1, with the summary The PyPA recommended tool for installing Python packages., a pip install pip command with a copy button, Description, Release files and Release history tabs, badges for the version, Python versions and docs, a short intro that says you can use pip to install packages from the Python Package Index, project links to Source, Changelog, Documentation and Homepage, a release date of Aug 5, 2026 marked Latest release, and 8 maintainers.
What to notice: one package, one page, with the install command right at the top.

It has the name, a one-line summary and the command you'd copy to install it. That's all you need if you came to install it.

The Traffic tab of our Website Audit shows the whole world, not just the US.

seotools.pro Website Audit Traffic tab for pypi.org: 583,428 monthly visits, 100 percent organic (583,428) and 0 percent paid, growth potential estimated at 0 to 0 percent, and top countries US 26.2 percent, India 13.5 percent, Germany 9.1 percent and UK 8.3 percent, with others at 43 percent.
What to notice: about 580K search visits worldwide, and the US sends only about a quarter.

Worldwide, PyPI gets about 580K search visits a month, and it pays for none of them. The US sends about 1 in 4, and India comes next.

Docker Hub, which we studied too, is built the same way, with one page for each piece of software.

So give each thing you offer its own page, named after it. Then see which of your pages earn the visits with our Organic Traffic Checker.

Name each page what people type

The Keywords tab of our audit lists the searches a site ranks for. A keyword is just a search people type, and the tab shows where you rank and how many visits each one sends.

seotools.pro Website Audit Keywords tab for pypi.org: 356.7K ranking positions, split 40.7K in positions 1 to 5, 24.3K in 6 to 10, 45.6K in 11 to 20, 106.3K in 21 to 50 and 140K in 51 to 100, and 4 rows: pip at position 1 for pypi.org/project/pip/ with 550K searches, 22.8K visits, a CPC of 1.24 dollars and a difficulty of 93; certifi at position 1 with 74K searches and 2,365 visits; python requests at position 1 for pypi.org/project/requests/ with 5,400 searches and 1,183 visits; and button nose at position 9 for pypi.org/project/nose/ with 49.5K searches and 312 visits.
What to notice: the pip page ranks first for a search made about 550K times a month.

Look at the first row. Somebody types "pip", and PyPI's pip page is the top result.

That search happens about 550K times a month. The page wins because its name and its address match what you typed, word for word.

The same goes for certifi, a package that helps Python check secure websites. It ranks first for its own name too.

The requests page ranks first for "python requests". Requests is a package for talking to websites from your code.

PyPI page for requests 2.34.2, with the summary Python HTTP for Humans., a pip install requests command, Description, Release files and Release history tabs, a Requests heading, badges showing 1G downloads a month and 400 contributors, a code sample, project links to Source and Documentation, a release date of May 15, 2026 marked Latest release, and 3 maintainers.
What to notice: the name, a short summary and the install command, in the same spot as on pip's page.

It's built just like the pip page. The same template, a page layout every package shares, makes every one of them.

Our Organic Traffic Checker found more of the same. The opencv-python page ranks first for "install opencv in python", and yfinance ranks first for its own name.

But name matching cuts both ways. The page for nose, an old testing package, ranks 9th for "button nose".

That search gets about 50K a month. Those people wanted a cute nose, not a piece of code.

If you run a site for coders, PHP.net, the home of another coding language that we studied too, is a good next read.

So name each page after the exact word people type, and check which searches each page really wins. Our Keyword Research tool shows the words people use.

Write a fuller title and summary

Ranking is half the job. Once you're on the results page, your title and description decide whether people click.

Our free browser extension shows how a page is built. Open the page, click the seotools.pro icon, and a panel opens beside it with 35 SEO checks.

The seotools.pro browser extension on PyPI's pip page: indexable, an SEO score of 82 out of 100 with 0 critical issues, 3 warnings, 4 notices and 28 passed checks, 583.4K organic traffic per month, 15.2M backlinks, a title of 10 of 60 characters, pip · PyPI, a description of 57 of 160 characters, The PyPA recommended tool for installing Python packages., no keywords, and a self-referencing canonical of https://pypi.org/project/pip/.
What to notice: a score of 82, and a title just 10 characters long.

The pip page scores 82 out of 100. Its title, "pip · PyPI", is only 10 characters.

The description is the short summary Google may show under your title. Here it's the one line the package's makers wrote for it, "The PyPA recommended tool for installing Python packages."

The seotools.pro browser extension Issues tab on PyPI's pip page: 0 critical, 3 warnings, 4 notices and 28 passed, led by title is too short (10), meta description is too short (57), images without alt text (177 of 199 images), no structured data found, images without width/height (183) and target=_blank without noopener (4).
What to notice: the short title and the short description top the list.

The Issues tab puts both at the top. The title could say what pip does, and the description has room for 100 more characters.

Now compare the requests page. It uses the same template.

The seotools.pro browser extension on PyPI's requests page: indexable, an SEO score of 76 out of 100 with 0 critical issues, 5 warnings, 3 notices and 27 passed checks, 583.4K organic traffic per month, 15.2M backlinks, a title of 15 of 60 characters, requests · PyPI, a description of 23 of 160 characters, Python HTTP for Humans., and a self-referencing canonical of https://pypi.org/project/requests/.
What to notice: the same template scores 76, with a description of just 23 characters.

It scores 76. Its description, "Python HTTP for Humans.", is a fun motto, but it's just 23 characters when Google can show about 160.

The seotools.pro browser extension Issues tab on PyPI's requests page: 0 critical, 5 warnings, 3 notices and 27 passed, led by title is too short (15), meta description is too short (23), multiple H1 headings (2), images without alt text (181 of 197 images) and links without anchor text (4).
What to notice: 2 main headings on one page, on top of the short title and description.

It also has 2 H1s. The H1 is the tag for a page's main heading, and a page should have one.

Here the package name is one H1, and the "Requests" heading at the top of the write-up looks like the second. The makers write that part, so the template can't fully control it.

That's the catch with summaries written by each maker. Some write a full sentence, and some write a motto.

So don't leave your titles and descriptions to chance. Add what the page does to the title, set a minimum length for the description, and preview both with our Meta Tag Generator.

Mark up each package in code

Structured data is code that tells Google what a page is, like a product, a guide or a piece of software. The extension's Structured tab looks for it.

The seotools.pro browser extension Structured tab on PyPI's pip page: No structured data found on this page.
What to notice: no structured data on the pip page.
The seotools.pro browser extension Structured tab on PyPI's requests page: No structured data found on this page.
What to notice: the requests page has none either.

You won't find any on either page. Yet each one shows a version, a release date and the people who look after it.

All of that could go into code that Google reads directly. The Content tab shows what's missing.

The seotools.pro browser extension Content tab on PyPI's pip page: a readability score of 43 out of 100, main content of 2,027 of 2,199 words with 8 percent boilerplate, E-E-A-T signals with no author byline, a visible publish or update date, no datePublished or dateModified in schema, no author as Person schema and no sameAs links, 79 cited external sources, a Flesch reading ease of 42.5 rated difficult, a Flesch-Kincaid grade of 8.1, 1,131 words in 356 sentences and a reading time of 6 minutes.
What to notice: the date shows on the page, but it isn't in the code.

The pip page shows its release date, and it links to lots of outside sources. But the date isn't in the code, and there's no author in the code either.

Without that code, Google has to guess those facts from the page. It often gets them right, but you're leaving it to chance.

The same code helps AI tools. Lots of coders now ask ChatGPT or Claude which package to use, so we checked which AI crawlers may read PyPI.

The seotools.pro browser extension on PyPI's pip page showing AI search readiness: llms.txt missing, and AI crawler access from robots.txt with GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Bytespider, meta-externalagent, Applebot-Extended, Amazonbot and anthropic-ai all allowed, a robots tag of index, follow, a word count of 2,201 and a language of en.
What to notice: every AI crawler is allowed, but there's no llms.txt file.

A crawler is a program that visits pages the way Google does. The rules for crawlers live in robots.txt, a file that tells crawlers what they may read.

PyPI lets in all 10 AI crawlers the extension checks. But it has no llms.txt, a short file that explains a site to AI tools.

MDN, the coding docs site we studied too, is worth a look if AI answers matter to you.

Set your own crawler rules with our robots.txt generator. Then check whether AI tools mention you with our AI Visibility Checker.

So add code that says what each page is, which version it covers and when it changed. Our Schema Markup Generator writes it for you.

Audit what crawlers really get

The extension checks one page at a time. Our Website Audit sends its own crawler through hundreds of pages at once, so you can see which problems repeat.

It checked 250 pages on PyPI. The site scored 79 out of 100, which the report rates as fair.

seotools.pro Website Audit Overview for pypi.org: a domain health score of 79 rated fair, an audit grid with title issues on 245 pages, description on 247, headline on 101, content on 99, speed on 0, keywords on 114, images on 245, social on 0 and links on 7, 222 critical errors, 452 warnings and 1,015 notices, Domain Trust 97 of 100, 1.2M pages indexed and a domain expiry date of 2032-07-24.
What to notice: a score of 79, with 222 critical errors that need a closer look.

It also shows about 1.2M pages indexed, meaning listed by Google. The Issues tab sorts the problems by how much they matter.

seotools.pro Website Audit Issues tab for pypi.org: critical errors for the same title as other pages on 96 pages, duplicate content on 96, images missing (4XX) on 18 and images that fail to load (5XX) on 12, then warnings for images missing alt text on 246, no H1 heading on 98, no meta description on 96, outbound links to dead pages on 5, internal links through redirects on 2 and links to redirecting addresses on 2, plus crawl health of 245 pages returning 2xx and 2 returning 3xx, 245 of 247 indexable with 3 not checked, 5 broken links, 7 quick-win keywords and an organic value of 85K dollars a month.
What to notice: the top 2 errors hit the same 96 pages.

The top 2 errors are the same title and the same content on 96 pages. Lower down, 96 pages have no description and 98 have no H1.

That sounds bad, until you look at what those pages say. Every one of the 96 has the title "Client Challenge".

That's a bot check, a page that makes sure a visitor isn't a program copying the site. Our crawler got the check instead of the package page.

So most of those errors aren't PyPI's mistakes. They're the bot check, counted 96 times.

Bot checks protect a busy site from scrapers, programs that copy pages in bulk. The risk is that Google gets stopped too.

PyPI's pages rank first for their names, so Google clearly gets through. Open Library, which we studied too, also shows a bot check to unknown visitors.

The Technical SEO tab shows which pages Google may list.

seotools.pro Website Audit Technical SEO tab, Indexability, for pypi.org: 98 percent of the crawl indexable, 245 of 250 pages, 3 blocked, 2 redirects, and a note that 245 indexable pages are missing from your sitemap.
What to notice: almost every page can be listed, but most of them are missing from the sitemap the audit read.

Almost every page can be listed, which is great. But 245 of them are missing from the sitemap, the file that lists a site's pages for Google.

Most of those are pages for old versions, which you may not want in a sitemap anyway. It's still worth checking that the main page for each package is in there.

You don't have to work out what to fix first. The audit's AI tab writes the plan: a short summary, each problem with how to fix it, and a to-do list for the next 3 months.

seotools.pro Website Audit AI tab for pypi.org: an executive brief saying PyPI has a solid baseline score of 79 but duplicate content, duplicate page titles, missing descriptions and broken images on a small set of package and profile pages, a duplicate content problem with how to fix it by consolidating or canonicalizing the duplicated pages, and a 90-day improvement plan whose first 30 days hold 5 tasks, starting with a high-priority task to resolve duplicate content and title collisions on the requests version cluster.
What to notice: the first task is the copies of the requests page.

The plan reads the same numbers, so it counts the bot check pages too. But its first task holds up: the many pages for old versions of requests.

So run our Website Audit, then open the pages behind the biggest errors. If they all share a title like "Client Challenge", test them as Google before you fix anything.

Point old versions to the main page

Every time a package gets an update, PyPI keeps a page for the old version. The audit's Duplicates card shows what that looks like.

seotools.pro Website Audit Technical SEO tab, Duplicate content, for pypi.org: duplicate titles on 231 pages, led by Client Challenge on 96 pages with no shared canonical, requests · PyPI on 72 pages and wheel · PyPI on 63 pages, and duplicate descriptions on 146 pages, led by Python HTTP for Humans. on 69 pages, A built-package format for Python. on 32, A built-package format for Python on 24, The Python Package Index (PyPI) is a repository of software for the Python programming language. on 12 with no shared canonical, Command line tool for manipulating wheel files on 7 and Awesome Python HTTP Library that's actually usable. on 2.
What to notice: 72 pages share the title "requests · PyPI", and only the bot check has "no shared canonical".

The title "requests · PyPI" shows up on 72 pages. "Python HTTP for Humans." is the description on 69.

Those are the requests page and its old versions, each with its own address. The wheel package, a format for sharing Python code, has the same story on 63 pages.

To Google, that's a lot of pages that look alike. If you were Google, which one would you rank?

PyPI answers that with a canonical tag, a tag that tells Google which address is the main copy. Our audit's page list shows every old requests and wheel page we reached pointing to the package's main page.

Look at the card again. "No shared canonical" shows up next to the bot check, but not next to requests or wheel.

That's why the main requests page still ranks first, even with dozens of look-alikes. The old pages stay open for anyone who needs them, and Google knows to send searchers to the main one.

The other choice is noindex, a tag that tells Google not to list a page. Use it if you'd never want an old version to show up at all.

So if you keep old versions, point each one at the main page with a canonical tag. Then run our Website Audit to check that every copy does.

Work with us
Make Google rank the right copy

PyPI keeps a page for every old version, and each one tells Google which page is the main one. We find the look-alike pages on your site, decide which one should rank, and set the tags so Google gets it right.

  • We find pages that share a title or description
  • We set canonical and noindex rules for old and near-copy pages
  • We test your bot checks so Google gets the real page
  • SEO and GEO, so AI answers can quote you too
Book a free consultation → See our SEO and GEO services →

Keep package pages plain and fast

Those old pages share one more thing with the main ones. They're light, so they load fast.

The Performance tab of the audit shows Core Web Vitals. These are Google's 3 checks of how fast a page loads, how fast it reacts and whether it stays still, measured on real visitors' devices.

seotools.pro Website Audit Performance tab for pypi.org, Core Web Vitals field data from the Chrome UX Report: mobile LCP good at 91 percent good and 4 percent poor, mobile CLS good at 97 percent good and 1 percent poor, mobile INP good at 88 percent good and 3 percent poor, desktop LCP good at 95 percent good and 2 percent poor, desktop CLS good at 92 percent good and 2 percent poor, and desktop INP good at 98 percent good and 1 percent poor.
What to notice: all 6 checks pass, on phones and on computers.

PyPI passes all 6 checks. On phones, the main content loads fast for about 9 in 10 visits.

Taps get a quick reaction, and pages stay still while they load.

The audit also found the text sits right in each page's code, so nothing waits for scripts to build it. Plain pages are easy for you to keep fast.

So keep your busiest page types simple, and test them on a phone. Our Site Speed tool shows what slows each page down.

Watch which pages get your links

Fast pages help, but links still carry a lot of weight. A backlink is a link from another website to yours, and Google treats each one a bit like a vote of trust.

The Backlinks tab of our audit shows the same data as our Backlink Analyzer.

seotools.pro Website Audit Backlinks tab for pypi.org: Domain Authority 97 out of 100, page authority 38 out of 100, a domain trust trend from 96 to 97, 15.2M backlinks, 104K referring domains, 82 percent dofollow, 16,211 links from homepages, 90,081 dofollow domains, 2.8M nofollow links, 13M text links, 50,838 referring IPs, 26,014 referring subnets, 4,647 .edu links and 457 .gov links, and a most linked pages list: pypi.org/project/vortex-data with 1.1M links, the pypi.org homepage with 960K links and 11,682 refs, pypi.org/project/gitingest with 871K links, pypi.org/project/ritetag with 823.9K links, pypi.org/project/kolo, and pypi.org/project/pip with 3,533 refs.
What to notice: a small package tops the most linked pages, ahead of the homepage.

PyPI has about 15M links from about 104K referring domains, meaning websites that link to it. Its Domain Authority, our 0 to 100 score for a site's link strength, is 97.

Now look at the most linked pages. You'd expect pip or the homepage on top.

Instead, a small package called vortex-data leads with about 1.1M links. A handful of other small packages come close, each with far more links than pip.

Pip, the page that earns the most visits, sits at the bottom of that list. Its strength comes from about 3,500 different sites linking to it, not from sheer numbers.

Huge link counts like these often come from one site linking from every page it has. They're worth a look, but they don't always mean as much as you'd think.

So check your most linked pages in our Backlink Analyzer every month. Count the sites linking to a page, not just the links, and make sure your best pages are getting their share.

Find the searches you almost win

All those links should push PyPI high in Google. Our Domain Overview shows where it really stands.

seotools.pro Domain Overview for pypi.org, 4 October 2026: 256.7K organic keywords, 153.1K organic traffic, a traffic value of 167.5K dollars, an estimated average position of 43, no paid keywords, paid traffic or paid cost, a position distribution chart whose longest bar is positions 51 to 100, and keyword movement of 9.7K new, 82 improved, 48 declined and 6.7K lost.
What to notice: an average position of 43, and more keywords gained than lost.

PyPI ranks for about 257K searches. Its traffic value, what those visits would cost as Google ads, is about $168K a month.

But its average position is 43, on page 5 of Google. The longest bar in the chart is spots 51 to 100, where hardly anyone clicks.

The Keywords tab you saw earlier has the good news. About 46K searches sit on page 2, just short of the top 10.

Those are your quickest wins if you're in the same spot. Then the Competitors tab shows who's winning the searches you don't.

seotools.pro Website Audit Competitors tab for pypi.org, 6 organic competitors: anaconda.org with 13.1K shared keywords, 11.6K traffic and 11.7K missing; piwheels.org with 3,516 shared, 613 traffic and 1,829 missing; realpython.com with 31.3K shared, 62.6K traffic and 111.4K missing; djangopackages.org with 2,324 shared, 528 traffic and 1,126 missing; python-forum.io with 10.3K shared, 205 traffic and 26.5K missing; and pythonhosted.org with 4,413 shared, 1,666 traffic and 5,644 missing.
What to notice: Real Python shares the most searches, and wins about 111K that PyPI misses.

Anaconda, another place to get Python packages, comes first. Real Python, a site full of Python lessons, shares the most searches, about 31K.

Now look at the "missing" column. Those are searches the rival ranks for and PyPI doesn't, about 111K for Real Python alone.

Most of them are how-to searches that a list of packages can't answer for you. That column shows you which kind of page you'd need to win them.

If lessons are your thing, freeCodeCamp, the free coding school we studied too, is a good next read.

So find your searches on page 2 and improve those pages first, then watch them climb in our Rank Tracker. Check who shares your searches with our Competitor Analysis.

Try it on your site
See which pages earn your visits

One page, pip, earns 29% of PyPI's US search visits. Our Organic Traffic Checker shows your monthly visits, your trend and the pages that earn them, so you know which ones to look after first.

  • The same report that measured PyPI
  • Each top page's traffic, share and top search
  • Run it on any rival's domain too
Check a domain

What you cannot copy

First, the part you can't copy: PyPI is where pip gets its packages. The pip page says so itself, right in its first line.

Schools, government sites and about 104K other websites link to it. That's years of trust you can't buy.

Now a few honest notes you should know about the numbers.

We took our figures on 4 October 2026. The 153K figure counts US Google searches only.

The 580K figure comes from the audit's Traffic tab, and it counts the whole world. That's why the 2 numbers are so far apart.

All of these are estimates. Nobody outside PyPI can count its real visits, so tools work them out from rankings and search volume.

Our crawl checked 250 pages, a small sample of a very big site. It went deep into the old versions of requests and wheel, so it isn't a fair cross-section.

And 96 of those pages came back as the "Client Challenge" bot check. We didn't count the errors on them as PyPI's mistakes.

The audit also flagged images that wouldn't load. Many images on package pages are small badges hosted on other sites, and we couldn't check each one, so we left them out.

The one number to take away

4%.

That's the share of PyPI's US search visits that come from people typing its name. Everyone else typed the name of a package, like pip or requests.

They landed on a plain page named exactly that, with the install command at the top. No clever copy, no long guide.

That's the lesson for any site with lots of products. Name each page after the thing people want, and keep the old copies pointing to the main one.

Which of your pages do people find without knowing your name? Check them the way Google would.

You can run every one of these checks on your own site, and on your rivals', and see the same numbers for yourself.

Frequently asked questions

Should I keep pages for old versions of my product?

Keep them if people still need them, like old manuals or past releases. Point each one at the main page with a canonical tag, so Google knows which one to rank.

Is a canonical tag enough, or should I use noindex too?

A canonical tag is usually enough. Google treats it as a strong hint, not a rule, so check now and then that it still ranks the main page. Don't put both tags on one page, since they send mixed signals.

Can a bot check hurt my Google rankings?

Only if Google gets stopped by it. Most bot checks let known search crawlers through, but a wrong setting can block them. Test your key pages after any change to your bot rules.

How do I see what Google sees on my page?

Use the URL Inspection tool in Google Search Console. It shows the page Google fetched, so you can spot a bot check or a missing title before it costs you visits.

What should a software page's title say?

Start with the exact name people search. Then add what it does in a few words, and end with your site's name if there's room.

Which structured data fits a package or software page?

SoftwareApplication code can describe the name, the version and the type of software. Breadcrumb code fits too, and you can add the release date so Google doesn't have to guess it.

Do I need an llms.txt file?

It's not required, and AI tools don't all read it yet. It's quick to write, though, and it gives AI tools a short map of the pages that matter most on your site.

How long do new titles and descriptions take to show up in Google?

Usually days to a few weeks, depending on how often Google visits your pages. Busy pages get updated first. Google may still rewrite a description if it thinks another line fits the search better.

Blog