# SaaS Outage Monitor: Status Page Incidents for 134 Vendors (`scrapemint/saas-outage-monitor`) Actor

Outages and incidents from the status pages of OpenAI, Anthropic, GitHub, AWS, Google Cloud, Slack, Cloudflare, Vercel, Datadog and 125 more. Schedule it and get only what changed: new, escalated and resolved incidents. No key, no proxy. Pay per incident.

- **URL**: https://apify.com/scrapemint/saas-outage-monitor.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SaaS Outage Monitor: Status Page Incidents for 134 Vendors

Know when the tools you depend on break. This reads the public status pages of **OpenAI, Anthropic, GitHub, AWS, Google Cloud, Slack, Cloudflare, Vercel, Datadog, Twilio, Shopify, Zoom** and 122 more, and turns them into one feed of incidents in a single shape.

Put it on a schedule and each run returns **only what changed** since the last one:

- **new**: an incident that just appeared
- **escalated**: an open incident the vendor raised to major or critical
- **resolved**: an incident you were shown open that is now fixed, with how long it lasted

Quiet runs return nothing and cost nothing. Connect it to Slack, email or a webhook through Apify integrations and you have outage alerts for your whole stack.

No key, no login, no browser, no proxy: every status page here serves a public feed.

### What you get

| Field | Example |
|---|---|
| `vendor`, `category` | `Anthropic`, `ai` |
| `changeType` | `new`, `escalated` or `resolved` |
| `title` | `Elevated errors on claude.ai, Claude Code...` |
| `impact` | `none`, `minor`, `major`, `critical` (the vendor's own rating) |
| `status` | `investigating`, `identified`, `monitoring`, `resolved`... |
| `startedAt`, `resolvedAt`, `durationMinutes` | when it began, ended, and how long it ran |
| `affectedComponents` | `["claude.ai", "Claude Console"]` |
| `affectedRegions` | Google Cloud and AWS regions, where the vendor gives them |
| `latestUpdate` | the vendor's most recent message on the incident |
| `url` | the incident page |

### Examples

- **Alert on your AI providers:** `vendors: ["OpenAI", "Anthropic", "Cohere", "Groq"]`, schedule every 5 minutes
- **Only real outages across everything:** leave vendors empty, `minImpact: "major"`
- **Watch a whole category:** `categories: ["cloud", "observability"]`
- **Outage history for a reliability report:** `onlyChanges: false`, `lookbackHours: 720`
- **A vendor not listed:** add its page to `customStatusPages`, e.g. `https://status.example.com`. Most SaaS status pages run on Atlassian Statuspage and work as is.

### How the first run works

The first run in your account saves a baseline and returns every incident still open, plus anything started in the last `lookbackHours` (default 24). From then on you get changes only. The baseline lives in a key-value store in your own account, so separate schedules with different vendor lists each keep their own view of what they have shown you. Adding a vendor later gives that vendor its own baseline, so its backlog is not billed as new.

### Pricing

| Event | Price | When |
|---|---|---|
| `incident_row` | $0.005 | a new minor or no-impact incident |
| `major_incident_row` | $0.02 | a new major or critical incident, or an open one escalated to that level |
| `resolution_row` | $0.005 | an incident you were shown open has been resolved |

A run that finds nothing new returns nothing and costs nothing but a few seconds of compute. Set `minImpact: "major"` to receive and pay for major outages only.

### Vendors

- **ai** (10): Anthropic, Cohere, Cursor, ElevenLabs, Fireworks AI, Groq, OpenAI, Perplexity, Pinecone, Runway
- **cloud** (25): AWS, Bunny, Cloudflare, Cloudinary, Confluent, dbt Cloud, DigitalOcean, Elastic, Fly.io, Google Cloud, Imgix, Linode, Mapbox, Metabase, Mux, Netdata, Netlify, PlanetScale, Render, Snowflake, Supabase, Tailscale, Upstash, Vercel, Wasabi
- **collaboration** (22): Airtable, Asana, Atlassian, Box, Canva, ClickUp, Discord, Dropbox, Dropbox Sign, Epic Games, Figma, Grammarly, Miro, monday.com, Notion, Reddit, Slack, Smartsheet, Trello, Twitch, Vimeo, Zoom
- **commerce** (4): BigCommerce, Recharge, Shopify, Wix
- **devtools** (19): Apify, Bitbucket, Bubble, Buildkite, CircleCI, Confluence, Docker, GitHub, Hex, Jira, LaunchDarkly, Linear, npm, Postman, Retool, Sentry, Snyk, Statuspage, Travis CI
- **hr** (4): Greenhouse, Gusto, Lever, Rippling
- **marketing-sales** (23): ActiveCampaign, Aircall, Amplitude, Bandwidth, Brevo, Buffer, Close, Contentful, Gong, Hootsuite, Hotjar, HubSpot, Klaviyo, Mailgun, Mixpanel, Resend, Segment, Squarespace, Twilio, Typeform, Webflow, Zapier, ZoomInfo
- **observability** (4): Datadog, Grafana, Honeycomb, New Relic
- **payments-finance** (17): Affirm, Afterpay, Brex, Chargebee, Coinbase, Gemini, Klarna, Kraken, Marqeta, Mercury, Paddle, Plaid, Recurly, Robinhood, Square, Wise, Xero
- **security-identity** (4): 1Password, Clerk, Duo, JumpCloud
- **support** (2): Gorgias, Help Scout

Slack, Google Cloud and AWS publish their own formats and are read by dedicated adapters. AWS removes an event from its dashboard when it ends, so an AWS event that disappears is reported as resolved.

### Notes

- Impact is the vendor's own rating. Vendors grade differently, so a "minor" at one can be a bigger deal than a "major" at another.
- A status page lists its latest 50 incidents, which caps how far history mode can reach for a busy vendor.
- If a status page cannot be read on a run, the run summary lists it and the other vendors are unaffected.

# Actor input Schema

## `vendors` (type: `array`):

Vendor names, e.g. OpenAI, Anthropic, GitHub, AWS, Google Cloud, Slack, Cloudflare, Vercel, Datadog, Twilio, Shopify, Zoom. Leave empty (and categories empty) to watch all 134.

## `categories` (type: `array`):

Watch whole groups: ai, cloud, devtools, observability, collaboration, marketing-sales, support, commerce, payments-finance, hr, security-identity.

## `customStatusPages` (type: `array`):

Any status page run on Atlassian Statuspage, e.g. https://status.example.com. Most SaaS status pages are.

## `minImpact` (type: `string`):

Skip incidents below this impact. none includes maintenance-style notices.

## `onlyChanges` (type: `boolean`):

On: each run returns incidents that are new, escalated or resolved since the previous run, for alerts on a schedule. Off: every incident in the window, for outage history.

## `lookbackHours` (type: `integer`):

With changes on, how far back the first run reaches (open incidents are always included). With changes off, the history window. Status pages keep their latest 50 incidents.

## `includeUpdateText` (type: `boolean`):

The vendor's most recent message on the incident.

## Actor input object example

```json
{
  "vendors": [
    "OpenAI",
    "Anthropic",
    "GitHub",
    "Cloudflare",
    "AWS",
    "Google Cloud",
    "Slack"
  ],
  "categories": [],
  "customStatusPages": [],
  "minImpact": "minor",
  "onlyChanges": true,
  "lookbackHours": 72,
  "includeUpdateText": true
}
```

# Actor output Schema

## `incidents` (type: `string`):

Vendor, change type, title, impact, status, start and resolution times, duration, affected components and regions, latest update text and a link.

## `summary` (type: `string`):

Vendors read, any status pages that failed, rows returned and open incidents tracked.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vendors": [
        "OpenAI",
        "Anthropic",
        "GitHub",
        "Cloudflare",
        "AWS",
        "Google Cloud",
        "Slack"
    ],
    "lookbackHours": 72
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/saas-outage-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "vendors": [
        "OpenAI",
        "Anthropic",
        "GitHub",
        "Cloudflare",
        "AWS",
        "Google Cloud",
        "Slack",
    ],
    "lookbackHours": 72,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/saas-outage-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vendors": [
    "OpenAI",
    "Anthropic",
    "GitHub",
    "Cloudflare",
    "AWS",
    "Google Cloud",
    "Slack"
  ],
  "lookbackHours": 72
}' |
apify call scrapemint/saas-outage-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/saas-outage-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tLc8HUvI6pj3CCRWz/builds/HQtmPt6z7t8J9QqxN/openapi.json
