Downdetector APIdowndetector.com ↗
Query active service outages and 24-hour report counts from Downdetector. Filter by service name or category. Get sparkline data for 96 15-minute intervals.
What is the Downdetector API?
The Downdetector API exposes 2 endpoints that surface which online services are currently down and how many users have reported problems. The get_active_outages endpoint returns a list of services in 'danger' or 'warning' status, each with a reports_24h count and a 96-point sparkline array covering the past 24 hours in 15-minute increments. A second endpoint, get_categories, returns all filterable category slugs.
curl -X GET 'https://api.parse.bot/scraper/b6b394ee-f67f-4e48-8ea9-5960836c8f31/get_active_outages?category=banking' \ -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 downdetector-com-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.
"""Walkthrough: Downdetector SDK — list categories, filter outages by category."""
from parse_apis.downdetector_com_api import Downdetector, ParseError
client = Downdetector()
# List all available service categories.
for cat in client.categories.list(limit=5):
print(f"{cat.name} (slug: {cat.slug})")
# Pick the first category and list its active outages.
first_cat = client.categories.list(limit=1).first()
if first_cat is not None:
print(f"\nOutages in '{first_cat.name}':")
for outage in first_cat.outages.list(limit=5):
print(f" {outage.name} ({outage.status}): {outage.reports_24h} reports in 24h")
# List all active outages regardless of category.
try:
for outage in client.outages.list(limit=5):
print(f"{outage.name} [{outage.category}] — {outage.reports_24h} reports")
except ParseError as e:
print(f"Extraction failed: {e.code}")
print("\nexercised: categories.list / category.outages.list / outages.list")
Returns services currently experiencing outages (status 'danger' or 'warning') along with the total number of user-submitted problem reports in the past 24 hours. Each outage includes a sparkline array of 96 values representing report counts per 15-minute interval over the past 24 hours. Results are sorted by reports descending. The data reflects the top ~48 trending services monitored by Downdetector for the United States region; services with a 'success' status are excluded. Supports optional filtering by category slug and service name substring.
| Param | Type | Description |
|---|---|---|
| name | string | Filter outages to only those whose service name contains the given string (case-insensitive substring match). |
| category | string | Filter outages to only those matching a specific category slug (e.g. 'messaging', 'gaming', 'social-media'). Use get_categories to discover available slugs. |
{
"type": "object",
"fields": {
"total": "integer count of currently active outages after filtering",
"outages": "array of outage objects, each containing id, name, slug, category, status, reports_24h, and sparkline"
},
"sample": {
"data": {
"total": 8,
"outages": [
{
"id": "52850",
"name": "Internet Archive",
"slug": "internetarchive",
"status": "danger",
"category": "libraries",
"sparkline": [
5,
15,
8,
4,
3,
1,
1,
2,
1,
5,
1,
1,
0,
2,
2,
2,
1,
1,
3,
1,
2,
3,
2,
4,
4,
5,
10,
4,
5,
3,
3,
2,
4,
7,
4,
4,
7,
9,
14,
4,
19,
18,
11,
3,
7,
13,
6,
9,
12,
40,
189,
230,
213,
235,
243,
366,
413,
428,
418,
406,
474,
467,
414,
432,
452,
451,
518,
342,
255,
281,
246,
267,
237,
228,
244,
157,
166,
217,
214,
194,
190,
176,
170,
174,
166,
170,
138,
157,
163,
120,
126,
119,
117,
128,
94,
84
],
"reports_24h": 11986
},
{
"id": "35795",
"name": "Discord",
"slug": "discord",
"status": "warning",
"category": "messaging",
"sparkline": [
16,
14,
15,
12,
6,
10,
9,
5,
18,
5,
7,
3,
3,
5,
7,
4,
4,
4,
9,
7,
5,
3,
6,
4,
4,
12,
1,
10,
8,
6,
16,
20,
15,
19,
18,
20,
26,
44,
27,
33,
35,
36,
35,
46,
45,
49,
47,
37,
32,
39,
68,
157,
58,
41,
32,
53,
70,
48,
50,
56,
48,
43,
41,
56,
58,
47,
36,
49,
66,
47,
60,
69,
49,
78,
45,
70,
68,
74,
54,
66,
76,
57,
39,
51,
39,
41,
26,
40,
43,
26,
31,
28,
37,
25,
29,
30
],
"reports_24h": 3236
}
]
},
"status": "success"
}
}About the Downdetector API
Outage Data
The get_active_outages endpoint returns every service currently flagged as 'danger' or 'warning' on Downdetector. Each outage object includes id, name, slug, category, status, reports_24h, and sparkline. The sparkline field is an array of 96 integers, each representing the user-submitted problem report count for one 15-minute window over the past 24 hours — useful for distinguishing a spike that just started from one that's been ongoing for hours.
Filtering Outages
Two optional parameters narrow the results from get_active_outages. The name parameter performs a case-insensitive substring match against the service name, so a value of "twitch" would match any service whose name contains that string. The category parameter accepts a category slug (e.g. messaging, gaming, social-media) and restricts results to services in that category. Both filters can be combined, and the response always includes a total field reflecting the count after filtering.
Categories
The get_categories endpoint returns the complete list of service categories present in Downdetector's trending data. Each category object contains a slug — the value to pass into get_active_outages's category parameter — and a human-readable name derived from that slug. The total field indicates how many distinct categories are currently represented. This endpoint takes no inputs and is useful for discovering valid filter values before querying active outages.
The Downdetector API is a managed, monitored endpoint for downdetector.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when downdetector.com 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 downdetector.com 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?+
- Alert engineering teams when a third-party dependency (e.g. AWS, Cloudflare) has an active outage by polling
reports_24h - Build a status dashboard that groups currently down services by
categoryusing the category filter - Detect outage onset timing by analyzing the
sparklinearray for a sudden rise in the last few 15-minute intervals - Filter outages to a specific service by name to embed a live status badge in a product's status page
- Correlate your own application's error rate spikes with active outages from services you depend on
- Track which service categories (e.g. 'gaming', 'messaging') see the most concurrent outages at a given time
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Downdetector have an official developer API?+
What does the `sparkline` field in `get_active_outages` actually represent?+
Can I retrieve historical outage data or past incidents for a specific service?+
Does the API return outage data for services outside the currently active set — for example, services with normal status?+
get_active_outages endpoint only returns services currently flagged as 'danger' or 'warning'. Services with a normal status are not included in the response. You can fork the API on Parse and revise it to add coverage for services regardless of their current status.