Cal.com is the open-source Calendly. Embed scheduling in your app, connect calendars, set availability rules, and handle time zones. Self-host or use cloud.
Quick Start (Embed)
<!-- Embed booking widget -->
<cal-embed calLink="username/30min"></cal-embed>
<script src="https://app.cal.com/embed/embed.js"></script>
API Usage
// Create a booking via API
const response = await fetch('https://api.cal.com/v1/bookings', {
method: 'POST',
headers: { 'Authorization': 'Bearer cal_key', 'Content-Type': 'application/json' },
body: JSON.stringify({
eventTypeId: 1,
start: '2026-04-01T10:00:00Z',
end: '2026-04-01T10:30:00Z',
name: 'John Doe',
email: 'john@example.com',
timeZone: 'America/New_York'
})
})
API Endpoints
GET /v1/event-types # list event types
GET /v1/availability # check availability
POST /v1/bookings # create booking
GET /v1/bookings # list bookings
PATCH /v1/bookings/:id # reschedule
DELETE /v1/bookings/:id # cancel
Key Features
- Google Calendar, Outlook, Apple Calendar sync
- Custom availability rules
- Buffer time between meetings
- Team scheduling (round-robin, collective)
- Webhooks for booking events
- Embed in React, Vue, or plain HTML
Free Tier
- 1 user (self-host: unlimited)
- Unlimited event types
- Calendar integrations
- Embed widget
Cal.com vs Calendly
| Feature | Cal.com | Calendly |
|---|---|---|
| Open source | Yes | No |
| Self-host | Yes | No |
| API | Full REST | Limited |
| Free tier | 1 user | 1 event type |
| Embed | Full control | Branded |
The Bottom Line
Cal.com gives you Calendly's features with full API access and self-hosting. If you need scheduling in your SaaS, the API makes integration simple.
Need to automate data collection or build custom scrapers? Check out my Apify actors for ready-made tools, or email spinov001@gmail.com for custom solutions.
Top comments (0)