Discover/Whatsonzwift API
live

Whatsonzwift APIwhatsonzwift.com

Access Zwift workout collections, training plans, interval details, TSS scores, intensity zones, and scheduled group workout events via the What's on Zwift API.

Endpoint health
verified 3d ago
get_all_collections
get_collection_details
get_workout_details
get_group_workouts
4/4 passing latest checkself-healing
Endpoints
4
Updated
26d ago

What is the Whatsonzwift API?

The What's on Zwift API exposes 4 endpoints covering Zwift's full workout library, training plan schedules, and live group workout events. Use get_workout_details to retrieve per-workout interval steps, duration, TSS scores, and time-in-zone breakdowns across Z1–Z6, or call get_group_workouts to pull currently scheduled group events with start times, routes, and category groupings.

Try it

No input parameters required.

api.parse.bot/scraper/1dc2ef3e-37ee-433b-ba24-cd7877d6d894/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/1dc2ef3e-37ee-433b-ba24-cd7877d6d894/get_all_collections' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace whatsonzwift-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.whats_on_zwift_api import WhatsOnZwift, Collection, WorkoutSummary, Workout, GroupEvent, CollectionType

zwift = WhatsOnZwift()

# List all collections and filter to training plans
for collection in zwift.collections.list():
    if collection.type == CollectionType.PLAN:
        print(collection.name, collection.slug)
        break

# Get a specific collection and browse its workouts
build_me_up = zwift.collections.get(slug="build-me-up")
for workout_summary in build_me_up.workouts.list():
    print(workout_summary.name, workout_summary.duration, workout_summary.tss)

# Get full workout details from a summary
first_workout = next(iter(build_me_up.workouts.list()))
workout = first_workout.details(collection_slug="build-me-up")
print(workout.title, workout.duration, workout.tss)
for step in workout.steps:
    print(step)

# Browse scheduled group events
for event in zwift.groupevents.list(limit=5):
    print(event.name, event.world, event.route, event.start_time_utc)
All endpoints · 4 totalmissing one? ·

List all workout collections, training plans, and legacy collections available on Zwift. Returns an array of collection objects classified by type (collection, plan, or legacy_collection). Each entry includes a slug usable as input to get_collection_details.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "collections": "array of collection objects with name, url, slug, and type"
  },
  "sample": {
    "data": {
      "collections": [
        {
          "url": "https://whatsonzwift.com/workouts/10-12wk-ftp-builder",
          "name": "10 12Wk Ftp Builder",
          "slug": "10-12wk-ftp-builder",
          "type": "collection"
        },
        {
          "url": "https://whatsonzwift.com/workouts/build-me-up",
          "name": "Build Me Up",
          "slug": "build-me-up",
          "type": "plan"
        }
      ]
    },
    "status": "success"
  }
}

About the Whatsonzwift API

Workout Collections and Training Plans

get_all_collections returns every workout collection and training plan listed on whatsonzwift.com as an array of objects, each carrying a name, url, slug, and type field — where type is one of collection, plan, or legacy_collection. The slug values feed directly into get_collection_details, which returns the full list of workouts within that collection, including per-workout duration, tss, and week fields. Plans that follow a weekly structure populate the weeks array; unstructured collections leave it empty.

Individual Workout Data

get_workout_details takes two required parameters — workout_slug and collection_slug — and returns the deepest level of workout data available: a steps array describing each interval in sequence, a zones object mapping Z1 through Z6 to time spent in each, plus tss, duration, title, and description. This makes it straightforward to reconstruct a full workout profile or compare intensity distribution across workouts within a plan.

Scheduled Group Workouts

get_group_workouts returns all currently scheduled group workout events, with each event object including event_id, name, world, route, start_time_utc, duration, tss, groups, and sport. The total field gives the count of events in the response. Event data reflects what is upcoming on Zwift today and in the near future — it is not a historical archive.

Reliability & maintenanceVerified

