Saratoga Wine Exchange Scraper
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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,titlevintageYear— parsed from the product title; omitted for non-vintage (NV) productsbottleSize— parsed from the product title, e.g.750ml,1.5Ldescription,productType— Saratoga Wine's own WooCommerce product type (simple,bundle,variable,grouped)categories[],category,categoryUrls[]brandprice— current selling pricepriceMin/priceMax— replacepricefor build-your-own bundle products, whose real price depends on which items the customer picksregularPrice— pre-discount list price, present only when the product is on salecurrencyonSale,inStockstockCount— 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 stockimages[],primaryImageUrlaverageRating,reviewCount— present only when the product has published customer reviewscaseSize— the bottle/unit count the product must be purchased in multiples of, when Saratoga Wine enforces onesourceUrl,recordType: "product",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byCategory / byProductIds |
searchQuery | string | cabernet sauvignon | Keyword matched against product name and description (mode=search) |
categorySlug | select | – | One of 25 live Saratoga Wine catalog categories (mode=byCategory) |
productIds | array | – | Exact numeric product IDs (mode=byProductIds) |
sortBy | string | popularity | popularity / date / price / price-desc / rating / title |
wineColor | select | – | red / white / rose (mode=search/byCategory) |
rapidShipOnly | boolean | false | Only "Rapid Ship" tagged products (mode=search/byCategory) |
caseOnly | boolean | false | Only products sold exclusively by the case (mode=search/byCategory) |
inStoreTodayOnly | boolean | false | Only products flagged as physically available in-store today (mode=search/byCategory) |
inStoreOnly | boolean | false | Only products sold exclusively in-store, not shippable online (mode=search/byCategory) |
shipsFreeWith12Only | boolean | false | Only products free-shipping-eligible as part of a 12-bottle order (mode=search/byCategory) |
oversizedBottleOnly | boolean | false | Only oversized bottle formats, e.g. magnums (mode=search/byCategory) |
minPrice / maxPrice | int | – | Price range (USD) |
category | string | – | Category name contains this text |
brand | string | – | Brand name contains this text |
minRating | number | – | Minimum average rating 0-5 (most products have no reviews yet) |
minVintageYear / maxVintageYear | int | – | Vintage-year range, parsed from the product title; drops non-vintage products when set |
inStockOnly | boolean | false | Only emit products currently in stock |
onSaleOnly | boolean | false | Only emit products currently discounted below their regular price |
maxItems | int | 50 | Hard 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.