Listed in editorial order, grouped by use case. Click a column to re-sort the whole list.
Press / to search. Tap a tag to filter. Click any row for details.
Search and filter
Results
| Row number | Tags | |||||
|---|---|---|---|---|---|---|
General 5 projects |
||||||
| 1 | requests General | 1,164,836,970 | 54,467 | General HTTP Clients HTTP & Scraping | → | |
|
HTTP Requests for Humans.
|
||||||
| 2 | aiohttp General | 439,084,579 | 16,569 | General HTTP Clients HTTP & Scraping | → | |
|
Asynchronous HTTP client/server framework for asyncio and Python.
|
||||||
| 3 | httpx2 General | 225,146,426 | 1,521 | General HTTP Clients HTTP & Scraping | → | |
|
HTTP/1.1 and HTTP/2 client with sync and async APIs, maintained by Pydantic (httpx fork).
|
||||||
| 4 | urllib3 General | 1,281,242,747 | 4,068 | General HTTP Clients HTTP & Scraping | → | |
|
An HTTP library with thread-safe connection pooling, file post, and more.
|
||||||
| 5 | httpx General | 596,382,413 | 15,526 | General HTTP Clients HTTP & Scraping | → | |
|
A next generation HTTP client for Python.
|
||||||
URL Manipulation 1 project |
||||||
| 6 | yarl URL Manipulation | 444,680,192 | 1,499 | URL Manipulation HTTP Clients HTTP & Scraping | → | |
|
Yet another URL library.
|
||||||
No projects match your search or filter.
Try a broader term, or .
HTTP Clients guide
Requests is an HTTP library built for human beings, with urllib3 pooling connections underneath. Nearly every call in production code should pass a timeout, since requests never time out unless you set one. For several calls to the same host, make them through a Session used as a context manager: it reuses the TCP connection and closes when the block exits.
httpx2 has a broadly requests-compatible API in both sync and async code, over HTTP/1.1 or HTTP/2. It's a fork of HTTPX with the same public API under a new name. Beyond one-off scripts, send requests through a Client used as a context manager, which pools connections where the top-level functions open a new one per request. In async code, share one AsyncClient instead of opening one inside a loop.
aiohttp is async only, and its docs call that choice a trade of more verbosity for better performance. Create one ClientSession per application and reuse it for every request, since each session holds its own connection pool.
urllib3 is the layer Requests runs on, with thread safety, connection pooling, and retries built in. Make requests through a PoolManager you create: the top-level urllib3.request() uses a module-global one, so its side effects can reach other libraries that call it too.
yarl's URL objects are immutable: every change returns a new URL, and strings you pass in get encoded for you. aiohttp's requests take a yarl URL as well as a plain string.
Contribute
Know a project that belongs here?
Tell us what it does and why it stands out.