21 open drift events. Queue depth requires Cloudflare API access and is not wired — see DLQ for terminal failures, which is the queue state that can actually be acted on.
Crawlable 8 of 8 active clinics (100.0%). Unverified adapters are listed because they are what bounds coverage.
| Provider | Verification | Availability | Clinics | Override | Note |
|---|---|---|---|---|---|
Jane jane | verified 13 tenants | yes | 8 | — | |
Noterro noterro | verified 4 tenants | yes | 0 | — | |
Cliniko cliniko | verified 5 tenants | yes | 0 | — | |
Setmore setmore | verified 2 tenants | catalogue only | 0 | — | Catalogue only. Availability is not publicly reachable — no slots route exists in the build manifest and the booking UI would not advance under automation to reveal a runtime call. |
Full Slate fullslate | verified 3 tenants | yes | 0 | — | Availability is a "next available" endpoint capped at ~5 openings per service; no paging parameter works. Complete enough for a days-to-first-appointment signal, not for a full calendar. |
Calendly calendly | verified 2 tenants | yes | 0 | — | Generic scheduling, so most accounts are not clinics — a Calendly marker alone is weak evidence that a page is a bookable clinic. |
SimplyBook.me simplybook | verified 5 tenants | yes | 0 | — | |
Acuity Scheduling acuity | unverified | yes | 0 | — | API LOCATED but behind a real authorization wall (2026-08-02). schedule.php?owner=<id> redirects to /schedule/<slug>; availability is GET /api/scheduling/v1/availability/times?owner&appointmentTypeId&calendarId&startDate&maxDays&timezone. It requires headers X-Secondo-Session (a server-issued UUID) and X-Secondo-Owner (the slug), and returns 401 Unauthorized without them. Unlike Jane (403, fixed by a public GET first) and Noterro (a client key shipped to every visitor), a cookie jar from the public page does NOT satisfy it and a client-generated UUID is rejected. Treat as an intentional boundary unless a public path to a session is found. |
Square Appointments square | unverified | yes | 0 | — | TOKEN-GATED (confirmed 2026-08-02). book.squareup.com/appointments/<merchantId>/location/<locationId>/services renders services client-side, and selecting one calls a signed per-session endpoint carrying a `unit_token` query parameter. Same category as Acuity: the public page does not yield a token a crawler can reuse, so this is an intentional boundary rather than an undiscovered endpoint. Square also has a public Bookings API, but it is OAuth-scoped to the merchant and is not a route to a public index. |
Mindbody mindbody | unverified | catalogue only | 0 | — | Healcode widgets keyed by studioid. Heavily bot-protected and skewed to fitness class schedules rather than practitioner appointments — lower value for allied health, and the one most likely to be actively blocked. |
Schedulicity schedulicity | unverified | yes | 0 | — | MERGED INTO VAGARO (confirmed 2026-08-02): schedulicity.com/scheduling/<id> now 302s to vagaro.com/<slug>, and the page calls vagaro.com/us05/websiteapi/* rather than any Schedulicity API. Building a Schedulicity adapter would be building the wrong thing — the work here is a Vagaro adapter, and this entry exists to keep those clinics detected in the meantime. |
| Detected | Provider | Signal | Severity | Detail | |
|---|---|---|---|---|---|
2026-08-03 20:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 19:00 | jane | parse_error_rate | warning | {"rate":0.36363636363636365,"total":11,"parseErrors":4} | |
2026-08-03 19:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 18:04 | jane | dlq_growth | warning | {"kind":"availability","account":"dogwoodtherapeutics","website":null} | |
2026-08-03 18:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 17:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 16:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 15:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 14:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 13:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 12:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 11:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 10:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 09:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 08:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 07:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 06:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 05:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 04:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} | |
2026-08-03 03:04 | jane | dlq_growth | warning | {"kind":"catalogue","account":"dogwoodtherapeutics","website":null} | |
2026-08-03 03:00 | jane | slot_drop | critical | {"currentHourSlots":"0","medianDailySlots":187} |