DEV Community

Denis Domino
Denis Domino

Posted on

How to detect when GitHub, AWS, or Discord is down — using a free JSON API

When your app breaks, the first question is always: is it us, or is it them?

If you depend on GitHub, AWS, Discord, Stripe, Cloudflare, or any major third-party service, you've probably wasted hours debugging your own code only to find out the service was down the whole time.

There's a free API for this. Let me show you how to use it.

Meet DownStatus

DownStatus is a free, public JSON API that gives you real-time status for 90+ popular services — no API key required.

curl https://isitdownstatus.com/api/status/github
Enter fullscreen mode Exit fullscreen mode

Response:

{
  "service": "github",
  "status": "operational",
  "updated_at": "2026-05-11T08:00:00Z"
}
Enter fullscreen mode Exit fullscreen mode

That's it. No signup, no tokens, no rate limit headers to parse.

Practical use cases

1. Show a banner when a dependency is down

async function checkGitHubStatus() {
  const res = await fetch('https://isitdownstatus.com/api/status/github');
  const data = await res.json();

  if (data.status !== 'operational') {
    showBanner(`GitHub is currently ${data.status}. Some features may be unavailable.`);
  }
}
Enter fullscreen mode Exit fullscreen mode

2. Skip CI/CD steps when upstream is down

#!/bin/bash
STATUS=$(curl -s https://isitdownstatus.com/api/status/github | jq -r '.status')

if [ "$STATUS" != "operational" ]; then
  echo "GitHub is $STATUS — skipping deployment"
  exit 0
fi

# continue with deployment...
Enter fullscreen mode Exit fullscreen mode

3. Alert your team proactively (Node.js + Slack)

const SERVICES = ['aws', 'github', 'stripe', 'cloudflare'];

async function checkAll() {
  for (const service of SERVICES) {
    const res = await fetch(`https://isitdownstatus.com/api/status/${service}`);
    const { status } = await res.json();

    if (status !== 'operational') {
      await notifySlack(`⚠️ ${service} is ${status}`);
    }
  }
}

// Run every 5 minutes
setInterval(checkAll, 5 * 60 * 1000);
Enter fullscreen mode Exit fullscreen mode

4. Python health check script

import requests

SERVICES = ['aws', 'discord', 'github', 'stripe']

def check_dependencies():
    issues = []
    for service in SERVICES:
        r = requests.get(f'https://isitdownstatus.com/api/status/{service}')
        data = r.json()
        if data['status'] != 'operational':
            issues.append(f"{service}: {data['status']}")
    return issues

if __name__ == '__main__':
    problems = check_dependencies()
    if problems:
        print("Upstream issues detected:")
        for p in problems:
            print(f"  - {p}")
    else:
        print("All services operational ✓")
Enter fullscreen mode Exit fullscreen mode

Services covered

90+ services including:

  • Cloud: AWS, Google Cloud, Azure, Cloudflare, Vercel, Netlify, DigitalOcean
  • Dev tools: GitHub, GitLab, npm, Docker Hub, Sentry
  • Payments: Stripe, PayPal, Braintree
  • Comms: Discord, Slack, Twilio, SendGrid
  • Data: Airtable, Notion, MongoDB Atlas, Supabase

Why I built this

Debugging "is it us or them?" is a universal dev experience. Every monitoring tool I found either required signup, had rate limits, or cost money. DownStatus is just a clean, free JSON endpoint — nothing more.

Check out isitdownstatus.com and let me know if you find it useful. PRs for adding more services are welcome!


What services do you depend on most? Drop them in the comments and I'll make sure they're covered.

Top comments (0)