Public API
Free, read-only JSON endpoints with the current status of every monitored service. No key, no signup.
Endpoints
https://downradar.info/api/v1/vendorshttps://downradar.info/api/v1/vendors/{slug}The first returns every monitored service, around 25 KB for 71 services. The second returns one service with its components, recent status changes and incidents.
Example
curl -s https://downradar.info/api/v1/vendors{
"count": 2,
"vendors": [
{
"slug": "elastic",
"name": "Elastic",
"url": "https://status.elastic.co",
"category": "observability",
"logoUrl": "https://dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/862/favicon.ico",
"status": "partial",
"changedAt": "2026-10-15T10:45:06Z",
"components": 548,
"degradedComponents": 7,
"lastPolledAt": "2026-10-15T11:31:04Z"
},
{
"slug": "strava",
"name": "Strava",
"url": "https://status.strava.com",
"category": "fitness",
"logoUrl": "https://dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/8442/qdVJwxWnSKqnbylGekz0",
"status": "ok",
"changedAt": "2026-10-15T10:45:04Z",
"components": 6,
"degradedComponents": 0,
"lastPolledAt": "2026-10-15T11:31:03Z"
}
]
}Fields
| Field | Type | Description |
|---|---|---|
| slug | string | Stable identifier. Use it to build the vendor page URL. |
| name | string | Display name of the service. |
| url | string | The service's official status page, the source of the data. |
| category | string | Optional grouping label, curated by hand. |
| logoUrl | string | Optional logo. May be absent. |
| status | string | One of the status values listed below. |
| changedAt | string | null | When the status last changed. Not the last check time. |
| components | number | How many components the status page reports. |
| degradedComponents | number | How many of those are not operational. |
| lastPolledAt | string | null | When this service was last checked. |
Status values
| Value | Meaning |
|---|---|
| Operational | Fully operational |
| Degraded | Slower or partially affected, still usable |
| Partial outage | Some components are having an outage |
| Major outage | Critical components are down |
| Maintenance | Planned maintenance |
| Unknown | No data, or vocabulary we do not recognise |
Rate limits
- 120 requests per minute per IP, with a burst of 30. This is far more than a normal integration needs, and it exists to stop abuse rather than to meter usage.
- Exceeding it returns
429 Too Many Requestswith aRetry-After: 60header and a small JSON body. - Because responses are cacheable for a minute, caching on your side is the easiest way to stay well inside the limit.
Caching and freshness
- Responses carry
Cache-Control: public, max-age=60, stale-while-revalidate=300, so caching for a minute is safe. - Each service is polled every 5 minutes while healthy, and every minute while it is having problems. Data can therefore be up to 5 minutes old.
changedAtis when the status last changed, which can be much older thanlastPolledAt.
Suggesting a service
If a service is missing, the website offers to suggest it. That form posts to POST /api/v1/suggest with { "name": "...", "url": "..." }, where the url is optional, and turns the suggestion into a GitHub issue. It is rate limited much more tightly than the read endpoints.
Terms
Free to use, including commercially. Please cache rather than polling aggressively, and link back to https://downradar.info where it makes sense. The data comes from each service's own status page, so treat it as a convenience rather than a contract.