PyPI JSON API
Free PyPI JSON API with no key: Python package metadata, versions, dependencies, licence and download URLs. Tested curl example and live response.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the PyPI JSON API?
The PyPI JSON API is a free, key-free endpoint returning metadata for any package on the Python Package Index — current version, summary, author, licence, project URLs, requirements and downloadable release files.
PyPI exposes a JSON document for every package at `https://pypi.org/pypi/<package>/json`. It needs no authentication and is the same data the PyPI website renders, making it the authoritative source for Python package information.
A useful detail is the `urls` array, which lists the actual downloadable artefacts for the current release — wheels and source distributions, each with size, upload time and hashes. That makes it practical for building mirrors, installers or supply-chain verification tooling.
Quick facts
- Base URL
https://pypi.org/pypi- Authentication
- No key required for reading package metadata.
- Rate limit
- No published hard limit; PyPI asks that you cache and avoid aggressive polling.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the PyPI JSON API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Fetch metadata for a Python package
GET https://pypi.org/pypi/requests/json
curl 'https://pypi.org/pypi/requests/json'const res = await fetch("https://pypi.org/pypi/requests/json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://pypi.org/pypi/requests/json", timeout=20)
res.raise_for_status()
print(res.json()){
"info": {
"author": null,
"author_email": "Kenneth Reitz <me@kennethreitz.org>",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Programming Language :: Python :: Free Threading :: 2 - Beta",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Software Development :: Libraries"
],
"description": "# Requests\n\n[](https://pypi.org/project/requests/)\n[](https://pypi.org/project/requests)\n[](https://pepy.tech/project/requests)\n[](https://github.com/psf/reParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<package> | path | Required | Package name as published on PyPI. requests |
<version> | path | Optional | Specific version; omit for the latest. 2.31.0 |
Response fields
info.versionstring- Latest released version.
info.summarystring- One-line package description.
info.requires_distarray- Declared dependencies with version specifiers.
info.license / authorstring- Licence and author metadata.
urlsarray- Downloadable files for this release, with size, upload time and digests.
releasesobject- Every version ever published, keyed by version string.
What you can build with the PyPI JSON API
- Display the current version of a Python package in docs or a README badge
- Check whether a dependency has a newer release available
- Audit licences and dependencies for compliance
- Verify package artefact hashes for supply-chain security checks
Common errors and how to fix them
404
Package name not found.
Fix: PyPI names are case-insensitive but normalise underscores and hyphens; try both forms if unsure.
Large response
The `releases` object includes every historical version.
Fix: Request a specific version path when you only need one release.
PyPI JSON API — frequently asked questions
Is the PyPI JSON API free and open?
Yes, it requires no API key or authentication for reading package metadata, and serves the same data shown on the PyPI website.
How do I check the latest version of a Python package?
Request `https://pypi.org/pypi/<package>/json` and read `info.version`, which always reflects the most recent published release.
Does the API list package dependencies?
Yes, in `info.requires_dist`, which contains dependency specifiers including version constraints and environment markers.
Can I get download counts from the PyPI API?
No. Download statistics are not in the JSON API; they are published separately through the BigQuery public dataset and third-party services such as pypistats.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Validator
Free online JSON validator: validate JSON and find syntax errors with the exact line and column. See root type, key counts and depth — instant and 100% private.
PyPI JSON API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.