API reference#

Warehouse has several API endpoints. See Warehouse codebase for the parts of Warehouse that generate them.

API policies#

Please be aware of these PyPI API policies:

Caching#

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 the X-Cache and 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.

Rate limiting#

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-Agent header 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.

API Preference#

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#