Calendly
Calendly's own public booking-widget data — find a person's Calendly page from their name, read the event types it offers, the questions its booking form…
Calendly's own public booking-widget data — find a person's Calendly page from their name, read the event types it offers, the questions its booking form asks, and the real, currently-open time slots — read straight off the widget's undocumented JSON endpoints, no browser, no key.
Domain: calendly.com
Also known as: Calendly, calendly.com
Prefer the capability
bowmark.booking_links covers this provider and routes around it when it is having a bad day. Reach for this page when you need calendly.com specifically.
Call it directly
bowmark.providers.calendly.getEventTypes(profile: string): Promise<CalendlyEventTypesResult>
bowmark.providers.calendly.getAvailability(profile: string, opts?: CalendlyAvailabilityOptions): Promise<CalendlyAvailabilityResult>
bowmark.providers.calendly.getBookingForm(url: string, opts?: CalendlyBookingFormOptions): Promise<CalendlyBookingForm>
bowmark.providers.calendly.findProfiles(name: string, company?: string): Promise<CalendlyFindProfilesResult>Functions
| Function | What it does |
|---|---|
getEventTypes | Lists every event type a Calendly profile currently offers — the entry point. |
getAvailability | Returns the real, currently-open time slots for one Calendly event type — accepts a bare profile slug ("jason-frazier"), a profile url, or a specific event url… |
getBookingForm | Reads what a Calendly booking page will ask before anyone books: the owner's name, the event's name/description/duration, every custom form question (with its choices and whether it is… |
findProfiles | Finds a person's own Calendly page from their full name, and optionally their company (pass it — "caleb-firecrawl" is found only by the company shape). Checks the slug shapes that measured… |
Types
interface CalendlyEventType {
slug: string;
name: string;
uuid: string;
url: string;
description: string | null;
}
interface CalendlyProfile {
slug: string;
name: string;
timezone: string;
}
interface CalendlyEventTypesResult {
profile: CalendlyProfile;
eventTypes: CalendlyEventType[];
}
interface CalendlySlot {
startTime: string;
inviteesRemaining: number;
}
interface CalendlyDay {
date: string;
status: string; // the site's own labels — read the values off a result, never guess one from prose
slots: CalendlySlot[];
}
interface CalendlyAvailabilityOptions {
timezone?: string;
daysAhead?: number;
}
interface CalendlyAvailabilityResult {
profileSlug: string;
eventType: CalendlyEventType;
timezone: string;
days: CalendlyDay[];
otherEventTypes: CalendlyEventType[];
}
interface CalendlyFormQuestion {
label: string;
format: string; // Calendly's own: "string" | "text" | "phone_number" | "select" | "multi_select" | "radios" | "checkboxes"
required: boolean;
choices: string[];
}
interface CalendlyBookingEvent {
name: string;
slug: string | null;
url: string;
description: string | null;
durationMinutes: number | null;
}
interface CalendlyBookingFormOptions {
event?: string; // which event on a multi-event profile — its slug or part of its name
}
interface CalendlyBookingForm {
url: string;
profileSlug: string | null; // null for a calendly.com/d/<hash> share link
ownerName: string | null;
eventTypes: CalendlyEventType[];
event: CalendlyBookingEvent | null; // null when several events exist and none was named
questions: CalendlyFormQuestion[]; // CUSTOM questions; name + email are always asked on top
nextAvailability: string | null; // null + unavailableReason null = fully booked, not unread
unavailableReason: string | null; // non-null = Calendly says this cannot be booked
warnings: string[];
}
interface CalendlyProfileCandidate {
slug: string;
url: string;
ownerName: string; // the name the profile itself shows
nameMatches: boolean; // ownerName carries BOTH names asked for — a hint, a namesake passes too
timezone: string;
}
interface CalendlyFindProfilesResult {
name: string;
company: string | null;
slugsChecked: string[];
candidates: CalendlyProfileCandidate[];
warnings: string[];
}Related
booking_links | Booking links — find a person's Calendly or Cal.com link and read its form — the capability this provider backs. |
archive_org | Also backs the same capability. |
cal_com | Also backs the same capability. |
github | Also backs the same capability. |
serper | Also backs the same capability. |