Muscleandstrength APImuscleandstrength.com ↗
Search the Muscle & Strength supplement catalog and retrieve product details, variant pricing, stock status, flavors, and GTINs via 2 API endpoints.
What is the Muscleandstrength API?
The Muscle & Strength API covers 2 endpoints for searching and retrieving supplement products from muscleandstrength.com. search_products returns paginated catalog results including prices, ratings, stock status, and deal flags, while get_product delivers full variant detail — size options, flavors, SKUs, GTIN codes, and per-serving cost — for any product identified by its slug.
curl -X GET 'https://api.parse.bot/scraper/ebbb2935-dfdf-4d45-99a8-04e241e32b7d/search_products?page=1&query=creatine' \ -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 muscleandstrength-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.
"""Walkthrough: Muscle & Strength Store SDK — bounded, re-runnable; every call capped."""
from parse_apis.muscleandstrength_com_api import MuscleAndStrength, ProductNotFound
client = MuscleAndStrength()
# Search for products — limit= caps total items fetched across pages.
for item in client.product_summaries.search(query="creatine", limit=3):
print(item.name, item.sale_price, item.deal)
# Drill-down: take one search hit and fetch full details with all variants.
hit = client.product_summaries.search(query="whey protein", limit=1).first()
if hit:
try:
product = hit.details()
print(product.title, product.brand, product.rating)
for sv in product.size_variants[:2]:
print(f" {sv.size}: {sv.sale_price} — {sv.serving_info}")
for v in product.variants[:2]:
print(f" SKU {v.sku}: {v.name} ${v.price} in_stock={v.in_stock}")
except ProductNotFound as e:
print(f"Product gone: {e.slug}")
# Direct product lookup by known slug.
try:
detail = client.products.get(slug="100-whey-gold-standard")
print(detail.title, len(detail.variants), "variants")
except ProductNotFound as e:
print(f"Not found: {e.slug}")
print("exercised: product_summaries.search, ProductSummary.details, products.get")
Full-text search across the Muscle & Strength supplement store catalog. Returns paginated product listings with prices, stock status, and deal information. Results are ordered by relevance (most popular). Each result includes a slug usable with get_product for full variant details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. Each page returns up to 20 products. |
| queryrequired | string | Search query for products (e.g. 'whey protein', 'creatine', 'pre-workout'). |
{
"type": "object",
"fields": {
"page": "current page number",
"query": "the search query used",
"total": "total number of matching store products",
"products": "array of product summaries with name, slug, prices, rating, stock, deal, and image"
},
"sample": {
"data": {
"page": 1,
"query": "creatine",
"total": 249,
"products": [
{
"url": "/store/creatine-drive-black.html",
"deal": "Buy 1 Get 1 FREE",
"name": "Nutrex Creatine Monohydrate, 300g",
"slug": "creatine-drive-black",
"rating": null,
"in_stock": null,
"image_url": "//cdn.muscleandstrength.com/store/media/catalog/product/cache/all/small_image/x500/602f0fa2c1f0d1ba5e241f914e856ff9/n/u/nutrex-creatine-monohydrate-300g.jpg",
"sale_price": "$19.99",
"review_count": null,
"regular_price": null
}
]
},
"status": "success"
}
}About the Muscleandstrength API
Search the Supplement Catalog
search_products accepts a query string (e.g. 'whey protein', 'creatine', 'pre-workout') and an optional page integer. Each page returns up to 20 products. The response includes total (total matching products), and a products array where each entry carries the product name, slug, current prices, rating, stock status, active deal information, and an image URL. The slug field in each result is what you pass to get_product for complete variant data.
Full Product Detail
get_product takes a slug and returns the full product record. The variants array lists every individual SKU with its sku identifier, name, price, availability status, and gtin barcode code — useful for catalog matching or inventory tracking. The size_variants array groups the same product by package size, nesting available flavors under each size along with per-serving cost and any active deal. Additional fields include brand, title, rating, review_count, image_url, and description_points (bullet-point feature claims from the product page).
Data Scope and Pagination
Search results are ordered by relevance (most popular first). Pagination is controlled through the page parameter, with each page capped at 20 products. If you need to walk a full result set, increment page until the total count is exhausted. Stock status and pricing reflect what is currently listed on the Muscle & Strength storefront, so values can change between requests as inventory and promotions update.
The Muscleandstrength API is a managed, monitored endpoint for muscleandstrength.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when muscleandstrength.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 muscleandstrength.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.
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?+
- Monitor price changes across supplement variants (size and flavor) for a specific product using SKU-level
pricefields fromget_product. - Build a supplement comparison tool by querying
search_productsfor a category like 'pre-workout' and displaying ratings and deal flags side by side. - Track stock availability for high-demand products by polling the
stockfield returned per variant. - Match products to a product database using GTIN codes returned in the
variantsarray fromget_product. - Populate an affiliate storefront with product titles, images, descriptions, and current pricing pulled from
get_product. - Identify active promotions across the catalog by filtering
dealfields insearch_productsresults. - Calculate cost-per-serving comparisons across package sizes using
size_variantsserving info fromget_product.
| 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 Muscle & Strength have an official developer API?+
What does the `variants` field in `get_product` return, and how does it differ from `size_variants`?+
variants is a flat list of every individual purchasable SKU for the product, each with its own sku, name, price, stock status, and gtin code. size_variants is a structured grouping that organizes those same options by package size, nesting available flavors and per-serving cost under each size tier. Use variants when you need SKU-level identifiers; use size_variants when you want to present size-vs-price comparisons.How fresh is the pricing and stock data returned by the API?+
Does the API return customer reviews or written review text?+
rating (average score out of 5) and review_count (number of reviews), but individual review text, reviewer names, and per-review ratings are not exposed. You can fork this API on Parse and revise it to add an endpoint that retrieves individual review content for a given product slug.Can I retrieve products by category or brand rather than by keyword search?+
search_products endpoint accepts a free-text query string, which you can use to target a brand name or product type, but there is no dedicated category-browse or brand-filter parameter. Structured filtering by category taxonomy or brand facet is not currently available. You can fork this API on Parse and revise it to add a category or brand browsing endpoint.