Dr Nutrition APIdrnutrition.com ↗
Search and retrieve product data from drnutrition.com. Get prices, variants, ratings, brand facets, and category filters across multiple regional storefronts.
What is the Dr Nutrition API?
The Dr Nutrition API provides 2 endpoints that expose the full drnutrition.com supplement catalogue, including product search with 11 filter facet groups and per-variant detail pages. The search_products endpoint returns paginated product listings with live prices, discount fields, and filter options (brands, goals, dietary preference, gender, price bands) for any supported regional storefront. The get_product endpoint retrieves a single variant's complete detail record including images, ingredients description, suggested-use text, rating, and shipping weight.
curl -X GET 'https://api.parse.bot/scraper/ef9fa421-1760-452d-99bb-4f070d039467/search_products?categories=Whey+Protein+Isolate' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns one page of products matching a keyword and/or filter selections, plus the filter facet groups (brands, categories, dietaries, goals, gender, availability, discount, price, product_labels, product_type, rating) with per-option counts and the option values you can pass back into the same-named filter parameters. At least one of query or a filter parameter must be supplied; otherwise the call is rejected. Filter parameters take comma-separated option values exactly as they appear in the returned facet options (category and brand values are display names, e.g. one shape is 'Whey Protein Isolate'). Pagination is caller-controlled through page (default 1) and per_page (default 20, capped at 100); total and total_pages describe the full result set and has_more tells whether a next page exists. Note: the site groups product variants under relevance ordering, so total can be larger when a non-relevance sort is used. Prices are in the currency of the selected region (region defaults to Oman, currency OMR). A filter or category value the site does not recognize yields an empty products list with total 0 (a valid empty result). One upstream request per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| sort | string | Result ordering. |
| goals | string | Comma-separated fitness goal names, as listed in filters[key=goals].options[*].value. |
| price | string | Comma-separated price band codes 'MIN-MAX' in the region's currency, as listed in filters[key=price].options[*].value (confirmed shape: '0-20'). |
| query | string | Free-text keyword to search product titles, e.g. a product type or ingredient. May be combined with filters. |
| brands | string | Comma-separated brand names, as listed in filters[key=brands].options[*].value. |
| gender | string | Comma-separated gender facet values, as listed in filters[key=gender].options[*].value. |
| region | string | Two-letter lowercase country code of the Dr Nutrition storefront whose catalogue and prices are returned (confirmed: om, ae). |
| discount | string | Comma-separated discount band codes, as listed in filters[key=discount].options[*].value (confirmed shape: '20_30'). |
| per_page | integer | Products per page; values above 100 are clamped to 100. |
| dietaries | string | Comma-separated dietary preference names, as listed in filters[key=dietaries].options[*].value (e.g. one shape is 'Gluten-Free'). |
| categories | string | Comma-separated category display names, as listed in filters[key=categories].options[*].value. |
| availability | string | Comma-separated availability facet values, as listed in filters[key=availability].options[*].value (confirmed: 'In stock', 'Out of stock'). |
| product_type | string | Comma-separated product type names, as listed in filters[key=product_type].options[*].value. |
| product_labels | string | Comma-separated product label ids, as listed in filters[key=product_labels].options[*].value (numeric id string, e.g. one shape is '1'). |
{
"type": "object",
"fields": {
"page": "current page number",
"sort": "sort code applied",
"query": "the keyword applied, or null when only filters were used",
"total": "total matching products across all pages",
"region": "uppercase country code the site resolved the request to",
"filters": "array of facet groups {key, title, options[]}; each option has value (pass back into the same-named input), label, count, selected",
"has_more": "whether a following page exists",
"per_page": "page size applied",
"products": "array of product variant records: product_id, product_option_id (variant), title, slug, url, sku, item_no, currency, price (list), selling_price (current), discount_percent, has_special_price, in_stock, availability, quantity, rating, weight, image, category_one_name, category_two_name, product_labels (array of label texts), express_delivery_available",
"total_pages": "number of pages at this per_page"
},
"sample": {
"data": {
"page": 1,
"sort": "relevance",
"query": null,
"total": 3,
"region": "OM",
"filters": [
{
"key": "brands",
"title": "Brands",
"options": [
{
"count": 2,
"label": "Muscletech",
"value": "Muscletech",
"selected": true
}
]
},
{
"key": "discount",
"title": "Discount",
"options": [
{
"count": 2,
"label": "30% - 50%",
"value": "30_50",
"selected": false
}
]
},
{
"key": "price",
"title": "Price Range",
"options": [
{
"count": 2,
"label": "0 - 14",
"value": "0-14",
"selected": false
}
]
}
],
"has_more": false,
"per_page": 20,
"products": [
{
"sku": "631656703252",
"url": "https://drnutrition.com/en-om/muscletech-nitro-tech-performance-series-2-lb-vanilla-cream",
"slug": "muscletech-nitro-tech-performance-series-2-lb-vanilla-cream",
"image": "https://media.drnutrition.com/media/thumbnail/bjx8wwXexm0tTE9XK1I0zg3gAYJxztuTfJpL53I6.jpg",
"price": 19.87,
"title": "Muscletech Nitro Tech Whey Protein, Vanilla Cream, 2 LB",
"rating": 4.7,
"weight": "1.18kg",
"item_no": "00001025",
"currency": "OMR",
"in_stock": true,
"quantity": 23,
"product_id": 347,
"availability": "In stock",
"selling_price": 13.44,
"product_labels": [
"GLP-1 Friendly"
],
"discount_percent": 32,
"category_one_name": "Sports Nutrition",
"category_two_name": "Whey Protein Isolate",
"has_special_price": true,
"product_option_id": 2732,
"express_delivery_available": true
}
],
"total_pages": 1
},
"status": "success"
}
}About the Dr Nutrition API
Product Search and Filtering
The search_products endpoint accepts a free-text query alongside any combination of filter parameters — brands, goals, gender, price, region, and others — and returns a paginated result set. Each call also returns a filters array of facet groups, where every option carries a value (pass it back as the corresponding input), a human-readable label, a count of matching products, and a selected flag. This lets you build a full filter UI from a single response. Pagination is managed via page, per_page, total, total_pages, and has_more fields in every response. The sort parameter controls result ordering.
Per-Variant Product Detail
The get_product endpoint accepts either a full drnutrition.com URL or a product slug and returns the complete record for that specific variant. The response includes title (with flavour and size), brand (as an object with id, name, and slug), price, currency, images array, rating out of 5, weight, an HTML description, and suggested-use and health-notes text. The region input lets you retrieve the same product priced in a different regional storefront.
Regional Storefront Support
Both endpoints accept a two-letter lowercase region code. The response always echoes back the uppercase country code the storefront resolved to. Products, prices, and availability may differ by region, so passing an explicit region value is important when building region-specific applications.
Filter Facet Groups
The filters array from search_products covers 11 keys: brands, categories, dietaries, goals, gender, availability, discount, price, product_labels, product_type, and rating. Each option's value field is the exact string to pass back into the matching input parameter, making it straightforward to chain filter selections without hardcoding values.
The Dr Nutrition API is a managed, monitored endpoint for drnutrition.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when drnutrition.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 drnutrition.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?+
- Build a supplement comparison tool using
search_productsto filter bygoalsandbrandsand surface price differences across variants. - Track price changes on specific protein SKUs by polling
get_productwith a product slug and recording thepriceandcurrencyfields over time. - Populate a regional product catalogue by querying
search_productswith aregioncode and iterating pages usingtotal_pagesandhas_more. - Render a filterable storefront UI by reading the
filtersfacet groups returned bysearch_productsand using each option'svalue,label, andcount. - Aggregate brand-level product counts and average ratings by iterating
search_productsresults filtered by individualbrandsvalues and collectingratingfields. - Detect discounted products by combining
discountband filter options from thefiltersarray with agoalsorcategoriesfilter insearch_products. - Pull full product copy including HTML
descriptionand suggested-use text fromget_productto populate a content database or SEO landing page.
| 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 Dr Nutrition offer an official developer API?+
What does the `filters` field in `search_products` actually contain, and how do I use it?+
filters field is an array of facet group objects, each with a key (e.g. brands, goals, discount), a title, and an options array. Every option has value — the exact string to pass back into the matching input parameter on the next call — plus label, count, and selected. You read the options from one response and pass the chosen value strings back as filter inputs on the next request.Does `get_product` return customer review text or individual review records?+
get_product returns an aggregate rating (average out of 5) but does not expose individual review text, reviewer names, or review dates. The API covers identity, pricing, images, description text, and aggregate rating. You can fork this API on Parse and revise it to add an endpoint that fetches individual review records for a product.Are all regional storefronts covered equally, or are some regions missing products?+
region parameter resolves to the Dr Nutrition storefront for that country code, and the site itself controls which products, prices, and availability are active per region. Products available in one region may not appear in another. If an unrecognised region code is passed, the API returns the region the site resolved to, which may differ from the input.Can I retrieve a full product list without a search query or filters?+
query and all filter parameters are optional. Calling search_products with only a region and page returns the full catalogue page for that storefront, sorted by the default sort value. Use total_pages and has_more to iterate through all pages.