The Whatsonzwift API is a managed, monitored endpoint for whatsonzwift.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when whatsonzwift.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official whatsonzwift.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Zwift training plan browser that displays week-by-week workout schedules using weeks and workout metadata from get_collection_details.
  • Calculate average TSS across all workouts in a collection to compare training load between plans.
  • Render interval charts for individual workouts using the ordered steps array and Z1–Z6 zones data from get_workout_details.
  • Surface upcoming group workout events filtered by sport or world for a Zwift companion app.
  • Identify workouts in a given duration range by filtering the duration field across all workouts in a collection.
  • Compare intensity zone distributions across workouts within a training plan to analyze volume vs. threshold focus.
  • Display a daily event schedule with start times and routes by polling get_group_workouts for the start_time_utc and route fields.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Zwift have an official developer API?+
Zwift does not publish a public developer API for workout or event data. The What's on Zwift API provides structured access to the data catalogued on whatsonzwift.com, which is an independent third-party site dedicated to indexing Zwift content.
What does `get_group_workouts` return, and how current is the event data?+
get_group_workouts returns events scheduled for today and the near future, including event_id, name, world, route, start_time_utc, duration, tss, groups, and sport. It reflects the current event schedule as listed on whatsonzwift.com — it is not a historical log of past events.
Does `get_workout_details` return power targets or watt values for each interval?+
The steps array describes each interval as a string (e.g. readable descriptions of effort and duration) rather than raw watt or percentage-of-FTP values. Structured numeric power data per step is not currently exposed. You can fork this API on Parse and revise it to add an endpoint that extracts numeric intensity targets if that field is present in the source.
Can I filter group workout events by world, sport, or group category through the API?+
get_group_workouts returns all upcoming events in a single response with world, sport, and groups fields on each event object. Filtering is not done server-side — the full list is returned and filtering must be applied client-side. The API does not currently support query parameters to narrow results at the request level. You can fork it on Parse and revise to add filter parameters if needed.
Are Zwift routes, map data, or rider profile information covered by this API?+
No. The API covers workout collections, training plans, individual workout details, and scheduled group events. Route metadata appears only as a route field within group workout events. Standalone route data, map details, and rider profiles are not covered. You can fork this API on Parse and revise it to add a route-focused endpoint.
Page content last updated . Spec covers 4 endpoints from whatsonzwift.com.
Related APIs in SportsSee all →
99bikes.com.au API
Search and browse 99 Bikes' complete product catalog, find nearby store locations, and discover workshop services all in one place. Get instant access to product collections, store details, and help centre information from Australia's leading bike retailer.
musclewiki.com API
Browse thousands of exercises by equipment type and muscle group, then access detailed information including form tips, variations, and targeted muscle groups for each exercise. Perfect for building personalized workout routines or finding alternatives that match your available equipment.
worldsnowboardtour.com API
Access World Snowboarding rankings, athlete profiles, and competition results across all disciplines. Browse the event calendar, retrieve detailed schedules and outcomes, and explore rider statistics from the professional snowboarding circuit.
cyclocross24.com API
Track cyclocross races and riders with access to current race calendars, detailed results, athlete profiles, and UCI rankings all in one place. Search for specific riders, monitor live standings, and stay updated on competitive rankings throughout the season.
worldsurfleague.com API
Access World Surf League competition data including event schedules, heat-by-heat results, athlete profiles, and tour rankings. Retrieve detailed statistics and standings across all WSL tours.
procyclingstats.com API
Access comprehensive professional cycling data including race results, team rosters, and rider victory rankings to analyze performance and track statistics across the sport. Build cycling applications that deliver real-time insights into races, teams, and top-performing athletes.
watchbase.com API
Search and explore watches across thousands of brands and collections, discover detailed specifications for watches and mechanical calibers, and retrieve high-quality watch images. Browse curated watch collections by brand or find specific timepieces using advanced search functionality.
on.com API
Access data from on.com.