Saratoga Wine Exchange Scraper avatar

Saratoga Wine Exchange Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Saratoga Wine Exchange Scraper

Saratoga Wine Exchange Scraper

Scrape SaratogaWine.com - a major US wine, spirits and beer retailer with 50,000+ products. Search by keyword, browse any category, or fetch exact products by ID. Returns price, category, stock, rating, images and more.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape live product data from Saratoga Wine Exchange — a major US wine, spirits and beer retailer with 50,000+ products. No login, no cookies, and no paid proxy required.

What this actor does

  • Search the catalog — free-text match against product name and description
  • Browse a category — pull products from any of Saratoga Wine's 25 live catalog categories (collectible wines, collectible spirits, bulk deals, and more) via a dropdown
  • Lookup exact products — fetch specific products by their numeric ID
  • Filters: price, brand, category, rating, vintage year, stock, sale status, and Saratoga Wine's own product attributes (color, Rapid Ship, case-only, in-store, oversized bottle)
  • Empty fields are omitted — only fields Saratoga Wine actually returns for a given product are included

Output per product

  • productId, sku, title
  • vintageYear — parsed from the product title; omitted for non-vintage (NV) products
  • bottleSize — parsed from the product title, e.g. 750ml, 1.5L
  • description, productType — Saratoga Wine's own WooCommerce product type (simple, bundle, variable, grouped)
  • categories[], category, categoryUrls[]
  • brand
  • price — current selling price
  • priceMin / priceMax — replace price for build-your-own bundle products, whose real price depends on which items the customer picks
  • regularPrice — pre-discount list price, present only when the product is on sale
  • currency
  • onSale, inStock
  • stockCount — exact units left in stock, parsed from Saratoga Wine's own "N in stock" label; omitted when the site only shows a generic "In stock" label or the product is out of stock
  • images[], primaryImageUrl
  • averageRating, reviewCount — present only when the product has published customer reviews
  • caseSize — the bottle/unit count the product must be purchased in multiples of, when Saratoga Wine enforces one
  • sourceUrl, recordType: "product", scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byCategory / byProductIds
searchQuerystringcabernet sauvignonKeyword matched against product name and description (mode=search)
categorySlugselectOne of 25 live Saratoga Wine catalog categories (mode=byCategory)
productIdsarrayExact numeric product IDs (mode=byProductIds)
sortBystringpopularitypopularity / date / price / price-desc / rating / title
wineColorselectred / white / rose (mode=search/byCategory)
rapidShipOnlybooleanfalseOnly "Rapid Ship" tagged products (mode=search/byCategory)
caseOnlybooleanfalseOnly products sold exclusively by the case (mode=search/byCategory)
inStoreTodayOnlybooleanfalseOnly products flagged as physically available in-store today (mode=search/byCategory)
inStoreOnlybooleanfalseOnly products sold exclusively in-store, not shippable online (mode=search/byCategory)
shipsFreeWith12OnlybooleanfalseOnly products free-shipping-eligible as part of a 12-bottle order (mode=search/byCategory)
oversizedBottleOnlybooleanfalseOnly oversized bottle formats, e.g. magnums (mode=search/byCategory)
minPrice / maxPriceintPrice range (USD)
categorystringCategory name contains this text
brandstringBrand name contains this text
minRatingnumberMinimum average rating 0-5 (most products have no reviews yet)
minVintageYear / maxVintageYearintVintage-year range, parsed from the product title; drops non-vintage products when set
inStockOnlybooleanfalseOnly emit products currently in stock
onSaleOnlybooleanfalseOnly emit products currently discounted below their regular price
maxItemsint50Hard cap on emitted records (1-2000)

