Python APIpython.org ↗
Access Python release metadata, download files, OS support lists, news, events, and site search via a structured REST API built on python.org data.
What is the Python API?
This API exposes 13 endpoints covering the full breadth of python.org data: release versions, downloadable files, OS compatibility, news articles, upcoming events, and full-text site search. The get_all_releases endpoint returns every published Python release with fields like is_latest, pre_release, release_date, and resource_uri, while get_release_files_by_release gives you direct download URLs and MD5 checksums for any specific release.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/196a6c49-f721-4a4b-a403-75f093a0672e/get_all_releases' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace python-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.python_org_api import PythonOrg, Release, OsSlug, SearchResult, ActiveVersion
client = PythonOrg()
# Get the latest stable Python release
latest = client.releases.latest()
print(latest.name, latest.release_date, latest.slug)
# List all active Python versions and their support status
for version in client.activeversions.list():
print(version.version, version.maintenance_status, version.end_of_support)
# Get OS-specific releases for Windows
os_releases = client.osreleaselists.get(os_slug=OsSlug.WINDOWS)
for release in os_releases.stable_releases:
print(release.name, release.date)
for dl in release.downloads:
print(dl.label, dl.url)
# Search python.org
for result in client.searchresults.search(query="asyncio"):
print(result.title, result.url, result.snippet)
# Browse FTP directory listing
for entry in client.ftpentries.list(path="3.12.0/"):
print(entry.name, entry.url)
# Get upcoming events
for event in client.events.list():
print(event.name, event.location, event.date)
Returns all Python releases from the python.org API. Each release includes version metadata, release dates, and resource URIs. The full list is returned in a single page and includes both Python 2.x and 3.x releases across all states (published, pre-release, etc.).
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of release objects with name, slug, version, is_latest, pre_release, is_published, release_date, resource_uri"
},
"sample": {
"data": {
"items": [
{
"name": "Python 3.14.3",
"slug": "python-3143",
"version": 3,
"is_latest": false,
"pre_release": false,
"is_published": true,
"release_date": "2026-02-03T18:27:43Z",
"resource_uri": "https://www.python.org/api/v2/downloads/release/1090/"
}
]
},
"status": "success"
}
}About the Python API
Release and Version Data
The get_all_releases and get_release_by_id endpoints return structured release records with fields including name (e.g. Python 3.14.4), slug, version (integer major version), is_latest, pre_release, is_published, and an ISO 8601 release_date. get_release_by_id accepts a numeric ID such as '1090' or '146'. To get only the current stable release without filtering client-side, use get_latest_release, which returns the highest published, non-pre-release Python 3.x record.
get_active_release_versions returns the lifecycle table from the downloads page — each record includes version, maintenance_status, first_released, end_of_support, and a download_link. This is the right endpoint for answering questions like "is Python 3.9 still supported?"
Download Files and OS Coverage
get_all_release_files returns every downloadable artifact across all releases. Each file record carries url, name, md5_sum, filesize in bytes, and API URIs pointing to the parent release and os. To scope files to a single release, pass a numeric ID or full resource URI path to get_release_files_by_release. get_supported_os_list returns the OS taxonomy (name, slug, resource_uri) used by those file records.
get_releases_for_os accepts an os_slug of windows, macos, or source and returns separate stable_releases and pre_releases arrays, each containing release name, URL, date, and download links. get_release_detail_page accepts a version_slug like 'python-3120' or a dotted version string like '3.12.0' and returns per-file metadata including operating_system, file_size, md5_checksum, and download URLs. Note it returns input_not_found for older releases without detail pages. get_ftp_index exposes the raw FTP directory listing; pass an optional path like '3.12.0/' to drill into a subdirectory.
News, Events, and Search
get_news returns the latest items from the Python blog: title, url, date, and an optional summary. get_events returns upcoming community events with name, url, date (a date-range string), and optional location. search accepts a query string and returns matching pages with title, url, and an optional snippet. Not every query returns results — coverage depends on the site's own search index.
The Python API is a managed, monitored endpoint for python.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when python.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official python.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a release monitor that alerts when
is_latestchanges or a new non-pre_releaseversion appears - Generate a download page for your CI pipeline by fetching
urlandmd5_sumfor the target platform fromget_release_files_by_release - Display Python version support status in documentation by reading
maintenance_statusandend_of_supportfromget_active_release_versions - Populate a changelog feed by pulling
nameandrelease_datefromget_all_releasesfiltered to a given majorversion - Track upcoming Python conferences and meetups by polling
get_eventsfor newnameanddaterecords - Audit artifact availability across platforms by cross-referencing
get_supported_os_listslugs againstget_all_release_filesOS URIs - Surface relevant python.org documentation links in a developer tool using the
queryparameter ofsearch
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does python.org have an official developer API?+
What does `get_active_release_versions` return compared to `get_all_releases`?+
get_all_releases returns every release record ever published — including old minor versions — with fields like is_published, pre_release, and a resource_uri. get_active_release_versions returns only the major-version lifecycle rows visible on the downloads page, with maintenance_status, first_released, and end_of_support fields that get_all_releases does not include.Are Python 2.x release files available?+
version field will be 2), and get_all_releases returns them. However, get_release_detail_page returns input_not_found for older releases that do not have a structured detail page. get_releases_for_os covers only releases listed on OS-specific downloads pages, which may not include legacy Python 2.x artifacts.Does the API return PEP data or Python documentation pages?+
How fresh is the news and events data from `get_news` and `get_events`?+
get_news and get_events reflect what is currently published on python.org/blogs/ and python.org/events/ respectively. There is no date-range filter parameter; both endpoints return whatever is visible on those pages at request time. If you need historical news items or past events, the current endpoints do not support that — you can fork the API on Parse and revise the endpoint to paginate or archive older entries.