# Iherb Product Scraper (`saswave/iherb-product-scraper`) Actor

$1.5 / 1000 results. A powerful scraper to extract iHerb product data at scale, covering search results, detailed product pages, pricing, subscriptions, reviews summaries, and recommendations. Designed for market analysis, price monitoring, SEO intelligence, and e-commerce automation.

- **URL**: https://apify.com/saswave/iherb-product-scraper.md
- **Developed by:** [SASWAVE](https://apify.com/saswave) (community)
- **Categories:** Automation, E-commerce, SEO tools
- **Stats:** 26 total users, 0 monthly users, 97.1% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### iHerb Product Scraper

A powerful scraper to extract iHerb product data at scale, covering search results, detailed product pages, pricing, subscriptions, reviews summaries, and recommendations.

Designed for market analysis, price monitoring, SEO intelligence, and e-commerce automation.

### ✨ Features

##### 🔍 Product Search Scraping

Extract products directly from iHerb category & search pages

Capture:

- Current price & original price

- Discount percentage

- Rating & number of reviews

- Recent sales activity (e.g. 100+ sold in 30 days)

- Product position in search results

- Brand, SKU, product ID

- Availability status

##### 📄 Product Detail Page (PDP) Scraping

Full product metadata:

- Product name, brand & category

- Availability & stock status

- Price breakdown (list, sale, discount, subscription)

- Price per unit (ml, g, etc.)

- Subscription & autoship data:

- Discount percentages

- Delivery frequencies

- Subscription limits & conditions

- Promotional & marketing messages

##### ⭐ Reviews & Ratings Insights

Total reviews count by language

Rating distribution (1⭐ to 5⭐)

Average & calculated rating

Top positive and critical reviews per language

Review summary / sentiment recap

### 🔁 Product Recommendations

Extract related & recommended products

Capture:

- Prices & discounts

- Ratings & review counts

- Availability

- Direct product & review URLs

### Output

Product from Search

```json
{
  "current_price": "$11.12",
  "original_price": "",
  "percent_off": "",
  "recent_activity": "100+ sold in 30 days",
  "rating": "4.6",
  "reviews": "2,343",
  "available_buy": true,
  "product_url": "https://www.iherb.com/pr/now-foods-essential-oils-lime-1-fl-oz-30-ml/930",
  "title": "NOW Foods, Essential Oils, Lime, 1 fl oz (30 ml)",
  "pid": "930",
  "brand": "NOW Foods",
  "sku": "NOW-07567",
  "search_position": "192",
  "search": "https://fr.iherb.com/c/essential-oils-aromatherapy?p=4&isAjax=true"
}
```

Direct Product url - DETAILS

```json
{
  "id": 14394,
  "displayName": "Solutions, Sweet Almond Oil, Unscented, 4 fl oz (118 ml)",
  "isAvailableToPurchase": true,
  "partNumber": "NOW-07660",
  "rootCategoryId": 100477,
  "rootCategoryName": "Bath & Personal Care",
  "url": "https://www.iherb.com/pr/now-foods-solutions-sweet-almond-oil-unscented-4-fl-oz-118-ml/14394",
  "urlName": "now-foods-solutions-sweet-almond-oil-unscented-4-fl-oz-118-ml",
  "discountPrice": "$4.40",
  "listPrice": "$4.40",
  "brandCode": "NOW",
  "brandName": "NOW Foods",
  "brandLogoUrl": "https://s3.images-iherb.com/brand/logo/NOW/1734379942.png",
  "brandUrl": "https://www.iherb.com/c/now-foods",
  "primaryImageIndex": 44,
  "special": null,
  "trial": null,
  "clearance": null,
  "volume": null,
  "volumeAutoPromos": null,
  "volumeAutoShipSave": null,
  "combo": null,
  "autoApplyPromo": null,
  "subscription": {
    "discountPercentage": 20.0,
    "firstTimeSubscriberPercent": 0.2,
    "recurringOrderPercent": 0.1,
    "discountedPrice": {
      "value": 4.05,
      "formatted": "4,05 €",
      "pricePerUnit": null
    },
    "defaultFrequencyId": "f667c6bd-7b63-4bd7-b16d-8c3b0eeec878",
    "isFirstTimeSubscriber": true,
    "activeSubscriptionId": null,
    "nextDeliveryDate": null,
    "activeSubscriptionUrl": null,
    "promoId": 85,
    "frequencies": [
      {
        "frequencyId": "5613f8f7-a98f-40dc-b380-ba9da201c1cd",
        "label": "1 mois"
      },
      {
        "frequencyId": "297691e6-75f6-4ae0-9e65-1fbcaada72d9",
        "label": "2 mois"
      },
      {
        "frequencyId": "f667c6bd-7b63-4bd7-b16d-8c3b0eeec878",
        "label": "3 mois (recommandé)"
      },
      {
        "frequencyId": "4c50db52-42eb-4f88-be41-920f6c68aa19",
        "label": "4 mois"
      },
      {
        "frequencyId": "3df21eb9-105f-6b02-108c-787caf652923",
        "label": "5 mois"
      },
      {
        "frequencyId": "2927fe8d-3749-28a6-414a-c37d87b3b999",
        "label": "6 mois"
      }
    ],
    "content": {
      "percentOff": "20 % de réduction",
      "extraPercentOff": "Obtenez 20 % de réduction ou la remise la plus élevée disponible à ce moment-là + la livraison gratuite pour toute commande en livraison automatique.",
      "toolTip": "Obtenez 20% de réduction sur la première commande et 10% de réduction sur toutes les commandes récurrentes. De plus, les frais de port sont gratuits pour toute commande d'abonnement supérieure à 40.00 €.\nLa remise la plus élevée s'appliquera si d'autres remises sont disponibles pour votre article.\nVous pouvez sauter une livraison ou mettre à jour votre abonnement à tout moment.",
      "message": "Profitez d'une remise de 20% ou plus sur votre première commande, et de 10% de réduction sur toutes les prochaines commandes."
    },
    "pricePerUnit": "0,03 €/ml",
    "salePrice": {
      "value": 4.05,
      "formatted": "4,05 €",
      "pricePerUnit": "0,03 €/ml"
    },
    "displayType": 0,
    "defaultSelectionIsEnabled": false,
    "promoBannerEnabled": true,
    "quantityLimit": 4,
    "countLimit": 50,
    "ongoingCount": 0,
    "countLimitMessage": "",
    "isAutoshipNewCustomer": true,
    "newCustomerEducationMessages": [
      {
        "title": "Économiser plus",
        "message": "<span>​+ 20% de réduction sur votre première commande et 10%&nbsp; de réduction sur&nbsp;<span style=\"color: #2C7500;\">​toutes les prochaines commandes.</span>. </span>",
        "subMessages": []
      },
      {
        "title": "Bénéficier de frais de port gratuits ou réduits",
        "message": "<span>Livraison gratuite pour les commandes répétées supérieures à 40.00 € . </span>",
        "subMessages": []
      },
      {
        "title": "Pratique",
        "message": "<span>​définissez votre propre fréquence de livraison allant d'un mois à six mois.</span>",
        "subMessages": []
      },
      {
        "title": "La flexibilité vous appartient",
        "message": "<span>ignorez, changez ou annulez à tout moment.</span>",
        "subMessages": []
      }
    ],
    "pdpDetailMessages": [
      {
        "fullMessage": "<span>​+ 20% de réduction sur votre première commande et 10%&nbsp; de réduction sur&nbsp;<span style=\"color: #2C7500;\">​toutes les prochaines commandes.</span>. </span>",
        "title": "Économiser plus",
        "message": "<span>Profitez de 20% de réduction sur votre première commande et 10% de réduction sur<span style=\"color: #2C7500;\"> toutes les commandes futures</span>. </span>",
        "subMessages": []
      },
      {
        "fullMessage": "<span>​Livraison gratuite pour toute commande future à partir de 40.00 €.&nbsp;<span style=\"color: #666666; font-style: italic;\">​Les commandes inférieures à 40.00 € seront soumises à des frais de livraison forfaitaires de 4.00 €</span></span>",
        "title": "Bénéficier de frais de port gratuits ou réduits",
        "message": "<span>Livraison gratuite pour les commandes répétées supérieures à 40.00 € . </span>",
        "subMessages": []
      },
      {
        "fullMessage": "<span>​Choisissez votre calendrier de livraison tous les 1 à 6 mois. Sautez, modifiez ou annulez à tout moment.&nbsp;</span>",
        "title": "Pratique et flexible",
        "message": "<span>​Passez, modifiez ou annulez à tout moment.&nbsp;</span>",
        "subMessages": []
      },
      {
        "fullMessage": "<span>​Réservez vos produits à l'avance en bénéficiant d'un accès prioritaire à l'inventaire, ce qui vous permet de recevoir vos produits essentiels en premier.&nbsp;</span>",
        "title": "Accès prioritaire aux stocks",
        "message": null,
        "subMessages": []
      }
    ]
  },
  "price": {
    "list": {
      "value": 5.06,
      "formatted": "5,06 €",
      "pricePerUnit": "0,04 €/ml"
    },
    "discount": {
      "discountPercentage": 0.0,
      "display": {
        "isInCartDiscount": false,
        "discountDisplayType": 0
      },
      "value": 5.06,
      "formatted": "5,06 €",
      "pricePerUnit": "0,04 €/ml"
    },
    "discountAmount": {
      "value": 0.0,
      "formatted": "0,00 €",
      "pricePerUnit": null
    },
    "subscription": {
      "value": 4.05,
      "formatted": "4,05 €",
      "pricePerUnit": "0,03 €/ml"
    },
    "sale": {
      "discountPercentage": 20.0,
      "display": {
        "isInCartDiscount": false,
        "discountDisplayType": 1
      },
      "value": 4.05,
      "formatted": "4,05 €",
      "pricePerUnit": "0,03 €/ml"
    },
    "saleDiscountAmount": {
      "value": 1.01,
      "formatted": "1,01 €",
      "pricePerUnit": null
    },
    "volumes": [],
    "subscriptionWithVolumeDiscount": [],
    "discountType": 0
  },
  "manualPromo": null,
  "reviews_sum_languages": [
    {
      "languageCode": "all",
      "languageName": "All",
      "count": 132611
    },
    {
      "topPositiveReview": {
        "id": "ab225817-1ab0-465f-be74-5e600a0524ac",
        "helpfulYes": 90,
        "helpfulNo": 0,
        "profileInfo": {
          "image": {
            "thumbnails": [
              {
                "thumbnailTypeId": 2,
                "fullPath": "https://ugc-images.images-iherb.com/ugc/20230327/f62ed543-7adc-4e58-910c-42a767648f1a/s.jpeg"
              },
              {
                "thumbnailTypeId": 3,
                "fullPath": "https://ugc-images.images-iherb.com/ugc/20230327/f62ed543-7adc-4e58-910c-42a767648f1a/m.jpeg"
              },
              {
                "thumbnailTypeId": 4,
                "fullPath": "https://ugc-images.images-iherb.com/ugc/20230327/f62ed543-7adc-4e58-910c-42a767648f1a/l.jpeg"
              }
            ]
          },
          "displayname": "ashjank",
          "showDisplayname": true,
          "ugcSummary": {
            "helpfulCount": 5831,
            "reviewCount": 95,
            "answerCount": 0,
            "imageCount": 0
          },
          "username": "ashjank",
          "country": "Saudi Arabia"
        },
        "customerNickname": "ashjank",
        "customerProfileLink": "ashjank",
        "postedDateLocalized": "Jul 28, 2022",
        "postedDate": "2022-07-28T15:01:27.59Z",
        "languageCode": "en-US",
        "verifiedPurchase": true,
        "hasRewarded": true,
        "reviewTitle": "Excellent!",
        "reviewText": "I used it for massage mostly my whole body, including my scalp. I used it after washing my hair and shower. I love the texture, is not too sticky like many other oil type, absorbed in to my skin really well and fast.",
        "ratingValue": 50,
        "images": []
      },
      "topCriticalReview": {
        "id": "a52b803c-312a-48be-8fda-5cc5f9e2c2ce",
        "helpfulYes": 35,
        "helpfulNo": 0,
        "profileInfo": {
          "displayname": "iHerbCustomer",
          "showDisplayname": true,
          "ugcSummary": {
            "helpfulCount": 1966,
            "reviewCount": 285,
            "answerCount": 6,
            "imageCount": 1
          },
          "username": "Lamyae",
          "country": "Morocco"
        },
        "customerNickname": "iHerbCustomer",
        "customerProfileLink": "Lamyae",
        "postedDateLocalized": "May 2, 2022",
        "postedDate": "2022-05-02T22:01:37.734Z",
        "languageCode": "en-US",
        "verifiedPurchase": true,
        "hasRewarded": true,
        "reviewTitle": "Ok",
        "reviewText": "This oil will moisturize hair and skin. Use it on hair after you wash when it is still wet before you condition and feel the difference. Use on your body when damp to receive a moisture you just can't get with a lotion. Mixes beautifully with any high grade essential oil for a pleasant scent as it has no scent. ",
        "ratingValue": 30,
        "images": []
      },
      "languageCode": "en-US",
      "languageName": "English",
      "count": 29193
    },
    {
      "languageCode": "ar-SA",
      "languageName": "Arabic",
      "count": 66318
    },
    {
      "languageCode": "bg-BG",
      "languageName": "Bulgarian",
      "count": 42
    },
    {
      "languageCode": "zh-CN",
      "languageName": "Chinese, Simplified",
      "count": 1608
    },
    {
      "languageCode": "zh-TW",
      "languageName": "Chinese, Traditional",
      "count": 3831
    },
    {
      "languageCode": "hr-HR",
      "languageName": "Croatian",
      "count": 3
    },
    {
      "languageCode": "cs-CZ",
      "languageName": "Czech",
      "count": 2
    },
    {
      "languageCode": "da-DK",
      "languageName": "Danish",
      "count": 1
    },
    {
      "languageCode": "nl-NL",
      "languageName": "Dutch",
      "count": 7
    },
    {
      "languageCode": "en-GB",
      "languageName": "English (UK)",
      "count": 0
    },
    {
      "languageCode": "et-EE",
      "languageName": "Estonian",
      "count": 2
    },
    {
      "languageCode": "fi-FI",
      "languageName": "Finnish",
      "count": 5
    },
    {
      "languageCode": "fr-FR",
      "languageName": "French",
      "count": 889
    },
    {
      "languageCode": "de-DE",
      "languageName": "German",
      "count": 116
    },
    {
      "languageCode": "el-GR",
      "languageName": "Greek",
      "count": 6
    },
    {
      "languageCode": "he-IL",
      "languageName": "Hebrew",
      "count": 2828
    },
    {
      "languageCode": "hi-IN",
      "languageName": "Hindi",
      "count": 5
    },
    {
      "languageCode": "hu-HU",
      "languageName": "Hungarian",
      "count": 9
    },
    {
      "languageCode": "id-ID",
      "languageName": "Indonesian",
      "count": 17
    },
    {
      "languageCode": "it-IT",
      "languageName": "Italian",
      "count": 23
    },
    {
      "languageCode": "ja-JP",
      "languageName": "Japanese",
      "count": 9695
    },
    {
      "languageCode": "ko-KR",
      "languageName": "Korean",
      "count": 2713
    },
    {
      "languageCode": "lv-LV",
      "languageName": "Latvian",
      "count": 6
    },
    {
      "languageCode": "lt-LT",
      "languageName": "Lithuanian",
      "count": 8
    },
    {
      "languageCode": "ms-MY",
      "languageName": "Malay",
      "count": 2
    },
    {
      "languageCode": "no-NO",
      "languageName": "Norwegian",
      "count": 0
    },
    {
      "languageCode": "pl-PL",
      "languageName": "Polish",
      "count": 18
    },
    {
      "languageCode": "pt-BR",
      "languageName": "Portuguese",
      "count": 448
    },
    {
      "languageCode": "ro-RO",
      "languageName": "Romanian",
      "count": 17
    },
    {
      "languageCode": "ru-RU",
      "languageName": "Russian",
      "count": 12620
    },
    {
      "languageCode": "sk-SK",
      "languageName": "Slovak",
      "count": 0
    },
    {
      "languageCode": "sl-SI",
      "languageName": "Slovenian",
      "count": 1
    },
    {
      "languageCode": "es-MX",
      "languageName": "Spanish",
      "count": 285
    },
    {
      "languageCode": "sv-SE",
      "languageName": "Swedish",
      "count": 3
    },
    {
      "languageCode": "th-TH",
      "languageName": "Thai",
      "count": 35
    },
    {
      "languageCode": "tr-TR",
      "languageName": "Turkish",
      "count": 7
    },
    {
      "languageCode": "uk-UA",
      "languageName": "Ukrainian",
      "count": 1041
    }
  ],
  "reviews_sum_stars": {
    "oneStar": {
      "count": 1175,
      "countLocalized": "1,175",
      "percentage": 1
    },
    "twoStar": {
      "count": 1796,
      "countLocalized": "1,796",
      "percentage": 1
    },
    "threeStar": {
      "count": 6424,
      "countLocalized": "6,424",
      "percentage": 5
    },
    "fourStar": {
      "count": 16524,
      "countLocalized": "16,524",
      "percentage": 12
    },
    "fiveStar": {
      "count": 106692,
      "countLocalized": "106,692",
      "percentage": 80
    },
    "count": 132611,
    "countLocalized": "132,611",
    "averageRating": 4.7,
    "calculatedRating": 4.75
  },
  "review_resume": "Customers highly praise the NOW Foods, Solutions Sweet Almond Oil for its moisturizing properties and versatility. Many users appreciate that it is unscented, non-greasy, and absorbs well into the skin. It is frequently used on both hair and body, providing a healthy shine and softening effect. The oil is also noted for being an excellent base for essential oils. Users consistently mention its good quality, affordable price, and effective hydration. Several customers have been repeat buyers, indicating high satisfaction with the product's performance. The packaging is also appreciated for being practical and long-lasting."
}
```

Direct Product url - RECOMMENDATIONS

```json
{
  "id": 896,
  "name": "NOW Foods, Solutions, Huile d'amande douce, Huile hydratante pure, Sans parfum, 473 ml",
  "productName": "Solutions, Huile d'amande douce, Huile hydratante pure, Sans parfum, 473 ml",
  "partNumber": "NOW07661",
  "formattedPartNumber": null,
  "url": "https://fr.iherb.com/pr/now-foods-solutions-sweet-almond-oil-pure-moisturizing-oil-unscented-16-fl-oz-473-ml/896",
  "brandCode": "NOW",
  "brandName": "NOW Foods",
  "brandLabel": "Now Foods",
  "primaryImageIndex": 58,
  "rating": 4.7,
  "ratingCount": 132563,
  "ratingUrl": "https://fr.iherb.com/pr/now-foods-solutions-sweet-almond-oil-pure-moisturizing-oil-unscented-16-fl-oz-473-ml/896#product-reviews",
  "reviewUrl": "https://fr.iherb.com/r/now-foods-solutions-sweet-almond-oil-pure-moisturizing-oil-unscented-16-fl-oz-473-ml/896",
  "listPrice": "15,20 €",
  "listPriceAmount": 15.2,
  "discountedPrice": "15,20 €",
  "discountedPriceAmount": 15.2,
  "hidePrice": false,
  "productFlag": null,
  "discountType": 0,
  "discountDisplayType": 0,
  "discountMessage": "",
  "isInCartDiscount": false,
  "salesDiscountPercentage": 0.0,
  "autoApplyDiscountPercentage": null,
  "specialDealInfo": null,
  "ratingStarsMap": [
    1.0,
    1.0,
    1.0,
    1.0,
    0.75
  ],
  "isInGroup": false,
  "currencySymbol": null,
  "isCurrencySymbolOnLeft": null,
  "salePriceAmount": null,
  "salePriceFormatted": null,
  "groupId": 0,
  "trendingMetric": null,
  "isOutOfStock": false,
  "backInStockDate": null,
  "isNew": false,
  "prohibited": false,
  "isNotAvailable": false,
  "isNoPO": false,
  "isDiscontinued": false,
  "pid_searched": "14394"
}
```

### 🚀 Use Cases

📊 Market & price intelligence on iHerb products

🧠 Competitive analysis across brands & categories

🛒 E-commerce catalog synchronization

📈 SEO & keyword research using product demand signals

⭐ Review & sentiment analysis by language and region

🔔 Discount & promotion monitoring

🤖 Data pipelines for BI tools, dashboards & ML models

## 💡 Notes

Supports all iHerb regional domains (US, EU, FR, etc.)

Prices & currencies depend on selected country

Subscription data may vary by region & customer status

Review summaries are extracted from publicly available content

### 🛟 SUPPORT

Share your runs with the developer team and create issues on error to help us improve actor quality.

You might discover edge case we didn't test yet

We stay available anytime

# Actor input Schema

## `search_url` (type: `string`):

Search url to extract results from, example https://fr.iherb.com/c/essential-oils-aromatherapy

## `product_ids` (type: `array`):

List your product ids. ex: https://fr.iherb.com/pr/now-foods-solutions-sweet-almond-oil-unscented-4-fl-oz-118-ml/14394 id is 14394

## `domain` (type: `string`):

Domain name from product. ex: https://fr.iherb.com/c/essential-oils-aromatherapy domain is fr.iherb.com

## `product_parsing` (type: `string`):

Select your mode

## Actor input object example

```json
{
  "product_ids": [
    "14394"
  ],
  "domain": "iherb.com",
  "product_parsing": "recommendations"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "product_ids": [
        "14394"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("saswave/iherb-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "product_ids": ["14394"] }

# Run the Actor and wait for it to finish
run = client.actor("saswave/iherb-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "product_ids": [
    "14394"
  ]
}' |
apify call saswave/iherb-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=saswave/iherb-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mh8PwT5SjtsOPQYB6/builds/A21aGrQdbwUL4ROEU/openapi.json
