Warehouse has several API endpoints. See Warehouse codebase for the parts of Warehouse that generate them.
Please be aware of these PyPI API policies:
All API requests are cached. Requests to the JSON, RSS or Legacy APIs are
cached by our CDN provider. You can determine if you’ve hit the cache based on
X-Cache-Hits headers in the response.
Requests to the JSON, RSS and Legacy APIs also provide an
ETag header. If
you’re making a lot of repeated requests, ensure your API consumer will respect
this header to determine whether to actually repeat a request or not.
The XML-RPC API does not have the ability to indicate cached responses.
Due to the heavy caching and CDN use, there is currently no rate limiting of PyPI APIs at the edge. The XML-RPC API may be rate limited if usage is causing degradation of service.
In addition, PyPI reserves the right to temporarily or permanently prohibit a consumer based on irresponsible activity.
If you plan to make a lot of requests to a PyPI API, adhere to these suggestions:
Set your consumer’s
User-Agentheader to uniquely identify your requests. Adding your contact information to this value would be helpful as well.
Try not to make a lot of requests (thousands) in a short amount of time (minutes). Generally PyPI can handle it, but it’s preferred to make requests in serial over a longer amount of time if possible.
If your consumer is actually an organization or service that will be downloading a lot of packages from PyPI, consider using your own index mirror or cache.
For periodically checking for new packages or updates to existing packages, use our RSS feeds.
No new integrations should use the XML-RPC APIs as they are planned for deprecation. Existing consumers should migrate to JSON/RSS/Legacy APIs.
Available APIs & Datasets#
- JSON API
- Legacy API
- Stats API
- PyPI’s XML-RPC methods
- Integration guide
- BigQuery Datasets