ACE Fitness APIacefitness.org ↗
Search ACE Fitness exercises, browse articles, calculate BMI, and find certified trainers by ZIP code. 4 endpoints, structured JSON responses.
What is the ACE Fitness API?
The ACE Fitness API covers 4 endpoints that surface data from the American Council on Exercise's exercise library, blog, and trainer directory. The search_exercises endpoint returns up to 10 exercises per page with title, URL, description, and image. You can also calculate BMI from imperial measurements, browse categorized fitness articles, and locate ACE-certified trainers by US ZIP code.
curl -X GET 'https://api.parse.bot/scraper/b9169296-b894-49f0-b220-f533ffc617db/search_exercises?page=1&query=squat' \ -H 'X-API-Key: $PARSE_API_KEY'
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 acefitness-org-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.
"""Walkthrough: ACE Fitness SDK — search exercises, browse articles, calculate BMI, find trainers."""
from parse_apis.acefitness_org_api import AceFitness, InputFormatInvalid
client = AceFitness()
# Search exercises by keyword, cap total items fetched.
for exercise in client.exercises.search(query="squat", limit=5):
print(exercise.title, exercise.url)
# Browse nutrition articles.
article = client.articles.list(category="nutrition", limit=1).first()
if article is not None:
print(article.title, article.author, article.date)
# Calculate BMI from weight and height.
result = client.bmi.calculate(weight_lbs=145, height_feet=5, height_inches=7)
print(f"BMI: {result.bmi} ({result.classification})")
# Find certified trainers near a ZIP code.
try:
trainer = client.trainers.search(zip_code="10001", limit=1).first()
except InputFormatInvalid:
trainer = None
if trainer is not None:
print(trainer.full_name, trainer.city, trainer.state_code)
print("exercised: exercises.search / articles.list / bmi.calculate / trainers.search")
Search the ACE Fitness exercise library by keyword. Returns up to 10 exercises per page with title, URL, description, and image. Pagination is supported via the page parameter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. Each page returns up to 10 results. |
| queryrequired | string | Search keyword for exercises (e.g. 'squat', 'push up', 'deadlift'). |
{
"type": "object",
"fields": {
"page": "current page number",
"exercises": "array of exercise objects with title, url, description, and image",
"total_results": "estimated total number of matching exercises"
},
"sample": {
"data": {
"page": 1,
"exercises": [
{
"url": "https://www.acefitness.org/resources/everyone/exercise-library/362/goblet-squat/",
"image": "https://ik.imagekit.io/02fmeo4exvw/exercise-library/large/362-1.jpg",
"title": "Butt & Hip Exercises | Goblet Squat - ACE Fitness",
"description": "Stand with the feet about shoulder-width apart, and hold a dumbbell in a vertical position directly in front of the chest."
}
],
"total_results": 59
},
"status": "success"
}
}About the ACE Fitness API
Exercise and Article Data
The search_exercises endpoint accepts a required query string (e.g. 'squat', 'deadlift') and an optional page integer for pagination. Each page returns up to 10 exercise objects containing title, url, description, image, and a total_results count so you can implement multi-page traversal. The browse_articles endpoint accepts an optional category slug — valid values include 'nutrition', 'strength-training', 'workouts', 'fitness', and 'active-aging' — and returns article objects with title, url, date, author, category, description, and image.
BMI Calculator
The calculate_bmi endpoint takes weight_lbs, height_feet, and an optional height_inches component, applies the standard formula (weight_lbs / total_inches^2) * 703, and returns a bmi value rounded to 3 decimal places alongside a classification string: one of Underweight, Normal weight, Overweight, or Obese. This makes it straightforward to integrate a standards-aligned BMI check into any fitness or health application without reimplementing the formula on your side.
Trainer Finder
The find_trainer endpoint accepts a US zip_code string and an optional limit integer. It returns trainer objects with full_name, city, state_code, profile_url, and profile_image_url. Coverage is limited to ACE-certified fitness professionals and is US-only given the ZIP code input model. This makes it useful for geo-targeted trainer directories or referral tools.
The ACE Fitness API is a managed, monitored endpoint for acefitness.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when acefitness.org 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 acefitness.org 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a workout planner that pulls structured exercise data including descriptions and images from the ACE library by keyword.
- Display ACE fitness blog content filtered by category such as 'nutrition' or 'strength-training' in a content aggregator.
- Embed a BMI calculator in a health app using the calculate_bmi endpoint with imperial height and weight inputs.
- Power a trainer-finder feature that surfaces ACE-certified professionals near a user-supplied ZIP code.
- Paginate through all exercises matching a movement pattern (e.g. 'lunge') by iterating the page parameter.
- Build a fitness newsletter tool that pulls fresh articles by category slug to populate weekly digests.
- Cross-reference BMI classification data with exercise recommendations in a personal health dashboard.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ACE Fitness have an official developer API?+
What does find_trainer return, and does it cover trainers outside the US?+
full_name, city, state_code, profile_url, and profile_image_url for ACE-certified trainers near the provided ZIP code. Coverage is US-only because the input is a US ZIP code. International trainer lookups are not currently supported. You can fork this API on Parse and revise it to add an endpoint that accepts a non-US location format if the source data supports it.Can I retrieve the full details of a single exercise, such as step-by-step instructions or muscle group tags?+
search_exercises endpoint returns title, url, description, and image per exercise. Detailed fields like step-by-step instructions, primary muscles targeted, or equipment lists are not included in the current response shape. You can fork this API on Parse and revise it to add an exercise-detail endpoint using the url field returned by search.How does pagination work for exercise search results?+
search_exercises endpoint returns up to 10 results per page. Pass the page integer parameter to advance through results. The response includes a total_results field with an estimated count, which you can use to calculate how many pages are available for a given query.Are there any limitations on the article data returned by browse_articles?+
browse_articles endpoint returns the most recent articles optionally filtered by a category slug. It does not support keyword search within articles, date-range filtering, or author-based filtering. The available category slugs are nutrition, strength-training, workouts, fitness, and active-aging. You can fork this API on Parse and revise it to add article search or additional filter parameters if the source supports them.