54,748
stars
+16
10,763
forks
1,345
watchers
3,086
prs
4,190
issues
19
releases
0
discussions
README
Requests
Requests is a simple, yet elegant, HTTP library.
python
import requests
r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))
r.status_code
200
r.headers['content-type']
'application/json; charset=utf8'
r.encoding
'utf-8'
r.text
'{"authenticated": true, ...'
r.json()
{'authenticated': True, ...}
Requests 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!
Requests is one of the most downloaded Python packages today, pulling in around 300M downloads / week — according to GitHub, Requests is currently depended upon by 4,000,000+ repositories.
Installing Requests and Supported Versions
Requests is available on PyPI:
console
$ python -m pip install requests
Requests officially supports Python 3.10+.
Supported Features & Best–Practices
Requests is ready for the demands of building robust and reliable HTTP–speaking applications, for the needs of today.
- Keep-Alive & Connection Pooling
- International Domains and URLs
- Sessions with Cookie Persistence
- Browser-style TLS/SSL Verification
- Basic & Digest Authentication
- Familiar dict–like Cookies
- Automatic Content Decompression and Decoding
- Multi-part File Uploads
- SOCKS Proxy Support
- Connection Timeouts
- Streaming Downloads
- Automatic honoring of .netrc
- Chunked HTTP Requests
Cloning the repository
When cloning the Requests repository, you may need to add the -c
fetch.fsck.badTimezone=ignore flag to avoid an error about a bad commit timestamp (see
this issue for more background):
shell
git clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git
You can also apply this setting to your global Git config:
shell
git config --global fetch.fsck.badTimezone ignore
---Top issues
#2086Remove ISO-8859-1 charset fallback43 comments · 2014-06-07#4601Requests memory leak25 comments · 2018-04-19#5871Make chardet/charset_normalizer optional?23 comments · 2021-07-14#3759cookies.py why replace escaped quote with nothing?22 comments · 2016-12-08#3929Don't override `Authorization` header when contents are bearer token (or any other token)20 comments · 2017-03-19#2002bool(failure response) is False20 comments · 2014-04-14#2061Making https proxies easier to deal with19 comments · 2014-05-23#4664requests.Session doesn't properly handle closed keep-alive sessions18 comments · 2018-05-29
Latest release
v2.34.2 v2.34.2 2026-05-142.34.2 (2026-05-14) ------------------- - Moved headers input type back to Mapping to avoid invariance issues with MutableMapping and inferred dict types. Users calling Request.headers.update() may need to narrow typing in their code. (7441) Full Changelog: https://github.com/psf/requests/blob/main/HISTORY.md2342-2026-05-14