Pull incident history from any Atlassian Statuspage with Python

Many vendor status pages are hosted on Atlassian Statuspage. Each one exposes public JSON endpoints, such as /api/v2/incidents.json and /api/v2/summary.json, and they need no API key.

This script uses only the requests library. It takes a status page base URL, fetches the incident list, and prints each incident with its status, impact, creation time and shortlink, newest first.

import sys
import requests

def main(base_url):
    url = base_url.rstrip("/") + "/api/v2/incidents.json"
    resp = requests.get(url, timeout=15)
    resp.raise_for_status()
    incidents = resp.json().get("incidents", [])
    incidents.sort(key=lambda i: i["created_at"], reverse=True)
    for inc in incidents:
        print(f'{inc["created_at"]}  [{inc["status"]}/{inc["impact"]}]  {inc["name"]}')
        print(f'    {inc.get("shortlink", "")}')

if __name__ == "__main__":
    main(sys.argv[1] if len(sys.argv) > 1 else "https://www.githubstatus.com")

Install requests with pip install requests, then run python statuspage_incidents.py https://www.githubstatus.com. Pass any other Statuspage base URL to check that vendor.

Reviewing a vendor's outage history

Run the script before a renewal or an architecture decision to see how often a provider's incidents are minor and how often they are major. Each entry includes an impact level and a resolved or unresolved status, so you can count incidents by impact over the last few months. The incident endpoint returns only recent incidents, so treat the output as a recent window rather than a full archive.

Some vendors do not use Statuspage, or they disable the public JSON endpoints. In that case the script will return an HTTP error, and you should check the vendor's status page directly.