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
55%
Other

PostHog

Ab Testing Experimentation · Analytics · Developer Tools

39,975

The all-in-one open source product platform combining analytics, session replay, feature flags, error tracking, AI observability, and a built-in data warehouse in a single self-hostable stack.

View details
92
Repo Health
80
Technical
65
Dependency
Built with
Python 55%
TypeScript 36%
Updated 1 weeks ago
Python
86%
Apache 2.0

PrivateGPT

AI Development

57,548

The open-source API layer that turns local LLMs into production private AI applications with full Claude API compatibility

View details
87
Repo Health
83
Technical
69
Dependency
Built with
Python 86%
Updated 2 weeks ago
TypeScript
97%
MIT

Promptfoo

AI Development

25,506

An open-source CLI and library for evaluating and red-teaming LLM applications — replace trial-and-error prompt engineering with systematic evals, vulnerability scanning, and CI/CD integration.

View details
90
Repo Health
73
Technical
68
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago
Rust
90%
Apache 2.0

Qdrant

AI Development · Databases · Search

34,857

Open-source vector database and search engine built in Rust for production-grade AI applications — from semantic search to RAG pipelines and recommendation systems.

View details
92
Repo Health
87
Technical
65
Dependency
Built with
Rust 90%
Updated 1 weeks ago
Python
99%
Apache 2.0

Rasa Open Source

AI Assistants · AI Development · Voice AI

21,332

Rasa Open Source is a Python machine learning framework for building contextual, multi-turn chatbots and voice assistants that understand natural language and maintain conversation state.

View details
64
Repo Health
78
Technical
63
Dependency
Built with
Python 99%
Updated 2 months ago
Python
46%
Other

Redash

Analytics · Data Engineering

28,817

Redash lets anyone connect to 35+ SQL and NoSQL data sources, write a query in the browser, and turn the result into a shared dashboard — no separate BI suite required.

View details
92
Repo Health
74
Technical
60
Dependency
Built with
Python 46%
JavaScript 30%
TypeScript 17%
Updated 1 weeks ago
TypeScript
98%
Apache 2.0

rowboat

AI Assistants · AI Development

17,983

Build, test, and deploy multi-agent AI workflows with a visual editor, RAG data sources, MCP tool integration, and a production-ready REST API.

View details
85
Repo Health
72
Technical
65
Dependency
Built with
TypeScript 98%
Updated 2 weeks ago
Python
76%
Apache 2.0

Second Me

AI Assistants · Productivity

15,690

Train a locally hosted AI twin on your own memories—then connect it to the world through a decentralized identity network.

View details
41
Repo Health
75
Technical
67
Dependency
Built with
Python 76%
TypeScript 19%
Updated 1 years ago
Python
57%
Other

Sentry

Analytics · Developer Tools · Monitoring

44,862

Developer-first error tracking and performance monitoring platform with AI-powered root-cause analysis across 20+ languages and frameworks.

View details
95
Repo Health
80
Technical
69
Dependency
Built with
Python 57%
TypeScript 41%
Updated 1 weeks 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