Downdetector APIdowndetector.com.br ↗
Retrieve real-time user-reported outage data from Downdetector Brasil. Current report count, status, 24-hour history, and peak reports for any tracked service.
What is the Downdetector API?
The Downdetector Brasil API exposes 10 response fields per call via the single get_outage_reports endpoint, giving you the current outage status, user report counts, baseline comparison, and a full 24-hour history of 15-minute data points for any service tracked on downdetector.com.br — such as Pix, banking platforms, or telecom providers.
curl -X GET 'https://api.parse.bot/scraper/e30923e4-39d4-4a20-ba3d-73aba594e962/get_outage_reports?slug=pix' \ -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-br-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 Brasil – check current outage status for a service."""
from parse_apis.downdetector_com_br_api import Downdetector, InputFormatInvalid
client = Downdetector()
# Fetch the current outage report for Pix (Brazil's instant payment system).
try:
report = client.outage_reports.get(slug="pix")
except InputFormatInvalid as e:
print(f"Invalid slug: {e.message}")
raise
print(f"{report.service_name} ({report.slug}): status={report.status}")
print(f" current reports: {report.current_reports} baseline: {report.current_baseline}")
print(f" 24h peak: {report.peak_reports_24h} 24h baseline max: {report.baseline_max_24h}")
# Show the most-reported problem categories.
for problem in report.most_reported_problems:
print(f" problem: {problem.name} — {problem.count} reports ({problem.percentage:.1f}%)")
# Inspect the two most recent data points in the 24-hour series.
for point in report.data_points[-2:]:
print(f" {point.timestamp_utc} reports={point.reports} baseline={point.baseline}")
print("exercised: outage_reports.get")
Returns the current user-report data for one service's outage page on Downdetector Brasil, in a single page fetch. The result is one object per call: the service identity, the site's overall status word (for example 'warning' when reports exceed the typical baseline), current_reports (the user report count of the most recent 15-minute data point, i.e. the 'current number of user reports'), the typical baseline for that point, the peak report count over the last 24 hours, the full 24-hour series of 15-minute data points (newest last), and the breakdown of most reported problem types with counts and percentages. A service slug that the site does not recognise is not served as a normal not-found page; the site answers it with a challenge page, which is reported as a blocked result rather than an empty one.
| Param | Type | Description |
|---|---|---|
| slug | string | Service slug as used in the outage page address, lowercase letters, digits and hyphens (one shape: pix). Only slugs the site publishes are served. |
{
"type": "object",
"fields": {
"slug": "service slug echoed from the page",
"status": "site's overall status word for the service (e.g. warning)",
"service_id": "site's numeric service identifier as a string",
"data_points": "array of 15-minute points {timestamp_utc, reports, baseline} for the last 24 hours, oldest first",
"service_name": "display name of the service",
"current_reports": "integer user report count at the most recent data point",
"baseline_max_24h": "integer highest baseline value in the last 24 hours",
"current_baseline": "integer typical report volume at the most recent data point",
"peak_reports_24h": "integer highest report count in the last 24 hours",
"current_timestamp_utc": "ISO-8601 UTC timestamp of the most recent data point",
"most_reported_problems": "array of problem types {problem_id, name, count, percentage} sorted by count descending"
},
"sample": {
"data": {
"slug": "pix",
"status": "warning",
"service_id": "54595",
"data_points": [
{
"reports": 2,
"baseline": 6,
"timestamp_utc": "2026-10-13T20:55:12+00:00"
},
{
"reports": 12,
"baseline": 6,
"timestamp_utc": "2026-10-14T20:40:12+00:00"
}
],
"service_name": "Pix",
"current_reports": 12,
"baseline_max_24h": 6,
"current_baseline": 6,
"peak_reports_24h": 170,
"current_timestamp_utc": "2026-10-14T20:40:12+00:00",
"most_reported_problems": [
{
"name": "Funds Transfer",
"count": 103,
"percentage": 36.01398601398601,
"problem_id": "5"
},
{
"name": "Payments",
"count": 89,
"percentage": 31.11888111888112,
"problem_id": "3"
}
]
},
"status": "success"
}
}About the Downdetector API
What the API returns
The get_outage_reports endpoint accepts a single optional slug parameter — the lowercase, hyphen-separated identifier that appears in a downdetector.com.br outage URL (for example, pix). Each response returns one object containing the service's service_name, its internal service_id, and the site's computed status word (e.g. warning or success) reflecting whether current reports exceed the expected baseline.
Report counts and baseline data
The response includes current_reports (the integer user-report count at the most recent sample), current_baseline (the expected typical volume at that moment), and baseline_max_24h and peak_reports_24h for quick range comparisons over the past day. current_timestamp_utc is the ISO-8601 UTC timestamp of the most recent data point.
24-hour history via data_points
The data_points array contains objects with timestamp_utc, reports, and baseline at 15-minute granularity, ordered oldest-first across the last 24 hours. This lets you chart report volume against the historical baseline, detect spikes, or calculate when a service crossed the anomaly threshold — without a separate time-series call.
The Downdetector API is a managed, monitored endpoint for downdetector.com.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when downdetector.com.br 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.br 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 a Slack channel when
statusshifts towarningfor a payment service like Pix - Plot
data_pointsreports vs. baseline on a dashboard to visualize outage onset and recovery - Compare
peak_reports_24hagainstbaseline_max_24hto quantify how severe a disruption was - Poll
current_reportson a schedule to log historical uptime trends for Brazilian SaaS dependencies - Feed
current_timestamp_utcandstatusinto an incident management system as an automated outage signal - Monitor multiple slugs in parallel to track correlated outages across banks and payment processors
| 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 Brasil offer an official developer API?+
What does the `status` field actually represent?+
warning indicate that current user reports meaningfully exceed the baseline, while a neutral value indicates normal volume. It does not map to a numeric severity scale; it is a categorical label derived from the report-to-baseline comparison.How granular is the historical data returned in `data_points`?+
data_points represents a 15-minute window and includes timestamp_utc, reports, and baseline. The array covers the prior 24 hours, ordered oldest-first. Data older than 24 hours is not included in the current response.Can I retrieve user comments or the breakdown of problem types (e.g. 'app not working' vs 'login issues') for a service?+
Is it possible to search or list all available service slugs?+
get_outage_reports endpoint requires you to supply a known slug directly; there is no discovery or search endpoint that enumerates tracked services. You can fork this API on Parse and revise it to add a listing endpoint.