PyPI

Python package metadata from PyPI

AUTH NONECORS AGENT ?HTTPS COMMERCIAL ?

The public Python Package Index serves full release metadata for any project at /pypi/{name}/json. No token required for reads; CORS-open.

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://pypi.org/pypi/requests/json

{
  "info": {
    "author": null,
    "author_email": "Kenneth Reitz <me@kennethreitz.org>",
    "bugtrack_url": null,
    "classifiers": [
      "Development Status :: 5 - Production/Stable",
      "Environment :: Web Environment"
    ],
    "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/requests/graphs/contributors)\n[![Documentation](https://readthedocs.org/projects/requests/badge/?version=latest)](https://requests.readthedocs.io)\n\n**Requests** is a simple, yet elegant, HTTP library.\n\n```python\n>>> import requests\n>>> r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))\n>>> r.status_code\n200\n>>> r.headers['content-type']\n'application/json; charset=utf8'\n>>> r.encoding\n'utf-8'\n>>> r.text\n'{\"authenticated\": true, ...'\n>>> r.json()\n{'authenticated': True, ...}\n```\n\nRequests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your `PUT` & `POST` data — but nowadays, just use the `json` method!\n\nRequests is one of the most downloaded Python packages today, pulling in around `300M downloads / week` — according to GitHub, Requests is currently [depended upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D) by `4,000,000+` repositories.\n\n## Installing Requests and Supported Versions\n\nRequests is available on PyPI:\n\n```console\n$ python -m pip install requests\n```\n\nRequests officially supports Python 3.10+.\n\n## Supported Features & Best–Practices\n\nRequests is ready for the demands of building robust and reliable HTTP–speaking applications, for the needs of today.\n\n- Keep-Alive & Connection Pooling\n- International Domains and URLs\n- Sessions with Cookie Persistence\n- Browser-style TLS/SSL Verification\n- Basic & Digest Authentication\n- Familiar `dict`–like Cookies\n- Automatic Content Decompression and Decoding\n- Multi-part File Uploads\n- SOCKS Proxy Support\n- Connection Timeouts\n- Streaming Downloads\n- Automatic honoring of `.netrc`\n- Chunked HTTP Requests\n\n## Cloning the repository\n\nWhen cloning the Requests repository, you may need to add the `-c\nfetch.fsck.badTimezone=ignore` flag to avoid an error about a bad commit timestamp (see\n[this issue](https://github.com/psf/requests/issues/2690) for more background):\n\n```shell\ngit clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git\n```\n\nYou can also apply this setting to your global Git config:\n\n```shell\ngit config --global fetch.fsck.badTimezone ignore\n```\n\n---\n\n[![Kenneth Reitz](https://raw.githubusercontent.com/psf/requests/main/ext/kr.png)](https://kennethreitz.org) [![Python Software Foundation](https://raw.githubusercontent.com/psf/requests/main/ext/psf.png)](https://www.python.org/psf)\n",
    "description_content_type": "text/markdown",
    "docs_url": null,
    "download_url": null
  },
  "last_serial": 37059094,
  "ownership": {
    "organization": null,
    "roles": [
      {
        "role": "Owner",
        "user": "Lukasa"
      },
      {
        "role": "Owner",
        "user": "graffatcolmingov"
      }
    ]
  },
  "releases": {
    "0.0.1": [],
    "0.10.0": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "62350230421b8c4efad6624518028163329ad0c2df9e58e6b3bee013427bf8f6",
          "md5": "c90a48af18eb4170dbe4832c1104440c",
          "sha256": "210a82e678c45d433a4ad1f105974b3102a8ab5198872dc0a3238a8750d4c65e"
        },
        "downloads": -1,
        "filename": "requests-0.10.0.tar.gz",
        "has_sig": false,
        "md5_digest": "c90a48af18eb4170dbe4832c1104440c",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.1": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "b456ba2d803383ec32d70f8faa7df5eb37ee9b3fc662ff68b7ab01ad9740b83a",
          "md5": "699147d2143bff95238befa58980b912",
          "sha256": "da6031575a30c7b65ea99465183468349b3645e6bf5322e49d53f565b27ed2b5"
        },
        "downloads": -1,
        "filename": "requests-0.10.1.tar.gz",
        "has_sig": false,
        "md5_digest": "699147d2143bff95238befa58980b912",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.2": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "581e6b84552b6553f5beaf7cb0fe15115e7e4673326ed9188ad5338559ee8285",
          "md5": "47c3cf85a0112d423137b43989663bef",
          "sha256": "1546ef1e291ae337086369b621096fb0f69f88f6f67f60b1f6b7c18d1ca278e1"
        },
        "downloads": -1,
        "filename": "requests-0.10.2.tar.gz",
        "has_sig": false,
        "md5_digest": "47c3cf85a0112d423137b43989663bef",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.3": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "014439988315e036b79fe70428273053617266bf20d1363e91082346fae8450d",
          "md5": "a055af00593f4828c3becd0ccfab503f",
          "sha256": "8eeb24328304b015cbd59a49670e2738b77034b225b566729ddb19941899e490"
        },
        "downloads": -1,
        "filename": "requests-0.10.3.tar.gz",
        "has_sig": false,
        "md5_digest": "a055af00593f4828c3becd0ccfab503f",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.4": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "94ac5fa21e435ba8050d14db92ce29763c28196b727d4079dc608d39177fbf9b",
          "md5": "5e465e9e739bcc9f71935ca4e9706168",
          "sha256": "2ad4cc51d7595ca6f97373a0d697999e0cbdbbf1ba665d18f0f3dcec12b8be77"
        },
        "downloads": -1,
        "filename": "requests-0.10.4.tar.gz",
        "has_sig": false,
        "md5_digest": "5e465e9e739bcc9f71935ca4e9706168",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.6": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "b41f8f5430040fcf4391dc5bd324424a569e2e0d96595952b21eb82403602d98",
          "md5": "c889401445de3cbbac98509208a73b83",
          "sha256": "31134b4f35951730dcce59f2af334478b68caa5728902a1d6bd5e115ec677d8b"
        },
        "downloads": -1,
        "filename": "requests-0.10.6.tar.gz",
        "has_sig": false,
        "md5_digest": "c889401445de3cbbac98509208a73b83",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ],
    "0.10.7": [
      {
        "comment_text": "",
        "digests": {
          "blake2b_256": "c5cd0597f9c040db24ca6d23cc74faa102554cb0a93bdbffb855d7749547921f",
          "md5": "a3ac9d431981dcfd592fd0f35c499e4a",
          "sha256": "80f32a74bed8cf081a3a25512f8725e09ceda217101ea706efced262bb05aec6"
        },
        "downloads": -1,
        "filename": "requests-0.10.7.tar.gz",
        "has_sig": false,
        "md5_digest": "a3ac9d431981dcfd592fd0f35c499e4a",
        "packagetype": "sdist",
        "python_version": "source"
      }
    ]
  },
  "urls": [
    {
      "comment_text": null,
      "digests": {
        "blake2b_256": "a0f4c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a",
        "md5": "cc4287951c320ff794e5e183c7a91f85",
        "sha256": "2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0"
      },
      "downloads": -1,
      "filename": "requests-2.34.2-py3-none-any.whl",
      "has_sig": false,
      "md5_digest": "cc4287951c320ff794e5e183c7a91f85",
      "packagetype": "bdist_wheel",
      "python_version": "py3"
    },
    {
      "comment_text": null,
      "digests": {
        "blake2b_256": "acc3e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf",
        "md5": "611e438d0803e962500225f9807a475e",
        "sha256": "f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed"
      },
      "downloads": -1,
      "filename": "requests-2.34.2.tar.gz",
      "has_sig": false,
      "md5_digest": "611e438d0803e962500225f9807a475e",
      "packagetype": "sdist",
      "python_version": "source"
    }
  ],
  "vulnerabilities": []
}
Call itcurl · fetch · python
curl "https://pypi.org/pypi/requests/json"
const res = await fetch("https://pypi.org/pypi/requests/json");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://pypi.org/pypi/requests/json")
print(res.json())
Endpoints · 5On scheduleFULL DOCS ↗
On schedule — GET /requests/json awaits first probe
GET/requests/jsonPROBED

Python package metadata from PyPI

GET/requests

Requests — documented GET route.

GET/requests/1

Requests details by ID (example: 1).

GET/requests?limit=10

Requests — documented GET route.

GET/requests/search?q=test

Search by query parameters.

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

PyPI: common questions

Is PyPI free to use?

Yes — PyPI is a free developer tools API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.

Does PyPI need an API key?

No — PyPI needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).

Can I call PyPI from the browser?

Yes — PyPI returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.

Is PyPI up right now?

PyPI is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.