PyPI

Python package metadata from PyPI

🔧 Developer ToolsHEALTHYchecked 2h ago
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.

100HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: 100 · healthy
Uptime history
100%90 days
100%30 days
46P50 · ms
446P95 · ms
operationalpartialdownno data
Response time · last 48 checks
Fastest 15 ms, slowest 233 ms, most recent 17 ms.
Live response samplecaptured by our last successful check
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 · 5HealthyFULL DOCS ↗
Monitored path responding — GET /requests/json46 mschecked 2h ago
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

Stable. No schema drift observed since monitoring began — the response shape has not changed under our checks.

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?

As of our last scheduled check, PyPI is healthy with 100% uptime over 90 days and a 46 ms median response. We re-probe it every sweep — the status badge and uptime chart above always show the latest.