GymMaster Gym & Fitness Club Management API
Pricing
from $0.01 / 1,000 results
GymMaster Gym & Fitness Club Management API
Gym & Fitness Club Management - Access Control, Bookings & Billing Access GymMaster data for gyms and fitness clubs. Get members, access control, bookings, billing, door entries, and facility usage data. Ideal for 24/7 gyms, multi-site operations, and fitness chains.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
The Howlers
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Features
Share
Export members, clubs, class schedules, membership types, bookable services, sales reps, KPIs and standard reports from your own GymMaster site, using your own GymMaster API keys (bring your own key).
Status (2026-10-22): live mode follows GymMaster's public API documentation as of 2026-10-22 (the Member Portal API and the KPI, Reporting and Dashboard API V2). It has not yet been verified against a real GymMaster account. If something does not work with your site, open an issue with the error row and it will be fixed.
How it works
GymMaster has no shared API host. Every club has its own site at https://<site name>.gymmasteronline.com, and the API lives on that host. You give the actor your site name and your keys, and it calls only the documented read endpoints:
| API | Docs | Authentication |
|---|---|---|
| Member Portal API | gymmaster.com/gymmaster-api | api_key query parameter. Key from Settings > Integrations |
| KPI, Reporting and Dashboard API V2 | gymmaster.com/gymmaster-reporting-api | X-GM-API-KEY header. Key from Settings > Integrations > Report API > API Key |
If you do not see these keys under Settings > Integrations, ask GymMaster support to enable API access for your site.
Tasks
| Task | Key | GymMaster endpoint | What you get |
|---|---|---|---|
get_members | Member Portal | GET /portal/api/v1/members | All current members. startDate limits to members updated after that date, siteId to one club |
get_sites | Member Portal | GET /portal/api/v1/companies | The clubs set up on your site (id, name, billing provider) |
get_classes | Member Portal | GET /portal/api/v1/booking/classes/schedule | The class schedule for 7 days from startDate (default: this week) |
get_memberships | Member Portal | GET /portal/api/v1/memberships | Membership types available for purchase, with prices and fees |
get_facilities | Member Portal | GET /portal/api/v1/booking/services | Bookable services for one club. Requires siteId |
get_staff | Member Portal | GET /portal/api/v2/staff/salesrep | Staff set as sales reps |
get_reports | Report API | POST /api/v2/report/kpi/categories | All KPI categories for the period (member statistics, activity, sales, payment methods, bookings, classes). With reportId: that standard report |
get_billing | Report API | POST /api/v2/report/kpi/categories | The sales_made and payment_method KPI categories for the period |
get_bookings | Report API | POST /api/v2/report/standard_report | Rows of the "All Bookings" standard report for the period (or reportId) |
get_door_entries | Report API | POST /api/v2/report/standard_report | Rows of your visits or door report for the period. Set reportId if the actor cannot find one by name |
For get_bookings and get_door_entries the actor first lists your standard reports (GET /api/v2/report/standard_report/list) and picks the matching one. If none matches, the error row lists every report id and name on your site so you can set reportId.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
task | string | get_members | One of the tasks above |
siteName | string | none | Your site name, for example myclub for https://myclub.gymmasteronline.com. Required for live data |
apiKey | string | none | Member Portal API key |
reportApiKey | string | none | Report API key |
siteId | string | none | Numeric club id (from get_sites). Required for get_facilities |
startDate | string | none | YYYY-MM-DD. See the task table |
endDate | string | today | YYYY-MM-DD. End of the report period |
reportId | integer | none | Standard report id to run for get_reports, get_bookings or get_door_entries |
limit | integer | 100 | Maximum records to return |
webhookUrl | string | none | Optional URL that receives the result row as JSON |
demoMode | boolean | false | Return labeled sample data without calling GymMaster |
Report tasks default to the last 30 days when no dates are given.
Example
{"task": "get_members","siteName": "myclub","apiKey": "YOUR_MEMBER_PORTAL_API_KEY","startDate": "2026-09-01","limit": 1000}
Output
One dataset row per run. Records keep GymMaster's own field names:
{"task": "get_members","success": true,"demoMode": false,"data": {"items": [{ "id": 1234, "firstname": "Alice", "surname": "Smith", "email": "alice@example.com", "joindate": "2025-02-01", "totalvisits": 87, "totalclasses": 12 }],"count": 1,"totalReturned": 1,"source": { "api": "Member Portal API", "host": "myclub.gymmasteronline.com", "endpoint": "/portal/api/v1/members" }},"timestamp": "2026-10-22T12:00:00.000Z"}
KPI tasks return data.kpis exactly as GymMaster sends it, plus the categories and date range used. If GymMaster rejects the request, the row has "success": false and an error message that includes GymMaster's response, and the run is marked failed. API keys are never written to the dataset or the log.
Pricing
Pay per event. Prices match the live pricing on Apify:
| Event | When it is charged | Price |
|---|---|---|
| Actor start | Once when the run starts, one event per GB of memory (minimum one). At the default 1 GB of memory that is $0.10 per run | $0.10 per GB |
| Member Query | Retrieve member profiles, status, and access levels | $0.01 |
| Door Entry Query | Access control logs with entry/exit times | $0.01 |
| Booking Query | Get class and facility reservations | $0.01 |
| Billing Query | Retrieve membership fees and payment history | $0.01 |
| Membership Plan Query | Access plan pricing and terms | $0.01 |
| Class Query | Get group fitness schedule and attendance | $0.01 |
| Facility Query | Retrieve equipment and room availability | $0.01 |
| Site Query | Access multi-location management data | $0.01 |
| Staff Query | Get employee data and access permissions | $0.01 |
| Report Query | Retrieve usage analytics and financial reports | $0.01 |
| Result | Each item written to the default dataset | $0.00001 |
No task event is charged for sample runs, for runs that stop with an error (bad key, wrong site name, invalid input), or for live queries that return nothing. Apify still charges the Actor Start event on every run and the Result event for each dataset row.
Troubleshooting
"GymMaster rejected the ... key" or "GymMaster API error: ...": the key is wrong, belongs to another site, or is the wrong kind. Portal tasks need the Member Portal key, report tasks need the Report API key.
"Could not reach ...gymmasteronline.com" or HTTP 404: check siteName. It is only the subdomain, without https:// or .gymmasteronline.com (both are accepted and stripped).
"No standard report matching get_door_entries": copy a report id from the list in the error row into reportId.
Running without credentials
Without any API key (or with demoMode on) the run succeeds and returns a small sample dataset marked with "demo": true and a _notice field. It shows the output format only, it is not your data, and it charges no task event.
Built by John Rippy | Actor Arsenal