Description






This is a n8n community node. It lets you use Strava in your n8n workflows.
Strava is the activity platform used by athletes to track running, cycling, swimming, routes, segments, clubs,
uploads, and performance streams. This node exposes the official Strava API v3 operations, Strava webhook triggers, and
a separate opt-in web-session resource for a few undocumented browser-only actions.
n8n is a fair-code licensed workflow automation platform.
- Installation
- Operations
- Official n8n Strava vs this package
- Credentials
- Compatibility
- Usage
- Web session notes
- Resources
—
Installation
Follow the installation guide in the n8n community nodes documentation.
1. Go to Settings > Community Nodes.
2. Select Install.
3. Enter n8n-nodes-strava in Enter npm package name.
4. Agree to the risks of using community nodes: select **I
understand the risks of installing unverified code from a public source**.
5. Select Install.
After installing the node, you can use it like any other node. n8n displays Strava and Strava Trigger in search
results in the Nodes panel.
For local development:
npm install
npm run build
npm run dev
—
Official n8n Strava vs. this package
The official n8n Strava node is a good starting point for simple activity workflows. This package is built for people
who want to go much further: more Strava API coverage, cleaner advanced workflows, route exports, uploads from binary
data, streams, and guarded web-session actions that the official node does not expose.
As of the n8n documentation checked on 2026-04-26, the official Strava action node documents only the Activity
resource operations: create, get, get all, comments, kudos, laps, zones, and update. The official Strava Trigger
supports activity and athlete events. This package keeps those core workflows, then adds the missing power-user surface.
| Capability | This n8n Strava node | Official n8n Strava node |
|——————————————————————|————————————————————————|————————–|
| OAuth2 credential | ✅ | ✅ |
| Webhook trigger | ✅ | ✅ |
| Activity CRUD and enrichment | ✅ | ✅ |
| Activity comments, kudos, laps, zones | ✅ | ✅ |
| Athlete profile, stats, zones, profile update | ✅ | ❌ |
| Clubs, members, admins, club activities | ✅ | ❌ |
| Segments, starred segments, segment explore, segment star/unstar | ✅ | ❌ |
| Segment efforts | ✅ | ❌ |
| Gear lookup | ✅ | ❌ |
| Routes by athlete, route details | ✅ | ❌ |
| GPX and TCX route export | ✅ | ❌ |
| Streams for activities, routes, segments, segment efforts | ✅ | ❌ |
| Uploads from n8n binary input | ✅ | ❌ |
| Web-session-only Strava actions | ✅ | ❌ |
| Session health check for cookie-based routes | ✅ | ❌ |
| Built for full Strava API v3 coverage | ✅ | ❌ |
In practice, this package removes the need to keep dropping down into the generic HTTP Request node for normal Strava
automation. If your workflow is only “create or read activities”, the official node is fine. If your workflow touches
routes, streams, clubs, segments, uploads, exports, athlete stats, or browser-session-only social actions, this package
is the stronger tool.
Official reference pages:
—
Operations
This package includes two nodes:
Official Strava API resources
| Resource | Operations |
|—————-|——————————————————————————————————————|
| Activity | Create Activity, Get Activity, Update Activity, List Activities, List Comments, Get Kudoers, Get Laps, Get Zones |
| Athlete | Get Authenticated Athlete, Update Athlete, Get Athlete Stats, Get Zones |
| Club | Get Club, Get Club Activities, Get Club Admins, Get Club Members, List Authenticated Athlete Clubs |
| Gear | Get Gear |
| Route | Get Route, Get Routes By Athlete, Export GPX, Export TCX |
| Segment | Explore Segments, Get Segment, List Starred Segments, Star Segment |
| Segment Effort | Get Segment Effort, List Segment Efforts |
| Stream | Get Activity Streams, Get Route Streams, Get Segment Effort Streams, Get Segment Streams |
| Upload | Create Upload, Get Upload |
Implemented Strava operation IDs
| Operation ID | Resource | Notes |
|————————————-|—————-|—————————————-|
| getStats | Athlete | Athlete activity stats |
| getLoggedInAthlete | Athlete | Current authenticated athlete |
| updateLoggedInAthlete | Athlete | Requires profile:write |
| getLoggedInAthleteZones | Athlete | Requires profile:read_all |
| getSegmentById | Segment | Segment details |
| getLoggedInAthleteStarredSegments | Segment | Authenticated athlete starred segments |
| starSegment | Segment | Star or unstar a segment |
| getEffortsBySegmentId | Segment Effort | Segment effort list |
| exploreSegments | Segment | Segment discovery by bounds |
| getSegmentEffortById | Segment Effort | Segment effort details |
| createActivity | Activity | Manual activity creation |
| getActivityById | Activity | Activity details |
| updateActivityById | Activity | JSON body update |
| getLoggedInAthleteActivities | Activity | Authenticated athlete activities |
| getLapsByActivityId | Activity | Activity laps |
| getZonesByActivityId | Activity | Activity zones |
| getCommentsByActivityId | Activity | Activity comments |
| getKudoersByActivityId | Activity | Athletes who kudoed an activity |
| getClubById | Club | Club details |
| getClubMembersById | Club | Club members |
| getClubAdminsById | Club | Club admins |
| getClubActivitiesById | Club | Club activities |
| getLoggedInAthleteClubs | Club | Authenticated athlete clubs |
| getGearById | Gear | Gear details |
| getRouteById | Route | Route details |
| getRoutesByAthleteId | Route | Athlete routes |
| getRouteAsGPX | Route | GPX export as binary or raw XML |
| getRouteAsTCX | Route | TCX export as binary or raw XML |
| createUpload | Upload | Supports n8n binary input |
| getUploadById | Upload | Upload status |
| getActivityStreams | Stream | Stream keys are sent as CSV |
| getSegmentEffortStreams | Stream | Stream keys are sent as CSV |
| getSegmentStreams | Stream | Stream keys are sent as CSV |
| getRouteStreams | Stream | Stream keys are sent as CSV |
Web session operations
These operations are intentionally separated under Web Session (Undocumented) because they use Strava browser
routes, not the official API.
| Operation | Purpose |
|—————————–|——————————————————————————|
| Build Follow Request Data | Prepare/debug follow or unfollow request payloads without calling Strava |
| Follow Athlete | Follow an athlete using a browser session cookie |
| Unfollow Athlete | Unfollow an athlete using a browser session cookie |
| Give Activity Kudo | Give a kudo through Strava web routes |
| Get Activity Kudos Extended | Fetch extended kudos data with athlete profiles |
| Get Activity Group Athletes | Fetch athletes from grouped activity data |
| Test Session | Verify that the configured cookie still reaches an authenticated Strava page |
Trigger events
The Strava Trigger node supports Strava push subscriptions for:
—
Credentials
This node supports two credential types.
1. Strava OAuth2 API
Use this credential for all official Strava API v3 resources and for the Strava Trigger node.
To set it up:
Configured scopes:
read,readall,profile:readall,profile:write,activity:read,activity:read_all,activity:write
The OAuth2 credential uses n8n’s built-in OAuth2 handling, including token storage and refresh behavior.
2. Strava Web Session API
Use this credential only for Web Session (Undocumented) operations.
Required values:
Cookie header copied from an authenticated browser request to www.strava.com.X-CSRF-Token header for writingrequests.
Important: the cookie grants access to your Strava account. Store it as a secret, rotate it often, and never paste it
into logs, issues, screenshots, or shared workflows.
—
Compatibility
>=20.19.0^2.15.1npm run typecheck, npm run lint, npm run build, and npm run pack:dryKnown compatibility notes:
exists, enable the cleanup option only when you intentionally want to replace the existing subscription.
403 Forbidden if theauthorized scopes are too narrow.
—
Usage
Common official API workflows
Binary upload
For upload workflows:
1. Add a node that produces binary data, such as Read/Write Files from Disk, HTTP Request, or an incoming
webhook.
2. In Strava > Upload > Create Upload, select the binary property that contains the activity file.
3. Choose the matching data type: gpx, gpx.gz, tcx, tcx.gz, fit, or fit.gz.
Route exports
GPX and TCX exports can be returned as:
Streams
Stream keys are sent in the CSV format expected by Strava. Select the stream keys in the node UI, and the node handles
the required request formatting.
—
Web session notes
The Web Session (Undocumented) resource exists for Strava actions that are not available in the official API. It is
intentionally more guarded than regular API operations.
Before using write operations:
1. Log in to Strava in a browser.
2. Open DevTools > Network.
3. Copy the full Cookie header from a request to https://www.strava.com.
4. Copy the CSRF token from either the X-CSRF-Token request header or the page source meta-tag named csrf-token.
5. Put both values in the Strava Web Session API credential.
6. Run Web Session (Undocumented) > Test Session.
For write operations:
X-CSRF-Token.Origin and Referer headers are sent to match browser-style requests.If Strava returns 403 Forbidden, refresh the session cookie and CSRF token from the same browser session. A cookie can
be valid enough to load some pages while still being rejected for protected write routes.
—