SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
10 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
93.5 KB · 2,149 lines python
Raw Blame History
1#!/usr/bin/env python32"""Wave 3 of the status-page probe (config/sources.d/58-status-pages-wave3.yaml).34Same engine as scripts/gen-status-probe.py but restricted to machine-readable STATUS pages (Atlassian5Statuspage `/api/v2/summary.json`, Instatus `/summary.json`, incident.io `/api/v1/summary`, Status.io6`api.status.io/1.0/status/<id>` sniffed from the HTML) and fed with a fresh list of ≥ 900 services that7were not probed in waves 1–2 (files 23 / 34 / 41 / 48): Forbes Cloud 100 / YC companies, fintech & brokers,8crypto infrastructure, dev tools, e-commerce & marketplaces, gaming, telecom, media, travel, HR / legal /9health / education SaaS, IoT, government digital services and university IT status pages.1011For every candidate the probe tries, in order: `status.<apex>` (+ the host its root redirects to),12`<domain>/status` (redirect target or embedded Statuspage host), any explicit hosts given in the 5th13column, then `<brand>.statuspage.io` and `<brand>.instatus.com`. Hosts already carrying a STATUSPAGE14sensor anywhere in config/ are never probed again; URLs already in config/ are never emitted.1516Usage:17  python3 scripts/gen-status-probe3.py probe [--out /tmp/probe58.jsonl] [--workers 12] [--only a.com,b.com]18  python3 scripts/gen-status-probe3.py gate  [--in /tmp/probe58.jsonl] [--drop /tmp/probe58-drop.json]19  python3 scripts/gen-status-probe3.py emit  [--in /tmp/probe58.jsonl] [--drop /tmp/probe58-drop.json] > config/sources.d/58-status-pages-wave3.yaml2021`gate` re-fetches every hit that lives on a `<brand>.statuspage.io` / `<brand>.instatus.com` host and writes the URLs to22drop: pages with 0 components, Statuspage `page.updated_at` older than 2024-09-01 (abandoned pages) or a legacy `page.url`23(e.g. deepl.statuspage.io → old.deeplstatus.com). On 2026-09-13 this removed 153 of 245 such hits — brand hosts are a24weak signal (squatted, test or abandoned pages); `status.<domain>` hosts are taken as authoritative.25Then: node node_modules/tsx/dist/cli.mjs apps/engine/src/validate.ts config/sources.d/58-status-pages-wave3.yaml26      --concurrency 6 --json /tmp/r58.json --quiet && python3 scripts/prune-fragment.py … --drop-warn2728Politeness: global token bucket (≤ 6 req/s across all hosts — every request goes to a different host),2915 s timeout, ≤ 1 MB per body, UA "WebSensor registry probe (contact@websensor.io)".30"""31from __future__ import annotations3233import argparse34import glob35import json36import os37import re38import socket39import sys40import threading41import time42from concurrent.futures import ThreadPoolExecutor, as_completed43from urllib.parse import urlparse4445import requests46import yaml4748UA = "WebSensor registry probe (contact@websensor.io)"49TIMEOUT = 1550MAX_BODY = 1_000_00051RATE = 6.052FRAGMENT = "58-status-pages-wave3.yaml"5354# domain | Name | categories | country (default US) | extra status hosts (comma-separated, optional)55CANDIDATES = """56# ── productivity, notes, time tracking, forms, e-signature, scheduling ──57clockify.me | Clockify | enterprise,saas | RS58toggl.com | Toggl | enterprise,saas | EE59getharvest.com | Harvest | enterprise,saas60hubstaff.com | Hubstaff | enterprise,saas61timedoctor.com | Time Doctor | enterprise,saas62everhour.com | Everhour | enterprise,saas63nuclino.com | Nuclino | enterprise,saas | DE64slite.com | Slite | enterprise,saas | FR65getguru.com | Guru | enterprise,saas66tettra.com | Tettra | enterprise,saas67document360.com | Document360 | enterprise,saas68helpjuice.com | Helpjuice | enterprise,saas69archbee.com | Archbee | developer,saas70tldv.io | tl;dv | enterprise,saas,ai | DE71fathom.video | Fathom | enterprise,saas,ai72avoma.com | Avoma | enterprise,saas,ai73grain.com | Grain | enterprise,saas,ai74reclaim.ai | Reclaim.ai | enterprise,saas,ai75usemotion.com | Motion | enterprise,saas,ai76sunsama.com | Sunsama | consumer-tech,saas77akiflow.com | Akiflow | consumer-tech,saas | IT78getclockwise.com | Clockwise | enterprise,saas79superhuman.com | Superhuman | enterprise,saas80hey.com | HEY | consumer-tech,saas81missiveapp.com | Missive | enterprise,saas | CA82shortwave.com | Shortwave | consumer-tech,saas,ai83mem.ai | Mem | consumer-tech,saas,ai84reflect.app | Reflect | consumer-tech,saas85roamresearch.com | Roam Research | consumer-tech,saas86anytype.io | Anytype | consumer-tech,open-source | CH87capacities.io | Capacities | consumer-tech,saas | DE88tana.inc | Tana | consumer-tech,saas | NO89proofhub.com | ProofHub | enterprise,saas | IN90niftypm.com | Nifty | enterprise,saas91hive.com | Hive | enterprise,saas92zenhub.com | ZenHub | developer,saas | CA93businessmap.io | Businessmap | enterprise,saas | BG94teamgantt.com | TeamGantt | enterprise,saas95float.com | Float | enterprise,saas | GB96resourceguruapp.com | Resource Guru | enterprise,saas | GB97runn.io | Runn | enterprise,saas | NZ98workvivo.com | Workvivo | enterprise,saas | IE99staffbase.com | Staffbase | enterprise,saas | DE100simpplr.com | Simpplr | enterprise,saas101lumapps.com | LumApps | enterprise,saas | FR102happeo.com | Happeo | enterprise,saas | FI103joinblink.com | Blink | enterprise,saas | GB104process.st | Process Street | enterprise,saas105tallyfy.com | Tallyfy | enterprise,saas106kissflow.com | Kissflow | enterprise,saas | IN107pipefy.com | Pipefy | enterprise,saas | BR108nintex.com | Nintex | enterprise,saas109appian.com | Appian | enterprise,saas110pega.com | Pegasystems | enterprise,saas111outsystems.com | OutSystems | developer,saas | PT112mendix.com | Mendix | developer,saas | NL113quickbase.com | Quickbase | enterprise,saas114knack.com | Knack | developer,saas115caspio.com | Caspio | developer,saas116ninox.com | Ninox | developer,saas | DE117stackby.com | Stackby | developer,saas | IN118smartsuite.com | SmartSuite | enterprise,saas119baserow.io | Baserow | developer,open-source,saas | NL120nocodb.com | NocoDB | developer,open-source121seatable.io | SeaTable | developer,saas | DE122jotform.com | Jotform | enterprise,saas123formstack.com | Formstack | enterprise,saas124paperform.co | Paperform | enterprise,saas | AU125fillout.com | Fillout | enterprise,saas126tally.so | Tally | enterprise,saas | BE127cognitoforms.com | Cognito Forms | enterprise,saas128wufoo.com | Wufoo | enterprise,saas129123formbuilder.com | 123FormBuilder | enterprise,saas | RO130formassembly.com | FormAssembly | enterprise,saas131involve.me | involve.me | enterprise,saas | AT132feathery.io | Feathery | developer,saas133proposify.com | Proposify | enterprise,saas | CA134qwilr.com | Qwilr | enterprise,saas | AU135betterproposals.io | Better Proposals | enterprise,saas | GB136conga.com | Conga | enterprise,saas137juro.com | Juro | enterprise,legal,saas | GB138contractbook.com | Contractbook | enterprise,legal,saas | DK139spotdraft.com | SpotDraft | enterprise,legal,saas | IN140signnow.com | SignNow | enterprise,saas141signeasy.com | Signeasy | enterprise,saas142xodo.com | Xodo | enterprise,saas | CA143onespan.com | OneSpan | enterprise,cyber,saas | CA144yousign.com | Yousign | enterprise,saas | FR145oneflow.com | Oneflow | enterprise,saas | SE146scrive.com | Scrive | enterprise,saas | SE147acuityscheduling.com | Acuity Scheduling | enterprise,saas148youcanbook.me | YouCanBookMe | enterprise,saas | GB149setmore.com | Setmore | enterprise,saas150simplybook.me | SimplyBook.me | enterprise,saas | CY151appointlet.com | Appointlet | enterprise,saas152vcita.com | vcita | enterprise,saas | IL153conceptboard.com | Conceptboard | enterprise,saas | DE154stormboard.com | Stormboard | enterprise,saas | CA155klaxoon.com | Klaxoon | enterprise,saas | FR156meister.co | Meister (MindMeister) | enterprise,saas | AT157xmind.app | Xmind | consumer-tech,saas | CN158creately.com | Creately | enterprise,saas | AU159nulab.com | Nulab | developer,saas | JP160vidyard.com | Vidyard | enterprise,media,saas | CA161screencastify.com | Screencastify | education,saas162techsmith.com | TechSmith | consumer-tech,software163descript.com | Descript | media,saas,ai164riverside.fm | Riverside | media,saas | IL165zencastr.com | Zencastr | media,saas166podbean.com | Podbean | media,saas167buzzsprout.com | Buzzsprout | media,saas168transistor.fm | Transistor | media,saas169simplecast.com | Simplecast | media,saas170captivate.fm | Captivate | media,saas | GB171libsyn.com | Libsyn | media,saas172acast.com | Acast | media,saas | SE173megaphone.fm | Megaphone | media,saas174art19.com | ART19 | media,saas175castos.com | Castos | media,saas176redcircle.com | RedCircle | media,saas177spreaker.com | Spreaker | media,saas178audioboom.com | Audioboom | media,saas | GB179quillbot.com | QuillBot | consumer-tech,saas,ai180languagetool.org | LanguageTool | consumer-tech,saas | DE181prowritingaid.com | ProWritingAid | consumer-tech,saas | GB182jasper.ai | Jasper | enterprise,ai,saas183copy.ai | Copy.ai | enterprise,ai,saas184writesonic.com | Writesonic | enterprise,ai,saas185anyword.com | Anyword | enterprise,ai,saas | IL186frase.io | Frase | enterprise,ai,saas187surferseo.com | Surfer | enterprise,saas | PL188clearscope.io | Clearscope | enterprise,saas189marketmuse.com | MarketMuse | enterprise,saas190seranking.com | SE Ranking | enterprise,saas | GB191mangools.com | Mangools | enterprise,saas | SK192spyfu.com | SpyFu | enterprise,saas193serpstat.com | Serpstat | enterprise,saas | UA194screamingfrog.co.uk | Screaming Frog | enterprise,software | GB195botify.com | Botify | enterprise,saas | FR196conductor.com | Conductor | enterprise,saas197brightedge.com | BrightEdge | enterprise,saas198lumar.io | Lumar | enterprise,saas | GB199oncrawl.com | Oncrawl | enterprise,saas | FR200sistrix.com | SISTRIX | enterprise,saas | DE201sembly.ai | Sembly AI | enterprise,ai,saas202read.ai | Read AI | enterprise,ai,saas203krisp.ai | Krisp | consumer-tech,ai,saas204# ── developer tools, CI, testing, observability, incident tooling ──205gitkraken.com | GitKraken | developer,software206zed.dev | Zed | developer,open-source207tabnine.com | Tabnine | developer,ai,saas | IL208supermaven.com | Supermaven | developer,ai,saas209continue.dev | Continue | developer,ai,open-source210gitea.com | Gitea | developer,open-source | CN211codeberg.org | Codeberg | developer,open-source | DE212sr.ht | SourceHut | developer,open-source213launchpad.net | Launchpad | developer,open-source | GB214gocd.org | GoCD | developer,open-source215drone.io | Drone | developer,open-source216woodpecker-ci.org | Woodpecker CI | developer,open-source217tekton.dev | Tekton | developer,open-source218spinnaker.io | Spinnaker | developer,open-source219fluxcd.io | Flux | developer,open-source220dagger.io | Dagger | developer,open-source,saas221earthly.dev | Earthly | developer,saas222nx.dev | Nx | developer,open-source,saas223bazel.build | Bazel | developer,open-source224gradle.com | Gradle Inc. | developer,saas225depot.dev | Depot | developer,saas226blacksmith.sh | Blacksmith | developer,saas227namespace.so | Namespace | developer,saas228ubicloud.com | Ubicloud | cloud,open-source229runs-on.com | RunsOn | developer,saas230warpbuild.com | WarpBuild | developer,saas231cirrus-ci.org | Cirrus CI | developer,saas232appveyor.com | AppVeyor | developer,saas233flagsmith.com | Flagsmith | developer,open-source,saas | GB234getunleash.io | Unleash | developer,open-source,saas | NO235configcat.com | ConfigCat | developer,saas | HU236growthbook.io | GrowthBook | developer,open-source,saas237devcycle.com | DevCycle | developer,saas | CA238geteppo.com | Eppo | developer,saas239kameleoon.com | Kameleoon | enterprise,saas | FR240convert.com | Convert | enterprise,saas241raygun.com | Raygun | developer,saas | NZ242airbrake.io | Airbrake | developer,saas243honeybadger.io | Honeybadger | developer,saas244trackjs.com | TrackJS | developer,saas245appsignal.com | AppSignal | developer,saas | NL246scoutapm.com | Scout APM | developer,saas247instabug.com | Instabug | developer,saas248embrace.io | Embrace | developer,saas249coralogix.com | Coralogix | developer,saas | IL250mezmo.com | Mezmo | developer,saas251solarwinds.com | SolarWinds | enterprise,software252graylog.org | Graylog | developer,open-source,saas253observeinc.com | Observe | developer,saas254groundcover.com | groundcover | developer,saas | IL255middleware.io | Middleware | developer,saas256signoz.io | SigNoz | developer,open-source,saas257uptrace.dev | Uptrace | developer,open-source,saas258hyperdx.io | HyperDX | developer,open-source,saas259openobserve.ai | OpenObserve | developer,open-source,saas260victoriametrics.com | VictoriaMetrics | developer,open-source,saas261last9.io | Last9 | developer,saas | IN262dash0.com | Dash0 | developer,saas | DE263xmatters.com | xMatters | developer,saas264everbridge.com | Everbridge | enterprise,saas265ilert.com | ilert | developer,saas | DE266spike.sh | Spike.sh | developer,saas267zenduty.com | Zenduty | developer,saas | IN268allquiet.app | All Quiet | developer,saas | DE269signl4.com | SIGNL4 | developer,saas | DE270blameless.com | Blameless | developer,saas271instatus.com | Instatus | developer,saas272hund.io | Hund | developer,saas273sorryapp.com | Sorry™ | developer,saas | GB274statusgator.com | StatusGator | developer,saas275ohdear.app | Oh Dear | developer,saas | BE276hyperping.com | Hyperping | developer,saas | FR277freshping.io | Freshping | developer,saas278site24x7.com | Site24x7 | developer,saas | IN279uptime.com | Uptime.com | developer,saas280updown.io | updown.io | developer,saas | FR281insomnia.rest | Insomnia | developer,open-source282hoppscotch.io | Hoppscotch | developer,open-source,saas | IN283rapidapi.com | RapidAPI | developer,saas284apidog.com | Apidog | developer,saas | SG285usebruno.com | Bruno | developer,open-source | IN286redocly.com | Redocly | developer,saas287bump.sh | Bump.sh | developer,saas | FR288scalar.com | Scalar | developer,open-source,saas289smartbear.com | SmartBear | developer,software290mabl.com | mabl | developer,saas291testim.io | Testim | developer,saas | IL292functionize.com | Functionize | developer,saas293katalon.com | Katalon | developer,saas294testrail.com | TestRail | developer,saas295qase.io | Qase | developer,saas296testmo.com | Testmo | developer,saas297getxray.app | Xray | developer,saas | PT298tricentis.com | Tricentis | developer,saas | AT299perforce.com | Perforce | developer,software300headspin.io | HeadSpin | developer,saas301kobiton.com | Kobiton | developer,saas302applitools.com | Applitools | developer,saas303chromatic.com | Chromatic | developer,saas304bun.sh | Bun | developer,open-source305deno.com | Deno | developer,open-source,saas306jsdelivr.com | jsDelivr | developer,open-source | PL307unpkg.com | unpkg | developer,open-source308esm.sh | esm.sh | developer,open-source309dev.to | DEV Community | developer,media310hashnode.com | Hashnode | developer,media311nordpass.com | NordPass | cyber,consumer-tech | PA312enpass.io | Enpass | cyber,consumer-tech | IN313roboform.com | RoboForm | cyber,consumer-tech314passbolt.com | Passbolt | cyber,open-source | LU315clicksend.com | ClickSend | developer,telecom,saas | AU316textmagic.com | Textmagic | developer,telecom,saas | GB317simpletexting.com | SimpleTexting | enterprise,telecom,saas318telesign.com | Telesign | developer,telecom,cyber319resend.com | Resend | developer,saas320loops.so | Loops | developer,saas321mailersend.com | MailerSend | developer,saas | LT322elasticemail.com | Elastic Email | developer,saas | CA323socketlabs.com | SocketLabs | developer,saas324smtp2go.com | SMTP2GO | developer,saas | NZ325sendpulse.com | SendPulse | enterprise,saas | UA326moosend.com | Moosend | enterprise,saas | GR327benchmarkemail.com | Benchmark Email | enterprise,saas328emailoctopus.com | EmailOctopus | enterprise,saas | GB329sender.net | Sender | enterprise,saas | LT330mailmodo.com | Mailmodo | enterprise,saas | IN331onelogin.com | OneLogin | cyber,saas332pingidentity.com | Ping Identity | cyber,saas333jumpcloud.com | JumpCloud | cyber,saas334fusionauth.io | FusionAuth | developer,cyber,saas335ory.sh | Ory | developer,open-source,cyber | DE336goauthentik.io | authentik | developer,open-source,cyber337zitadel.com | Zitadel | developer,open-source,cyber | CH338logto.io | Logto | developer,open-source,cyber339hanko.io | Hanko | developer,open-source,cyber | DE340magic.link | Magic | developer,crypto,saas341dynamic.xyz | Dynamic | developer,crypto,saas342privy.io | Privy | developer,crypto,saas343web3auth.io | Web3Auth | developer,crypto,saas | SG344inngest.com | Inngest | developer,saas345mergent.co | Mergent | developer,saas346lob.com | Lob | developer,saas347postgrid.com | PostGrid | developer,saas | CA348cloudconvert.com | CloudConvert | developer,saas | DE349zamzar.com | Zamzar | consumer-tech,saas | GB350convertio.co | Convertio | consumer-tech,saas351deepl.com | DeepL | ai,consumer-tech,saas | DE352lokalise.com | Lokalise | developer,saas | LV353crowdin.com | Crowdin | developer,saas | EE354phrase.com | Phrase | developer,saas | DE355transifex.com | Transifex | developer,saas356smartling.com | Smartling | enterprise,saas357weglot.com | Weglot | developer,saas | FR358localazy.com | Localazy | developer,saas | CZ359onfleet.com | Onfleet | logistics,saas360bringg.com | Bringg | logistics,saas | IL361certn.co | Certn | enterprise,saas | CA362sterlingcheck.com | Sterling | enterprise,saas363tremendous.com | Tremendous | payments,saas364flatfile.com | Flatfile | developer,saas365oneschema.co | OneSchema | developer,saas366nylas.com | Nylas | developer,saas367merge.dev | Merge | developer,saas368apideck.com | Apideck | developer,saas | BE369tryfinch.com | Finch | developer,saas370rutter.com | Rutter | developer,payments,saas371codat.io | Codat | developer,finance,saas | GB372unified.to | Unified.to | developer,saas | CA373smartcar.com | Smartcar | developer,automotive,saas374ayrshare.com | Ayrshare | developer,saas375bannerbear.com | Bannerbear | developer,saas | SG376liveblocks.io | Liveblocks | developer,saas | FR377partykit.io | PartyKit | developer,open-source378zeplo.io | Zeplo | developer,saas | GB379mux.com | Mux | developer,media,saas380# ── AI infra & ML tooling (status pages only) ──381anyscale.com | Anyscale | ai,developer,saas382deepinfra.com | DeepInfra | ai,developer,saas383hyperbolic.xyz | Hyperbolic | ai,developer,saas384novita.ai | Novita AI | ai,developer,saas385nebius.com | Nebius | ai,cloud | NL386crusoe.ai | Crusoe | ai,cloud387vast.ai | Vast.ai | ai,cloud388paperspace.com | Paperspace | ai,cloud389predibase.com | Predibase | ai,developer,saas390cerebrium.ai | Cerebrium | ai,developer,saas | GB391beam.cloud | Beam | ai,developer,saas392mystic.ai | Mystic | ai,developer,saas | GB393clearml.com | ClearML | ai,developer,saas394valohai.com | Valohai | ai,developer,saas | FI395iterative.ai | Iterative (DVC) | ai,developer,open-source396hopsworks.ai | Hopsworks | ai,developer,saas | SE397arize.com | Arize AI | ai,developer,saas398whylabs.ai | WhyLabs | ai,developer,saas399fiddler.ai | Fiddler AI | ai,developer,saas400rungalileo.io | Galileo | ai,developer,saas401humanloop.com | Humanloop | ai,developer,saas | GB402braintrust.dev | Braintrust | ai,developer,saas403langfuse.com | Langfuse | ai,developer,open-source,saas | DE404helicone.ai | Helicone | ai,developer,open-source,saas405portkey.ai | Portkey | ai,developer,saas406promptlayer.com | PromptLayer | ai,developer,saas407traceloop.com | Traceloop | ai,developer,saas | IL408labelbox.com | Labelbox | ai,developer,saas409snorkel.ai | Snorkel AI | ai,developer,saas410v7labs.com | V7 | ai,developer,saas | GB411encord.com | Encord | ai,developer,saas | GB412superannotate.com | SuperAnnotate | ai,developer,saas413humansignal.com | HumanSignal (Label Studio) | ai,developer,open-source,saas414datasaur.ai | Datasaur | ai,developer,saas415character.ai | Character.AI | ai,consumer-tech416poe.com | Poe | ai,consumer-tech417you.com | You.com | ai,consumer-tech418phind.com | Phind | ai,developer,saas419assemblyai.com | AssemblyAI | ai,developer,saas420deepgram.com | Deepgram | ai,developer,saas421speechmatics.com | Speechmatics | ai,developer,saas | GB422rev.com | Rev | ai,media,saas423play.ht | Play.ht | ai,media,saas424murf.ai | Murf AI | ai,media,saas | IN425synthesia.io | Synthesia | ai,media,saas | GB426heygen.com | HeyGen | ai,media,saas427d-id.com | D-ID | ai,media,saas | IL428pika.art | Pika | ai,media,saas429lumalabs.ai | Luma AI | ai,media,saas430ideogram.ai | Ideogram | ai,media,saas | CA431leonardo.ai | Leonardo.Ai | ai,media,saas | AU432krea.ai | Krea | ai,media,saas433civitai.com | Civitai | ai,media,internet434suno.com | Suno | ai,media,saas435udio.com | Udio | ai,media,saas436voyageai.com | Voyage AI | ai,developer,saas437unstructured.io | Unstructured | ai,developer,saas438llamaindex.ai | LlamaIndex (LlamaCloud) | ai,developer,saas439cognition.ai | Cognition (Devin) | ai,developer,saas440lovable.dev | Lovable | ai,developer,saas | SE441bolt.new | Bolt.new | ai,developer,saas442v0.dev | v0 | ai,developer,saas443glean.com | Glean | ai,enterprise,saas444writer.com | Writer | ai,enterprise,saas445sierra.ai | Sierra | ai,enterprise,saas446decagon.ai | Decagon | ai,enterprise,saas447harvey.ai | Harvey | ai,legal,saas448hebbia.com | Hebbia | ai,finance,saas449abridge.com | Abridge | ai,health,saas450# ── payments, fintech, banking, brokers, crypto ──451marqeta.com | Marqeta | payments,developer452lithic.com | Lithic | payments,developer453galileo-ft.com | Galileo Financial Technologies | payments,developer454highnote.com | Highnote | payments,developer455treasuryprime.com | Treasury Prime | payments,developer456increase.com | Increase | payments,developer457column.com | Column | payments,finance458mercury.com | Mercury | finance,payments459brex.com | Brex | finance,payments460rho.co | Rho | finance,payments461airwallex.com | Airwallex | payments,finance | AU462payoneer.com | Payoneer | payments,finance463currencycloud.com | Currencycloud | payments,developer | GB464ofx.com | OFX | payments,finance | AU465remitly.com | Remitly | payments,finance466mx.com | MX | finance,developer467teller.io | Teller | finance,developer468truelayer.com | TrueLayer | finance,developer | GB469tink.com | Tink | finance,developer | SE470yapily.com | Yapily | finance,developer | GB471saltedge.com | Salt Edge | finance,developer | CA472paysafe.com | Paysafe | payments | GB473payu.com | PayU | payments | NL474sumup.com | SumUp | payments | GB475payplug.com | PayPlug | payments | FR476lydia-app.com | Lydia | payments,finance | FR477interac.ca | Interac | payments | CA478moneris.com | Moneris | payments | CA479helcim.com | Helcim | payments | CA480clover.com | Clover | payments,commerce481tide.co | Tide | finance | GB482qonto.com | Qonto | finance | FR483pennylane.com | Pennylane | finance,saas | FR484agicap.com | Agicap | finance,saas | FR485bunq.com | bunq | finance | NL486nubank.com.br | Nubank | finance | BR487webull.com | Webull | finance488moomoo.com | moomoo | finance | SG489tastytrade.com | tastytrade | finance490tradestation.com | TradeStation | finance491etrade.com | E*TRADE | finance492ally.com | Ally | finance493capitalone.com | Capital One | finance494current.com | Current | finance495varomoney.com | Varo | finance496dave.com | Dave | finance497moneylion.com | MoneyLion | finance498monarchmoney.com | Monarch Money | finance,consumer-tech499rocketmoney.com | Rocket Money | finance,consumer-tech500carta.com | Carta | finance,saas501angellist.com | AngelList | finance,saas502pulley.com | Pulley | finance,saas503ledgy.com | Ledgy | finance,saas | CH504stripe.com | Stripe | payments,developer505crypto-infra-placeholder.invalid | skip | skip506moralis.io | Moralis | crypto,developer | SE507chainstack.com | Chainstack | crypto,developer | SG508ankr.com | Ankr | crypto,developer509thegraph.com | The Graph | crypto,developer510anchorage.com | Anchorage Digital | crypto,finance511bitgo.com | BitGo | crypto,finance512copper.co | Copper | crypto,finance | GB513tether.to | Tether | crypto,finance | HK514paxos.com | Paxos | crypto,finance515magiceden.io | Magic Eden | crypto,internet516phantom.app | Phantom | crypto,consumer-tech517rainbow.me | Rainbow | crypto,consumer-tech518trezor.io | Trezor | crypto,consumer-tech | CZ519uniswap.org | Uniswap | crypto520aave.com | Aave | crypto | GB521lido.fi | Lido | crypto522coingecko.com | CoinGecko | crypto,media | SG523nansen.ai | Nansen | crypto,saas | SG524messari.io | Messari | crypto,media525glassnode.com | Glassnode | crypto,saas | CH526kaiko.com | Kaiko | crypto,finance | FR527bitget.com | Bitget | crypto | SC528gate.io | Gate.io | crypto | KY529htx.com | HTX | crypto | SC530mexc.com | MEXC | crypto | SC531bitpanda.com | Bitpanda | crypto,finance | AT532bitso.com | Bitso | crypto | MX533luno.com | Luno | crypto | GB534coinsquare.com | Coinsquare | crypto | CA535ndax.io | NDAX | crypto | CA536newton.co | Newton | crypto | CA537shakepay.com | Shakepay | crypto | CA538bitbuy.ca | Bitbuy | crypto | CA539wealthsimple.com | Wealthsimple | finance | CA540alpaca.markets | Alpaca | finance,developer541# ── e-commerce platforms, marketplaces, retail tech, logistics ──542bigcommerce.com | BigCommerce | commerce,saas543woocommerce.com | WooCommerce | commerce,open-source544commercetools.com | commercetools | commerce,saas | DE545saleor.io | Saleor | commerce,open-source | PL546medusajs.com | Medusa | commerce,open-source | DK547swell.is | Swell | commerce,saas548elasticpath.com | Elastic Path | commerce,saas | CA549fabric.inc | fabric | commerce,saas550spryker.com | Spryker | commerce,saas | DE551shopware.com | Shopware | commerce,open-source | DE552prestashop.com | PrestaShop | commerce,open-source | FR553ecwid.com | Ecwid | commerce,saas554sellfy.com | Sellfy | commerce,saas | LV555payhip.com | Payhip | commerce,saas | GB556podia.com | Podia | commerce,education,saas557teachable.com | Teachable | education,saas558thinkific.com | Thinkific | education,saas | CA559kajabi.com | Kajabi | education,saas560learnworlds.com | LearnWorlds | education,saas | CY561circle.so | Circle | consumer-tech,saas562mightynetworks.com | Mighty Networks | consumer-tech,saas563memberful.com | Memberful | commerce,saas564drip.com | Drip | commerce,saas565sendlane.com | Sendlane | commerce,saas566listrak.com | Listrak | commerce,saas567bluecore.com | Bluecore | commerce,saas568richpanel.com | Richpanel | commerce,saas569reamaze.com | Re:amaze | commerce,saas570hiverhq.com | Hiver | enterprise,saas | IN571shipstation.com | ShipStation | logistics,saas572goshippo.com | Shippo | logistics,developer573easyship.com | Easyship | logistics,saas | HK574shipbob.com | ShipBob | logistics,saas575shiphero.com | ShipHero | logistics,saas576easypost.com | EasyPost | logistics,developer577aftership.com | AfterShip | logistics,saas | HK578narvar.com | Narvar | logistics,saas579parcellab.com | parcelLab | logistics,saas | DE580route.com | Route | logistics,saas581loopreturns.com | Loop Returns | commerce,saas582coveo.com | Coveo | enterprise,ai,saas | CA583lucidworks.com | Lucidworks | enterprise,saas584searchspring.com | Searchspring | commerce,saas585klevu.com | Klevu | commerce,saas | FI586doofinder.com | Doofinder | commerce,saas | ES587poshmark.com | Poshmark | commerce588depop.com | Depop | commerce | GB589vinted.com | Vinted | commerce | LT590stockx.com | StockX | commerce591goat.com | GOAT | commerce592grailed.com | Grailed | commerce593reverb.com | Reverb | commerce594discogs.com | Discogs | commerce,media595mercari.com | Mercari | commerce | JP596offerup.com | OfferUp | commerce597zalando.com | Zalando | retail,commerce | DE598asos.com | ASOS | retail,commerce | GB599farfetch.com | Farfetch | retail,commerce | GB600overstock.com | Overstock | retail,commerce601chewy.com | Chewy | retail,commerce602boxed.com | Boxed | retail,commerce603thredup.com | thredUP | commerce604therealreal.com | The RealReal | commerce605project44.com | project44 | logistics,saas606fourkites.com | FourKites | logistics,saas607freightos.com | Freightos | logistics,saas | IL608shippeo.com | Shippeo | logistics,saas | FR609sendcloud.com | Sendcloud | logistics,saas | NL610packlink.com | Packlink | logistics,saas | ES611# ── hosting, domains, CDN, cloud, databases, queues ──612koyeb.com | Koyeb | cloud,developer | FR613northflank.com | Northflank | cloud,developer | GB614qovery.com | Qovery | cloud,developer | FR615porter.run | Porter | cloud,developer616zeabur.com | Zeabur | cloud,developer | TW617sevalla.com | Sevalla | cloud,developer | CH618kinsta.com | Kinsta | cloud,developer | CH619wpengine.com | WP Engine | cloud,developer620pantheon.io | Pantheon | cloud,developer621getflywheel.com | Flywheel | cloud,developer622pressable.com | Pressable | cloud,developer623siteground.com | SiteGround | cloud,developer | BG624bluehost.com | Bluehost | cloud,developer625hostgator.com | HostGator | cloud,developer626hover.com | Hover | internet,developer | CA627porkbun.com | Porkbun | internet,developer628dynadot.com | Dynadot | internet,developer629ionos.com | IONOS | cloud,developer | DE630hostinger.com | Hostinger | cloud,developer | LT631dreamhost.com | DreamHost | cloud,developer632a2hosting.com | A2 Hosting | cloud,developer633inmotionhosting.com | InMotion Hosting | cloud,developer634liquidweb.com | Liquid Web | cloud,developer635nexcess.net | Nexcess | cloud,developer636cloudways.com | Cloudways | cloud,developer | MT637rocket.net | Rocket.net | cloud,developer638servebolt.com | Servebolt | cloud,developer | NO639upcloud.com | UpCloud | cloud | FI640exoscale.com | Exoscale | cloud | CH641civo.com | Civo | cloud | GB642kamatera.com | Kamatera | cloud | IL643contabo.com | Contabo | cloud | DE644hostwinds.com | Hostwinds | cloud645binarylane.com.au | BinaryLane | cloud | AU646wasabi.com | Wasabi | cloud647storj.io | Storj | cloud,crypto648filebase.com | Filebase | cloud,crypto649bunny.net | bunny.net | cloud,infrastructure | SI650keycdn.com | KeyCDN | cloud,infrastructure | CH651cdn77.com | CDN77 | cloud,infrastructure | GB652gcore.com | Gcore | cloud,infrastructure | LU653aiven.io | Aiven | cloud,developer | FI654upstash.com | Upstash | cloud,developer655scalegrid.io | ScaleGrid | cloud,developer656crunchydata.com | Crunchy Data | cloud,developer657tembo.io | Tembo | cloud,developer658dragonflydb.io | Dragonfly | developer,open-source | IL659couchbase.com | Couchbase | developer,cloud660datastax.com | DataStax | developer,cloud661scylladb.com | ScyllaDB | developer,cloud | IL662tinybird.co | Tinybird | developer,cloud | ES663materialize.com | Materialize | developer,cloud664risingwave.com | RisingWave | developer,open-source,cloud665trychroma.com | Chroma | ai,developer,open-source666marqo.ai | Marqo | ai,developer,saas | AU667redpanda.com | Redpanda | developer,cloud668cloudamqp.com | CloudAMQP | developer,cloud | SE669streamnative.io | StreamNative | developer,cloud670sigmacomputing.com | Sigma Computing | enterprise,saas671omni.co | Omni | enterprise,saas672holistics.io | Holistics | enterprise,saas | SG673redash.io | Redash | developer,open-source674dnsmadeeasy.com | DNS Made Easy | internet,infrastructure675easydns.com | easyDNS | internet,infrastructure | CA676constellix.com | Constellix | internet,infrastructure677ssl.com | SSL.com | cyber,infrastructure678zerossl.com | ZeroSSL | cyber,infrastructure | AT679# ── security ──680cybereason.com | Cybereason | cyber,saas681eset.com | ESET | cyber,software | SK682bitdefender.com | Bitdefender | cyber,software | RO683kaspersky.com | Kaspersky | cyber,software | RU684avast.com | Avast | cyber,software | CZ685mcafee.com | McAfee | cyber,software686withsecure.com | WithSecure | cyber,saas | FI687trellix.com | Trellix | cyber,saas688tanium.com | Tanium | cyber,saas689automox.com | Automox | cyber,saas690action1.com | Action1 | cyber,saas691wiz.io | Wiz | cyber,saas692orca.security | Orca Security | cyber,saas | IL693aquasec.com | Aqua Security | cyber,saas | IL694sysdig.com | Sysdig | cyber,saas695checkmarx.com | Checkmarx | cyber,developer | IL696veracode.com | Veracode | cyber,developer697contrastsecurity.com | Contrast Security | cyber,developer698semgrep.dev | Semgrep | cyber,developer,open-source699gitguardian.com | GitGuardian | cyber,developer | FR700trufflesecurity.com | Truffle Security | cyber,developer701socket.dev | Socket | cyber,developer702endorlabs.com | Endor Labs | cyber,developer703chainguard.dev | Chainguard | cyber,developer704abnormalsecurity.com | Abnormal Security | cyber,saas705ironscales.com | IRONSCALES | cyber,saas | IL706knowbe4.com | KnowBe4 | cyber,saas707hoxhunt.com | Hoxhunt | cyber,saas | FI708cofense.com | Cofense | cyber,saas709hackerone.com | HackerOne | cyber,saas710bugcrowd.com | Bugcrowd | cyber,saas711intigriti.com | Intigriti | cyber,saas | BE712synack.com | Synack | cyber,saas713yeswehack.com | YesWeHack | cyber,saas | FR714imperva.com | Imperva | cyber,saas715radware.com | Radware | cyber,saas | IL716sucuri.net | Sucuri | cyber,saas717catonetworks.com | Cato Networks | cyber,saas | IL718perimeter81.com | Perimeter 81 | cyber,saas | IL719twingate.com | Twingate | cyber,saas720zerotier.com | ZeroTier | cyber,open-source721nordlayer.com | NordLayer | cyber,saas | PA722bitsight.com | Bitsight | cyber,saas723securityscorecard.com | SecurityScorecard | cyber,saas724upguard.com | UpGuard | cyber,saas | AU725panorays.com | Panorays | cyber,saas | IL726varonis.com | Varonis | cyber,saas727bigid.com | BigID | cyber,saas728onetrust.com | OneTrust | cyber,legal,saas729transcend.io | Transcend | cyber,legal,saas730osano.com | Osano | cyber,legal,saas731usercentrics.com | Usercentrics | cyber,legal,saas | DE732termly.io | Termly | legal,saas733iubenda.com | iubenda | legal,saas | IT734didomi.io | Didomi | legal,saas | FR735ketch.com | Ketch | legal,saas736cloudflare-placeholder.invalid | skip | skip737expel.com | Expel | cyber,saas738redcanary.com | Red Canary | cyber,saas739blumira.com | Blumira | cyber,saas740axonius.com | Axonius | cyber,saas741lansweeper.com | Lansweeper | enterprise,cyber | BE742keepersecurity.com | Keeper Security | cyber,saas743# ── HR, payroll, recruiting, learning, expenses ──744adp.com | ADP | enterprise,payments,saas745paycor.com | Paycor | enterprise,saas746ukg.com | UKG | enterprise,saas747dayforce.com | Dayforce | enterprise,saas748namely.com | Namely | enterprise,saas749hirevue.com | HireVue | enterprise,labour,saas750sparkhire.com | Spark Hire | enterprise,labour,saas751codility.com | Codility | developer,labour,saas | GB752hackerrank.com | HackerRank | developer,labour,saas753hackerearth.com | HackerEarth | developer,labour,saas | IN754coderpad.io | CoderPad | developer,labour,saas755codesignal.com | CodeSignal | developer,labour,saas756karat.com | Karat | developer,labour,saas757testgorilla.com | TestGorilla | enterprise,labour,saas | NL758vervoe.com | Vervoe | enterprise,labour,saas | AU759harver.com | Harver | enterprise,labour,saas | NL760oysterhr.com | Oyster | enterprise,labour,saas761papayaglobal.com | Papaya Global | enterprise,labour,saas | IL762velocityglobal.com | Velocity Global | enterprise,labour,saas763usemultiplier.com | Multiplier | enterprise,labour,saas | SG764workleap.com | Workleap | enterprise,saas | CA765cornerstoneondemand.com | Cornerstone | enterprise,education,saas766docebo.com | Docebo | enterprise,education,saas | IT767litmos.com | Litmos | enterprise,education,saas768talentlms.com | TalentLMS | enterprise,education,saas769learnupon.com | LearnUpon | enterprise,education,saas | IE770absorblms.com | Absorb LMS | enterprise,education,saas | CA771360learning.com | 360Learning | enterprise,education,saas | FR772workramp.com | WorkRamp | enterprise,education,saas773expensify.com | Expensify | finance,saas774concur.com | SAP Concur | finance,saas775rydoo.com | Rydoo | finance,saas | BE776emburse.com | Emburse | finance,saas777airbase.com | Airbase | finance,saas778payfit.com | PayFit | enterprise,payments,saas | FR779factorialhr.com | Factorial | enterprise,saas | ES780lucca.fr | Lucca | enterprise,saas | FR781humaans.io | Humaans | enterprise,saas | GB782charliehr.com | CharlieHR | enterprise,saas | GB783breathehr.com | Breathe | enterprise,saas | GB784employmenthero.com | Employment Hero | enterprise,saas | AU785keypay.com | KeyPay | enterprise,payments,saas | AU786wagepoint.com | Wagepoint | enterprise,payments,saas | CA787humi.ca | Humi | enterprise,saas | CA788collage.co | Collage HR | enterprise,saas | CA789# ── legal, real-estate, construction, field service, health, education ──790mycase.com | MyCase | legal,saas791practicepanther.com | PracticePanther | legal,saas792smokeball.com | Smokeball | legal,saas | AU793filevine.com | Filevine | legal,saas794litify.com | Litify | legal,saas795lawpay.com | LawPay | legal,payments,saas796appfolio.com | AppFolio | real-estate,saas797buildium.com | Buildium | real-estate,saas798yardi.com | Yardi | real-estate,saas799realpage.com | RealPage | real-estate,saas800entrata.com | Entrata | real-estate,saas801rentmanager.com | Rent Manager | real-estate,saas802doorloop.com | DoorLoop | real-estate,saas803turbotenant.com | TurboTenant | real-estate,saas804buildertrend.com | Buildertrend | enterprise,saas805fieldwire.com | Fieldwire | enterprise,saas806housecallpro.com | Housecall Pro | enterprise,saas807workiz.com | Workiz | enterprise,saas | IL808simprogroup.com | Simpro | enterprise,saas | AU809athenahealth.com | athenahealth | health,saas810drchrono.com | DrChrono | health,saas811tebra.com | Tebra | health,saas812nextgen.com | NextGen Healthcare | health,saas813eclinicalworks.com | eClinicalWorks | health,saas814practicefusion.com | Practice Fusion | health,saas815simplepractice.com | SimplePractice | health,saas816therapynotes.com | TherapyNotes | health,saas817jane.app | Jane | health,saas | CA818zocdoc.com | Zocdoc | health,consumer-tech819doximity.com | Doximity | health,saas820teladoc.com | Teladoc Health | health821amwell.com | Amwell | health822hims.com | Hims & Hers | health,consumer-tech823ro.co | Ro | health,consumer-tech824onemedical.com | One Medical | health825carbonhealth.com | Carbon Health | health826zochealth-placeholder.invalid | skip | skip827powerschool.com | PowerSchool | education,saas828nearpod.com | Nearpod | education,saas829seesaw.com | Seesaw | education,saas830udacity.com | Udacity | education831memrise.com | Memrise | education,consumer-tech | GB832busuu.com | Busuu | education,consumer-tech | GB833brainly.com | Brainly | education,consumer-tech | PL834course-hero-placeholder.invalid | skip | skip835gradescope.com | Gradescope | education,saas836turnitin.com | Turnitin | education,saas837proctorio.com | Proctorio | education,saas838examity.com | Examity | education,saas839zybooks.com | zyBooks | education,saas840mheducation.com | McGraw Hill | education,media841pearson.com | Pearson | education,media | GB842cengage.com | Cengage | education,media843wiley.com | Wiley | education,media844labster.com | Labster | education,saas | DK845codecombat.com | CodeCombat | education,developer846replit-placeholder.invalid | skip | skip847# ── gaming, esports, game infrastructure ──848activision.com | Activision | gaming8492k.com | 2K | gaming850take2games.com | Take-Two Interactive | gaming851bandainamcoent.com | Bandai Namco Entertainment | gaming | JP852capcom.com | Capcom | gaming | JP853sega.com | Sega | gaming | JP854konami.com | Konami | gaming | JP855guilded.gg | Guilded | gaming,consumer-tech856teamspeak.com | TeamSpeak | gaming,consumer-tech | DE857fanatical.com | Fanatical | gaming | GB858greenmangaming.com | Green Man Gaming | gaming | GB859hypixel.net | Hypixel | gaming860curseforge.com | CurseForge | gaming861modrinth.com | Modrinth | gaming,open-source862nexusmods.com | Nexus Mods | gaming | GB863playfab.com | PlayFab | gaming,developer864photonengine.com | Photon Engine | gaming,developer | DE865heroiclabs.com | Heroic Labs (Nakama) | gaming,developer | GB866accelbyte.io | AccelByte | gaming,developer867pragma.gg | Pragma | gaming,developer868wargaming.net | Wargaming | gaming | CY869gaijin.net | Gaijin Entertainment | gaming | HU870ncsoft.com | NCSoft | gaming | KR871netmarble.com | Netmarble | gaming | KR872pearlabyss.com | Pearl Abyss | gaming | KR873rovio.com | Rovio | gaming | FI874chess.com | Chess.com | gaming,consumer-tech875lichess.org | Lichess | gaming,open-source | FR876faceit.com | FACEIT | gaming,sports | GB877streamlabs.com | Streamlabs | gaming,media878streamelements.com | StreamElements | gaming,media | IL879restream.io | Restream | media,saas880overwolf.com | Overwolf | gaming,developer | IL881gamesight-placeholder.invalid | skip | skip882enad-placeholder.invalid | skip | skip883embracer.com | Embracer Group | gaming | SE884focus-entmt.com | Focus Entertainment | gaming | FR885devolverdigital.com | Devolver Digital | gaming886team17.com | Team17 | gaming | GB887kongregate.com | Kongregate | gaming888armorgames.com | Armor Games | gaming889poki.com | Poki | gaming | NL890crazygames.com | CrazyGames | gaming | BE891geforcenow-placeholder.invalid | skip | skip892shadow.tech | Shadow | gaming,cloud | FR893boosteroid.com | Boosteroid | gaming,cloud | UA894parsec.app | Parsec | gaming,developer895opgg-placeholder.invalid | skip | skip896gamersclub-placeholder.invalid | skip | skip897skinport-placeholder.invalid | skip | skip898pokemon.com | The Pokémon Company | gaming,entertainment | JP899pokemongolive.com | Pokémon GO (Niantic) | gaming900nianticlabs.com | Niantic | gaming901jagex.com | Jagex | gaming | GB902runescape.com | RuneScape | gaming | GB903warframe.com | Warframe (Digital Extremes) | gaming | CA904pathofexile.com | Path of Exile (Grinding Gear Games) | gaming | NZ905worldofwarships.com | World of Warships | gaming | CY906eveonline.com | EVE Online (CCP Games) | gaming | IS907finalfantasyxiv.com | Final Fantasy XIV | gaming | JP908robloxdev-placeholder.invalid | skip | skip909# ── streaming, music, media platforms, publishing ──910roku.com | Roku | media,consumer-tech911scribd.com | Scribd | media,consumer-tech912kobo.com | Kobo | media,consumer-tech | CA913tunein.com | TuneIn | media914iheart.com | iHeartMedia | media915siriusxm.com | SiriusXM | media916viki.com | Rakuten Viki | media | US917philo.com | Philo | media918sling.com | Sling TV | media919fubo.tv | Fubo | media920plutotv-placeholder.invalid | skip | skip921tubitv.com | Tubi | media922vudu-placeholder.invalid | skip | skip923curiositystream.com | CuriosityStream | media924mubi.com | MUBI | media | GB925britbox.com | BritBox | media | GB926hayu.com | hayu | media | GB927crave.ca | Crave | media | CA928cbc-gem-placeholder.invalid | skip | skip929stan.com.au | Stan | media | AU930binge.com.au | Binge | media | AU931hotstar.com | Disney+ Hotstar | media | IN932jiocinema-placeholder.invalid | skip | skip933zee5.com | ZEE5 | media | IN934sonyliv.com | SonyLIV | media | IN935iqiyi.com | iQIYI | media | CN936viu.com | Viu | media | HK937wetv-placeholder.invalid | skip | skip938napster.com | Napster | media939qobuz.com | Qobuz | media | FR940audiomack.com | Audiomack | media941mixcloud.com | Mixcloud | media | GB942bandlab.com | BandLab | media,consumer-tech | SG943splice.com | Splice | media,saas944distrokid.com | DistroKid | media,saas945tunecore.com | TuneCore | media,saas946cdbaby.com | CD Baby | media,saas947ditto-placeholder.invalid | skip | skip948epidemicsound.com | Epidemic Sound | media,saas | SE949artlist.io | Artlist | media,saas | IL950storyblocks.com | Storyblocks | media,saas951shutterstock.com | Shutterstock | media,saas952gettyimages.com | Getty Images | media953pond5-placeholder.invalid | skip | skip954envato.com | Envato | media,saas | AU955creativemarket.com | Creative Market | media,saas956issuu.com | Issuu | media,saas957readwise.io | Readwise | consumer-tech,saas958pocket-placeholder.invalid | skip | skip959feedly.com | Feedly | consumer-tech,saas960inoreader.com | Inoreader | consumer-tech,saas | BG961flipboard.com | Flipboard | media,consumer-tech962goodreads-placeholder.invalid | skip | skip963storygraph-placeholder.invalid | skip | skip964webtoons.com | WEBTOON | media | KR965tapas.io | Tapas | media966wattpad-placeholder.invalid | skip | skip967royalroad.com | Royal Road | media968archiveofourown.org | Archive of Our Own | media,ngo969# ── telecom, ISPs, connectivity, MVNO ──970xfinity.com | Xfinity (Comcast) | telecom971spectrum.com | Spectrum (Charter) | telecom972cox.com | Cox Communications | telecom973frontier.com | Frontier Communications | telecom974lumen.com | Lumen | telecom975windstream.com | Windstream | telecom976rogers.com | Rogers | telecom | CA977bell.ca | Bell Canada | telecom | CA978videotron.com | Vidéotron | telecom | CA979freedommobile.ca | Freedom Mobile | telecom | CA980fizz.ca | Fizz | telecom | CA981koodomobile.com | Koodo | telecom | CA982virginplus.ca | Virgin Plus | telecom | CA983sasktel.com | SaskTel | telecom | CA984eastlink.ca | Eastlink | telecom | CA985cogeco.ca | Cogeco | telecom | CA986teksavvy.com | TekSavvy | telecom | CA987ee.co.uk | EE | telecom | GB988o2.co.uk | O2 UK | telecom | GB989three.co.uk | Three UK | telecom | GB990sky.com | Sky | telecom,media | GB991virginmedia.com | Virgin Media | telecom | GB992talktalk.co.uk | TalkTalk | telecom | GB993giffgaff.com | giffgaff | telecom | GB994orange.com | Orange | telecom | FR995sfr.fr | SFR | telecom | FR996bouyguestelecom.fr | Bouygues Telecom | telecom | FR997free.fr | Free | telecom | FR998telekom.de | Deutsche Telekom | telecom | DE999o2online.de | O2 Germany | telecom | DE1000vodafone.de | Vodafone Germany | telecom | DE1001telefonica.com | Telefónica | telecom | ES1002movistar.es | Movistar | telecom | ES1003tim.it | TIM | telecom | IT1004kpn.com | KPN | telecom | NL1005proximus.be | Proximus | telecom | BE1006swisscom.ch | Swisscom | telecom | CH1007telia.se | Telia | telecom | SE1008telenor.com | Telenor | telecom | "NO"1009elisa.fi | Elisa | telecom | FI1010telstra.com.au | Telstra | telecom | AU1011optus.com.au | Optus | telecom | AU1012spark.co.nz | Spark NZ | telecom | NZ1013one.nz | One NZ | telecom | NZ1014singtel.com | Singtel | telecom | SG1015fi.google.com | Google Fi | telecom1016mintmobile.com | Mint Mobile | telecom1017visible.com | Visible | telecom1018usmobile.com | US Mobile | telecom1019boostmobile.com | Boost Mobile | telecom1020cricketwireless.com | Cricket Wireless | telecom1021viasat.com | Viasat | telecom,space1022hughesnet.com | HughesNet | telecom,space1023twilio-placeholder.invalid | skip | skip1024grasshopper.com | Grasshopper | telecom,saas1025ooma.com | Ooma | telecom1026nextiva.com | Nextiva | telecom,saas1027vonage-placeholder.invalid | skip | skip1028justcall.io | JustCall | telecom,saas | IN1029cloudtalk.io | CloudTalk | telecom,saas | SK1030talkdesk.com | Talkdesk | telecom,saas1031five9.com | Five9 | telecom,saas1032nice.com | NICE | telecom,saas | IL1033genesys.com | Genesys | telecom,saas1034# ── travel, hospitality, mobility, events, ticketing ──1035travelport.com | Travelport | travel,saas | GB1036avis.com | Avis Budget Group | travel,transport1037enterprise.com | Enterprise Mobility | travel,transport1038sixt.com | Sixt | travel,transport | DE1039cloudbeds.com | Cloudbeds | travel,saas1040mews.com | Mews | travel,saas | NL1041guesty.com | Guesty | travel,saas | IL1042hostaway.com | Hostaway | travel,saas | FI1043lodgify.com | Lodgify | travel,saas | ES1044siteminder.com | SiteMinder | travel,saas | AU1045eventbrite.com | Eventbrite | entertainment,saas1046cvent.com | Cvent | enterprise,saas1047bizzabo.com | Bizzabo | enterprise,saas | IL1048splashthat.com | Splash | enterprise,saas1049lu.ma | Luma | consumer-tech,saas1050ticketmaster.com | Ticketmaster | entertainment1051axs.com | AXS | entertainment1052seatgeek.com | SeatGeek | entertainment1053stubhub.com | StubHub | entertainment1054dice.fm | DICE | entertainment | GB1055ticketek.com.au | Ticketek | entertainment | AU1056ticketleap-placeholder.invalid | skip | skip1057universe-placeholder.invalid | skip | skip1058tixr.com | Tixr | entertainment1059showpass.com | Showpass | entertainment | CA1060opentable.com | OpenTable | food,consumer-tech1061resy.com | Resy | food,consumer-tech1062sevenrooms.com | SevenRooms | food,saas1063yelp.com | Yelp | consumer-tech,internet1064tock.com | Tock | food,saas1065toast-placeholder.invalid | skip | skip1066touchbistro.com | TouchBistro | food,saas | CA1067olo.com | Olo | food,saas1068chownow.com | ChowNow | food,saas1069mindbodyonline.com | Mindbody | health,saas1070classpass.com | ClassPass | health,consumer-tech1071glofox.com | Glofox | health,saas | IE1072zenoti.com | Zenoti | health,saas1073booksy.com | Booksy | consumer-tech,saas | PL1074fresha.com | Fresha | consumer-tech,saas | GB1075vagaro.com | Vagaro | consumer-tech,saas1076# ── marketing, CRM, support, CX, analytics, ad tech ──1077moengage.com | MoEngage | enterprise,saas | IN1078clevertap.com | CleverTap | enterprise,saas | IN1079airship.com | Airship | enterprise,saas1080batch.com | Batch | enterprise,saas | FR1081mparticle.com | mParticle | developer,saas1082tealium.com | Tealium | enterprise,saas1083rudderstack.com | RudderStack | developer,open-source,saas1084snowplow.io | Snowplow | developer,open-source,saas | GB1085criteo.com | Criteo | enterprise,media | FR1086taboola.com | Taboola | enterprise,media | IL1087outbrain.com | Outbrain | enterprise,media1088pubmatic.com | PubMatic | enterprise,media1089magnite.com | Magnite | enterprise,media1090indexexchange.com | Index Exchange | enterprise,media | CA1091openx.com | OpenX | enterprise,media1092adroll.com | AdRoll | enterprise,saas1093stackadapt.com | StackAdapt | enterprise,saas | CA1094branch.io | Branch | developer,saas1095appsflyer.com | AppsFlyer | developer,saas | IL1096adjust.com | Adjust | developer,saas | DE1097singular.net | Singular | developer,saas1098kochava.com | Kochava | developer,saas1099close.com | Close | enterprise,saas1100copper.com | Copper | enterprise,saas1101insightly.com | Insightly | enterprise,saas1102nutshell.com | Nutshell | enterprise,saas1103keap.com | Keap | enterprise,saas1104ontraport.com | Ontraport | enterprise,saas1105qualified.com | Qualified | enterprise,saas1106kayako.com | Kayako | enterprise,saas1107happyfox.com | HappyFox | enterprise,saas1108gainsight.com | Gainsight | enterprise,saas1109churnzero.com | ChurnZero | enterprise,saas1110totango.com | Totango | enterprise,saas1111vitally.io | Vitally | enterprise,saas1112planhat.com | Planhat | enterprise,saas | SE1113baremetrics.com | Baremetrics | finance,saas1114chartmogul.com | ChartMogul | finance,saas | DE1115alchemer.com | Alchemer | enterprise,saas1116delighted.com | Delighted | enterprise,saas1117medallia.com | Medallia | enterprise,saas1118qualaroo.com | Qualaroo | enterprise,saas1119bazaarvoice.com | Bazaarvoice | commerce,saas1120trustpilot.com | Trustpilot | consumer-tech,internet | DK1121reviews.io | REVIEWS.io | commerce,saas | GB1122okendo.io | Okendo | commerce,saas | AU1123judge.me | Judge.me | commerce,saas | GB1124g2.com | G2 | enterprise,internet1125agorapulse.com | Agorapulse | enterprise,saas | FR1126sendible.com | Sendible | enterprise,saas | GB1127socialbee.com | SocialBee | enterprise,saas | RO1128planoly.com | Planoly | enterprise,saas1129sketch.com | Sketch | developer,software | NL1130invisionapp.com | InVision | developer,saas1131zeplin.io | Zeplin | developer,saas1132marvelapp.com | Marvel | developer,saas | GB1133imagekit.io | ImageKit | developer,saas | IN1134sirv.com | Sirv | developer,saas | GB1135bynder.com | Bynder | enterprise,saas | NL1136brandfolder.com | Brandfolder | enterprise,saas1137canto.com | Canto | enterprise,saas1138frontify.com | Frontify | enterprise,saas | CH1139brightcove.com | Brightcove | media,saas1140jwplayer.com | JW Player | media,saas1141kaltura.com | Kaltura | media,saas1142acquia.com | Acquia | developer,saas1143higherlogic.com | Higher Logic | enterprise,saas1144khoros.com | Khoros | enterprise,saas1145on24.com | ON24 | enterprise,saas1146livestorm.co | Livestorm | enterprise,saas | FR1147demio.com | Demio | enterprise,saas1148bigmarker.com | BigMarker | enterprise,saas1149airmeet.com | Airmeet | enterprise,saas | IN1150seismic.com | Seismic | enterprise,saas1151highspot.com | Highspot | enterprise,saas1152showpad.com | Showpad | enterprise,saas | BE11536sense.com | 6sense | enterprise,saas1154demandbase.com | Demandbase | enterprise,saas1155bombora.com | Bombora | enterprise,saas1156cognism.com | Cognism | enterprise,saas | GB1157chilipiper.com | Chili Piper | enterprise,saas1158celonis.com | Celonis | enterprise,saas | DE1159planful.com | Planful | finance,saas1160venasolutions.com | Vena | finance,saas | CA1161mosaic.tech | Mosaic | finance,saas1162pigment.com | Pigment | finance,saas | FR1163blackline.com | BlackLine | finance,saas1164floqast.com | FloQast | finance,saas1165sovos.com | Sovos | finance,saas1166jaggaer.com | JAGGAER | enterprise,saas1167ivalua.com | Ivalua | enterprise,saas | FR1168ziphq.com | Zip | enterprise,saas1169egnyte.com | Egnyte | enterprise,saas1170citrix.com | Citrix | enterprise,software1171uipath.com | UiPath | enterprise,ai,saas1172automationanywhere.com | Automation Anywhere | enterprise,ai,saas1173c3.ai | C3 AI | enterprise,ai,saas1174palantir.com | Palantir | enterprise,ai1175sap-placeholder.invalid | skip | skip1176freshworks-placeholder.invalid | skip | skip1177# ── IoT, hardware, consumer devices, smart home ──1178particle.io | Particle | developer,infrastructure1179balena.io | balena | developer,infrastructure | GB1180losant.com | Losant | developer,infrastructure1181blynk.io | Blynk | developer,infrastructure1182thingsboard.io | ThingsBoard | developer,open-source1183ubidots.com | Ubidots | developer,infrastructure1184golioth.io | Golioth | developer,infrastructure1185memfault.com | Memfault | developer,infrastructure1186ring.com | Ring | consumer-tech1187arlo.com | Arlo | consumer-tech1188wyze.com | Wyze | consumer-tech1189ecobee.com | ecobee | consumer-tech | CA1190smartthings.com | SmartThings | consumer-tech1191philips-hue.com | Philips Hue | consumer-tech | NL1192tile.com | Tile | consumer-tech1193eufy.com | eufy | consumer-tech1194govee.com | Govee | consumer-tech | CN1195tp-link.com | TP-Link | consumer-tech,telecom | CN1196netgear.com | Netgear | consumer-tech,telecom1197ubnt.com | Ubiquiti | telecom,infrastructure | | status.ui.com1198eero.com | eero | consumer-tech,telecom1199meraki.com | Cisco Meraki | telecom,infrastructure1200tesla-placeholder.invalid | skip | skip1201rivian-placeholder.invalid | skip | skip1202chargepoint.com | ChargePoint | automotive,energy1203evgo.com | EVgo | automotive,energy1204electrifyamerica.com | Electrify America | automotive,energy1205flo.com | FLO | automotive,energy | CA1206enphase.com | Enphase | energy,consumer-tech1207solaredge.com | SolarEdge | energy | IL1208tado.com | tado° | energy,consumer-tech | DE1209octopus.energy | Octopus Energy | energy | GB1210ovoenergy.com | OVO Energy | energy | GB1211bulb-placeholder.invalid | skip | skip1212# ── weather, maps, geodata APIs ──1213openweathermap.org | OpenWeather | weather,developer | GB1214tomorrow.io | Tomorrow.io | weather,developer1215weatherapi.com | WeatherAPI | weather,developer1216here.com | HERE Technologies | transport,developer | NL1217tomtom.com | TomTom | transport,developer | NL1218maptiler.com | MapTiler | developer,saas | CH1219radar.com | Radar | developer,saas1220foursquare.com | Foursquare | developer,consumer-tech1221what3words.com | what3words | developer | GB1222smartystreets.com | Smarty | developer,saas1223loqate.com | Loqate | developer,saas | GB1224# ── government digital services, universities IT ──1225cloud.gov | cloud.gov (GSA) | government,cloud | | cloudgov.statuspage.io1226login.gov | Login.gov (GSA) | government,cyber1227payments.service.gov.uk | GOV.UK Pay | government,payments | GB | status.payments.service.gov.uk1228notifications.service.gov.uk | GOV.UK Notify | government | GB | status.notifications.service.gov.uk1229canada.ca | Government of Canada digital services | government | CA | status.canada.ca1230digital.canada.ca | Canadian Digital Service | government | CA | status.notification.canada.ca1231service.nsw.gov.au | Service NSW | government | AU1232digital.gov.au | Digital Transformation Agency | government | AU | status.digital.gov.au1233mygov.au-placeholder.invalid | skip | skip1234usds-placeholder.invalid | skip | skip1235grants.gov | Grants.gov | government1236sam.gov | SAM.gov | government1237nasa-placeholder.invalid | skip | skip1238huit.harvard.edu | Harvard University IT | education | | status.huit.harvard.edu1239its.umich.edu | University of Michigan ITS | education | | status.its.umich.edu1240it.cornell.edu | Cornell IT | education | | it.cornell.edu1241princeton.edu | Princeton University OIT | education | | status.princeton.edu1242yale.edu | Yale ITS | education | | status.yale.edu1243columbia.edu | Columbia University IT | education | | status.cuit.columbia.edu1244nyu.edu | NYU IT | education | | status.nyu.edu1245upenn.edu | Penn ISC | education | | status.upenn.edu1246cmu.edu | Carnegie Mellon Computing Services | education | | status.cmu.edu1247ucla.edu | UCLA IT Services | education | | status.it.ucla.edu1248ucsd.edu | UC San Diego ITS | education | | status.ucsd.edu1249ucdavis.edu | UC Davis IET | education | | status.ucdavis.edu1250uw.edu | University of Washington IT | education | | status.uw.edu1251utoronto.ca | University of Toronto ITS | education | CA | status.utoronto.ca1252ubc.ca | UBC IT | education | CA | status.it.ubc.ca1253mcgill.ca | McGill IT | education | CA | status.mcgill.ca1254uwaterloo.ca | University of Waterloo IST | education | CA | status.uwaterloo.ca1255ualberta.ca | University of Alberta IST | education | CA | status.ualberta.ca1256umontreal.ca | Université de Montréal TI | education | CA | statut.umontreal.ca1257uqam.ca | UQAM | education | CA | statut.uqam.ca1258ulaval.ca | Université Laval | education | CA | etat.ulaval.ca1259concordia.ca | Concordia University | education | CA | status.concordia.ca1260yorku.ca | York University UIT | education | CA | status.yorku.ca1261uottawa.ca | University of Ottawa | education | CA | status.uottawa.ca1262sfu.ca | Simon Fraser University IT | education | CA | status.sfu.ca1263ucalgary.ca | University of Calgary IT | education | CA | status.ucalgary.ca1264mun.ca | Memorial University | education | CA | status.mun.ca1265dal.ca | Dalhousie University | education | CA | status.dal.ca1266queensu.ca | Queen's University ITS | education | CA | status.queensu.ca1267uwo.ca | Western University | education | CA | status.uwo.ca1268mcmaster.ca | McMaster University | education | CA | status.mcmaster.ca1269ox.ac.uk | University of Oxford IT Services | education | GB | status.it.ox.ac.uk1270cam.ac.uk | University of Cambridge UIS | education | GB | status.uis.cam.ac.uk1271imperial.ac.uk | Imperial College London ICT | education | GB | status.imperial.ac.uk1272ucl.ac.uk | UCL ISD | education | GB | status.ucl.ac.uk1273ed.ac.uk | University of Edinburgh IS | education | GB | status.is.ed.ac.uk1274manchester.ac.uk | University of Manchester IT | education | GB | status.itservices.manchester.ac.uk1275kcl.ac.uk | King's College London IT | education | GB | status.kcl.ac.uk1276bristol.ac.uk | University of Bristol IT | education | GB | status.bristol.ac.uk1277gatech.edu | Georgia Tech OIT | education | | status.gatech.edu1278purdue.edu | Purdue IT | education | | status.purdue.edu1279wisc.edu | UW–Madison DoIT | education | | status.doit.wisc.edu1280illinois.edu | University of Illinois Technology Services | education | | status.illinois.edu1281umn.edu | University of Minnesota OIT | education | | status.umn.edu1282osu.edu | Ohio State OTDI | education | | status.osu.edu1283psu.edu | Penn State IT | education | | status.psu.edu1284utexas.edu | UT Austin ITS | education | | status.utexas.edu1285tamu.edu | Texas A&M Technology Services | education | | status.tamu.edu1286ufl.edu | University of Florida IT | education | | status.it.ufl.edu1287asu.edu | Arizona State University UTO | education | | status.asu.edu1288arizona.edu | University of Arizona UITS | education | | status.arizona.edu1289colorado.edu | CU Boulder OIT | education | | status.colorado.edu1290duke.edu | Duke OIT | education | | status.oit.duke.edu1291unc.edu | UNC ITS | education | | status.unc.edu1292virginia.edu | UVA ITS | education | | status.its.virginia.edu1293northwestern.edu | Northwestern IT | education | | status.northwestern.edu1294uchicago.edu | UChicago IT Services | education | | status.uchicago.edu1295jhu.edu | Johns Hopkins IT | education | | status.it.johnshopkins.edu1296bu.edu | Boston University IS&T | education | | status.bu.edu1297northeastern.edu | Northeastern ITS | education | | status.northeastern.edu1298rutgers.edu | Rutgers OIT | education | | status.rutgers.edu1299umd.edu | University of Maryland DIT | education | | status.umd.edu1300usc.edu | USC ITS | education | | status.usc.edu1301uci.edu | UC Irvine OIT | education | | status.uci.edu1302berkeley.edu | UC Berkeley IT | education | | status.berkeley.edu1303indiana.edu | Indiana University UITS | education | | status.iu.edu1304msu.edu | Michigan State IT | education | | status.msu.edu1305unimelb.edu.au | University of Melbourne | education | AU | status.unimelb.edu.au1306sydney.edu.au | University of Sydney ICT | education | AU | status.sydney.edu.au1307monash.edu | Monash University eSolutions | education | AU | status.monash.edu1308unsw.edu.au | UNSW IT | education | AU | status.unsw.edu.au1309uq.edu.au | University of Queensland ITS | education | AU | status.uq.edu.au1310auckland.ac.nz | University of Auckland | education | NZ | status.auckland.ac.nz1311ethz.ch | ETH Zurich IT Services | education | CH | status.ethz.ch1312epfl.ch | EPFL | education | CH | status.epfl.ch1313tum.de | TU Munich IT | education | DE | status.tum.de1314kuleuven.be | KU Leuven ICTS | education | BE | status.kuleuven.be1315tudelft.nl | TU Delft | education | NL | status.tudelft.nl1316uva.nl | University of Amsterdam | education | NL | status.uva.nl1317nus.edu.sg | National University of Singapore | education | SG | status.nus.edu.sg1318# ── misc SaaS long tail (Cloud 100 / YC) ──1319airtable-placeholder.invalid | skip | skip1320gong-placeholder.invalid | skip | skip1321verkada.com | Verkada | cyber,infrastructure1322samsara.com | Samsara | logistics,infrastructure1323motive.com | Motive | logistics,infrastructure1324geotab.com | Geotab | logistics,infrastructure | CA1325flock-placeholder.invalid | skip | skip1326scale-placeholder.invalid | skip | skip1327faire-placeholder.invalid | skip | skip1328whatnot.com | Whatnot | commerce,media1329flexport-placeholder.invalid | skip | skip1330convoy-placeholder.invalid | skip | skip1331loadsmart.com | Loadsmart | logistics,saas1332uberfreight-placeholder.invalid | skip | skip1333gem.com | Gem | enterprise,labour,saas1334rippling-placeholder.invalid | skip | skip1335lattice-placeholder.invalid | skip | skip1336vercel-placeholder.invalid | skip | skip1337webflow-placeholder.invalid | skip | skip1338grafana-placeholder.invalid | skip | skip1339redis-placeholder.invalid | skip | skip1340kong-placeholder.invalid | skip | skip1341apollo-placeholder.invalid | skip | skip1342cribl.io | Cribl | developer,saas1343teleport-placeholder.invalid | skip | skip1344tines.com | Tines | cyber,saas | IE1345torq.io | Torq | cyber,saas | IL1346swimlane.com | Swimlane | cyber,saas1347opal.dev | Opal | cyber,saas1348conductorone.com | ConductorOne | cyber,saas1349veza.com | Veza | cyber,saas1350oso-placeholder.invalid | skip | skip1351cerbos.dev | Cerbos | developer,cyber | GB1352permit.io | Permit.io | developer,cyber | IL1353warrant-placeholder.invalid | skip | skip1354descript-placeholder.invalid | skip | skip1355runway-placeholder.invalid | skip | skip1356gamma-placeholder.invalid | skip | skip1357tome.app | Tome | enterprise,ai,saas1358beautiful.ai | Beautiful.ai | enterprise,ai,saas1359notion-placeholder.invalid | skip | skip1360coda-placeholder.invalid | skip | skip1361clay.com | Clay | enterprise,ai,saas1362instantly.ai | Instantly | enterprise,saas1363lemlist.com | lemlist | enterprise,saas | FR1364smartlead.ai | Smartlead | enterprise,saas1365reply.io | Reply.io | enterprise,saas1366mailshake.com | Mailshake | enterprise,saas1367woodpecker.co | Woodpecker | enterprise,saas | PL1368hunter.io | Hunter | enterprise,saas | FR1369snov.io | Snov.io | enterprise,saas | UA1370seamless.ai | Seamless.AI | enterprise,saas1371rocketreach.co | RocketReach | enterprise,saas1372peopledatalabs.com | People Data Labs | enterprise,developer1373fullcontact-placeholder.invalid | skip | skip1374brandwatch-placeholder.invalid | skip | skip1375mention.com | Mention | enterprise,saas | FR1376awario.com | Awario | enterprise,saas1377talkwalker.com | Talkwalker | enterprise,saas | LU1378cision.com | Cision | enterprise,media1379prnewswire.com | PR Newswire | media,enterprise1380businesswire.com | Business Wire | media,enterprise1381globenewswire.com | GlobeNewswire | media,enterprise1382prweb.com | PRWeb | media,enterprise1383muckrack.com | Muck Rack | media,saas1384prezly.com | Prezly | media,saas | BE1385harmonic-placeholder.invalid | skip | skip1386crunchbase.com | Crunchbase | finance,internet1387pitchbook.com | PitchBook | finance,saas1388cbinsights.com | CB Insights | finance,saas1389dealroom.co | Dealroom | finance,saas | NL1390tegus-placeholder.invalid | skip | skip1391alphasense.com | AlphaSense | finance,saas1392kensho-placeholder.invalid | skip | skip1393docsend-placeholder.invalid | skip | skip1394carta-placeholder.invalid | skip | skip1395vanta-placeholder.invalid | skip | skip1396thoropass.com | Thoropass | cyber,saas1397sprinto.com | Sprinto | cyber,saas | IN1398scrut.io | Scrut Automation | cyber,saas | IN1399hyperproof.com | Hyperproof | cyber,saas1400auditboard.com | AuditBoard | enterprise,saas1401workiva.com | Workiva | enterprise,saas1402diligent.com | Diligent | enterprise,saas1403boardable-placeholder.invalid | skip | skip1404navex.com | NAVEX | enterprise,saas1405logicgate.com | LogicGate | enterprise,saas1406archer-placeholder.invalid | skip | skip1407riskonnect-placeholder.invalid | skip | skip1408resolver.com | Resolver | enterprise,saas | CA1409ideagen.com | Ideagen | enterprise,saas | GB1410intelex.com | Intelex | enterprise,saas | CA1411cority.com | Cority | enterprise,saas | CA1412benchling.com | Benchling | science,saas1413dotmatics.com | Dotmatics | science,saas1414labarchives.com | LabArchives | science,saas1415scispot-placeholder.invalid | skip | skip1416protocols.io | protocols.io | science,saas1417biorender.com | BioRender | science,saas | CA1418labguru-placeholder.invalid | skip | skip1419quartzy.com | Quartzy | science,saas1420opentrons.com | Opentrons | science1421strateos-placeholder.invalid | skip | skip1422emeraldcloudlab-placeholder.invalid | skip | skip1423veeva.com | Veeva Systems | pharma,saas1424medidata.com | Medidata | pharma,saas1425iqvia.com | IQVIA | pharma,saas1426castoredc.com | Castor | pharma,saas | NL1427florence-placeholder.invalid | skip | skip1428komodohealth.com | Komodo Health | health,saas1429flatiron.com | Flatiron Health | health,saas1430tempus.com | Tempus | health,ai1431color.com | Color | health143223andme.com | 23andMe | health,consumer-tech1433ancestry.com | Ancestry | consumer-tech1434myheritage.com | MyHeritage | consumer-tech | IL1435findagrave-placeholder.invalid | skip | skip1436familysearch.org | FamilySearch | consumer-tech,ngo1437# ── crypto exchanges & wallets (Canada / EU / Asia) & web3 infra ──1438coinhako.com | Coinhako | crypto | SG1439independentreserve.com | Independent Reserve | crypto | AU1440btcmarkets.net | BTC Markets | crypto | AU1441coinjar.com | CoinJar | crypto | AU1442swyftx.com | Swyftx | crypto | AU1443coinspot.com.au | CoinSpot | crypto | AU1444bitvavo.com | Bitvavo | crypto | NL1445bitstamp-placeholder.invalid | skip | skip1446zonda-placeholder.invalid | skip | skip1447upbit.com | Upbit | crypto | KR1448bithumb.com | Bithumb | crypto | KR1449bitflyer.com | bitFlyer | crypto | JP1450coincheck.com | Coincheck | crypto | JP1451wazirx.com | WazirX | crypto | IN1452coindcx.com | CoinDCX | crypto | IN1453coinswitch.co | CoinSwitch | crypto | IN1454alchemypay-placeholder.invalid | skip | skip1455moonpay.com | MoonPay | crypto,payments1456ramp.network | Ramp Network | crypto,payments | PL1457transak.com | Transak | crypto,payments1458banxa.com | Banxa | crypto,payments | AU1459simplex-placeholder.invalid | skip | skip1460bitpay.com | BitPay | crypto,payments1461coinpayments.net | CoinPayments | crypto,payments1462nowpayments.io | NOWPayments | crypto,payments1463blockdaemon.com | Blockdaemon | crypto,infrastructure1464figment.io | Figment | crypto,infrastructure | CA1465kiln.fi | Kiln | crypto,infrastructure | FR1466p2p.org | P2P.org | crypto,infrastructure1467stakefish-placeholder.invalid | skip | skip1468allnodes.com | Allnodes | crypto,infrastructure1469getblock.io | GetBlock | crypto,developer1470nownodes.io | NOWNodes | crypto,developer1471blockdaemon-placeholder.invalid | skip | skip1472helius.dev | Helius | crypto,developer1473triton-placeholder.invalid | skip | skip1474alchemy-placeholder.invalid | skip | skip1475tenderly.co | Tenderly | crypto,developer | RS1476blocknative.com | Blocknative | crypto,developer1477biconomy.io | Biconomy | crypto,developer1478gelato.network | Gelato | crypto,developer | CH1479pimlico.io | Pimlico | crypto,developer | GB1480zerodev-placeholder.invalid | skip | skip1481thirdweb.com | thirdweb | crypto,developer1482crossmint.com | Crossmint | crypto,developer1483reservoir.tools | Reservoir | crypto,developer1484zora.co | Zora | crypto,internet1485rarible.com | Rarible | crypto,internet1486looksrare-placeholder.invalid | skip | skip1487sound.xyz | Sound.xyz | crypto,media1488mirror.xyz | Mirror | crypto,media1489paragraph.xyz | Paragraph | crypto,media1490farcaster.xyz | Farcaster | crypto,consumer-tech1491lens.xyz | Lens Protocol | crypto,consumer-tech1492dydx.exchange | dYdX | crypto1493gmx.io | GMX | crypto1494curve.fi | Curve | crypto1495balancer.fi | Balancer | crypto1496pancakeswap.finance | PancakeSwap | crypto1497sushi.com | Sushi | crypto14981inch.io | 1inch | crypto1499paraswap.io | ParaSwap | crypto1500cowswap-placeholder.invalid | skip | skip1501makerdao-placeholder.invalid | skip | skip1502sky.money | Sky (MakerDAO) | crypto1503frax.finance | Frax | crypto1504rocketpool.net | Rocket Pool | crypto1505eigenlayer.xyz | EigenLayer | crypto1506across.to | Across | crypto1507stargate.finance | Stargate | crypto1508layerzero.network | LayerZero | crypto1509wormhole.com | Wormhole | crypto1510axelar.network | Axelar | crypto1511hop.exchange | Hop Protocol | crypto1512synapseprotocol.com | Synapse | crypto1513safe.global | Safe | crypto,developer | DE1514snapshot.org | Snapshot | crypto,developer1515tally.xyz | Tally | crypto,developer1516gitcoin.co | Gitcoin | crypto,open-source1517optimism.io | Optimism | crypto1518arbitrum.io | Arbitrum | crypto1519base.org | Base | crypto1520zksync.io | ZKsync | crypto1521starknet.io | Starknet | crypto1522scroll.io | Scroll | crypto1523linea.build | Linea | crypto1524mantle.xyz | Mantle | crypto1525blast.io | Blast | crypto1526polygon.technology | Polygon | crypto1527avax.network | Avalanche | crypto1528solana.com | Solana | crypto1529near.org | NEAR | crypto1530sui.io | Sui | crypto1531aptosfoundation.org | Aptos | crypto1532sei.io | Sei | crypto1533celestia.org | Celestia | crypto1534cosmos.network | Cosmos | crypto1535polkadot.network | Polkadot | crypto | CH1536cardano.org | Cardano | crypto1537algorand.co | Algorand | crypto1538tezos.com | Tezos | crypto | CH1539hedera.com | Hedera | crypto1540stellar.org | Stellar | crypto1541ripple.com | Ripple | crypto1542tron.network | TRON | crypto1543tonkeeper-placeholder.invalid | skip | skip1544ton.org | TON | crypto | CH1545internetcomputer.org | Internet Computer (DFINITY) | crypto | CH1546filecoin.io | Filecoin | crypto1547arweave.org | Arweave | crypto1548flow.com | Flow | crypto1549immutable.com | Immutable | crypto,gaming | AU1550ronin.network | Ronin | crypto,gaming1551# ── consumer apps, social, dating, fitness, misc ──1552bumble.com | Bumble | consumer-tech1553hinge.co | Hinge | consumer-tech1554match.com | Match | consumer-tech1555grindr.com | Grindr | consumer-tech1556nextdoor.com | Nextdoor | consumer-tech,internet1557meetup.com | Meetup | consumer-tech,internet1558strava-placeholder.invalid | skip | skip1559fitbit-placeholder.invalid | skip | skip1560trainerroad.com | TrainerRoad | health,consumer-tech1561wahoofitness.com | Wahoo | health,consumer-tech1562polar.com | Polar | health,consumer-tech | FI1563suunto.com | Suunto | health,consumer-tech | FI1564coros.com | COROS | health,consumer-tech1565eightsleep.com | Eight Sleep | health,consumer-tech1566tonal.com | Tonal | health,consumer-tech1567hydrow.com | Hydrow | health,consumer-tech1568ifit.com | iFIT | health,consumer-tech1569lifesum.com | Lifesum | health,consumer-tech | SE1570flo.health | Flo | health,consumer-tech | GB1571clue-placeholder.invalid | skip | skip1572betterhelp.com | BetterHelp | health,consumer-tech1573talkspace.com | Talkspace | health,consumer-tech1574cerebral.com | Cerebral | health,consumer-tech1575lyrahealth.com | Lyra Health | health,saas1576springhealth.com | Spring Health | health,saas1577modernhealth.com | Modern Health | health,saas1578ginger-placeholder.invalid | skip | skip1579omadahealth.com | Omada Health | health1580livongo-placeholder.invalid | skip | skip1581goodrx.com | GoodRx | health,consumer-tech1582capsule.com | Capsule | health,consumer-tech1583altoids-placeholder.invalid | skip | skip1584pillpack-placeholder.invalid | skip | skip1585rover.com | Rover | consumer-tech1586wag.co | Wag! | consumer-tech1587thumbtack.com | Thumbtack | consumer-tech1588angi.com | Angi | consumer-tech1589taskrabbit.com | Taskrabbit | consumer-tech1590care.com | Care.com | consumer-tech1591handy-placeholder.invalid | skip | skip1592houzz.com | Houzz | consumer-tech,real-estate1593apartments.com | Apartments.com | real-estate1594rentcafe-placeholder.invalid | skip | skip1595zumper.com | Zumper | real-estate1596opendoor.com | Opendoor | real-estate1597offerpad.com | Offerpad | real-estate1598compass.com | Compass | real-estate1599realtor.com | Realtor.com | real-estate1600rightmove.co.uk | Rightmove | real-estate | GB1601zoopla.co.uk | Zoopla | real-estate | GB1602realestate.com.au | realestate.com.au (REA) | real-estate | AU1603domain.com.au | Domain | real-estate | AU1604immobilienscout24.de | ImmoScout24 | real-estate | DE1605seloger.com | SeLoger | real-estate | FR1606idealista.com | idealista | real-estate | ES1607funda.nl | Funda | real-estate | NL1608carvana.com | Carvana | automotive,commerce1609carmax.com | CarMax | automotive,commerce1610vroom-placeholder.invalid | skip | skip1611autotrader.com | Autotrader | automotive,commerce1612cars.com | Cars.com | automotive,commerce1613cargurus.com | CarGurus | automotive,commerce1614copart.com | Copart | automotive,commerce1615kbb.com | Kelley Blue Book | automotive,media1616edmunds.com | Edmunds | automotive,media1617indeed.com | Indeed | labour,internet1618glassdoor.com | Glassdoor | labour,internet1619ziprecruiter.com | ZipRecruiter | labour,internet1620monster.com | Monster | labour,internet1621dice.com | Dice | labour,internet1622welcometothejungle.com | Welcome to the Jungle | labour,internet | FR1623seek.com.au | SEEK | labour,internet | AU1624reed.co.uk | Reed | labour,internet | GB1625totaljobs.com | Totaljobs | labour,internet | GB1626stepstone.de | StepStone | labour,internet | DE1627naukri.com | Naukri | labour,internet | IN1628upwork.com | Upwork | labour,internet1629fiverr.com | Fiverr | labour,internet | IL1630toptal.com | Toptal | labour,internet1631freelancer.com | Freelancer.com | labour,internet | AU1632peopleperhour.com | PeoplePerHour | labour,internet | GB1633malt.com | Malt | labour,internet | FR1634contra.com | Contra | labour,internet1635wetransfer.com | WeTransfer | consumer-tech,saas | NL1636fromsmash.com | Smash | consumer-tech,saas | FR1637filemail.com | Filemail | consumer-tech,saas | "NO"1638hightail.com | Hightail | enterprise,saas1639send-anywhere.com | Send Anywhere | consumer-tech,saas | KR1640visme.co | Visme | enterprise,saas1641piktochart.com | Piktochart | enterprise,saas | MY1642snappa.com | Snappa | enterprise,saas | CA1643kapwing.com | Kapwing | media,saas1644veed.io | VEED | media,saas | GB1645invideo.io | InVideo | media,saas,ai | IN1646animoto.com | Animoto | media,saas1647lumen5.com | Lumen5 | media,saas | CA1648pictory.ai | Pictory | media,saas,ai1649opus.pro | OpusClip | media,saas,ai1650capcut.com | CapCut | media,consumer-tech | SG1651canva-placeholder.invalid | skip | skip1652remove.bg | remove.bg | media,saas,ai | AT1653photoroom.com | Photoroom | media,saas,ai | FR1654cleanup-placeholder.invalid | skip | skip1655picsart.com | Picsart | media,consumer-tech1656befunky.com | BeFunky | media,consumer-tech1657pixlr.com | Pixlr | media,consumer-tech | SG1658fotor.com | Fotor | media,consumer-tech | CN1659# ── enterprise infrastructure & IT (Statuspage-heavy) ──1660solarwinds-placeholder.invalid | skip | skip1661manageengine.com | ManageEngine | enterprise,software | IN1662freshservice-placeholder.invalid | skip | skip1663sysaid.com | SysAid | enterprise,saas | IL1664ivanti.com | Ivanti | enterprise,cyber,software1665bmc.com | BMC Software | enterprise,software1666cherwell-placeholder.invalid | skip | skip1667topdesk.com | TOPdesk | enterprise,saas | NL1668halopsa.com | HaloPSA | enterprise,saas | GB1669syncromsp.com | Syncro | enterprise,saas1670pulseway.com | Pulseway | enterprise,saas | IE1671n-able.com | N-able | enterprise,saas1672auvik.com | Auvik | enterprise,saas | CA1673domotz.com | Domotz | enterprise,saas | GB1674liongard.com | Liongard | enterprise,saas1675itglue.com | IT Glue | enterprise,saas | CA1676hudu.com | Hudu | enterprise,saas1677passportal-placeholder.invalid | skip | skip1678scalepad.com | ScalePad | enterprise,saas | CA1679cove-placeholder.invalid | skip | skip1680axcient.com | Axcient | enterprise,saas1681acronis.com | Acronis | enterprise,cyber,software | CH1682arcserve.com | Arcserve | enterprise,software1683commvault.com | Commvault | enterprise,software1684rubrik.com | Rubrik | enterprise,cyber,software1685cohesity.com | Cohesity | enterprise,software1686zerto-placeholder.invalid | skip | skip1687nakivo.com | NAKIVO | enterprise,software1688msp360.com | MSP360 | enterprise,software1689spanning.com | Spanning | enterprise,saas1690afi.ai | Afi | enterprise,saas1691keepit.com | Keepit | enterprise,saas | DK1692avepoint.com | AvePoint | enterprise,saas1693sharegate.com | ShareGate | enterprise,saas | CA1694bittitan.com | BitTitan | enterprise,saas1695cloudm.io | CloudM | enterprise,saas | GB1696quest.com | Quest Software | enterprise,software1697sailpoint.com | SailPoint | cyber,saas1698saviynt.com | Saviynt | cyber,saas1699oktane-placeholder.invalid | skip | skip1700secret-double-octopus-placeholder.invalid | skip | skip1701hypr.com | HYPR | cyber,saas1702transmitsecurity.com | Transmit Security | cyber,saas | IL1703silverfort.com | Silverfort | cyber,saas | IL1704authomize-placeholder.invalid | skip | skip1705appomni.com | AppOmni | cyber,saas1706obsidiansecurity.com | Obsidian Security | cyber,saas1707valence-placeholder.invalid | skip | skip1708nudgesecurity.com | Nudge Security | cyber,saas1709grip-placeholder.invalid | skip | skip1710zluri.com | Zluri | enterprise,saas | IN1711torii.ai | Torii | enterprise,saas | IL1712productiv.com | Productiv | enterprise,saas1713vendr.com | Vendr | enterprise,saas1714tropic.app | Tropic | enterprise,saas1715cledara.com | Cledara | enterprise,saas | GB1716spendflo-placeholder.invalid | skip | skip1717"""17181719STATUS_JSON_PATHS = ["/api/v2/summary.json", "/summary.json", "/api/v1/summary"]1720CHALLENGE = re.compile(r"just a moment|cf-chl|attention required|access denied|captcha|enable javascript and cookies|verify you are human|ddos-guard|incapsula|_incapsula", re.I)172117221723class Bucket:1724    def __init__(self, rate: float) -> None:1725        self.rate, self.tokens, self.t, self.lock = rate, 1.0, time.monotonic(), threading.Lock()17261727    def take(self) -> None:1728        while True:1729            with self.lock:1730                now = time.monotonic()1731                self.tokens = min(1.0 + self.rate, self.tokens + (now - self.t) * self.rate)1732                self.t = now1733                if self.tokens >= 1:1734                    self.tokens -= 11735                    return1736                wait = (1 - self.tokens) / self.rate1737            time.sleep(wait)173817391740BUCKET = Bucket(RATE)1741_local = threading.local()1742_dns_cache: dict[str, bool] = {}1743_dns_lock = threading.Lock()174417451746def session() -> requests.Session:1747    s = getattr(_local, "s", None)1748    if s is None:1749        s = requests.Session()1750        s.headers.update({"User-Agent": UA, "Accept": "application/json, text/html;q=0.9, */*;q=0.8", "Accept-Language": "en"})1751        _local.s = s1752    return s175317541755def resolves(host: str) -> bool:1756    with _dns_lock:1757        if host in _dns_cache:1758            return _dns_cache[host]1759    try:1760        socket.getaddrinfo(host, 443, proto=socket.IPPROTO_TCP)1761        ok = True1762    except OSError:1763        ok = False1764    with _dns_lock:1765        _dns_cache[host] = ok1766    return ok176717681769def get(url: str) -> dict | None:1770    host = urlparse(url).hostname or ""1771    if not resolves(host):1772        return None1773    BUCKET.take()1774    try:1775        r = session().get(url, timeout=TIMEOUT, allow_redirects=True, stream=True)1776        body = b""1777        for chunk in r.iter_content(65536):1778            body += chunk1779            if len(body) > MAX_BODY:1780                break1781        r.close()1782        text = body.decode(r.encoding or "utf-8", errors="replace") if body else ""1783        return {"status": r.status_code, "ct": (r.headers.get("content-type") or "").lower(), "final": r.url, "text": text, "len": len(body)}1784    except requests.RequestException:1785        return None178617871788def json_shape(text: str) -> tuple[str, dict] | None:1789    t = text.lstrip(" \n\r\t")1790    if not t.startswith("{"):1791        return None1792    try:1793        j = json.loads(t)1794    except ValueError:1795        return None1796    if not isinstance(j, dict):1797        return None1798    page = j.get("page")1799    if isinstance(page, dict) and isinstance(j.get("status"), dict) and ("components" in j or "incidents" in j) and "id" in page:1800        return "statuspage", j1801    if isinstance(j.get("subpages"), list) and any(isinstance(p, dict) and "summary" in p for p in j["subpages"]):1802        return "incidentio", j1803    if isinstance(page, dict) and ("activeIncidents" in j or "activeMaintenances" in j or isinstance(page.get("status"), str)):1804        return "instatus", j1805    if "ongoing_incidents" in j or "page_title" in j:1806        return "incidentio", j1807    if isinstance(j.get("result"), dict) and "status_overall" in j["result"]:1808        return "statusio", j1809    return None181018111812def parse_candidates() -> list[dict]:1813    out, seen = [], set()1814    for ln in CANDIDATES.strip().splitlines():1815        ln = ln.strip()1816        if not ln or ln.startswith("#"):1817            continue1818        parts = [p.strip() for p in ln.split("|")]1819        domain = parts[0].lower()1820        if domain.endswith(".invalid") or domain in seen or len(parts) < 3:1821            continue1822        seen.add(domain)1823        country = (parts[3].strip('"') if len(parts) > 3 and parts[3] else "US")1824        hosts = [h.strip() for h in parts[4].split(",") if h.strip()] if len(parts) > 4 else []1825        out.append({"domain": domain, "name": parts[1], "categories": [c.strip() for c in parts[2].split(",")], "country": country, "hosts": hosts})1826    return out182718281829def load_registry() -> tuple[dict[str, str], set[str], set[str], set[str]]:1830    """id→domain, all sensor URLs, hosts of existing status sensors, all ids."""1831    id_domain: dict[str, str] = {}1832    urls: set[str] = set()1833    status_hosts: set[str] = set()1834    ids: set[str] = set()1835    for f in ["config/sources.yaml"] + sorted(glob.glob("config/sources.d/*.yaml")):1836        if f.endswith(FRAGMENT):1837            continue1838        d = yaml.safe_load(open(f)) or {}1839        for s in d.get("sources", []):1840            ids.add(s["id"])1841            if s.get("domain") and not s.get("extend"):1842                id_domain[s["id"]] = s["domain"].lower()1843            for sen in s.get("sensors", []) or []:1844                u = sen.get("url", "")1845                urls.add(u.rstrip("/"))1846                if sen.get("type") == "STATUSPAGE" or sen.get("connector") in ("statuspage", "statusjson"):1847                    h = urlparse(u).hostname1848                    if h:1849                        status_hosts.add(h)1850    return id_domain, urls, status_hosts, ids185118521853def apex(host: str) -> str:1854    parts = host.split(".")1855    if len(parts) >= 3 and parts[-2] in ("co", "com", "org", "gov", "ac", "net", "edu") and len(parts[-1]) == 2:1856        return ".".join(parts[-3:])1857    return ".".join(parts[-2:])185818591860def brand(domain: str) -> str:1861    return apex(domain).split(".")[0]186218631864def probe_domain(c: dict, existing_urls: set[str], status_hosts: set[str]) -> dict:1865    d = c["domain"]1866    hits: list[dict] = []1867    notes: list[str] = []1868    probed_hosts: set[str] = set()18691870    def try_status_host(host: str, label: str) -> bool:1871        if host in probed_hosts:1872            return False1873        if host in status_hosts:1874            notes.append(f"{host}: already covered")1875            return True1876        probed_hosts.add(host)1877        if not resolves(host):1878            return False1879        for p in STATUS_JSON_PATHS:1880            url = f"https://{host}{p}"1881            if url in existing_urls:1882                return True1883            r = get(url)1884            if not r:1885                continue1886            if r["status"] == 200:1887                sh = json_shape(r["text"])1888                if sh:1889                    flavor, j = sh1890                    title = (j.get("page") or {}).get("name") if isinstance(j.get("page"), dict) else j.get("page_title", "")1891                    hits.append({"kind": "status", "flavor": flavor, "url": url, "final": r["final"], "title": title or "", "via": label})1892                    return True1893        r = get(f"https://{host}/")1894        if r and r["status"] == 200:1895            body = r["text"]1896            m = re.search(r"statusio_page_id['\"]?\s*[:=]\s*['\"]([0-9a-f]{20,})", body) or re.search(r"api\.status\.io/1\.0/status/([0-9a-f]{20,})", body)1897            if m:1898                url = f"https://api.status.io/1.0/status/{m.group(1)}"1899                if url in existing_urls:1900                    return True1901                rr = get(url)1902                if rr and rr["status"] == 200 and json_shape(rr["text"]):1903                    hits.append({"kind": "status", "flavor": "statusio", "url": url, "final": rr["final"], "title": "", "via": label})1904                    return True1905            # Statuspage / Instatus embedded under another host (e.g. custom domain proxying)1906            m = re.search(r"https://([a-z0-9.-]+)/api/v2/summary\.json", body)1907            if m and m.group(1) not in probed_hosts:1908                return try_status_host(m.group(1), f"embedded in {host}")1909            fh = urlparse(r["final"]).hostname or host1910            if fh != host and fh not in probed_hosts:1911                return try_status_host(fh, f"redirect from {host}")1912            prov = "hund" if "hund.io" in body else "sorry" if "sorryapp" in body else "firehydrant" if "firehydrant" in body else "betterstack" if ("betteruptime" in body or "betterstack" in body) else "freshstatus" if "freshstatus" in body else "statuspage-html" if "statuspage.io" in body else "custom"1913            if CHALLENGE.search(body[:6000]):1914                prov = "challenge"1915            notes.append(f"{host}: {prov} status page, no machine-readable endpoint")1916        elif r and r["status"] in (403, 429, 503):1917            notes.append(f"{host}: http {r['status']}")1918        return False19191920    found = False1921    # 0. explicit hosts1922    for h in c.get("hosts", []):1923        if try_status_host(h, "explicit host"):1924            found = True1925            break1926    # 1. status.<apex>1927    if not found:1928        sh = f"status.{apex(d)}"1929        if sh in status_hosts:1930            notes.append(f"{sh}: already covered")1931            found = True1932        elif resolves(sh):1933            found = try_status_host(sh, "status host")1934    # 2. <domain>/status1935    if not found:1936        r = get(f"https://{d}/status") or get(f"https://www.{d}/status")1937        if r and r["status"] == 200:1938            fh = urlparse(r["final"]).hostname or d1939            if fh not in (d, f"www.{d}") and fh not in probed_hosts:1940                found = try_status_host(fh, f"redirect from {d}/status")1941            elif "text/html" in r["ct"]:1942                m = re.search(r"https://([a-z0-9.-]+)/api/v2/", r["text"])1943                if m and m.group(1) not in probed_hosts:1944                    found = try_status_host(m.group(1), f"embedded in {d}/status")1945    # 3. <brand>.statuspage.io / <brand>.instatus.com1946    if not found:1947        b = brand(d)1948        for h in (f"{b}.statuspage.io", f"{b}.instatus.com"):1949            if try_status_host(h, "brand host"):1950                found = True1951                break1952    return {"domain": d, "hits": hits, "notes": notes}195319541955def cmd_probe(args: argparse.Namespace) -> None:1956    id_domain, urls, status_hosts, _ids = load_registry()1957    cands = parse_candidates()1958    if args.only:1959        only = set(args.only.split(","))1960        cands = [c for c in cands if c["domain"] in only]1961    done: set[str] = set()1962    if os.path.exists(args.out) and not args.fresh:1963        for ln in open(args.out):1964            try:1965                done.add(json.loads(ln)["domain"])1966            except ValueError:1967                pass1968    todo = [c for c in cands if c["domain"] not in done]1969    print(f"{len(cands)} candidates, {len(done)} already probed, {len(todo)} to go · ≤ {RATE} req/s", file=sys.stderr)1970    lock = threading.Lock()1971    t0 = time.time()1972    with open(args.out, "a") as out, ThreadPoolExecutor(max_workers=args.workers) as ex:1973        futs = {ex.submit(probe_domain, c, urls, status_hosts): c for c in todo}1974        for i, fut in enumerate(as_completed(futs), 1):1975            c = futs[fut]1976            try:1977                res = fut.result()1978            except Exception as e:  # noqa: BLE0011979                res = {"domain": c["domain"], "hits": [], "notes": [f"probe error: {e}"]}1980            res.update({"name": c["name"], "categories": c["categories"], "country": c["country"]})1981            with lock:1982                out.write(json.dumps(res) + "\n")1983                out.flush()1984            kinds = ",".join(sorted({h["kind"] + (":" + h["flavor"] if h.get("flavor") else "") for h in res["hits"]})) or "-"1985            print(f"[{i}/{len(todo)} {time.time() - t0:5.0f}s] {c['domain']:28s} {kinds}", file=sys.stderr)198619871988def slug(s: str) -> str:1989    s = s.lower().replace("&", " and ")1990    s = re.sub(r"\(.*?\)", "", s)1991    s = re.sub(r"[^a-z0-9]+", "-", s).strip("-")1992    return s199319941995# Same organization declared earlier under another domain → extend instead of redeclaring.1996EXTEND_OVERRIDE: dict[str, str] = {}1997# Natural slug already taken by a different organization.1998NEW_ID_OVERRIDE: dict[str, str] = {"notifications.service.gov.uk": "govuk-notify", "payments.service.gov.uk": "govuk-pay", "ubnt.com": "ubiquiti", "sky.money": "sky-money", "flow.com": "flow-blockchain", "base.org": "base-chain", "sei.io": "sei-network",1999                                   "zip.co": "zip-au", "ziphq.com": "zip-procurement", "tally.so": "tally-forms", "tally.xyz": "tally-governance", "radar.com": "radar-geofencing",2000                                   "flo.com": "flo-ev", "flo.health": "flo-health", "color.com": "color-health", "column.com": "column-bank", "increase.com": "increase-bank",2001                                   "float.com": "float-scheduling", "hive.com": "hive-pm", "current.com": "current-bank", "dave.com": "dave-app", "route.com": "route-app",2002                                   "copper.com": "copper-crm", "copper.co": "copper-custody", "close.com": "close-crm", "grain.com": "grain-ai", "mention.com": "mention-app",2003                                   "clay.com": "clay-ai", "gem.com": "gem-recruiting", "one.nz": "one-nz", "free.fr": "free-mobile", "three.co.uk": "three-uk",2004                                   "o2.co.uk": "o2-uk", "ee.co.uk": "ee-uk", "sky.com": "sky-uk", "orange.com": "orange-telecom", "tim.it": "tim-italia", "match.com": "match-group"}200520062007# `<brand>.statuspage.io` / `<brand>.instatus.com` hits whose page title is generic or belongs to another company2008# (checked by hand on 2026-09-13): nx → "Nexo Systems", scylladb → "TestApp", phantom → "PhantomPay", workramp →2009# "Confirm LearnUp", copper / play / you / ally / dave / stripe / rainbow / route / fabric / rocket / convert / continue /2010# unified / ssl / launchpad / tally / hey / runn / sr / quillbot / leonardo / orca / jane → ambiguous one-word titles.2011DROP_BRAND_HOSTS = {"nx", "scylladb", "phantom", "workramp", "copper", "play", "you", "ally", "dave", "stripe", "rainbow", "route", "fabric",2012                    "rocket", "convert", "continue", "unified", "ssl", "launchpad", "tally", "hey", "runn", "sr", "quillbot", "leonardo", "orca", "jane"}201320142015def cmd_gate(args: argparse.Namespace) -> None:2016    rows = [json.loads(ln) for ln in open(args.inp) if ln.strip()]2017    targets = [h["url"] for r in rows for h in r["hits"] if re.search(r"\.(statuspage\.io|instatus\.com)/", h["url"])]2018    drop: list[str] = []2019    for u in targets:2020        r = get(u)2021        if not r or r["status"] != 200:2022            drop.append(u)2023            continue2024        try:2025            j = json.loads(r["text"])2026        except ValueError:2027            drop.append(u)2028            continue2029        pg = j.get("page") or {}2030        comps = len(j.get("components") or [])2031        upd = str(pg.get("updated_at") or "")2032        legacy = "old" in (pg.get("url") or "").split("//")[-1].split("/")[0].split(".")[0]2033        if comps == 0 or (upd[:4].isdigit() and upd[:10] < "2024-09-01") or legacy:2034            drop.append(u)2035            print(f"drop {u}  components={comps} updated_at={upd[:10]} url={pg.get('url', '')}", file=sys.stderr)2036    json.dump(drop, open(args.drop, "w"))2037    print(f"{len(drop)} of {len(targets)} brand-host hits dropped → {args.drop}", file=sys.stderr)203820392040def cmd_emit(args: argparse.Namespace) -> None:2041    id_domain, urls, status_hosts, ids = load_registry()2042    gated: set[str] = set(json.load(open(args.drop))) if args.drop and os.path.exists(args.drop) else set()2043    domain_id = dict(EXTEND_OVERRIDE)2044    for i, dom in id_domain.items():2045        domain_id.setdefault(dom, i)2046        domain_id.setdefault(apex(dom), i)2047    rows = [json.loads(ln) for ln in open(args.inp) if ln.strip()]2048    rows.sort(key=lambda r: r["domain"])2049    used_urls: set[str] = set()2050    new_ids: set[str] = set()2051    entries: dict[str, tuple[list[str], list[str]]] = {}2052    n_status = 02053    for r in rows:2054        if not r["hits"]:2055            continue2056        d = r["domain"]2057        existing = domain_id.get(d) or domain_id.get(f"www.{d}") or (domain_id.get(apex(d)) if apex(d) not in ("service.gov.uk", "gov.uk", "gc.ca", "canada.ca") else None)2058        sensors: list[str] = []2059        for h in r["hits"]:2060            u = h["url"].rstrip("/")2061            if u in urls or u in used_urls or h["final"].rstrip("/") in urls:2062                continue2063            if urlparse(u).hostname in status_hosts:2064                continue2065            if h.get("via") == "brand host" and (urlparse(u).hostname or "").split(".")[0] in DROP_BRAND_HOSTS:2066                continue2067            if h["url"] in gated:2068                continue2069            used_urls.add(u)2070            if h["kind"] == "status":2071                n_status += 12072                if h["flavor"] == "statuspage":2073                    sensors.append(f'      - {{ name: status, url: "{h["url"]}", type: STATUSPAGE, connector: statuspage, tier: S }}')2074                else:2075                    label = {"instatus": "instatus", "incidentio": "incident.io", "statusio": "status.io"}[h["flavor"]]2076                    sensors.append(f'      - {{ name: status ({label}), url: "{h["url"]}", type: STATUSPAGE, connector: statusjson, tier: S }}')2077        if not sensors:2078            continue2079        seen_names: dict[str, int] = {}2080        fixed = []2081        for s in sensors:2082            m = re.match(r"      - \{ name: ([^,]+),", s)2083            nm = m.group(1)2084            if nm in seen_names:2085                seen_names[nm] += 12086                s = s.replace(f"name: {nm},", f"name: {nm} {seen_names[nm]},", 1)2087            else:2088                seen_names[nm] = 12089            fixed.append(s)2090        if existing:2091            head = [f"  - id: {existing}", "    extend: true"]2092            if r.get("country"):2093                cc = r["country"]2094                head.append(f'    country: {json.dumps(cc) if cc in ("NO",) else cc}')2095            head.append("    sensors:")2096            key = existing2097        else:2098            sid = NEW_ID_OVERRIDE.get(d) or slug(r["name"]) or slug(d.split(".")[0])2099            if sid in ids or sid in new_ids:2100                sid = slug(d.replace(".", "-"))2101            if sid in ids or sid in new_ids:2102                sid = f"{sid}-status"2103            new_ids.add(sid)2104            cats = ", ".join(r["categories"])2105            cc = r["country"]2106            head = [f"  - id: {sid}", f"    name: {r['name']}", f"    domain: {d}", f"    categories: [{cats}]", "    tier: S",2107                    f"    country: {json.dumps(cc) if cc in ('NO',) else cc}", "    discover: { rss: true, status: true }", "    sensors:"]2108            key = sid2109        if key in entries:2110            entries[key][1].extend(fixed)2111        else:2112            entries[key] = (head, list(fixed))2113    print(f"# config/sources.d/{FRAGMENT} — HEADER TO BE WRITTEN BY HAND ({n_status} status sensors, {len(entries)} organizations)")2114    print("sources:")2115    for head, sens in entries.values():2116        for ln in head:2117            print(ln)2118        for s in sens:2119            print(s)2120    blocked = [n for r in rows for n in r["notes"] if "already covered" not in n]2121    print("# ── probe notes (not sensors) ──", file=sys.stderr)2122    for n in sorted(set(blocked)):2123        print(f"#   {n}", file=sys.stderr)212421252126def main() -> None:2127    ap = argparse.ArgumentParser()2128    sub = ap.add_subparsers(dest="cmd", required=True)2129    p = sub.add_parser("probe")2130    p.add_argument("--out", default="/tmp/probe58.jsonl")2131    p.add_argument("--only")2132    p.add_argument("--fresh", action="store_true")2133    p.add_argument("--workers", type=int, default=12)2134    p.set_defaults(fn=cmd_probe)2135    g = sub.add_parser("gate")2136    g.add_argument("--in", dest="inp", default="/tmp/probe58.jsonl")2137    g.add_argument("--drop", default="/tmp/probe58-drop.json")2138    g.set_defaults(fn=cmd_gate)2139    e = sub.add_parser("emit")2140    e.add_argument("--in", dest="inp", default="/tmp/probe58.jsonl")2141    e.add_argument("--drop", default="/tmp/probe58-drop.json")2142    e.set_defaults(fn=cmd_emit)2143    a = ap.parse_args()2144    a.fn(a)214521462147if __name__ == "__main__":2148    main()2149