Note: wineColor, rapidShipOnly, caseOnly, inStoreTodayOnly, inStoreOnly, shipsFreeWith12Only, and oversizedBottleOnly all narrow the result set server-side (Saratoga Wine's own product attributes) but are not themselves echoed as output fields — Saratoga Wine's API doesn't return per-product attribute values, only lets you filter by them.

Example: search with price and color filters

{
"mode": "search",
"searchQuery": "cabernet sauvignon",
"wineColor": "red",
"minPrice": 20,
"maxPrice": 80,
"maxItems": 50
}

Example: browse a category

{
"mode": "byCategory",
"categorySlug": "collectible-wines",
"sortBy": "price",
"inStockOnly": true,
"maxItems": 100
}

Example: lookup exact products by ID

{
"mode": "byProductIds",
"productIds": ["123456", "789012"]
}

Example: on-sale rapid-ship reds under $30

{
"mode": "search",
"searchQuery": "red wine",
"wineColor": "red",
"rapidShipOnly": true,
"onSaleOnly": true,
"maxPrice": 30
}

Use cases

  • Wine & spirits retailers — track competitor pricing and stock across categories
  • Price-comparison tools — build a searchable export filtered by price range or rating
  • Collectible wine tracking — monitor allocated/collectible releases via categorySlug=collectible-wines
  • Deal alerting — watch for newly discounted or Rapid Ship products
  • Inventory research — check stock counts and case-size requirements before bulk purchasing

Limitations

When mode=search is combined with wineColor / rapidShipOnly / caseOnly and sortBy=price (low-to-high or high-to-low), Saratoga Wine's own Store API widens the matched pool beyond your searchQuery before sorting, so price-ascending results can surface a long tail of unrelated / discontinued low-price listings ahead of real matches. The actor already re-verifies every result against your searchQuery and any minPrice/maxPrice/inStockOnly filters client-side (so you'll never see a wrong product), and scans extra pages automatically when a color/ attribute filter is active, but a narrow combination of searchQuery + attribute filter + price bounds + sortBy=price can still legitimately return fewer results (or 0) than the same filters with the default sortBy=popularity. If you hit 0 results with an attribute filter + sortBy=price, retry with sortBy=popularity (the default) or drop the price sort.

Separately: if you combine an attribute filter (wineColor / rapidShipOnly / caseOnly / inStoreTodayOnly / shipsFreeWith12Only / oversizedBottleOnly) with both minPrice and/or maxPrice and sortBy=price (either direction), the actor automatically substitutes sortBy=popularity server-side instead (or sortBy=date when oversizedBottleOnly is the active filter — see below) — Saratoga Wine's Store API gets stuck re-returning the same narrow price bracket for 20+ pages straight under that exact combination and would otherwise silently return 0 records even when matches exist. Output completeness is prioritized over exact price ordering for this specific combo; the results are still fully filtered by your price bounds, just not sorted ascending/descending by price. Drop either the attribute filter or the price bounds if strict price ordering matters more than completeness for your use case.

Separately: oversizedBottleOnly combined with the default sortBy=popularity hits a different Store API quirk — orderby=popularity silently drops the pa_oversized-bottle attribute filter entirely and returns the unfiltered catalog instead (confirmed live: orderby=date, =rating, and =title all honor the filter correctly). The actor automatically substitutes sortBy=date whenever oversizedBottleOnly is set and sortBy is left at its popularity default, so you always get correctly-filtered results without needing to change sortBy yourself.

FAQ

Does this need login or cookies? No. Saratoga Wine publishes its catalog through a public, unauthenticated WooCommerce Store API.

Does this use a paid/residential proxy? No proxy is required at all.

Can I get every product on the site? Yes — use mode=search with a broad query, or iterate categories with mode=byCategory, and set a high maxItems.

Is this affiliated with Saratoga Wine Exchange? No, this is a third-party actor that reads Saratoga Wine's public product API; it is not built or endorsed by Saratoga Wine Exchange.

Why is averageRating missing from most products? Saratoga Wine's catalog currently has very few products with published customer reviews, so the field (and reviewCount) is only present when a product actually has ratings — never a 0 placeholder.

Why do bundle products show priceMin/priceMax instead of price? Build-your-own bundles (productType: "bundle") don't have one fixed price since it depends on which items the customer picks; Saratoga Wine's API reports a flat 0 for these, so the actor substitutes the real min/max range instead of a misleading 0.

How current is the data? Every run queries Saratoga Wine's live Store API at request time — prices and stock reflect what's on the site right now, not a cached snapshot.

What happens if I combine sortBy=price with an attribute filter like wineColor? See the Limitations section above — some filter + sort combinations hit known quirks in Saratoga Wine's own Store API; the actor works around most of them automatically, but a few edge cases can still return fewer results than expected.