iHerb API
iHerb product data as structured JSON: keyword search with prices, discounts, ratings and stock, product detail with supplement facts and expiration dates, current prices and stock for up to 50 products in one call, and each product's review summary.
50 free credits on signup. No card, no iHerb account.
{ "data": { "query": "vitamin d", "page": 1, "sort": null, "brand_code": null, "total_results": 16200, "total_pages": 338, "count": 48, "products": [ { "position": 1, "product_id": "70316", "part_number": "CGN-01065", "name": "California Gold Nutrition, Vitamin D3, 125 mcg (5,000 IU), 90 Fish Gelatin Softgels", "brand": "California Gold Nutrition", "brand_code": "CGN", "price": 6.07, "list_price": 6.07, "discount_percent": 0, "rating": 4.8, "review_count": 324874, "in_stock": true, "sponsored": false, "badges": [ "Quality Pick" ], "recent_sales": "30K+ sold in 30 days" }, { "position": 5, "product_id": "10056", "part_number": "NOW-00369", "name": "NOW Foods, Vitamin D3 & K2, 120 Capsules", "brand": "NOW Foods", "brand_code": "NOW", "price": 8.92, "list_price": 8.92, "discount_percent": 0, "rating": 4.8, "review_count": 81952, "in_stock": true, "sponsored": true, "badges": [], "recent_sales": "60K+ sold in 30 days" } ], "brand_filters": [ { "brand_code": "CGN", "name": "California Gold Nutrition", "count": 278 }, { "brand_code": "NOW", "name": "NOW Foods", "count": 770 } ] }, "response_time": 21604}Live call against the real endpoint (iHerb US store, prices in USD). A search can take up to 20 seconds. 2 free runs, then it's your own key.
What is the Scavio iHerb API?
The Scavio iHerb API is a REST API that returns iHerb US product data as structured JSON. iHerb has no public product API. Its 4 POST endpoints cover search, product detail with supplement facts, prices and stock for 50 products per call, and review summaries, at 2 credits per call.
- 4
- endpoints, all live in production
- 2
- credits per call, every endpoint
- 50
- products' prices and stock in one call
The iHerb data buyers actually need
What it costs today, whether it is in stock, what is in it, and what buyers think of it.
50 products' prices in one call
POST /api/v1/iherb/pricesSend up to 50 product ids and one call returns each one's current price, list price, discount, in-stock flag, rating and review count, in the order you sent them. Unknown ids come back flagged, not as an error. Our 9-id capture answered in 1.6 seconds.
Search with brand filters
POST /api/v1/iherb/search48 products per page with price, discount, rating, review count, stock, badges, the "sold in 30 days" line and a sponsored flag. Sort by best selling, rating, price, discount or review count, and filter to one brand by its code.
Supplement facts and expiration date
POST /api/v1/iherb/productOne product with its supplement facts (serving size, servings per container, each nutrient's amount and % daily value), price per serving, expiration date of the stock being sold, quantity limit, UPC, variants and best-seller ranks by category.
Review summary
POST /api/v1/iherb/reviewsAverage rating, the star histogram, review counts per language and the full text of the top positive and top critical review. Our capture of product 70316 counted 324,874 reviews, 88% of them five stars.
All 4 iHerb API endpoints
Every route is a POST, returns JSON, and takes the same API key. 2 credits per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/iherb/search | Keyword search, 48 per page: product id, part number, brand, price, list price, discount, rating, review count, stock, badges, recent sales and a sponsored flag, plus the top brands to filter by. Eight sorts and a brand filter | 2 |
Product detail/api/v1/iherb/product | One product by id or URL: price, price per serving, UPC, stock, quantity limit, expiration date, best-seller ranks, variants, supplement facts, suggested use, ingredients, warnings and images | 2 |
Bulk prices and stock/api/v1/iherb/prices | Price, list price, discount, in-stock flag, rating and review count for up to 50 products in one call, in request order, with unknown ids flagged | 2 |
Review summary/api/v1/iherb/reviews | Average rating, review count, star histogram, review counts per language, and the full top positive and top critical review | 2 |
50 free credits on signup covers 25 iHerb calls. See plans
Search iHerb, then price 50 products in one call
Search returns product ids with price, rating and stock; the prices call re-checks up to 50 of them at once. The response on the right is a real capture.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search, best sellers first - 2 credits
res = client.iherb.search(query="vitamin d", sort="best_selling")["data"]
ids = [p["product_id"] for p in res["products"]]
# Price and stock for up to 50 of them in one call - 2 credits
rows = client.iherb.prices(product_ids=ids[:50])["data"]["products"]
for r in rows:
if r["found"]:
print(r["product_id"], r["brand"], r["price"], "-%d%%" % r["discount_percent"], r["in_stock"])
# Supplement facts and expiration date for one product - 2 credits
p = client.iherb.product(product_id="70316")["data"]
print(p["price_per_unit"]["text"], p["expiration_date"], p["supplement_facts"]["nutrients"])
# Star histogram and the top reviews - 2 credits
r = client.iherb.reviews(product_id="70316")["data"]
print(r["average_rating"], r["rating_histogram"]["one"]){
"data": {
"query": "vitamin d",
"page": 1,
"sort": null,
"brand_code": null,
"total_results": 16200,
"total_pages": 338,
"count": 48,
"products": [
{
"position": 1,
"product_id": "70316",
"part_number": "CGN-01065",
"name": "California Gold Nutrition, Vitamin D3, 125 mcg (5,000 IU), 90 Fish Gelatin Softgels",
"brand": "California Gold Nutrition",
"brand_code": "CGN",
"price": 6.07,
"list_price": 6.07,
"discount_percent": 0,
"rating": 4.8,
"review_count": 324874,
"in_stock": true,
"sponsored": false,
"badges": ["Quality Pick"],
"recent_sales": "30K+ sold in 30 days"
},
{
"position": 5,
"product_id": "10056",
"part_number": "NOW-00369",
"name": "NOW Foods, Vitamin D3 & K2, 120 Capsules",
"brand": "NOW Foods",
"brand_code": "NOW",
"price": 8.92,
"list_price": 8.92,
"discount_percent": 0,
"rating": 4.8,
"review_count": 81952,
"in_stock": true,
"sponsored": true,
"badges": [],
"recent_sales": "60K+ sold in 30 days"
}
],
"brand_filters": [
{ "brand_code": "CGN", "name": "California Gold Nutrition", "count": 278 },
{ "brand_code": "NOW", "name": "NOW Foods", "count": 770 }
]
},
"response_time": 21604
}Why not the official iHerb API?
iHerb has no public product API. Its affiliate program is built for referral links, not product data.
iHerb, without an API
- No public API or self-serve developer key for products, prices, stock or reviews
- The affiliate program, run through third-party networks, offers tracking links and only in some markets a product feed, after approval
- Supplement facts, expiration dates and best-seller ranks sit on individual product pages with no export
- Checking prices on a product list means one page per product
Scavio iHerb API
- One API key, issued at signup, with no iHerb account and no affiliate approval
- Current prices, discounts and stock for up to 50 products in one call
- Supplement facts, price per serving, expiration date and variants as fields
- Star histogram, per-language counts and the top positive and critical review
- Same JSON envelope as every other Scavio platform
Scavio returns publicly available data only, and never signs in as an iHerb customer.
What developers build with it
Supplement price tracking
Re-check prices, discounts and stock on a list of iHerb products every day, 50 products per call, and alert when one drops or goes out of stock.
pricesPrice comparison across retailers
Put iHerb prices next to Amazon, Walmart, CVS and Walgreens for the same supplement, matched by UPC from product detail, on one API key.
product + Amazon + WalmartBrand and category monitoring
Track how a brand's products rank, sell and review on iHerb: search filtered by brand code, best-seller ranks per category and the "sold in 30 days" line.
search + productSupplement facts databases
Build a catalogue of serving sizes, nutrient amounts and % daily values, ingredients and warnings, with price per serving to compare value across brands.
search + productReview and sentiment dashboards
Compare star histograms and review volume across competing products, and surface the top critical review for each one.
reviewsHow to get iHerb data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no iHerb account.
- 2
Search iHerb
Send {"query": "vitamin d"} to https://api.scavio.dev/api/v1/iherb/search with an Authorization: Bearer header. Each of the 48 results comes back with its product_id, price, rating and stock.
- 3
Price, detail and reviews by product id
Pass up to 50 product_id values to /api/v1/iherb/prices for current prices and stock, or one product_id to /api/v1/iherb/product for supplement facts and to /api/v1/iherb/reviews for the review summary.
iHerb API FAQ
Does iHerb have a public API?
+
No. iHerb does not offer a public API for product, price, stock or review data. It runs an affiliate program, through third-party affiliate networks, that gives approved partners tracking links and, in some markets, a product feed. The Scavio iHerb API fills the gap with 4 POST endpoints that return iherb.com data as structured JSON: search, product detail, bulk prices and a review summary.
What is the Scavio iHerb API?
+
It is a REST API that returns public iHerb product data as structured JSON. It covers keyword search with sorts and a brand filter, full product detail with supplement facts, current prices and stock for up to 50 products in one call, and each product's review summary. Every endpoint costs 2 credits.
Which iHerb store and currency does it use?
+
The US store, with prices in USD. A product URL from another country's iHerb site is accepted, but the data returned is still the US store's. Other countries and currencies are not offered.
Can I get store-level or local stock?
+
No. iHerb is online-only, with no physical stores, so there is no store-level price or stock to return. in_stock and stock_status describe iHerb's own online availability.
How do I check prices for many iHerb products at once?
+
POST up to 50 product ids to /api/v1/iherb/prices. One call returns each product's price, list price, discount percent, in-stock flag, rating and review count, in the order you sent them, for 2 credits. Unknown ids come back with found: false and are listed in not_found. Our 9-id capture answered in 1.6 seconds.
Does the API return iHerb reviews?
+
It returns the review summary, not a full review list: average rating, total review count, the star histogram with counts and percents, review counts per language, and the full text of the top positive and the top critical review. There is no endpoint that pages through every review. top_critical_review can be null; it was in our capture of product 70316.
Does it return supplement facts?
+
Yes. /api/v1/iherb/product returns supplement_facts with serving size, servings per container, and each nutrient's name, amount and % daily value, plus suggested use, ingredients and warnings. Our capture of product 70316 listed Vitamin D at 125 mcg (5,000 IU), 625% daily value, one softgel per serving.
Can I see expiration dates?
+
Yes. Product detail returns expiration_date, the earliest expiration date (month and year) of the stock iHerb is selling now. The capture showed 04/2029. It also returns first_available, when iHerb first listed the product.
How do I filter a search to one brand?
+
Pass brand_code, iHerb's short code for the brand: CGN for California Gold Nutrition, NOW for NOW Foods. Every search result carries its brand_code, and each search returns brand_filters with the top brands in the result set, their codes and match counts.
Which sort orders are supported?
+
relevance, best_selling, rating, price_asc, price_desc, newest, percent_off (highest discount first) and review_count. Omit sort for iHerb's featured order. Each page holds 48 products.
What does sponsored mean in search results?
+
sponsored: true marks a paid placement in the results. A sponsored product can also appear again organically on the same page, so de-duplicate by product_id if you count distinct products.
How fast is it?
+
Prices and reviews typically answer in 2-3 seconds. Product detail takes about 6-10 seconds and search typically 6-22 seconds, so set a client timeout of at least 60 seconds for search.
How much does an iHerb request cost?
+
Every iHerb endpoint costs 2 credits, including a prices call for 50 products. New accounts get 50 free credits on signup with no card required, enough for 25 iHerb calls. Paid plans start at $30 per month for 7,000 credits. Failed attempts are not charged.
How fresh is the data?
+
Every request fetches live from iHerb at the moment you call it, and nothing is cached. Each response carries fetched_at, the time the data was retrieved.
Which languages and tools are supported?
+
Every endpoint is a plain HTTPS POST with a JSON body, so any language works. Scavio also ships Python and JavaScript SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node, all on the same API key.
Is using iHerb data legal?
+
Scavio returns publicly available iHerb data and does not access accounts or order history. You remain responsible for how you use the data, including compliance with iHerb's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
iHerb API docs
All 4 endpoints with params and real responses.
Amazon API
Search, product detail and every seller offer by ASIN.
Walmart API
Search, product, reviews and store-level pricing.
CVS API
Front-store prices, coupons and in-store stock.
Walgreens API
Sale prices, coupons and one product's stock at 20 stores.
Target API
Search, categories, detail and reviews.
Costco API
Warehouse prices and stock, coupons and deals.
Sephora API
Search and product detail with every shade and size priced.
Try the iHerb API free
50 free credits on signup, no card. Your first request is a POST with a product name in it.