Requests: HTTP for Humans™

Release v2.22.0. (Installation)

https://pepy.tech/badge/requests https://img.shields.io/pypi/l/requests.svg https://img.shields.io/pypi/wheel/requests.svg https://img.shields.io/pypi/pyversions/requests.svg

Requests is an elegant and simple HTTP library for Python, built for human beings.


Behold, the power of Requests:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

See similar code, sans Requests.

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 POST data. Keep-alive and HTTP connection pooling are 100% automatic, thanks to urllib3.

Beloved Features

Requests is ready for today's web.

  • Keep-Alive & Connection Pooling
  • International Domains and URLs
  • Sessions with Cookie Persistence
  • Browser-style SSL Verification
  • Automatic Content Decoding
  • Basic/Digest Authentication
  • Elegant Key/Value Cookies
  • Automatic Decompression
  • Unicode Response Bodies
  • HTTP(S) Proxy Support
  • Multipart File Uploads
  • Streaming Downloads
  • Connection Timeouts
  • Chunked Requests
  • .netrc Support

Requests officially supports Python 2.7 & 3.4–3.7, and runs great on PyPy.

The Community Guide

This part of the documentation, which is mostly prose, details the Requests ecosystem and community.

The API Documentation / Guide

If you are looking for information on a specific function, class, or method, this part of the documentation is for you.