gcal-sync
A python library for syncing Google Calendar to local storage
What it is and what it does
gcal-sync is an asyncio Python library that wraps the Google Calendar API with a simpler, more focused interface than general-purpose Google API clients. It lets you fetch calendar events, filter by time or search terms, and optionally sync events down to local storage for efficient repeated queries. The library handles recurring event expansion automatically, either server-side during fetch or locally during queries against synced data.
The library is designed for applications that need reliable, streamlined access to calendar data without the overhead of a full Google API client. You provide authentication credentials through a custom AbstractAuth implementation, then use GoogleCalendarService to list events or manage local sync via CalendarEventSyncManager. It depends on aiohttp for HTTP, ical for recurrence rule handling, and pydantic for data validation.
Use it for:
- Fetch and display upcoming events from a primary or shared calendar in a web or desktop application.
- Build a local cache of calendar events to support high-frequency queries without repeated API calls.
- Search calendar events by keyword and iterate through paginated results asynchronously.
- Expand recurring events at query time to get individual occurrences for a given date range.
- Integrate calendar data into a home automation or scheduling system with minimal API client boilerplate.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
An asyncio library for reading and syncing Google Calendar events to local storage, with simplified API access and support for recurring event expansion.
Yes, if you need asyncio-native Google Calendar access and are comfortable implementing OAuth authentication yourself. The library is actively maintained, has no known vulnerabilities, and offers a lighter alternative to full Google API clients. Not suitable if you require Python versions below 3.13 or need comprehensive API coverage beyond event listing and syncing.
Install
gcal-sync on PyPI
pip
pip install gcal-syncuv
uv add gcal-syncpoetry
poetry add gcal-syncInstalling gcal-sync
Before you install
Low friction install with three straightforward runtime dependencies. Actively maintained with a recent release and ongoing commits.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions.
Quickstart
pip install gcal-sync
from gcal_sync.auth import AbstractAuth
from gcal_sync.api import GoogleCalendarService
class MyAuth(AbstractAuth):
async def async_get_access_token(self) -> str:
return "..."
service = GoogleCalendarService(MyAuth(aiohttp.ClientSession()))
calendar = await service.async_get_calendar("primary")
Requires Python 3.13 or later. You must implement your own AbstractAuth subclass to provide Google OAuth credentials.
Verify before relying
- Whether the library handles all common Google Calendar API use cases or only a subset of the full API surface.
- Performance characteristics and scalability limits for local sync with large calendars.
- Whether recurring event expansion handles all recurrence rule edge cases correctly.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.13) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — aiohttp, ical, pydantic |
| Maintenance | actively maintained — 26 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 76,239/month — #14,641 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: gcal_sync-9.1.0-py3-none-any.whl
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
aiogoogleAiogoogle is an async Python client for…
permissive · top 5,000 on PyPI
PyCronofyA Python client library for the Cronofy…
permissive · top 15,000 on PyPI
langchain-google-calendar-toolsIntegrates Google Calendar with LangChain to…
unclear · top 15,000 on PyPI
google-cloud-schedulerPython client library for Google Cloud…
permissive · top 5,000 on PyPI
google-apps-meetPython client library for the Google Meet API…
permissive · top 15,000 on PyPI
icalParse, create, and iterate over iCalendar (RFC…
permissive · top 15,000 on PyPI
recurring-ical-eventsExpands recurring iCalendar events (RFC 5545)…
copyleft · top 5,000 on PyPI
gkeepapigkeepapi is an unofficial client library for…
permissive · top 15,000 on PyPI
caldavA CalDAV (RFC4791) client library for Python…
unclear · top 5,000 on PyPI
TGSchedulerTGScheduler is a pure Python task scheduler…
permissive · top 15,000 on PyPI