Python API for intervals.icu

Hi folks,

I was back-filling some heart rate data with a Python script and thought it may benefit others as well. I put together an API and some documentation, and uploaded to pypi.

If there is any interest, I would be happy to add more functionality. So far you can update wellness, download activities (csv and single activities), and list events. Let me know if you find this useful!

https://github.com/rday/py-intervalsicu
https://pypi.org/project/intervalsicu/

5 Likes

Thanks very much for putting this together! I will try keep the API stable. Some of the fields are unfortunately named (icu_*) to avoid clashing with Strava fields that are no longer used.

2 Likes

No worries, thanks for icu! The API operates in “strict” mode at the moment, but I do want to make that configurable. I wanted to fail early instead of silently losing data. Depending on adoption, it may make sense for the Python code to display a “please upgrade” warning in case the API updates.

1 Like

This is cool, thanks for putting this together

Hi David,
Not related to the above, but more to the Strava API limit.

The max 1000 hits per day for the Strava API, would that be linked to my account, or everyone’s account? Let’s say you have 2000 people using Intervals.icu, and they all refresh their data in one day, does this stop at 1000 hits, or does my one or two refreshes a day count as one or two?

The Strava rate limit is global and not per-user. They used to grant increases based on (among other things) how many users your app had. For probably at least the last year they haven’t been giving any increases at all, first ignoring the mail and then an automated message saying “no rate limit bumps”.

I think they have decided that Strava apps don’t fit into their strategy and not granting any rate limit increases is a way to kill them without a lot of bad publicity (e.g. if they killed the API).

I tried using the Strava API this week actually and was disappointed to find that the club end points were a lot more restrictive.
Think it changed a while ago but another indication of intent.