Strava Data Scraper icon

Strava Data Scraper

Scrape public Strava data: clubs (members, location, sport, settings), athlete profiles and every current challenge (goals, dates, participants,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Strava Data Scraper at a glance

Strava Data Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes record, kind, name, link and country, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$2.20 per 1,000 results (Free plan), from $1.60 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
16 options

Scrape public Strava data: clubs (members, location, sport, settings), athlete profiles and every current challenge (goals, dates, participants, qualifying activities). Club directory discovery, monitoring (NEW, UPDATED, EXPIRED), incremental runs, resume, MCP export.

What Strava Data Scraper can do

  • All three public surfaces in one actor. Challenges (goals, dates, participants, qualifying activities), clubs (member counts, locations, sport types, settings), and athlete profiles (name, badge, country) come out of the same run engine with the same record shape.
  • Four collection modes. Pull the full current challenge gallery with nothing but defaults, paste club/athlete links, or walk the public club directory (hundreds of thousands of club ids) from any offset.
  • Richer club data than the directory page shows. Each club record carries the description, sport type, club types, exact member count, invite-only and leaderboard settings, website, imagery, and the first member previews with their badge tiers.
  • Built for monitoring. Incremental mode classifies every record NEW, UPDATED, UNCHANGED or EXPIRED across scheduled runs, participant counts and member previews never flag phantom changes, and every run can resume from an earlier run.
  • Structured and honest. Every record carries the stable fields documented below, with imagery URLs and change tracking, and no placeholder rows.

Choose what to collect

These inputs let you configure Strava Data Scraper - Clubs, Athletes & Challenges. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestringChallenges collects every current Strava challenge (nothing else needed). Clubs and Athletes collect the links you paste. Discover walks the public club directory from a starting offset.

Choices: challenges, clubs, athletes, discover

challengeSportsarrayWhich sections of the challenge gallery to collect (the promoted flagship challenge plus the six sport sections).
fetchChallengeDetailsbooleanAdds the participant count, qualifying activities and description for each challenge (one extra page read per challenge).
linksarrayClub profile links (ids or slugs both work, e.g. strava.com/clubs/23629 or strava.com/clubs/ambleside-ac), athlete profile links (e.g. strava.com/athletes/2619603), or bare ids/slugs. The default carries one example of every supported shape; links that do not match the selected mode are ignored with a warning.
discoverCountintegerHow many clubs to collect from the public club directory, in directory order. Existing clubs fill the run; retired club ids answer 'not found' and are skipped.
discoverOffsetintegerSkip this many directory entries first (use it to continue a long discovery in later runs).
maxItemsintegerMaximum number of records to push.
Show 9 more inputs
More input fields
InputWhat it controls
resumeFromRunIdstringProvide a run ID to resume: records already collected in that run are skipped. Example: e.g. iQKYh2M6PiGE6H6xh
incrementalModebooleanOnly report NEW or CHANGED records on scheduled re-runs and mark disappeared ones EXPIRED. Participant counts and member previews never flag a record as changed.
stateKeystringName the incremental baseline yourself to share one baseline across several differently-configured runs. Leave empty to derive it from the run's scope. Example: e.g. my-club-watchlist
emitUnchangedbooleanPush every record each run, flagged UNCHANGED, instead of only new or changed ones.
emitExpiredbooleanPush records that disappeared from a complete scan, flagged EXPIRED.
ignoreFieldsForChangesarrayExtra record fields that should never mark a record as changed. Participant counts and member previews are already ignored.
mcpConnectorsarrayConnector IDs from Apify MCP Connector Dashboard to push results into.
notionParentPageUrlstringWhen pushing into a Notion MCP connector, the parent page to write under. Example: https://www.notion.so/...
maxNotifyListingsintegerCap on records sent to MCP connectors per run.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

recordIdRecord
kindkind
namename
urlLink (link)
countrycountry
sportTypesportType
memberCountMembers
participantsCountParticipants
dateStartdateStart
dateEnddateEnd
badgeTypebadgeType
changeTypechangeType
Show 57 more fields
changedFieldschangedFields
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt
clubIdclubId
descriptiondescription
clubTypesclubTypes
citycity
statestate
countryCodecountryCode
verifiedverified
inviteOnlyinviteOnly
leaderboardEnabledleaderboardEnabled
slugslug
displayIcondisplayIcon
postsDefaultViewpostsDefaultView
websiteWebsite (link)
avatarUrlavatarUrl
coverPhotoUrlcoverPhotoUrl
memberPreviewsmemberPreviews
athleteIdathleteId
firstNamefirstName
lastNamelastName
profileImageUrlprofileImageUrl
hasDefaultProfileImagehasDefaultProfileImage
profileImageUrlLargeprofileImageUrlLarge
profileVisibilitySettingprofileVisibilitySetting
challengeIdchallengeId
sportsport
goalgoal
dimensiondimension
sponsoredsponsored
goalDescriptiongoalDescription
rewardDescriptionrewardDescription
shortNameshortName
subtitlesubtitle
activityTypeactivityType
endedended
completedcompleted
joinedjoined
rewardUrlrewardUrl
rewardButtonTextrewardButtonText
externalJoinUrlexternalJoinUrl
followersInChallengefollowersInChallenge
localelocale
organizingCluborganizingClub
overviewTextoverviewText
rewardsTextrewardsText
rulesTextrulesText
additionalInfoTextadditionalInfoText
coverTitleTextcoverTitleText
logoTitleTextlogoTitleText
qualifyingActivitiesqualifyingActivities
goalDescriptionDetailgoalDescriptionDetail
detailDescriptiondetailDescription
iconicon
coverImageUrlcoverImageUrl
logoUrllogoUrl

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordId": "club:1234567",
  "kind": "club",
  "clubId": "1234567",
  "name": "Riverside Runners",
  "url": "https://www.strava.com/clubs/1234567",
  "description": "A friendly community running club",
  "sportType": "Running",
  "clubTypes": [
    "CasualClub"
  ],
  "city": "Springfield",
  "state": "Illinois",
  "country": "United States",
  "countryCode": "US",
  "memberCount": 128,
  "verified": false,
  "inviteOnly": false,
  "leaderboardEnabled": true,
  "website": "https://example.org",
  "avatarUrl": "https://example.com/avatar.jpg",
  "coverPhotoUrl": "https://example.com/cover.jpg",
  "memberPreviews": [
    {
      "athleteId": "7654321",
      "firstName": "Jordan",
      "lastName": "Smith",
      "badgeType": "Premium",
      "profileImageUrl": "https://example.com/jordan.jpg"
    }
  ],
  "changeType": "NEW",
  "changedFields": [
    "clubId",
    "name",
    "url"
  ],
  "firstSeenAt": "2026-10-24T10:00:00+00:00",
  "lastSeenAt": "2026-10-24T10:00:00+00:00"
}

Ways to use this data

  • Who: Sports-market analysts tracking which challenges brands sponsor each month and how big their audiences get.
  • Who: Community managers benchmarking running and cycling clubs by size, location, sport and open-vs-invite settings.
  • Who: Researchers studying athlete visibility: badge tiers (free vs subscribed) and public location distributions.
  • Who: Sellers of training services building a directory of clubs to partner with, filtered by sport and country.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Strava Data Scraper return?

The documented output for Strava Data Scraper includes record, kind, name, link, country, sporttype, members and participants. Availability of each field depends on the source page and the selected mode.

How much does Strava Data Scraper cost?

It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed records on a schedule?

Yes, that is what incremental mode is for. Turn it on and schedule the actor; each run pushes only NEW or CHANGED records (or everything, with "Also emit unchanged records"), and a complete scan marks disappeared records EXPIRED.

Can I use it with AI agents or MCP?

Yes. The output is structured JSON with stable field names, works with the Apify MCP server, and can be pushed straight into Notion or other apps through MCP connectors.

Ready to collect with Strava Data Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.