A Tool for Exporting TimeTree Calendar and Convert to iCal format(.ics)
This script works by scraping the TimeTree web app and converting the data to iCal format.
(The .ics file can then be imported into other calendar apps such as Google Calendar, Apple Calendar, Outlook Calendar, etc.)
Warning
This is an independent, community-built project and is not affiliated with or endorsed by TimeTree, Inc. It uses unofficial, reverse-engineered TimeTree web APIs, which may change or stop working at any time without notice. As a result, the tool could break unexpectedly. Please use it responsibly—sending too many requests in a short period may lead to rate limiting, temporary blocks, or other restrictions from TimeTree.
Note
Timetree Exporter requires Python 3.10 or later.
If you are on mac, you can install it using brew:
brew install eoleedi/tap/timetree-exporterYou can also install it using uvx, pip, or pipx:
pip install timetree-exportertimetree-exporter -o path/to/output.icsThis will prompt you to enter your TimeTree email and password and select the calendar you want to export.
Then, you can import the ics file to your calendar app.
Note
💡 You are advised to import the ICS file into a separate calendar (e.g., Google Calendar) so that if anything goes wrong, you can simply delete the calendar and reimport it.
-
Specify your email address using the
-eoption.timetree-exporter -e email@example.com
-
Specify the calendar code using the
-cor--calendar_codeoption.timetree-exporter -c calendar_code
Note: Find the calendar code in the URL of the calendar page or when running the script without the
-coption. -
You can pass your email address and password with environment variables. (usually for automation purposes)
export TIMETREE_EMAIL=email@example.com export TIMETREE_PASSWORD=password
-
Create separate ICS files for each label with a custom output directory.
timetree-exporter --split-by-label
This creates individual ICS files for each label (e.g.,
timetree_work.ics,timetree_personal.ics).
Alarms(Alerts) can't be imported to Google Calendar through iCal format due to Google's bug.
This project uses uv for dependency management.
-
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh -
Clone the repository and install dependencies:
git clone https://github.com/eoleedi/TimeTree-Exporter.git cd TimeTree-Exporter uv sync -
Install pre-commit hooks:
uv run pre-commit install
uv run pytest testsuv run ruff check --fix .uv run ruff format .If you think it's helpful, kindly support me!
- ID
- Primary ID
- Calendar ID
- UUID
- Category
- Type
- Author ID
- Author Type
- Title
- All Day
- Start At
- Start Timezone
- End At
- End Timezone
- Label ID
- Location
- Location Latitude
- Location Longitude
- URL
- Note
- Lunar
- Attendees
- Recurrences
- Recurring UUID
- Alerts
- Parent ID
- Link Object ID
- Link Object ID String
-
Row Order(Ignore since it's a property for timetree notes) - Attachment
- Like Count
- Files
- Deactivated At
- Pinned At
- Updated At
- Created At
