Open data

Print-on-demand cost data, free to use

Every price on this site in one JSON file: what each supplier charges to print and ship each product in the US, with the source and check time of every figure. No key or account, licensed CC BY 4.0.

records
296
products
145
suppliers compared
12
last checked
Oct 4, 2026
Get the data

One JSON file, no key

GET https://bestprintondemand.co/data.json

Format
JSON in UTF-8: one object whose records array holds one record per supplier offer, a product printed one way by one supplier.
Access
A plain GET. No key, no account, and open to scripts on any site (CORS).
Freshness
Printful and Printify prices are re-checked in rotating hourly batches and Gelato's about every six hours; other suppliers' prices are checked by hand and dated. The file is cached for up to 15 minutes.
License
CC BY 4.0: reuse it anywhere, crediting BestPrintOnDemand and linking the page or source a figure came from.

Every supplier's landed total for one product, cheapest first:

curl -s https://bestprintondemand.co/data.json | jq '[.records[] | select(.product.slug == "unisex-tee" and .landedUsd != null) | {supplier: .supplier.name, landedUsd}] | sort_by(.landedUsd)'

Field guide

What each record holds

The file repeats this list as fields. Around the records it states its license, how each automatic feed is checked (priceCoverage) and when the prices were last checked (dateModified).

product.keystring
Stable product identifier.
product.namestring
Product name as the site shows it.
product.slugstring
The product page's path segment.
product.categorystring
apparel, drinkware, accessories, wall-art or home.
product.urlURL
The product's page, with every supplier's cost side by side.
supplier.slugstring
Stable supplier identifier.
supplier.namestring
Supplier name.
variantstring
The exact variant the price is for, as its source names it.
blankModelstring or null
The blank model named in the priced variant (for example Bella+Canvas 3001); null when no single model is established.
fulfillmentstring
Print method: DTG, DTF, sublimation, embroidery, cut-sew and so on.
regionstring
Where the price delivers to (US).
currencystring
Always USD.
baseCostUsdnumber or null
The supplier's price for one item on its free plan, before shipping; null when no current price is published.
basePriceStatuspriced, unavailable or unverified
priced: a current price. unavailable: the source no longer lists a qualifying US price, so the previous one is withheld. unverified: no price has been confirmed.
shippingUsdnumber or null
First-item shipping to the US.
landedUsdnumber or null
baseCostUsd plus shippingUsd: one item delivered, before tax.
shippingEstimatedboolean
true when shippingUsd is an estimate (the median rate other suppliers publish for the same product or category), not the supplier's own rate.
planBaseCostUsdnumber or null
The supplier's own price for the same variant on its paid discount plan, read with the live price (today Printify Premium); null elsewhere.
priceBasisstring
How the base price was read, in words.
confidenceconfirmed, reported or unknown
confirmed: read from the supplier's own page, catalog or API. reported: a converted or starting price from another source. unknown: no price confirmed.
liveboolean
true when the base price comes from an automatic feed: Printful's or Printify's public catalog, or Gelato's quote API.
basePriceObservedAtdate
When the base price was observed: a timestamp for feed prices, a month (YYYY-MM) for prices checked by hand.
observedMonthdate
The same value as basePriceObservedAt, kept for older readers.
sourceUrlURL
The page or API response that states the base price.
shippingEvidence.kindoffer, category, estimate or unknown
Where shippingUsd comes from: the supplier's rate stated with this offer, its rate for the product type, an estimate, or none.
shippingEvidence.sourceUrlURL or null
The page that states the shipping rate.
shippingEvidence.observedAtdate or null
When the shipping rate was recorded.
shippingEvidence.notestring
What the shipping rate covers, in words.

A total is one item delivered in the US, before tax, marketplace fees and plan fees. How each figure is found and checked is on the methodology page.

Cite it

Dated copies for analysis and citation

Snapshots

CSV copies of the file, published on a stated date. The JSON above is always the current version; cite a snapshot when your figures must stay reproducible.

Cite as

BestPrintOnDemand (2026). Print-on-demand supplier costs (US) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.23102289

For AI assistants

Look up costs from an assistant (MCP)

An assistant that supports remote MCP servers (Claude, ChatGPT and Cursor do) can call these tools itself. Add the address as a custom connector; there is no account or key. It is listed in the official MCP Registry as co.bestprintondemand/print-on-demand-costs.

https://bestprintondemand.co/mcp

Find print-on-demand products

find_products

Search the catalog of print-on-demand products (t-shirts, hoodies, mugs, posters, stickers, phone cases, tote bags and more, or a blank such as Bella+Canvas 3001). Returns each match's slug, its lowest listed US total and supplier, and its page.

querystring, required
Product type or blank, e.g. "hoodie", "11oz mug", "Bella+Canvas 3001".
limitinteger
Most results to return (default 10).

Get a product's costs by supplier

get_product_costs

Every supplier's listed US cost for one print-on-demand product: base price, first-item shipping and total, each with its source and date, cheapest first, plus the site's one-sentence answer on which supplier is cheapest like for like. Give sell_price (and optionally a sales channel) to get each supplier's profit after fees.

productstring, required
Product slug from find_products (e.g. "unisex-tee") or its name.
sell_pricenumber
Your sell price in USD, to compute profit per supplier.
channelstring
Sales channel whose fees to subtract: etsy, shopify-own, woocommerce, tiktok-shop, walmart, ebay or amazon-seller.
buyer_pays_shippingboolean
True when the buyer pays shipping on top of the sell price (default false: you cover shipping).

Compare two print-on-demand suppliers

compare_suppliers

Which of two suppliers (e.g. Printful and Printify) has the lower listed US total across the products both offer, matched on product, print method and blank, with the record by category and the largest gaps.

supplier_astring, required
A supplier name or slug, e.g. "Printful".
supplier_bstring, required
Another supplier, e.g. "Printify".

Read-only, at most 60 calls a minute from one address. Each answer links the page it comes from and every figure's source.

The data describes listed starting costs, not a quote for your order: sizes, colors, print areas and plans change the price. Confirm the final price on the supplier's own page before you sell.