Baccarat APIbaccarat.com ↗
Search and browse Baccarat's luxury crystal catalog. Get product details, category listings, navigation structure, and store locator data via 5 endpoints.
What is the Baccarat API?
The Baccarat.com API provides 5 endpoints to search and browse Baccarat's full crystal product catalog, retrieve detailed product specifications, and explore site navigation categories. The get_product_detail endpoint returns physical attributes like height, weight, material, designer, and color variations alongside structured schema.org data. Use search_products to query by keyword or get_category_products to paginate through category-specific listings using IDs from get_navigation_categories.
curl -X GET 'https://api.parse.bot/scraper/57adbf4a-dd9a-4bbf-87ab-f533659637bb/search_products?limit=18&query=vase&start=0' \ -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 baccarat-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.
"""Walkthrough: Baccarat SDK — browse luxury crystal catalog, search, and drill into details."""
from parse_apis.baccarat_api import Baccarat, CategoryId, ProductNotFound
client = Baccarat()
# Search for crystal vases — limit caps total items fetched.
for product in client.products.search(query="vase", limit=5):
print(product.name, product.price, product.currency)
# Browse a category by constructing it from its ID.
category = client.category(cgid=CategoryId.HOME_DECOR)
for item in category.products(limit=3):
print(item.name, item.brand, item.badge)
# Drill into a single product's full details.
first_product = client.products.search(query="crystal", limit=1).first()
if first_product:
detail = client.productdetails.get(url=first_product.url)
print(detail.name, detail.price)
for variation in detail.variations:
print(variation.color, variation.id)
# List navigation categories.
for cat in client.categories.list(limit=5):
print(cat.name, cat.cgid, len(cat.subcategories))
# Typed error handling for a missing product.
try:
client.productdetails.get(url="https://www.baccarat.com/en_us/nonexistent-product.html")
except ProductNotFound as exc:
print(f"Product gone: {exc.url}")
# Store locator.
store = client.storelocators.get()
print(store.store_locator_url, store.message)
print("exercised: products.search / category.products / productdetails.get / categories.list / storelocators.get")
Full-text search over Baccarat's product catalog. Returns a paginated list of matching products. Pagination advances via the start offset; each page returns up to limit items.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results to return per page. |
| queryrequired | string | Search keyword (e.g. 'vase', 'crystal', 'rouge 540'). |
| start | integer | Pagination offset (number of items to skip). |
{
"type": "object",
"fields": {
"limit": "integer, page size used",
"start": "integer, pagination offset used",
"products": "array of product objects with name, id, sku, price, currency, brand, category, subcategory, subsubcategory, url, and badge",
"total_count": "integer, number of products returned in this response"
},
"sample": {
"data": {
"limit": 18,
"start": 0,
"products": [
{
"id": "2613138",
"sku": null,
"url": "https://www.baccarat.com/en_us/home-decor/fine-pieces/vases/flora-bud-vase-2613138.html",
"name": "Flora Bud Vase",
"brand": "BACCARAT",
"price": 200,
"category": "Home Decor",
"currency": "USD",
"subcategory": "Fine Pieces",
"subsubcategory": "Vases"
}
],
"total_count": 18
},
"status": "success"
}
}About the Baccarat API
Product Search and Category Browsing
The search_products endpoint accepts a required query string (e.g. 'rouge 540', 'vase', 'crystal') and returns paginated results. Each product object in the products array includes name, id, sku, price, currency, brand, category, subcategory, subsubcategory, url, and badge. Pagination is controlled via start (offset) and limit (page size). The total_count field reports the number of items returned in the current page, not the catalog total.
get_category_products works similarly but scopes results to a single category. It requires a category_id such as 'gifts', 'barware-dining', 'fragrance', or 'home-decor'. Category IDs are sourced from get_navigation_categories, which returns the full site navigation tree: an array of category objects each containing name, url, cgid, and a subcategories array. This makes it straightforward to enumerate all browsable paths before querying products.
Product Detail
get_product_detail takes a full product url (obtainable from search or category results) and returns a richer payload than the list endpoints. The attributes object contains physical specs: height, width, weight, material, color, made_in, year_of_creation, and designer. The images array lists all product image URLs. The variations array includes alternate color options, each with its own id, color, url, and image. A json_ld object carries structured schema.org Product data as parsed from the page.
Store Locator
The find_store endpoint takes no inputs and returns a store_locator_url pointing to Baccarat's official boutique and retailer finder, along with an informational message. It does not return individual store records or geocoordinates — it surfaces the locator entry point for users to find nearby points of sale.
The Baccarat API is a managed, monitored endpoint for baccarat.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when baccarat.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 baccarat.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 price-tracking tool that monitors Baccarat product prices by polling
search_productswith specific collection keywords. - Generate a structured product feed for a luxury gift guide using
get_category_productswith the'gifts'category ID. - Populate a product comparison page with physical specs (height, weight, material, designer) from
get_product_detail. - Crawl the full catalog hierarchy using
get_navigation_categoriesto enumerate allcgidvalues before paginating each category. - Display color variations for a product listing by reading the
variationsarray fromget_product_detail. - Index Baccarat products for a luxury goods search engine using the
name,sku,category, andurlfields from search results. - Drive a store-finder feature by linking users to the locator URL returned by
find_store.
| 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 Baccarat offer an official developer API?+
What does `get_navigation_categories` return and how is it used with other endpoints?+
get_navigation_categories returns a categories array where each item includes a name, url, cgid (category ID), and a subcategories array. The cgid values map directly to the category_id parameter in get_category_products, so you can enumerate the full navigation tree first and then fetch products for any branch.Does `search_products` return the total catalog count across all pages?+
total_count field in the response reflects the number of products returned in the current page, not an aggregate count across all results. To iterate through more items, increment the start offset by the limit value until you receive fewer items than the page size.Does the API return customer reviews or ratings for products?+
get_product_detail returns product descriptions, physical attributes, images, color variations, and schema.org data, but does not include customer review text or star ratings. You can fork this API on Parse and revise it to add a reviews endpoint if that data is accessible on the product page.Does `find_store` return individual store locations with addresses or coordinates?+
find_store returns a single store_locator_url pointing to Baccarat's official store finder and an informational message — it does not return structured store records with addresses, hours, or geocoordinates. You can fork this API on Parse and revise it to add an endpoint that parses individual store listings.