Bambu Lab APIau.store.bambulab.com ↗
Track Bambu Lab AU store prices, sales, and inventory across printers, filaments, and accessories. 8 endpoints covering search, product details, and promotions.
What is the Bambu Lab API?
This API exposes 8 endpoints covering the Bambu Lab Australian official store, returning product prices, stock status, sale discounts, and navigation structure for printers, filaments, and accessories. The get_product_details endpoint returns full variant-level data including SKU, availability, strikethrough price, and schema.org-structured product metadata. The get_sale_products endpoint computes discount amounts and percentages automatically, so you can sort and filter deals without any client-side math.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/726e4d9e-fb52-44dd-ab17-a1c5b800dc2a/get_homepage_announcements' \ -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 au-store-bambulab-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.bambu_lab_store_api import BambuLab, Product, ProductDetail, SaleProduct, NavigationItem
client = BambuLab()
# Search for printer products with pagination
for product in client.products.search(query="printer"):
print(product.name, product.lower_price, product.currency, product.is_new)
# Get full details for a specific product via sub-resource navigation
a1_mini = client.product("a1-mini")
detail = a1_mini.details.get()
print(detail.name, detail.description, detail.url)
for variant in detail.has_variant:
print(variant.sku, variant.name, variant.offers.price, variant.offers.availability)
# Check current sale products sorted by discount
for deal in client.saleproducts.list():
print(deal.name, deal.discount_percentage, deal.discount_amount)
Retrieve the store's top-level navigation bar including categories, promotions, sale banners, and featured product links. Each navigation item carries a label, link, optional image, children, and groups. Useful for discovering current promotions and store structure without searching.
No input parameters required.
{
"type": "object",
"fields": {
"navigation": "array of navigation category objects with label, link, children, groups, imageUrl, description, isNew, tag, and seoCode"
},
"sample": {
"data": {
"navigation": [
{
"key": "1740789670554",
"tag": "Sale",
"link": "/collections/sale",
"isNew": 0,
"label": "Sale",
"groups": [],
"seoCode": null,
"children": [
{
"key": "1750429720388",
"link": "/pages/promotions/filament-bulk-sale",
"label": "Filament Sale",
"groups": [],
"children": []
}
],
"imageUrl": "https://store.bblcdn.com/s7/default/23ce27a948c544b0a007a403e7d8cd92/ccd5218a85b541d08275a257d0919015.png",
"imageSize": 1,
"description": null
}
]
},
"status": "success"
}
}About the Bambu Lab API
Product Search and Catalog
The search_products endpoint accepts a query string, page, and size parameters and returns paginated results including id, seoCode, name, lowerPrice, price, currency, mediaFiles, outOfStockMsg, isNew, and eta. Passing an empty query returns all catalog products. The get_all_products endpoint fetches up to 100 products in a single call, useful for a full inventory snapshot. Both endpoints return seoCode values that serve as slugs for the get_product_details endpoint.
Product Detail and Variants
get_product_details takes a slug (the seoCode from search results, e.g. h2d, p1s, a1-mini) and returns a structured response including name, description, brand, productGroupID, and a hasVariant array. Each variant carries sku, name, image, and an offers object with price, priceCurrency, availability (InStock or OutOfStock), and priceSpecification which includes the original (strikethrough) price. This makes it straightforward to detect per-variant price drops.
Category-Specific Endpoints
Dedicated endpoints exist for get_all_printers, get_all_filaments, and get_accessories. The filament endpoint additionally returns a colorList field per product, useful for color variant enumeration. All three return pages and total fields for pagination awareness. The get_sale_products endpoint adds computed discount_amount and discount_percentage fields to each record, sorted by highest discount first.
Navigation and Promotions
get_homepage_announcements returns the full navigation tree without any input parameters. Each navigation item includes label, link, children, groups, imageUrl, description, isNew, tag, and seoCode. This is useful for detecting newly featured categories, promotional banners, or structural changes to the store's lineup without needing to monitor individual product pages.
The Bambu Lab API is a managed, monitored endpoint for au.store.bambulab.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when au.store.bambulab.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 au.store.bambulab.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?+
- Alert when a specific printer SKU transitions from OutOfStock to InStock using
get_product_detailsavailability fields - Track historical price changes by polling
lowerPricevspriceacross the full catalog viaget_all_products - Build a deal aggregator sorted by
discount_percentagefromget_sale_products - Monitor
isNewflags insearch_productsresults to detect newly listed products - Enumerate all available filament colors by reading
colorListfromget_all_filaments - Detect new promotional categories by diffing the navigation tree returned by
get_homepage_announcements - Compare variant-level prices including strikethrough via
priceSpecificationinget_product_detailshasVariant
| 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 Bambu Lab have an official developer API for its store?+
How does `get_product_details` distinguish between a current sale price and the regular price?+
hasVariant array includes an offers object with a price field (current price) and a priceSpecification object that contains the original pre-discount price. If price is lower than the value in priceSpecification, the variant is on sale. availability is also per-variant, so a product can have some variants in stock and others out of stock simultaneously.Does the API cover customer reviews or product ratings for Bambu Lab store items?+
Is pagination supported, and how does it work across endpoints?+
search_products endpoint accepts page (1-based) and size parameters and returns pages, total, current, and size fields in the response so you can walk all result pages. The category endpoints (get_all_printers, get_all_filaments, get_accessories) return pages and total but do not currently expose page/size inputs. get_all_products fetches up to 100 products in one call with no pagination parameters.