BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 19 Aug 2026

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 19 Aug 2026, 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
curl 'https://pypi.org/pypi/requests/json'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://pypi.org/pypi/requests/json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "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[![Version](https://img.shields.io/pypi/v/requests.svg?maxAge=86400)](https://pypi.org/project/requests/)\n[![Supported Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)\n[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)\n[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/re

Parameters

ParameterTypeRequiredDescription
<package>pathRequiredPackage name as published on PyPI. requests
<version>pathOptionalSpecific 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

Alternatives to PyPI JSON API

If PyPI JSON API does not fit, these developer & testing apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
GitHub REST APIGitHub REST API with no key for public data: repository details, users, issues, releases and commits. 60 req/hour unauthenticated, 5,000 with a token.No keyYes19 Aug 2026
JSONPlaceholderFree fake REST API for testing and prototyping. Posts, comments, users and todos with full GET, POST, PUT and DELETE support. No key. Real curl examples.No keyYes19 Aug 2026
Postman EchoPostman Echo reflects your HTTP request back as JSON: headers, body, query params and auth. Free, no key, ideal for debugging clients. Real POST example.No keyNo19 Aug 2026
DummyJSONFree fake REST API with realistic products, users, carts, recipes and auth. Supports search, pagination, sorting and POST. No key. Tested GET and POST examples.No keyYes19 Aug 2026
QR Server (goQR.me)Free QR code generator API with no key. Create QR codes as PNG, SVG or EPS at any size and colour using a single URL. Tested example and full parameter list.No keyYes19 Aug 2026
Quay.ioBrowse public container image repositories on Quay.io as JSON with no token. Filter by namespace, read descriptions and states. Verified example and paging notes.No keyYes21 Aug 2026
All Developer & Testing APIs

PyPI JSON API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.