Mixam APImixam.com ↗
Get real-time print pricing quotes and product metadata from Mixam.com. Discover all product types, substrate options, and volume discount tiers via 4 endpoints.
What is the Mixam API?
The Mixam API provides 4 endpoints for retrieving print product data and real-time pricing from Mixam.com. Use get_all_products to enumerate every available product and sub-product ID, then drill into configuration metadata — substrate types, binding options, sizes, and copy limits — or request live quotes for single quantities and volume pricing tiers across multiple print centers.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/746a1ab1-4832-4131-b609-1f1a1a66bff3/get_all_products' \ -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 mixam-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.
"""Mixam Printing API — discover products, get quotes, compare volume pricing."""
from parse_apis.mixam_printing_api import Mixam, ProductNotFound
client = Mixam()
# List all available print products (capped to 5 for brevity)
for product in client.products.list(limit=5):
print(product.name, product.product_id, product.sub_product_id)
# Take the first product and drill into its full detail
product = client.products.list(limit=1).first()
if product:
detail = product.detail()
print(detail.product_name, detail.copies_metadata)
# Get a price quote for 250 copies
if product:
quote = product.quote(copies=250)
print(quote.total, quote.item_description)
for offer in quote.offer_table[:3]:
print(offer.price, offer.days, offer.center, offer.is_best_price)
# Compare volume pricing across tiers
if product:
volume = product.volume_pricing(tiers="[50, 100, 500]")
for qty, tier_quote in volume.tiers.items():
print(qty, tier_quote.total, tier_quote.currency.prefix)
# Typed error handling for an invalid product ID
try:
bad_detail = client.productdetails.get(product_id=99999)
print(bad_detail.product_name)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.list / product.detail / product.quote / product.volume_pricing / productdetails.get")Returns all available print product types and their IDs by scanning known product ID ranges. Includes both primary products (Booklets, Flyers, Posters, etc.) and sub-product variations (Magazines, Catalogs, Zines, etc.). No input required. The returned product IDs are used as input to all other endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"products": "array of product objects each containing productId, subProductId, and name"
},
"sample": {
"data": {
"products": [
{
"name": "Booklets",
"productId": 1,
"subProductId": 0
},
{
"name": "Flyers",
"productId": 2,
"subProductId": 0
},
{
"name": "Posters",
"productId": 4,
"subProductId": 0
},
{
"name": "Magazines",
"productId": 1,
"subProductId": 100007
}
]
},
"status": "success"
}
}About the Mixam API
Product Discovery and Configuration
The get_all_products endpoint returns the full catalog of print product types as an array of objects, each containing a productId, subProductId, and name. These IDs are the required inputs for every other endpoint. get_product_detail accepts a product_id (and an optional sub_product_id for variations like Magazines) and returns structured metadata including standardSizes with physical dimensions, copiesMetadata with minimumValue, maximumValue, stepValue, and unitType, substrateTypes with paper weights and page counts, and boundMetadata covering binding type options, page increments, and edge options.
Real-Time Pricing
get_product_quote returns a live price quote for a specific product and copy count. The response includes a total in local currency, a currency object with currencyCode and prefix, an itemDescription string, and an offerTable array. Each offer in the table carries a price, estimated days, copies, center (the fulfilling print facility), and delivery details — giving you a side-by-side view of cost and lead time across print centers.
Volume Pricing Tiers
get_volume_pricing_tiers accepts a tiers parameter as a JSON array of integer quantities — for example [50, 100, 250, 500] — and returns a response keyed by quantity string. Each key maps to a full quote object with its own total, offerTable, currency, and itemDescription. This lets you compare per-unit costs across quantity breaks in a single call. If the tiers parameter is omitted, the endpoint defaults to quantities of 25, 50, and 100.
Coverage Notes
All endpoints are stateless and require no session or account. Product IDs and sub-product IDs must be obtained from get_all_products first — they are not stable guesses and the endpoint scans known ID ranges to populate them. Quotes reflect Mixam's current live pricing and available print centers at request time.
The Mixam API is a managed, monitored endpoint for mixam.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mixam.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 mixam.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 print cost estimator widget that calls
get_product_quotefor booklets, flyers, or magazines and displays per-center pricing. - Generate a volume discount table for a client proposal by passing custom quantity arrays to
get_volume_pricing_tiers. - Populate a product configurator UI with substrate types, sizes, and binding options from
get_product_detail. - Compare delivery lead times across Mixam print centers using the
daysandcenterfields in theofferTable. - Monitor Mixam's print catalog changes over time by periodically calling
get_all_productsand diffing the returned product list. - Calculate the break-even quantity for a print run by iterating volume tiers and comparing
totalvalues across tier keys.
| 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 Mixam have an official developer API?+
What does the offerTable in a quote response actually contain?+
offerTable array includes a price, estimated delivery days, copies count, the center name identifying which print facility would fulfill the order, and delivery details. This lets you see how cost and lead time vary across Mixam's fulfillment network for the same specification.Does the API expose custom size configurations or only standard sizes?+
standardSizes from get_product_detail and uses default specifications when building quotes. Custom size inputs and fully parameterized quote configurations — such as specifying an arbitrary trim size, page count, or substrate weight — are not currently covered. You can fork the API on Parse and revise it to add those configuration parameters to the quote endpoints.Can I retrieve order history, account details, or saved jobs from Mixam?+
get_all_products, get_product_detail, get_product_quote, and get_volume_pricing_tiers. You can fork the API on Parse and revise it to add endpoints targeting other Mixam page types if needed.How fresh are the pricing quotes returned by the API?+
get_product_quote and get_volume_pricing_tiers reflect Mixam's live pricing at the time of the request. Prices can change based on Mixam's current rates, promotions, and available print center capacity, so quotes should not be cached for extended periods if accuracy matters.