# Statuspage Company Finder - SaaS Leads & Service Status (`igolaizola/statuspage-company-finder`) Actor

Discover SaaS companies and generate qualified leads from thousands of public statuspage.io sites. Search by company, market, product, or component, then export live service health, outages, components, unresolved incidents, scheduled maintenance, URLs, and page metadata for sales and research.

- **URL**: https://apify.com/igolaizola/statuspage-company-finder.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:** Lead generation, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Statuspage Company Finder – SaaS Leads & Service Status

### 🤖 What does Statuspage Company Finder do?

Statuspage Company Finder discovers public `*.statuspage.io` sites and extracts live, structured service-health data for lead generation, monitoring, vendor research, incident analysis, and operational intelligence. Search by keyword or explore broadly without supplying a URL list.

- **Overall health** — status description and severity indicator
- **Components** — names, descriptions, current states, groups, and timestamps
- **Active incidents** — impact, status, affected components, and incident updates
- **Scheduled maintenance** — upcoming and in-progress maintenance details
- **Page identity** — name, page ID, URL, time zone, description, icon, and image
- **Ready-to-compare counts** — operational, degraded, partial-outage, major-outage, and maintenance component totals

**Great for:** vendor monitoring, SaaS research, outage dashboards, dependency inventories, incident intelligence, and reliability analysis.

> SEO keywords: **Statuspage scraper**, **statuspage.io scraper**, **service status API alternative**, **incident data scraper**, **outage monitoring**, **Apify actor**.

### 💡 Why collect Statuspage data?

- 📡 **Monitor external dependencies** — track the public health of vendors your product relies on.
- 🚨 **Centralize incident signals** — combine unresolved incidents from many organizations in one dataset.
- 🧭 **Map SaaS infrastructure** — discover companies and the services or regions exposed as components.
- 📊 **Analyze reliability** — compare current health, component states, update times, and maintenance activity.

### 🧠 Choose a discovery mode

#### Direct URL list

Set `urls` to scrape known public `*.statuspage.io` pages directly. When this list is provided, the Actor skips its search sources.

#### Targeted keyword search

Set `query` to a company, component, product category, vendor type, or market such as `payments`, `webhooks`, `cloud hosting`, or `healthcare`. The Actor searches public Statuspage sites and returns matches based on names, URLs, descriptions, time zones, and component names.

#### Broad discovery

Leave `query` empty to discover public `*.statuspage.io` sites broadly and retrieve their current service data. Use a moderate `maxItems` for your first run, then increase it after reviewing coverage.

### 🚀 How to use

1. **Add the Actor** — open Statuspage Company Finder in Apify Store.
2. **Choose a mode** — enter `query` for focused research or leave it empty for broad discovery.
3. **Set `maxItems`** — choose how many valid public status pages to return.
4. **Run the Actor** — start the search and live service-status collection.
5. **Download results** — export the Dataset as JSON, CSV, Excel, XML, or Parquet.

### 📝 Input parameters

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `maxItems` | Integer | Yes | Maximum number of valid public Statuspage sites to return. Set to `0` to continue until discovery is exhausted. Default `100`. |
| `urls` | Array | No | Public `*.statuspage.io` URLs to scrape directly. When provided, search-based discovery is skipped. |
| `query` | String | No | Keyword used to find sites by company, URL, description, time zone, or component name. Leave empty for broad discovery. |

#### Example inputs

**Scrape a specific list directly**

```json
{
  "maxItems": 25,
  "urls": [
    "https://coinbase.statuspage.io",
    "https://discord.statuspage.io"
  ]
}
```

**Target payment infrastructure status pages**

```json
{
  "maxItems": 25,
  "query": "payments"
}
```

**Discover Statuspage sites broadly**

```json
{
  "maxItems": 100,
  "query": ""
}
```

### 📊 Output

Each dataset item represents one validated public status page.

