Power BI can retrieve Garmin Connect activity records through Garmin’s Personal API, using Power Query to authenticate, request JSON and combine results across pages. This approach is useful for Garmin account holders who want to analyze their own activity data in a Power BI model rather than rely on manual CSV exports. Curbal demonstrates the connection using a Garmin account and Power Query in Power BI.
The Garmin Connect Personal API provides an authenticated route to personal activity information. In the demonstrated example, Power Query first exchanges a personal API key for an access token, then sends that token with requests to Garmin’s activity search endpoint. The response is JSON, which Power Query can parse for loading into a Power BI model.
The distinction between the API key and the access token matters. The key is used for the token request with an header beginning with . For the data request, the query uses the access token with authorization and an header. The transcript demonstrates activity records, not a complete dashboard or a connection to every Garmin data category.
Garmin activity data also has a boundary: the demonstration says the API returns basic information such as distance, location and heart rate, while some Garmin-calculated metrics are not included in that basic data. It notes that FIT files can be downloaded to access additional activity details. That distinction affects the model you can build from the JSON response alone.
This is a personal-data workflow for someone with a Garmin account and access to Garmin’s Personal API key creation process. The video shows signing in through Garmin’s developer site and creating a key. It does not state a Power BI license requirement, a Garmin plan requirement, supported regions, or whether the process is available to every account.
You need Power BI with Power Query, a Garmin personal API key, and the API endpoint information for the requests you plan to make. The key is created in Garmin’s account workflow; the Power Query example also requires configuring the web source credentials as Anonymous when prompted. That credential choice is shown in the demonstration, but the transcript does not explain how to manage credentials for a published report or scheduled refresh.
The demonstration focuses on a direct Power Query connection. Dataflows and Microsoft Fabric are mentioned as possible next approaches, but no steps for either are included. Power BI practitioners looking for other report and modeling coverage can also browse Power BI resources.
Sign in to Garmin and create a personal API key. In the video, the key is created after logging in through Garmin’s developer site. In Power Query, create a text parameter named and use it in the token request.
Request an access token. Use with Garmin’s token endpoint and an authorization header in the form . The request must be a POST, so the example supplies . It converts the returned binary response to text and extracts the access token.
Call the activity search endpoint. The demonstrated path is . Set the query parameters and , and include the access token as followed by the token. Set the Accept header to and parse the response with .
Handle pagination and combine results. The example requests records in batches of up to 99, increasing the start value by 99 for each request. One simple option is to generate a sequence of start values and invoke a query function for each. The video also demonstrates , which continues requesting pages until there are no more results, then returns the activity records for loading.
In Power Query, is normally used for GET requests, but adding the option forces the POST used in the token exchange. The example converts the API response back to text to read the token, and parses the activity response as JSON. Keep the two authentication patterns separate: use the key for the token request and the token for the activity request.
Pagination is necessary when the account contains more records than one response returns. The transcript describes a maximum request limit of 99 and demonstrates an account with about 1,300 activities. A fixed list of page offsets is a brute-force method and can request pages beyond the available data; the demonstration says those requests return an empty table or an error. is presented as the alternative that stops when there is no result.
The article’s source material does not establish API rate limits, token expiration behavior, refresh reliability, service licensing, or the requirements for publishing and refreshing a report. Validate current endpoint details and response behavior against Garmin’s API documentation before relying on the query in a production workflow. The video does not show how to parse FIT files or provide the data model and transformation steps for sleep, health, or other endpoints.
There is also no Microsoft documentation among the available sources for this connection, and no Microsoft-specific integration feature is claimed here. The demonstrated technique is a Power Query REST API pattern: authenticate, request JSON, paginate, and load the records. If you need Garmin-calculated metrics or detailed activity streams, confirm that the selected endpoint or a FIT-file workflow supplies them.
In Power Query, create a Garmin personal API key parameter, exchange it for an access token with a POST request, then call the activity endpoint using Bearer authorization and parse the JSON response.
The demonstrated activity request uses batches of up to 99 with a start offset. Increase the offset by 99 and combine the pages; the example uses List.Generate to stop when no results remain.
The demonstration says the API returns basic information but not all Garmin-calculated metrics. It notes that FIT files can contain additional activity detail; it does not demonstrate parsing those files.
The available material does not state a Power BI license requirement or describe report publishing and scheduled refresh requirements.