Skip to content
    ↑↓ to choose · Enter to open

    · 14 min read

    Vitacost Scraper: 31 Data Fields, Up to 1,000 Free Results/Month

    By CrawlerBros Engineering Team

    Up to 1,000 results are available on Apify's free plan, making it easy to track vitamins, supplements, and health foods from vitacost.com. Each record carries 31 output fields, including variant data, SKUs, and image URLs. This Actor is for anyone tracking health product markets or competitive pricing. It is not for anyone who needs customer ratings or reviews, which Vitacost's public storefront does not make reliably available.

    Try it: open Vitacost Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Vitacost Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Vitacost Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 20, so a first run returns at most 20 results and costs at most $0.10 in result charges. That is enough to see the real shape of the data before deciding anything.

    Vitacost Scraper was last updated on 2026-07-13. It is one of 1,729 Actors CrawlerBros publishes on Apify, which together have 746,619 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Vitacost Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The number of results written to the dataset directly affects your bill, with each result costing $0.005. The maxItems input control therefore has the largest effect on the result charges. To evaluate the Actor without incurring significant cost, the example input provides a small sample. It caps maxItems at 20, so a first run returns at most 20 results, costing up to $0.10 in result charges. Apify also bills platform usage on top of these charges.

    How do you run Vitacost Scraper from the API?

    None of its 22 controls is strictly required, so the defaults below produce a valid run on their own. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~vitacost-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"byCategory","category":"vitamins","sortBy":"best-selling","maxItems":20,"imageQuality":"master","requestDelaySecs":1}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "byCategory",
      "category": "vitamins",
      "sortBy": "best-selling",
      "maxItems": 20,
      "imageQuality": "master",
      "requestDelaySecs": 1
    }
    
    run = client.actor("crawlerbros~vitacost-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "byCategory",
      "category": "vitamins",
      "sortBy": "best-selling",
      "maxItems": 20,
      "imageQuality": "master",
      "requestDelaySecs": 1
    }
    
    const run = await client.actor('crawlerbros~vitacost-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which Vitacost Scraper inputs matter, and which can you skip?

    This Actor provides 22 controls to define your scrape, with mode being the most important: you can browse byCategory, search by keyword, look up specific products byHandles, or find relatedProducts. Most users should focus on mode and maxItems for initial runs to get a representative sample of data, leaving other optional controls at their defaults.

    • mode (string): byCategory browses a category with full pagination. search runs Vitacost's in-store search (top 10 most relevant matches). byHandles looks up specific products by handle or URL. relatedProducts returns Vitacost's own "customers also viewed" recommendations for each seed product (top 10 per seed). Default: "byCategory".
    • category (string): A Vitacost category to browse. Covers vitamins, supplements, sports nutrition, personal care, beauty, grocery/health food, home, baby & kids, and pet health. Default: "vitamins".
    • sortBy (string): Sort order applied to category browse results. Default: "best-selling".
    • maxItems (integer): Hard cap on the number of products returned (1-10000). Default: 20.
    • imageQuality (string): Shopify CDN serves multiple image sizes. master returns the original. Default: "master".
    • requestDelaySecs (integer): Pause between successive page fetches. Lower = faster, higher = more polite. Default: 1.
    • categoryHandle (string): Advanced: any Vitacost collection handle not in the dropdown above (the last segment of vitacost.com/collections/<handle>). Overrides category when set.
    • searchQuery (string): Free-text keyword search, e.g. vitamin c, turmeric, probiotics. Returns Vitacost's top 10 most relevant matches (a platform limit on predictive search).
    • productHandles (array): Exact product handles (e.g. vitacost-vitamin-c-500-mg-rose-hips-100-tablets-1234) or full product URLs. For byHandles, each is looked up individually. For relatedProducts, each is used as a seed to fetch Vitacost's own recommended/related products (up to 10 per seed). Default: [].
    • minPrice (number): Drop products whose lowest price is below this threshold.
    • maxPrice (number): Drop products whose lowest price is above this threshold.
    • onSaleOnly (boolean): Only emit products with an active discount (compare-at price higher than the current price). Default: false.

    The other 10 controls, with their defaults, are listed in the input schema on Vitacost Scraper on Apify.

    Fixed-choice controls: mode accepts byCategory (Browse by category), search (Search by keyword), byHandles (Look up specific products), relatedProducts (Find related/recommended products); category accepts 63 values (default vitamins), including vitamins, supplements (all), minerals, herbs; sortBy accepts best-selling (Best selling), manual (Featured (site default)), price-ascending (Price: low to high), price-descending (Price: high to low), title-ascending (Title: A to Z), title-descending (Title: Z to A), created-ascending (Oldest first), created-descending (Newest first); imageQuality accepts small (~100px), medium (~240px), large (~480px), grande (~600px), 1024x1024, 2048x2048, master (original).

    What does Vitacost Scraper return?

    The returned records are suitable for price tracking, market analysis, and competitive intelligence. They do not contain customer ratings or reviews, as Vitacost does not render this data in its public storefront markup.

    • productId, handle, productUrl - canonical Vitacost product page
    • title, brand, productType, category, tags[]
    • badges[] - promotional/private-label badges Vitacost attaches to the listing, e.g. Vitacost Brands (store brand) or SuperDeal (deep-discount promo)
    • description - plain text (HTML stripped)
    • price, maxPrice - lowest / highest variant price
    • comparePrice, onSale, discountPercent - sale tracking
    • currency - always USD
    • variantCount, availableVariantCount, available
    • skus[] - up to 20
    • variants[] - up to 30, each with size, sku, price, comparePrice, available, barcode (UPC), weightLb (shipping weight in pounds) - barcode is only available for byHandles/relatedProducts lookups (Vitacost's product-detail feed), not the paginated category/search feeds
    • imageUrl, images[] - up to 15
    • options[] - variant option names/values (e.g. size, count)
    • createdAt, updatedAt, publishedAt
    • relatedToHandle, relatedToUrl - the seed product a result was recommended for (mode = relatedProducts only)
    • recordType: "product", scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Vitacost Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the mode to byCategory and choose an initial category to explore. Start with a broad category like vitamins to get a sense of the available data.
    2. Review the output to confirm the records contain price, onSale, and discountPercent fields. Ensure these are present for products you expect to be on sale.
    3. Increase maxItems to a few hundred, then try filtering by minDiscountPercent (e.g., 10 or 20) and onSaleOnly set to true.
    4. Iterate through different category values or use categoryHandle for specific, non-listed categories.
    5. When monitoring a brand, set brandContains to the exact brand name you need to track.
    6. Schedule the Actor to run periodically to capture changes in price and discountPercent over time.

    How do you apply it? Three worked playbooks

    These are Vitacost Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Price tracking

    Outcome: Monitor a category or brand for sale prices and discount depth

    Configure: Set mode to byCategory or use brandContains with your target brand. Set onSaleOnly to true and optionally minDiscountPercent to a threshold like 10. Configure maxItems to a value suitable for your category size.

    Working method: Begin by tracking a single category or brand, running the Actor daily. Compare the price and discountPercent values over time to identify new sales or changes in discount depth. Use the sortBy control set to price-ascending to easily spot new lowest prices.

    Deliverable: A daily updated dataset showing current prices and discount percentages for a specified category or brand, highlighting products that have recently gone on sale or had their discount changed.

    Stop condition: The discountPercent field is consistently missing or incorrect for products marked as onSale.

    Use case 2: Market research

    Outcome: Analyze supplement pricing and brand assortment

    Configure: Use mode set to byCategory and select relevant categories like supplements or vitamins. Leave onSaleOnly as false initially to capture all products. Use maxItems to control the dataset size.

    Working method: Start by collecting data across several broad categories. Analyze the distribution of price and brand values within each category. Look for brands that appear frequently or at specific price points. Experiment with minPrice and maxPrice to understand price segmentation.

    Deliverable: A spreadsheet or database containing a comprehensive list of products, their prices, brands, and categories, allowing for quantitative analysis of the market landscape.

    Stop condition: A significant number of records are missing key fields like brand, price, or productType, making assortment analysis unreliable.

    Use case 3: Competitive intelligence

    Outcome: Compare Vitacost pricing against other health retailers

    Configure: For specific product comparisons, set mode to byHandles and provide the exact productHandles or URLs of the products you wish to compare. Otherwise, use byCategory and titleContains to find equivalent products.

    Working method: Identify equivalent products on Vitacost and your competitor's site. Use byHandles for direct lookup when product URLs are known. For broader comparisons, use byCategory with titleContains or brandContains to gather data on similar products. Regularly compare the price and onSale status.

    Deliverable: A comparison report or dashboard tracking the price and onSale status of specific products across Vitacost and other retailers, updated on a scheduled basis.

    Stop condition: The Actor fails to return records for specific productHandles that are known to be live on Vitacost, preventing accurate direct product comparisons.

    What breaks, and how do you design around it?

    For larger keyword-based result sets, use byCategory mode with the titleContains filter instead. Similarly, relatedProducts also caps results at 10 per seed product; pass multiple productHandles to gather related items for several seeds in one run.

    When should you not use Vitacost Scraper?

    Do not use Vitacost Scraper if your core requirement is to collect customer ratings and reviews. Vitacost does not render review data in its public storefront markup, so rating/review counts are not reliably extractable without an authenticated, app-specific API. If your use case is to track health and beauty products from a different region, consider Actors like iHerb Scraper - Vitamins, Supplements & Health Products for global vitamin and supplement data, or Watsons Health & Beauty Scraper for Southeast Asian markets. This Actor is also not ideal for general e-commerce product tracking beyond health and wellness; for broader categories like sports gear, alternatives such as Wiggle Scraper or JD Sports Scraper may be more suitable.

    What should you check before trusting the output?

    • Check for records where onSale is true but discountPercent is zero, which indicates a data inconsistency.
    • Verify that price and comparePrice values are numerically sensible for products reported as onSale.
    • Inspect badges[] for unexpected or malformed entries if you are using badgesAnyOf for filtering.
    • Confirm that imageUrl links are resolving correctly and returning actual images, not broken references.
    • If includeUnavailable is false, ensure no products with available set to false are present in the output.
    • When using relatedProducts, check that relatedToHandle and relatedToUrl correctly point back to your seed products.

    None of this proves a record is correct. It gives a scheduled Vitacost Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How much does Vitacost Scraper cost?

    On Apify's free plan, Vitacost Scraper costs $0.005 per result, which is $5.00 for every 1,000 results. Apify also bills for platform usage, on top of these charges. Apify's free plan includes $5.00 of monthly prepaid platform usage, which covers up to 1,000 results of this Actor before run-start charges.

    Why does keyword search only return up to 10 results?

    This API caps relevance results at 10 by platform design. For larger keyword-filtered result sets, use byCategory mode combined with the titleContains input control.

    Can I get customer ratings and reviews with this Actor?

    No, customer ratings and reviews are not included in the output of Vitacost Scraper. Vitacost does not render review data in its public storefront markup, so rating and review counts are not reliably extractable without an authenticated, app-specific API.

    What are 'badges' in the output, and how can I use them?

    badges are promotional or private-label badges Vitacost attaches to a listing, such as Vitacost Brands (store brand) or SuperDeal (deep-discount promo). The badges[] output field shows these, and the badgesAnyOf input filter allows you to target products that carry at least one of these designations.

    How can I track specific products by their URL or handle?

    To track specific products, set the mode input control to byHandles and provide a list of product handles or full product URLs in the productHandles array. The Actor will then look up each of these products individually and return the current details.

    Where to go next

    When you are ready to run it, open Vitacost Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Vitacost Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-06.

    • Actor last updated by its maintainers on 2026-07-13.

    • Run outcome figures cover the 30 day public window ending 2026-10-06.

    • Vitacost Scraper on Apify

    Featured actors

    Vitacost Scraper

    Scrape vitamins, supplements, and health foods from vitacost.com. Browse by category, search by keyword, or look up specific products. Get price, sale price, brand, size, and stock status. No login, no proxy required.

    Run on Apify ↗