- **`id`** *(string)* — Statuspage page identifier.
- **`name`** *(string)* — organization or service name.
- **`url`** *(string)* — discovered `*.statuspage.io` root URL.
- **`pageUrl`** *(string)* — public page URL reported by the page itself.
- **`description`** *(string)* — public page description.
- **`icon` / `image`** *(string)* — page branding assets when available.
- **`timeZone` / `updatedAt`** *(string)* — configured page time zone and latest page update.
- **`indicator`** *(string)* — machine-friendly severity such as `none`, `minor`, `major`, or `critical`.
- **`status`** *(string)* — readable overall status such as `All Systems Operational`.
- **Component counts** *(integer)* — total, operational, degraded, partial outage, major outage, and under-maintenance totals.
- **`unresolvedIncidentCount`** *(integer)* — current unresolved incident count.
- **`scheduledMaintenanceCount`** *(integer)* — upcoming or active maintenance count.
- **`components`** *(array)* — full public component records.
- **`incidents`** *(array)* — full unresolved incident records and updates.
- **`scheduledMaintenances`** *(array)* — full upcoming and active maintenance records and updates.

```json
{
  "id": "mydb5tbqcb8m",
  "name": "PlugPay",
  "url": "https://plugpay.statuspage.io",
  "pageUrl": "https://plugpay.statuspage.io",
  "description": "PlugPay's home for real-time and historical data on system performance.",
  "icon": "https://dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/824604/IMG_2181.jpeg",
  "image": "",
  "timeZone": "Europe/Amsterdam",
  "updatedAt": "2026-07-27T18:40:03.195+02:00",
  "indicator": "none",
  "status": "All Systems Operational",
  "componentCount": 6,
  "operationalComponentCount": 6,
  "degradedComponentCount": 0,
  "partialOutageCount": 0,
  "majorOutageCount": 0,
  "maintenanceComponentCount": 0,
  "unresolvedIncidentCount": 0,
  "scheduledMaintenanceCount": 0,
  "components": [
    {
      "id": "49wcx0gvrpz5",
      "name": "PlugPay System",
      "status": "operational",
      "description": null,
      "group": false,
      "position": 1
    }
  ],
  "incidents": [],
  "scheduledMaintenances": []
}
```

### 🧭 Tips & best practices

- **Start focused:** use a market keyword such as `payments`, `AI`, or `hosting` to validate your workflow quickly.
- **Explore broadly:** leave `query` empty and raise `maxItems` gradually.
- **Detect active disruption:** filter exported rows where `indicator` is not `none` or `unresolvedIncidentCount` is greater than zero.
- **Inspect root cause details:** use `components`, `incidents`, and `scheduledMaintenances` for affected services and update timelines.
- **Deduplicate across runs:** use the stable `id` field as your primary key.

### ⚖️ Legal & ethical considerations

- Collect public status information only and respect applicable terms and robots rules.
- Use reasonable run sizes and request frequencies.
- Treat incident text responsibly; it may contain operational details intended for customers.
- Comply with applicable privacy and data-protection laws when combining results with other datasets.
- Attribute source organizations when publishing status or incident analysis.

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Atlassian or Statuspage**. All trademarks belong to their respective owners.

### ❓ FAQ

**Do I need to provide Statuspage URLs?**

No. Provide `urls` for direct scraping, set `query` to discover pages by keyword, or leave both empty to search public Statuspage sites broadly.

**Are private Statuspage sites included?**

No. Results must expose public status data without credentials. Inaccessible, private, trial-restricted, and stale sites are skipped.

**Does the output include historical incidents?**

The main output includes unresolved incidents plus upcoming or in-progress scheduled maintenance. It does not currently download the full resolved-incident archive.

**Why can `pageUrl` differ from `url`?**

`url` is the discovered `statuspage.io` hostname. `pageUrl` is the public URL reported by that page and may be a branded custom domain.

**What does `indicator: "none"` mean?**

It means the page reports no current service impact. The readable `status` commonly says `All Systems Operational`.

### 🛟 Support

Need a custom field, incident-history mode, or export?
Open an issue or contact the developer at https://igolaizola.com/#contact.

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum number of public Statuspage sites to return. Set to 0 to continue until discovery is exhausted.

## `urls` (type: `array`):

Optional public \*.statuspage.io URLs to scrape directly.

## `query` (type: `string`):

Optional keyword used to find sites by company, URL, description, time zone, or component name. Leave empty for broad discovery.

## Actor input object example

```json
{
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("igolaizola/statuspage-company-finder").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("igolaizola/statuspage-company-finder").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call igolaizola/statuspage-company-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=igolaizola/statuspage-company-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/C8eKOrhuDWoICn9zy/builds/1r9YLV73xwBOeliwQ/openapi.json
