Requests

The elegant, human-friendly HTTP library that made Python's most-used API for talking to the web.

Library
PyPI
v2.34.2
54,353 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
81 /100 Excellent
Development Activity 76
Maintenance 52
Community 96
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 90
Code Quality 88
Innovation 85
Learning Curve 92

Requests is Python’s most-downloaded HTTP library, used to send HTTP/1.1 requests without the boilerplate that Python’s built-in urllib demands. It wraps connection pooling, redirect handling, cookie persistence, and content decoding behind a small, readable API, so a GET request with auth and query params is one line of code instead of a dozen.

Built on top of urllib3, idna, charset_normalizer, and certifi, Requests has become the de facto standard for HTTP in Python — GitHub reports it as a dependency of over four million repositories, and it anchors nearly every tutorial, SDK, and scraping script written in the language.

What You Get

  • Simple verb functions (requests.get, .post, etc.) for one-off calls, and a Session object for connection pooling, persistent cookies, and shared headers/auth across many requests
  • Automatic JSON encoding/decoding via the json= kwarg and Response.json(), plus multipart file uploads via files=
  • Built-in Basic/Digest/custom auth handlers, TLS certificate verification (via certifi), and configurable proxy support
  • Transparent redirect following, connection-level retry configuration through HTTPAdapter, and automatic content decompression/decoding
  • A Response object exposing status code, headers, cookies, elapsed time, and both raw and decoded body access

Common Use Cases

  • Calling third-party REST APIs from scripts, backend services, or automation tooling
  • Building lightweight web scrapers and crawlers that need cookie/session persistence
  • Serving as the transport layer underneath higher-level SDKs (cloud provider clients, webhook senders, CLI tools)
  • Writing integration tests that hit real or mocked HTTP endpoints

Under The Hood

Architecture — Requests layers three concerns cleanly: api.py exposes the verb-shaped public functions (get, post, …) that each open a short-lived Session and delegate to it; sessions.py’s Session class owns cross-request state (cookies via a RequestsCookieJar, headers, auth, proxies) and merges per-call overrides with session defaults via merge_setting/merge_hooks; and adapters.py’s HTTPAdapter (a BaseAdapter subclass) wraps a urllib3.PoolManager to actually open sockets, handle retries, and translate low-level urllib3 exceptions into Requests’ own exception hierarchy (exceptions.py). A Request is built into an immutable PreparedRequest (models.py) before being sent, decoupling “what the user asked for” from “what goes on the wire,” which is also what lets Session.send() be called directly for advanced use.

Tech Stack — Pure Python (99%+ of the codebase), packaged with setuptools and a pyproject.toml-driven build. Runtime dependencies are minimal and deliberate: urllib3 for the actual HTTP/connection-pooling implementation, certifi for a bundled CA store, idna for internationalized domain handling, and charset_normalizer for encoding detection — Requests itself is an ergonomics layer on top of urllib3, not a from-scratch HTTP stack. Optional extras (PySocks for SOCKS proxies, chardet) are isolated behind [project.optional-dependencies] so the default install stays lean.

Code Quality — The tests/ directory contains 237+ test functions across test_requests.py plus focused suites for cookies, structures, and internal utilities, run via pytest against httpbin fixtures for realistic request/response behavior; CI-relevant lint/format is enforced with ruff (configured in pyproject.toml) and pre-commit hooks. The package ships a py.typed marker and increasingly precise type hints (_types.py, TypedDict-based kwargs like RequestKwargs), and pyright runs in strict mode over src/requests, which is unusually rigorous for a library this old and this widely depended upon.

API Design — The verb functions (requests.get(url, params=...)) are close to the ergonomic ceiling for a synchronous HTTP client: no client object to construct for a one-off call, sensible defaults (redirects on, cookies handled, JSON body auto-serialized), and a Response object where .json(), .text, .status_code, and truthiness (if response:) all behave the way a newcomer would guess. The main friction point by design is that it is fully synchronous — there is no native async/await support, which is why the httpx project exists as a spiritual successor for async workloads.

Used by 112 apps in this directory

Python
64%
AGPL 3.0

Shadowbroker

Analytics · Monitoring · Security

11,261

Self-hosted OSINT dashboard that fuses 60+ live intelligence feeds — flight tracking, ship AIS, satellites, CCTV, seismic and radio networks — into one real-time map, with an agent-ready command channel for AI co-analysts.

View details
84
Repo Health
83
Technical
71
Dependency
Built with
Python 64%
TypeScript 32%
Updated 2 weeks ago
TypeScript
50%
Other

SigNoz

Analytics · Monitoring

32,224

Self-host your entire observability stack — logs, metrics, traces, and LLM monitoring — in one OpenTelemetry-native platform, without the Datadog bill.

View details
92
Repo Health
83
Technical
67
Dependency
Built with
TypeScript 50%
Go 38%
Updated 1 weeks ago
Python
94%
BSD 3

skrub

Developer Tools

1,653

Turn messy real-world dataframes into machine learning features — no manual wrangling required.

View details
86
Repo Health
84
Technical
80
Dependency
Built with
Python 94%
Updated 2 weeks ago
JavaScript
100%
AGPL 3.0

Social Analyzer

Security

24,134

Find and analyze a person's digital footprint across 1000+ social media platforms using multi-layer detection, OCR, and metadata extraction.

View details
42
Repo Health
52
Technical
68
Dependency
Built with
JavaScript 100%
Updated 9 months ago
Python
94%
MIT

Stealth Browser MCP

Developer Tools · Mcp

2,156

An MCP server giving AI agents real, undetectable browser automation — built on nodriver and Chrome DevTools Protocol to navigate sites protected by Cloudflare and other anti-bot systems for automation and testing workflows.

View details
69
Repo Health
66
Technical
73
Dependency
Built with
Python 94%
Updated 2 weeks ago
Java
46%
Other

Stirling PDF

Digital Signiture · Productivity

93,148

The open-source PDF platform you can run anywhere — edit, convert, sign, and automate PDFs without sending files to external servers.

View details
92
Repo Health
86
Technical
71
Dependency
Built with
Java 46%
TypeScript 45%
Updated 1 weeks ago
TypeScript
54%
MIT

supermemory

AI Development · AI Memory · Note Taking

30,958

The state-of-the-art memory and context engine for AI agents — ranked #1 on all three major AI memory benchmarks.

View details
87
Repo Health
82
Technical
68
Dependency
Built with
TypeScript 54%
MDX 31%
Python 13%
Updated 2 weeks ago
Python
94%
Apache 2.0

SWIRL

Data Engineering · Databases · Search

3,047

Federated AI search and RAG across 100+ enterprise sources—no data extraction, no vector database required.

View details
62
Repo Health
83
Technical
65
Dependency
Built with
Python 94%
Updated 1 weeks ago
Rust
93%
Other

Tabby

AI Code Assistants

33,892

Self-hosted AI coding assistant — run GitHub Copilot-grade code completion on your own hardware with no cloud dependency.

View details
58
Repo Health
78
Technical
61
Dependency
Built with
Rust 93%
Updated 3 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers