Developer tools · Coming soon

Statuspage Incidents Monitor for Vendor Status Pages

Check the status pages of vendors you use, like GitHub or Cloudflare. You get status, components, recent incidents and planned maintenance. A snapshot shows what changed.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

serviceGitHub
pageUrlhttps://www.githubstatus.com
pageIdkctbh9vrtdwd

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: github in Official status pages. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Read vendor Statuspage APIs and get service status, components, incidents and planned maintenance in JSON. Compare your previous snapshot to find changed services.

Who uses it

SRE teams

Keep one table of vendor status next to your own alerts.

IT and support teams

Check if an outage comes from a vendor before users ask.

Ops managers

Track planned maintenance from your main vendors.

Price

Prices will be shown after release.

Questions

Does a green status mean the service is up?

Not always. It shows what the vendor posts, not its real uptime.

Do I get the full incident history?

No. You get the vendor's latest feed, often 50 incidents, plus open ones.

Which status pages work?

Vendor pages that use the Statuspage JSON API, up to 50 per run.

Do unchanged services cost money?

Yes. Each checked service has one fee. Incidents have no extra fee.

Details

Step by step on Apify
  1. Open Input. Keep the five sample names in statusPages.
  2. Keep includeComponents: true and onlyChanges: false.
  3. Click Start.
  4. Open the Services dataset view. Check service and overallIndicator.
  5. Open Status details for the nested lists. Export JSON for full nested data, or CSV for the service table.
  6. Open the output links for RUN_SUMMARY and SNAPSHOT.
Use cases
TaskSettingsResult
Refresh a vendor status dashboardonlyChanges: falseOne current record per checked service.
Check for updates before sending an alertPrior snapshot and onlyChanges: trueOnly services with new or changed observations.
Review recent incident updatesincidentsSinceRecently updated resolved incidents plus all unresolved incidents in the available feed.
Track planned workAny normal runUpcoming or active maintenance in each service record.
Tips for better results
  • Start with the five sample vendors. Then add your own status page URL.
  • Save the SNAPSHOT and use it next run with only changes on.
  • Keep the same component and date settings when you compare runs.
Limits and good to know

CHARGE_LIMIT gives a successful run with partial and preserves delivered results. A source error, bad response, deadline or graceful cancellation gives a failed run with an error or partial summary. Earlier saved rows remain. The Actor stops at the first source failure. It does not invent a green record for unread pages. A valid service with no incidents still returns its status record.

  • Up to 50 URL entries, checked once per distinct page. Custom URLs must be vendor-operated pages with the compatible JSON API
  • Latest incident feed only. Some vendors have fewer incidents or more components. Maintenance is only the upcoming/active list in the summary
  • Two source requests per page, with up to two redirects and two attempts per request. Request cap: 200; body cap: 2 MB; total body cap: 16 MB
  • Source work stops after 150 seconds, even with a larger platform timeout. Default timeout is 300 seconds. Memory is fixed at 256 MB; other memory levels are rejected with RESOURCE_ERROR
  • No key, login, CAPTCHA bypass, proxy or independent uptime probe
  • Data may change between the summary and history requests. Vendor publishing delays also affect freshness
  • No open data licence is supplied. Source text belongs to its provider. Follow the vendor's terms. See the GitHub API and Atlassian terms

Troubleshooting

Symptom / reasonCheck and action
INVALID_URL or INPUT_PAGESUse 1–50 HTTPS vendor root URLs or the six built-in names. Remove credentials, query strings and fragments.
NOT_FOUND, HTTP_ERROR, INVALID_JSON or SOURCE_SCHEMAOpen the vendor's public summary API. A custom or changed API format is unsupported. Check the URL or contact support.
UNSAFE_ADDRESS or UNSAFE_REDIRECTPrivate/internal addresses and unsafe redirects are blocked. Use a public vendor page.
RATE_LIMIT, REQUEST_TIMEOUT or SOURCE_ERRORThe vendor limited or failed the request. Retry later with fewer pages. Earlier rows may still be available.
SNAPSHOT_SCOPEUse the same includeComponents and incidentsSince as the old snapshot, or start a fresh baseline.
SNAPSHOT_LIMITKeep the union at 50 pages and snapshot under 1 MB. Start a fresh baseline before it exceeds the fingerprint limit.
Empty dataset in change modeCheck unchangedPages. It is normal when all checked services are unchanged. Service checks are still charged.
CHARGE_LIMITRaise your charge limit or use fewer pages. Only delivered results update the snapshot.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "service": "GitHub",
  "pageUrl": "https://www.githubstatus.com",
  "pageId": "kctbh9vrtdwd",
  "overallIndicator": "none",
  "overallDescription": "All Systems Operational",
  "components": [
    {
      "id": "0l2p9nhqnxpd",
      "name": "Visit www.githubstatus.com for more information",
      "status": "operational",
      "updatedAt": "2025-03-19T05:00:21.309Z"
    }
  ],
  "incidents": [
    {
      "id": "hcbtzksccj2f",
      "name": "Disruption with some GitHub services",
      "status": "resolved",
      "impact": "minor",
      "createdAt": "2026-08-26T15:09:03.575Z",
      "updatedAt": "2026-08-31T20:41:06.290Z",
      "resolvedAt": "2026-08-26T16:07:52.512Z",
      "shortlink": "https://stspg.io/4s4bvnc0frrj",
      "lastUpdateText": "Please refer to the combined summary in this related incident:  https://www.githubstatus.com/incidents/y1t7p9fzrlj2",
      "lastUpdateAt": "2026-08-26T16:07:52.512Z",
      "scheduledFor": null,
      "scheduledUntil": null
    }
  ],
  "scheduledMaintenances": [],
  "provider": "atlassian-statuspage-v2",
  "sourceUrl": "https://www.githubstatus.com/api/v2/summary.json",
  "sourceUpdatedAt": "2026-10-13T16:19:26.788Z",
  "fetchedAt": "2026-10-13T17:26:09.319Z",
  "dataLicence": null,
  "historyCoverage": "latest_incidents_feed_and_all_unresolved",
  "changeType": "new",
  "status": "complete"
}
Data fields (16)
FieldTypeMeaning
servicestringVendor name from the status page.
pageUrlstringNormalized requested HTTPS status page.
pageIdstringVendor page ID, verified across both API responses.
overallIndicatorstringRaw vendor overall indicator such as none, minor, major or critical.
overallDescriptionstringVendor text describing the overall status.
componentsarrayCurrent component IDs, names, states and update dates; empty when disabled.
incidentsarrayLatest incidents feed plus all unresolved incidents from the summary, filtered by update date.
scheduledMaintenancesarrayUpcoming or active planned work from the summary API.
providerstringStatus API format, not an endorsement or an uptime measurement.
sourceUrlstringSummary API URL; recent history comes from incidents.json on the same page.
sourceUpdatedAtstringPage update time supplied by the vendor; null when absent.
fetchedAtstringUTC time when this service record was normalized.
dataLicencenullNull because the vendor API supplies no data licence statement.
historyCoveragestringExplicit bounded feed coverage; the full incident archive is not fetched.
changeTypestringComparison with the supplied snapshot: new, changed, or unchanged.
statusstringComplete means this service was read within the documented feed coverage. Read RUN_SUMMARY for run-level partial failures.
Input settings (5)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Official status pages requiredstatusPagesarray["github", "atlassian", "cloudflare", "digitalocean", "discord"]
Include componentsincludeComponentsbooleantrue
Incidents updated sinceincidentsSincestring
Previous snapshotpreviousSnapshotobject
Only changed servicesonlyChangesbooleanfalse

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure