SaaS SLA Reality Score avatar

SaaS SLA Reality Score

Pricing

from $5.00 / 1,000 results

Go to Apify Store
SaaS SLA Reality Score

SaaS SLA Reality Score

Scores the real reliability of SaaS vendors from their public status-page incident history and compares it against the SLA they claim. One structured scorecard per vendor: observed uptime, incident stats, MTTR, trend and a transparent 0-100 score. 168 vendors built in.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Kasım Genç

Kasım Genç

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scores the real, observed reliability of SaaS vendors from their public status-page incident history — and, when you know the SLA they promise, compares promise vs reality.

  • "Looking for a Stripe alternative — whose public incident history was actually better in the last 90 days?"
  • "This vendor claims 99.9%. Their own status page implies 97.9%. Ask them about that in the renewal call."
  • "Which of our critical vendors is trending worse this quarter?"

One structured scorecard per vendor, per run. Schedule it weekly and feed your vendor-risk dashboard.

What you get

{
"vendor": "GitHub",
"statusPage": "https://www.githubstatus.com",
"currentStatus": "none",
"claimedSla": 99.9,
"observedUptimePct": 97.946,
"slaGapPct": -1.954,
"reliabilityScore": 30,
"grade": "F",
"scoreDelta": -3,
"scoreBreakdown": { "downtimePenalty": 50, "frequencyPenalty": 17.4, "mttrPenalty": 2.5 },
"windowDays": 90,
"coverageDays": 73,
"windowTruncated": true,
"incidents": 45,
"incidentsByImpact": { "critical": 13, "major": 5, "minor": 27 },
"downtimeMinutes": 2159,
"medianResolutionMinutes": 101,
"p90ResolutionMinutes": 354,
"updatesPerIncident": 6.3,
"incidentsPer30d": 14.5,
"trend": "stable",
"newIncidentsSinceLastRun": [],
"recentIncidents": [ { "name": "...", "impact": "critical", "startedAt": "...", "url": "https://stspg.io/..." } ],
"detectedAt": "2026-07-10T14:16:57.571Z"
}

The run summary (OUTPUT key in the default key-value store) contains a ready-made ranking of all scored vendors.

Input

{
"vendors": [
"github",
"openai",
{ "name": "Acme Corp", "statusPageUrl": "https://status.acme.com", "claimedSla": 99.95 }
],
"windowDays": 90
}
FieldTypeDescription
vendors *arrayRegistry slugs (167 built-in, list below) and/or objects. Any status page built on Atlassian Statuspage works via the object form — that covers a large share of the SaaS industry.
windowDaysintegerAnalysis window, 7–365. Default 90.
snapshotStoreNamestringNamed KV store for per-vendor state between runs (enables scoreDelta and newIncidentsSinceLastRun).
maxConcurrencyintegerParallel vendors. Default 5.

Built-in registry (168 vendors)

Every slug below was individually verified against the live status page API:

  • AI: anthropic, assemblyai, cohere, deepgram, elevenlabs, groq, langsmith, openai, pinecone, replicate
  • Automation: ifttt, make, tray, workato, zapier
  • CI/CD: buildkite, circleci, codecov
  • CRM & Sales: attio, close, copper, gong, hubspot, salesloft
  • Cloud Hosting: digitalocean, flyio, linode, netlify, render, scaleway, vercel
  • Communication: discord
  • Communication APIs: ably, courier, getstream, onesignal, pusher, twilio
  • Customer Support: gorgias, helpscout, kustomer
  • Data & Analytics: amplitude, census, confluent, dbt, elastic, fivetran, heap, mixpanel, rudderstack, segment, snowflake
  • Databases: cockroachdb, influxdata, mongodb-atlas, neo4j, planetscale, supabase
  • Design: canva, figma, lucid, spline
  • Developer Tools: bitbucket, github, jfrog, launchdarkly, ngrok, npm, ona, postman, pypi, quay, readme, retool, rubygems
  • E-commerce: bigcommerce, easypost, recharge, shippo, shipstation, shopify, squarespace, webflow, wix
  • Education: coursera, duolingo, instructure, kahoot, udemy
  • Email & Messaging: loops, mailgun, mailjet, sendgrid, sparkpost
  • File Storage: box, dropbox
  • Gaming: epicgames
  • HR & Finance Ops: ashby, expensify, greenhouse, gusto, lever, quickbooks, rippling, xero
  • Infrastructure & CDN: bunny, cloudflare, cloudinary, hashicorp, imgix
  • Marketing & Growth: braze, hotjar, iterable, klaviyo, surveymonkey, typeform, unbounce
  • Monitoring & Observability: bugsnag, datadog, fullstory, honeycomb, logrocket, newrelic, opsgenie, rollbar, sentry, servicenow-observability, statuspage, sumologic
  • Payments & Fintech: brex, chargebee, coinbase, gemini-exchange, kraken, marqeta, paddle, plaid, recurly, square, wise
  • Productivity: airtable, asana, atlassian, calendly, coda, confluence, docusign, dropbox-sign, grammarly, jira, linear, miro, monday, notion, pandadoc, smartsheet, trello
  • Security & Identity: 1password, duo, knowbe4, snyk, tailscale
  • Social & Media: reddit, twitch
  • Streaming & Media: plex (most consumer streaming services — Netflix, Hulu, Disney+ — do not operate public status pages, so there is nothing public to measure)
  • Video & Media: vimeo
  • Video & Meetings: mux, zoom

Each scorecard record includes the vendor's category, so you can build per-category rankings from the dataset.

Where does claimedSla come from?

You don't need it — the score works without it. Three sources, in order:

  1. You provide it (recommended): your contract states your SLA; pass it per vendor and get slaGapPct.
  2. Registry defaults: for a few vendors with well-known public SLA documents (GitHub, Twilio, Cloudflare Enterprise, DigitalOcean) we ship the documented value with its source URL. Verify at the source before relying on it.
  3. AbsentclaimedSla/slaGapPct are null; the reliability score and ranking still work.

The score formula (fully transparent)

score = 100 − downtimePenalty − frequencyPenalty − mttrPenalty
downtimePenalty = min(50, 33 × (impactWeightedDowntime%))
frequencyPenalty = min(25, weightedIncidentsPer30d × 1.2)
mttrPenalty = min(15, medianResolutionHours × 1.5)
grade: A90, B80, C70, D60, F < 60
  • Impact weights (duration): critical 1.0, major 0.4, minor 0.1. Frequency weights: critical 1.5, major 1.0, minor 0.4.
  • 24 h per-incident cap: multi-day status items are almost always partial degradations left open, not full outages; without the cap one of them dominates the whole window.
  • Calibrated against the real 90-day history of 10 popular status pages so grades spread meaningfully — quiet pages (PyPI, npm) score A/B; incident-heavy quarters (GitHub, Cloudflare in mid-2026) score F. A grade is a statement about the window you measured, not the brand.

Honesty notes (read before quoting scores)

  • This is the public track record, not true uptime. Status pages are curated by vendors; unposted incidents don't exist here. Treat the score as "what the vendor admits", which is exactly what you can hold them to.
  • The public Statuspage API returns at most the 50 most recent incidents. If those don't reach back to your full window, we shrink the analysis to the covered span and set windowTruncated: true + coverageDays. Ironically, hitting this limit is itself a reliability signal.
  • observedUptimePct counts critical+major incident-minutes (capped at 24 h/incident) against the window — an approximation of user-visible availability, not a billing-grade SLA measurement.
  • Vendors on custom status systems (Stripe, Slack, AWS, GCP, Heroku, Salesforce...) are not supported yet — only Atlassian-Statuspage-compatible pages.

Suggested usage

  • Weekly schedule with your vendor list → time series of scores in the dataset (scoreDelta tracks movement).
  • Procurement one-shot: run once with the candidates you're evaluating; read the ranking in OUTPUT.
  • Pipe newIncidentsSinceLastRun into Slack/webhook via Apify integrations for a lightweight multi-vendor incident feed.