Bowmark AIdocs

Cal.com

Cal.com's own public surfaces — find a person's Cal.com page from their name, read the event types it offers, the questions its booking form asks and who…

Cal.com's own public surfaces — find a person's Cal.com page from their name, read the event types it offers, the questions its booking form asks and who owns it, and the real, currently-open time slots — no browser, no key.

Domain: cal.com

Also known as: Cal.com, cal.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 cal.com specifically.

Call it directly

bowmark.providers.cal_com.getEventTypes(username: string): Promise<CalComEventTypesResult>
bowmark.providers.cal_com.getAvailability(username: string, opts?: CalComAvailabilityOptions): Promise<CalComAvailabilityResult>
bowmark.providers.cal_com.getBookingForm(url: string, opts?: CalComBookingFormOptions): Promise<CalComBookingForm>
bowmark.providers.cal_com.findProfiles(name: string, company?: string): Promise<CalComFindProfilesResult>

Functions

FunctionWhat it does
getEventTypesLists every event type a Cal.com username currently publishes — the entry point.
getAvailabilityReturns the real, currently-open time slots for one Cal.com event type — accepts a bare username ("humanlayer"), a username url, or a specific event url ("https://cal.com/humanlayer/code").…
getBookingFormReads what a Cal.com booking page will ask before anyone books: the event's title/description/length, every question on its booking form (only the ones a booker is actually shown, with…
findProfilesFinds a person's own Cal.com page from their full name, and optionally their company (pass it). Checks the slug shapes that measured reliable (first-last, firstlast, lastfirst,…

Types

interface CalComEventType {
  slug: string;
  title: string;
  id: number;
  lengthInMinutes: number | null;
  description: string | null;
  url: string;
}

interface CalComEventTypesResult {
  username: string;
  eventTypes: CalComEventType[];
}

interface CalComSlot {
  start: string;
}

interface CalComDay {
  date: string;
  slots: CalComSlot[];
}

interface CalComAvailabilityOptions {
  daysAhead?: number;
}

interface CalComAvailabilityResult {
  username: string;
  eventType: CalComEventType;
  days: CalComDay[];
  otherEventTypes: CalComEventType[];
}

interface CalComFormQuestion {
  label: string;       // what a booker reads
  name: string;        // Cal.com's own field name ("name", "email", or a custom slug)
  type: string;        // Cal.com's own type: "name" | "email" | "phone" | "text" | "textarea" | "select" | "radio" | …
  required: boolean;
  choices: string[];
}

interface CalComBookingEvent {
  title: string;
  slug: string;
  url: string;
  description: string | null;
  lengthInMinutes: number | null;
}

interface CalComBookingFormOptions {
  event?: string;      // which event on a multi-event profile — its slug or part of its title
}

interface CalComBookingForm {
  url: string;
  username: string;
  eventTypes: CalComEventType[];     // a profile's list; empty when the url already named an event
  event: CalComBookingEvent | null;  // null when several events exist and none was named
  ownerName: string | null;
  organization: string | null;       // the org/team Cal.com itself files the account under
  avatarUrl: string | null;
  questions: CalComFormQuestion[];   // only what a booker is shown — hidden and reschedule-only fields dropped
  warnings: string[];
}

interface CalComProfileCandidate {
  slug: string;
  url: string;                // where the page landed; a one-event profile redirects to that event
  title: string;              // the page's own <title>
  ownerName: string | null;   // read off the title
  nameMatches: boolean;       // ownerName carries BOTH names asked for — a hint, a namesake passes too
}

interface CalComFindProfilesResult {
  name: string;
  company: string | null;
  slugsChecked: string[];
  candidates: CalComProfileCandidate[];
  warnings: string[];
}
booking_linksBooking links — find a person's Calendly or Cal.com link and read its form — the capability this provider backs.
archive_orgAlso backs the same capability.
calendlyAlso backs the same capability.
githubAlso backs the same capability.
serperAlso backs the same capability.