Mixam APImixam.co.uk ↗
Access Mixam's full print product catalogue, retrieve configuration schemas (sizes, papers, bindings), and get real-time pricing quotes via 4 API endpoints.
What is the Mixam API?
The Mixam.co.uk API exposes 4 endpoints covering the complete lifecycle of a print enquiry: discover every product in the catalogue via get_all_products_list, resolve internal identifiers with get_product_ids, fetch the full configuration schema including sizes, paper weights, binding types, and lamination options through get_product_config, and retrieve real-time pricing breakdowns with get_instant_quote.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/2e9bf3fd-6a90-4a40-8ed6-11936b16e6e3/get_all_products_list' \ -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-co-uk-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.mixam_uk_api import Mixam, Product, ProductIds, ProductConfig, Quote
mixam = Mixam(api_key="YOUR_API_KEY")
# List all available products
for product in mixam.catalogues.list():
print(product.name, product.slug)
# Get internal IDs for a specific product
booklet = mixam.product("/booklets")
ids = booklet.ids()
print(ids.product_id, ids.sub_product_id)
# Retrieve configuration options using those IDs
config = mixam.productconfigs.get(
product_id=ids.product_id,
sub_product_id=ids.sub_product_id,
)
for size in config.standard_sizes:
print(size.name, size.label, size.width, size.height)
for substrate in config.substrate_types:
print(substrate.label, substrate.substrate_type)
# Get a pricing quote using the initial specification template
quote = mixam.quotes.create(spec={
"subProductId": 100009,
"itemSpecification": config.initial_specification,
"santaType": "QUOTE",
})
print(quote.total_price, quote.currency, quote.copies)
print(quote.item_description, quote.center, quote.print_type)
for offer in quote.offer_table:
print(offer.price, offer.days, offer.price_type, offer.is_best_price)
Retrieve the full catalogue of print products available on Mixam.co.uk. Each product includes its display name, URL slug (used as input for get_product_ids), and full URL. No pagination — returns all products in a single response.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer count of products",
"products": "array of product objects with name, slug, and url"
},
"sample": {
"data": {
"total": 66,
"products": [
{
"url": "https://mixam.co.uk/booklets",
"name": "Booklets",
"slug": "/booklets"
},
{
"url": "https://mixam.co.uk/hardcoverbooks",
"name": "Hardcover Books",
"slug": "/hardcoverbooks"
}
]
},
"status": "success"
}
}About the Mixam API
Product Discovery and Identifier Resolution
get_all_products_list returns every print product Mixam offers in a single response — no pagination required. Each entry includes a human-readable name, a slug (e.g. /booklets, /flyers), and a full url. The slug value feeds directly into get_product_ids, which resolves the internal productId and subProductId strings that all downstream endpoints require. These numeric identifiers are not guessable from the slug alone, so this two-step resolution is necessary before querying configuration or pricing.
Configuration Schema
get_product_config accepts product_id and sub_product_id and returns the complete specification matrix for that product. Response fields include standardSizes (format codes and dimensions), substrateTypes (paper types such as Silk, Gloss, and Uncoated, each with weight sub-options), boundMetadata (binding type options, page increments, edge options), coloursMetadata, laminationMetadata for front and cover surfaces, and coverSubstrateTypes. Critically, the response also contains initialSpecification — a pre-filled template object that can be passed directly to get_instant_quote after adjusting the desired options.
Real-Time Pricing
get_instant_quote accepts a spec object structured around Mixam's offer format: top-level keys are subProductId, itemSpecification (containing copies, product, a components array, and bound), and santaType. The response includes an offerTable array listing multiple pricing options, each with price, days, priceType, center, and delivery details. Additional top-level fields — totalPrice, deliveryDate (Unix timestamp in ms), currency, printType, weight, and itemDescription — give a complete picture of the best-value quote for the requested specification.
The Mixam API is a managed, monitored endpoint for mixam.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mixam.co.uk 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.co.uk 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 that pulls live Mixam prices for booklets, flyers, or hardcover books by quantity.
- Enumerate all available paper weights and sizes for a given product to populate a product configurator UI.
- Compare delivery timelines across Mixam's print centres by inspecting the
offerTabledays and center fields. - Automate quote generation for a print reseller by programmatically iterating configurations from get_product_config.
- Extract the full Mixam product catalogue to build a searchable internal directory of available print formats.
- Validate that a specific binding type and paper combination is supported before submitting an order workflow.
| 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 public developer API?+
What does get_instant_quote return beyond a single price?+
get_instant_quote returns an offerTable array with multiple pricing options, each including price, days to delivery, priceType, center (print facility name), and delivery details. It also returns totalPrice, deliveryDate as a millisecond timestamp, currency, printType (e.g. DIGITAL), weight in kg, and an itemDescription string summarising the quoted job.Does get_all_products_list paginate or require filters?+
total count and a products array. Every product's name, slug, and url are included.