Benchmark report
Is the PyPI API slow?
Response times from 5 cities
Fast globally
PyPI responds quickly from all 5 test locations. Amsterdam was fastest at 12 ms; San Francisco took 59 ms.
- Fastest
- 12 ms
- Amsterdam
- Slowest
- 59 ms
- San Francisco
- Successful requests
- 100%
- 5 of 6 locations
Response time around the world
Amsterdam
12 msMontreal
12 msTokyo
13 msSingapore
14 msSan Francisco
59 msMumbai
Collecting since 7 Sept 2026
Why is San Francisco slower?
In the controlled run of 7 September four cities finished in 12 to 15 ms with every phase in single digits: 2 to 3 ms to connect, 3 to 5 ms for the TLS handshake, 2 to 4 ms waiting for the first byte and 3 to 4 ms downloading the 230 KB. San Francisco took 57 ms and every phase grew with it: 11 ms to connect, 13 ms for TLS, 11 ms waiting and 22 ms downloading. When all four stages stretch together, the likely cause is a longer path to the cache that answered rather than a slower server. The Fastly homepage, served by the same CDN, shows the same San Francisco pattern.
Click the location to see each stage.
San Francisco57 ms
- Finding the server
- 10 ms
- Reaching the server
- 11 ms
- Setting up security
- 13 ms
- Waiting for the server
- 11 ms
- Receiving the response: most of the time
- 22 ms
- Total
- 57 ms
Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.
Bars show the typical request, so the parts add up to its total. Why
Compare all locationsHide the comparison
Click a city to see its stage-by-stage breakdown.
Amsterdam12 ms
- Finding the server
- 2 ms
- Reaching the server
- 2 ms
- Setting up security: most of the time
- 4 ms
- Waiting for the server
- 2 ms
- Receiving the response
- 4 ms
- Total
- 12 ms
San Francisco57 ms
- Finding the server
- 10 ms
- Reaching the server
- 11 ms
- Setting up security
- 13 ms
- Waiting for the server
- 11 ms
- Receiving the response: most of the time
- 22 ms
- Total
- 57 ms
Montreal15 ms
- Finding the server
- 2 ms
- Reaching the server
- 3 ms
- Setting up security: most of the time
- 5 ms
- Waiting for the server
- 4 ms
- Receiving the response
- 3 ms
- Total
- 15 ms
Singapore12 ms
- Finding the server
- 3 ms
- Reaching the server
- 2 ms
- Setting up security: most of the time
- 4 ms
- Waiting for the server
- 3 ms
- Receiving the response
- 3 ms
- Total
- 12 ms
Tokyo13 ms
- Finding the server
- 2 ms
- Reaching the server
- 3 ms
- Setting up security
- 3 ms
- Waiting for the server
- 3 ms
- Receiving the response: most of the time
- 4 ms
- Total
- 13 ms
The phases come from the controlled run of 7 September 2026. Typical times pool daily requests; slower times use controlled full runs. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.
Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.
Bars show the typical request, so the parts add up to its total. Why
PyPI still feels slow?
- Check PyPI’s status page
- Registry incidents are posted there. A slow install during one is not your network.
- This is not a pip install benchmark
- Wheel and source downloads come from files.pythonhosted.org, a separate host, and the simple index pip reads by default is a different document. Uploads and the website are not measured either.
- A shield cache in front of the edges
- Four Fastly addresses across our five cities, and the cache header named the same Washington-area cache everywhere, which suggests a shield cache in front of the edges. A slow result from the US West Coast matches what we see; elsewhere it would be unusual.
Response time over the last 30 days
A dot marks a day well above that location’s usual level.
Show the numbers
| Day | Amsterdam | San Francisco | Montreal | Singapore | Tokyo | Mumbai |
|---|---|---|---|---|---|---|
| 27 August 2026 | 13 ms | 69 ms | 13 ms | 108 ms ▲ | 13 ms | — |
| 28 August 2026 | 11 ms | 69 ms | 13 ms | 18 ms | 13 ms | — |
| 29 August 2026 | 10 ms | 61 ms | 57 ms ▲ | 16 ms | 13 ms | — |
| 30 August 2026 | 12 ms | 59 ms | 13 ms | 14 ms | 13 ms | — |
| 31 August 2026 | 11 ms | 54 ms | 11 ms | 57 ms ▲ | 12 ms | — |
| 1 September 2026 | 11 ms | 59 ms | 11 ms | 12 ms | 14 ms | — |
| 2 September 2026 | 11 ms | 57 ms | 119 ms ▲ | 14 ms | 13 ms | — |
| 3 September 2026 | 12 ms | 56 ms | 11 ms | 14 ms | 14 ms | — |
| 4 September 2026 | 12 ms | 64 ms | 13 ms | 18 ms | 13 ms | — |
| 5 September 2026 | 12 ms | 56 ms | 12 ms | 15 ms | 16 ms | — |
| 6 September 2026 | 13 ms | 57 ms | 12 ms | 16 ms | 14 ms | — |
| 7 September 2026 | 12 ms | 61 ms | 13 ms | 14 ms | 12 ms | 12 ms |
| 8 September 2026 | 12 ms | 59 ms | 11 ms | 12 ms | 16 ms | 11 ms |
| 9 September 2026 | 12 ms | 56 ms | 11 ms | 17 ms | 14 ms | 11 ms |
| 10 September 2026 | 11 ms | 55 ms | 13 ms | 13 ms | 14 ms | 12 ms |
| 11 September 2026 | 11 ms | 67 ms | 116 ms ▲ | 13 ms | 13 ms | 11 ms |
| 12 September 2026 | 11 ms | 69 ms | 12 ms | 15 ms | 12 ms | 12 ms |
About this measurement
GET pypi.org/pypi/pip/json · 70 requests per location over 14 daily runs · 30 August 2026 to 12 September 2026
What we tested · Package registry. GET pypi.org/pypi/pip/json: the pip project's metadata, about 230 KB of JSON, cached at Fastly's edge for 15 minutes.
How LatencyRadar measures response time →
Technical details
Doesn’t measure: pip install: the simple index and wheel downloads from files.pythonhosted.org, or the website.
One PyPI surface: the JSON metadata document for the pip project, about 230 KB that pypi.org serves through Fastly's cache with a 15-minute lifetime. Tools such as pip, Poetry and dependency scanners read this kind of document to learn which versions exist; it is the lookup step of a Python install. It does not stand for the download step: wheels and source archives come from files.pythonhosted.org, a separate host we measure as its own surface, and the simple index that pip reads by default is a different document again.
Not measured: wheel downloads, the simple index, uploads, the pypi.org website or search. From outside we cannot see whether the cache answered or the request went through to PyPI's origin; with a 15-minute cache lifetime, a slow request may simply be the first one after expiry.
Between 30 August and 12 September 2026 Amsterdam, Montreal, Singapore and Tokyo had a typical time of 12 to 14 ms and San Francisco 59 ms. San Francisco's daily median stayed between 54 and 69 ms on all 14 runs, so the gap is steady rather than one bad day. Montreal's typical is 12 ms, but its daily median jumped to 119 ms on 2 September and 116 ms on 11 September before returning; Singapore had a 57 ms day on 31 August. Singapore's slower time of 43.5 ms is the median of two controlled runs that disagreed: 73 ms on 30 August and 14 ms on 7 September. Compare npm, whose registry root is a two-byte cached document, and crates.io, whose metadata is not cached at all.
| Test location | Typical response time | Slower response time | Requests |
|---|---|---|---|
| Amsterdam | 12 ms | 18 ms | 20 |
| San Francisco | 59 ms | 65 ms | 20 |
| Montreal | 12 ms | 22 ms | 20 |
| Singapore | 14 ms | 44 ms | 20 |
| Tokyo | 13 ms | 16 ms | 20 |
| Mumbai | Collecting since 7 Sept 2026 | ||
Typical: half of the requests finished within this time (technical: p50). Slower: 95% of requests finished within this time (technical: p95). Statistics
- Request
- GET pypi.org/pypi/pip/json
- Measured from
- Amsterdam · San Francisco · Montreal · Singapore · Tokyo
- Requests
- Daily measurements from 30 August 2026 to 12 September 2026. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo. · 30 August 2026 to 12 September 2026
- Timings taken
- DNS, connect, TLS, waiting for the server, download
- Report coverage
- 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.
- Daily requests in each location
- Amsterdam: 70 · San Francisco: 70 · Montreal: 70 · Singapore: 70 · Tokyo: 70
- Typical response time
- Median of the eligible daily requests in each included location.
- Slower response time
- Median of recent controlled full-run p95 values in each included location.
PyPI API
https://pypi.org/pypi/pip/json
Independent measurement by LatencyRadar. Not affiliated with PyPI. · How we measure (v1.1)
How fast is your API around the world?
Run a free speed test from multiple cities and find out where your users are waiting. No setup, no account required.
No account required · Takes about 30 seconds.