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.
| Input | What it controls |
|---|---|
modestring | Challenges 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. |
challengeSportsarray | Which sections of the challenge gallery to collect (the promoted flagship challenge plus the six sport sections). |
fetchChallengeDetailsboolean | Adds the participant count, qualifying activities and description for each challenge (one extra page read per challenge). |
linksarray | Club 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. |
discoverCountinteger | How 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. |
discoverOffsetinteger | Skip this many directory entries first (use it to continue a long discovery in later runs). |
maxItemsinteger | Maximum number of records to push. |
Show 9 more inputs
| Input | What it controls |
|---|---|
resumeFromRunIdstring | Provide a run ID to resume: records already collected in that run are skipped. Example: e.g. iQKYh2M6PiGE6H6xh |
incrementalModeboolean | Only 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. |
stateKeystring | Name 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 |
emitUnchangedboolean | Push every record each run, flagged UNCHANGED, instead of only new or changed ones. |
emitExpiredboolean | Push records that disappeared from a complete scan, flagged EXPIRED. |
ignoreFieldsForChangesarray | Extra record fields that should never mark a record as changed. Participant counts and member previews are already ignored. |
mcpConnectorsarray | Connector IDs from Apify MCP Connector Dashboard to push results into. |
notionParentPageUrlstring | When pushing into a Notion MCP connector, the parent page to write under. Example: https://www.notion.so/... |
maxNotifyListingsinteger | Cap 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.
recordIdRecordkindkindnamenameurlLink (link)countrycountrysportTypesportTypememberCountMembersparticipantsCountParticipantsdateStartdateStartdateEnddateEndbadgeTypebadgeTypechangeTypechangeTypeShow 57 more fields
changedFieldschangedFieldsfirstSeenAtfirstSeenAtlastSeenAtlastSeenAtclubIdclubIddescriptiondescriptionclubTypesclubTypescitycitystatestatecountryCodecountryCodeverifiedverifiedinviteOnlyinviteOnlyleaderboardEnabledleaderboardEnabledslugslugdisplayIcondisplayIconpostsDefaultViewpostsDefaultViewwebsiteWebsite (link)avatarUrlavatarUrlcoverPhotoUrlcoverPhotoUrlmemberPreviewsmemberPreviewsathleteIdathleteIdfirstNamefirstNamelastNamelastNameprofileImageUrlprofileImageUrlhasDefaultProfileImagehasDefaultProfileImageprofileImageUrlLargeprofileImageUrlLargeprofileVisibilitySettingprofileVisibilitySettingchallengeIdchallengeIdsportsportgoalgoaldimensiondimensionsponsoredsponsoredgoalDescriptiongoalDescriptionrewardDescriptionrewardDescriptionshortNameshortNamesubtitlesubtitleactivityTypeactivityTypeendedendedcompletedcompletedjoinedjoinedrewardUrlrewardUrlrewardButtonTextrewardButtonTextexternalJoinUrlexternalJoinUrlfollowersInChallengefollowersInChallengelocalelocaleorganizingCluborganizingCluboverviewTextoverviewTextrewardsTextrewardsTextrulesTextrulesTextadditionalInfoTextadditionalInfoTextcoverTitleTextcoverTitleTextlogoTitleTextlogoTitleTextqualifyingActivitiesqualifyingActivitiesgoalDescriptionDetailgoalDescriptionDetaildetailDescriptiondetailDescriptioniconiconcoverImageUrlcoverImageUrllogoUrllogoUrlExample 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.
