PyPI
Python package metadata from PyPI
The public Python Package Index serves full release metadata for any project at /pypi/{name}/json. No token required for reads; CORS-open.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗
On our probe schedule. Uptime charts appear after the first check lands.
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[](https://pypi.org/project/requests/)\n[](https://pypi.org/project/requests)\n[](https://pepy.tech/project/requests)\n[](https://github.com/psf/requests/graphs/contributors)\n[](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[](https://kennethreitz.org) [](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": []
}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())/requests/jsonPROBEDPython package metadata from PyPI
/requestsRequests — documented GET route.
/requests/1Requests details by ID (example: 1).
/requests?limit=10Requests — documented GET route.
/requests/search?q=testSearch by query parameters.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.
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.