Wine APIwine.com ↗
Access Wine.com product data via API: search wines by keyword, browse by category, get critic scores, community ratings, pricing, and sale prices.
What is the Wine API?
The Wine.com API exposes 5 endpoints covering Wine.com's full wine catalog, returning product metadata, pricing, professional critic scores, and community ratings. Use search_wines to query by producer, region, or varietal, or call get_wine_detail with a numeric product ID to retrieve a single wine's complete profile — including HTML description, sale pricing, and image URLs.
curl -X GET 'https://api.parse.bot/scraper/b8502cfe-cf7f-4f0c-9124-ea08ebff0e88/search_wines?page=1&sort=mostPopular&query=Pinot+Noir' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace wine-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.wine_com_api import WineCom, Sort
wine_com = WineCom()
# Search for Pinot Noir wines sorted by highest rating
for wine in wine_com.wines.search(query="Pinot Noir", sort=Sort.RATING_DESCENDING, limit=5):
print(wine.name, wine.producer, wine.price.display)
for review in wine.professional_reviews:
print(f" {review.critic}: {review.score}")
# Get full details for a specific wine by its numeric product ID
detail = wine_com.wines.get(product_id="330988")
print(detail.name, detail.region, detail.description)
print(detail.community_rating.score, detail.community_rating.count)
# Browse top-rated wines
for top_wine in wine_com.wines.top_rated(limit=3):
print(top_wine.name, top_wine.price.display)
for img in top_wine.images:
print(f" Image: {img.url}")
Search for wines by keyword across Wine.com's catalog. Returns a paginated list of wines matching the search term with pricing, professional reviews, community ratings, and images. Results are sorted by the specified sort order.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| queryrequired | string | Search term for wine name, producer, region, or other attributes (e.g. 'Pinot Noir', 'Chateau', 'Barolo'). |
{
"type": "object",
"fields": {
"results": "array of wine objects with id, name, producer, region, price, reviews, images, etc.",
"pagination": "object with current_page, total_pages, page_size, total_count"
},
"sample": {
"data": {
"results": [
{
"id": "60866",
"abv": null,
"url": "https://www.wine.com/product/riedel-duck-decanter/60866",
"name": "Riedel Duck Decanter",
"size": null,
"is_nv": false,
"price": {
"whole": 424,
"display": "$424.97",
"currency": "USD",
"fractional": "97",
"isNegative": false
},
"stock": 7,
"images": [
{
"alt": "Riedel Duck Decanter Gift Product Image",
"url": "http://res.cloudinary.com/winecom/image/upload/sagdisrqalkeswxveeue"
}
],
"region": "",
"country": null,
"savings": {
"whole": "0",
"display": "$0.00",
"currency": "USD",
"fractional": "00",
"isNegative": false
},
"vintage": null,
"producer": "Riedel",
"seo_name": "riedel-duck-decanter",
"varietal": null,
"attributes": [
"Core: Wine.com",
"Customer Favorites",
"Decanters & Aerators"
],
"sale_price": {
"whole": 424,
"display": "$424.97",
"currency": "USD",
"fractional": "97",
"isNegative": false
},
"sub_region": null,
"description": "Duck Decanter",
"community_rating": {
"count": 0,
"score": "0.0"
},
"professional_reviews": []
}
],
"pagination": {
"page_size": 25,
"total_count": 157,
"total_pages": 7,
"current_page": 1
}
},
"status": "success"
}
}About the Wine API
Catalog Search and Browse
search_wines accepts a required query string — wine name, producer, region, or grape variety — and returns a paginated array of wine objects with id, name, producer, region, price, reviews, and images. Pagination is controlled via the page parameter, and results can be reordered with sort. The list_wines endpoint offers category-based browsing: pass category_id 7155 to get the full Wine Shop, or narrow results with a filters string (e.g. 7155-124 for red wines). Both endpoints return the same pagination envelope with current_page, total_pages, page_size, and total_count.
Wine Detail and Pricing Fields
get_wine_detail takes a numeric product_id — found in any wine.com product URL — and returns the fullest data shape in this API. Response fields include price and sale_price objects (each with currency, whole, fractional, and display), an images array, region, producer, a community_rating object with score and count, and a description field containing the full HTML product copy.
Curated Views
get_top_rated_wines and get_wines_on_sale are convenience endpoints that apply a fixed sort to the Wine Shop category. get_top_rated_wines returns wines ordered by rating descending — useful for editorial or recommendation features. get_wines_on_sale orders by savings amount descending and extends the standard wine object with a savings field alongside both price and sale_price, making discount calculations straightforward. Both support page for pagination.
The Wine API is a managed, monitored endpoint for wine.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wine.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wine.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a wine recommendation widget that surfaces top-rated bottles using
get_top_rated_winesand displayscommunity_rating.score. - Create a deal-alert service that monitors
get_wines_on_salefor bottles wheresavingscrosses a user-defined threshold. - Populate a wine database by paginating through
list_wineswithcategory_id7155 and collecting producer, region, and price fields. - Build a wine search feature for a food pairing app using
search_wineswith varietal queries like 'Pinot Noir' or 'Chardonnay'. - Render a detailed product card for any wine by fetching
get_wine_detailwith the product ID extracted from a wine.com URL. - Compare retail and sale prices for a wine portfolio tracker using the
priceandsale_priceobjects returned byget_wine_detail. - Filter red wines specifically by passing the
7155-124filter string tolist_winesfor category-scoped browsing.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Wine.com have an official developer API?+
What does `get_wine_detail` return beyond what search results include?+
get_wine_detail returns fields not always present in list/search results: the full HTML description, a sale_price object with currency and display formatting, and a community_rating object containing both a numeric score and a review count. The url field pointing to the product page is also only guaranteed here.How does category filtering work in `list_wines`?+
category_id (7155 for all wines) and optionally a filters string to narrow the result set. For example, passing filters: '7155-124' restricts results to red wines. The numeric filter codes correspond to facet values on Wine.com's category pages.Does the API return individual professional critic review text or just scores?+
reviews field with critic score data, but full review narrative text is not guaranteed across all products. get_wine_detail returns the most complete per-wine profile available. If you need structured critic review text as a separate endpoint, the current API does not include one — you can fork it on Parse and revise it to add that endpoint.