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
| Function | What it does |
|---|---|
getEventTypes | Lists every event type a Cal.com username currently publishes — the entry point. |
getAvailability | Returns 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").… |
getBookingForm | Reads 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… |
findProfiles | Finds 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[];
}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. |
calendly | Also backs the same capability. |
github | Also backs the same capability. |
serper | Also backs the same capability. |