Discover/Custom Ink API
live

Custom Ink APIcustomink.com ↗

Search Custom Ink's decorated-apparel catalog, retrieve product details with colors and sizes, and price full orders including volume discounts and shipping options.

Endpoint health
verified 1h ago
get_volume_pricing
search_products
get_product
get_quote
4/4 passing latest checkself-healing
Endpoints
4
Updated
1h ago

What is the Custom Ink API?

The Custom Ink API exposes 4 endpoints covering the full pre-purchase workflow on customink.com: catalog search, product detail, volume pricing tables, and itemized order quotes. Use search_products to find styles by name, brand, or category, then pull per-color stock status, imprint dimensions, and quantity-tier pricing. The get_quote endpoint returns a complete breakdown — list price, total price, shipping options with delivery dates, and a nearby-quantity price grid — before any cart or checkout step.

This call costs5 credits / call— charged only on success
Try it
1-based results page.
Exact brand name to restrict results to, as returned in products[*].brand (e.g. Gildan). Omitted = all brands.
Free-text search: product name, brand, or category words.
Results per page; values above 50 are clamped to 50.
→ api.parse.bot/scraper/1e1f91bd-94d8-4346-9d5c-99cab7d98b7c/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/1e1f91bd-94d8-4346-9d5c-99cab7d98b7c/search_products?query=Bella+Canvas+Jersey+T-Shirt' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 customink-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: Custom Ink catalog search, product detail, and pricing."""
from parse_apis.customink_com_api import CustomInk, InputNotFound

client = CustomInk()

# Search the catalog for t-shirts; cap total items fetched.
for summary in client.product_summaries.search(query="Bella Canvas Jersey T-Shirt", limit=3):
    print(summary.name, summary.brand, f"${summary.price_floor}–${summary.price_ceiling}")

# Drill into the first search hit for full product detail.
summary = client.product_summaries.search(query="cotton polo", limit=1).first()
if summary is not None:
    product = summary.details()
    print(product.name, product.description[:80])
    print("Sizes:", product.sizes)
    print("Turn times:", product.turn_time_days.standard, "standard /", product.turn_time_days.rush, "rush days")

    # Pick the first color to price a volume comparison.
    color = product.colors[0]
    pricing = client.volume_pricing.get(
        color_id=color.color_id,
        quantities="12,24,48",
        postal_code="22031",
    )
    for tier in pricing.tiers:
        print(f"  Qty {tier.quantity}: ${tier.unit_price}/ea  (save {tier.savings_percent}%)")

    # Get a full quote for 12 medium shirts in that color.
    try:
        quote = client.quotes.get(
            color_id=color.color_id,
            sizes="M:12",
            postal_code="22031",
        )
        print(f"Quote total: ${quote.total_price} ({quote.quantity} items)")
        print(f"Shipping (standard): {quote.shipping.standard.charge}, delivers {quote.shipping.standard.delivery_date}")
    except InputNotFound:
        print("Color/size combination not available for quoting.")

print("exercised: product_summaries.search / details / products.get (via details) / volume_pricing.get / quotes.get")
All endpoints · 4 totalmissing one? ·

Searches the Custom Ink catalog by free text (product name, brand, or category words) and returns one row per product style with summary fields: brand, product type, decoration method, print areas, minimum quantity, sizes, available colors (with per-size stock status), price floor/ceiling and the default volume price table (unit price by quantity tier, with regular/list unit price where the site publishes one). Paginated: page (1-based) and hits_per_page (max 50) are the caller's paging controls; total_results/total_pages/has_more describe the full result set. Optional brand restricts results to an exact brand facet value as it appears in results (e.g. the brand field of a previous result). Very generic or misspelled queries may still return loosely matched products because the site's search relaxes unmatched words; an empty products array is a valid result. product_id is the key for get_product; colors[*].color_id is the key for the pricing endpoints.

Input
ParamTypeDescription
pageinteger1-based results page.
brandstringExact brand name to restrict results to, as returned in products[*].brand (e.g. Gildan). Omitted = all brands.
queryrequiredstringFree-text search: product name, brand, or category words.
hits_per_pageintegerResults per page; values above 50 are clamped to 50.
Response
{
  "type": "object",
  "fields": {
    "page": "1-based page returned",
    "query": "echo of the search text",
    "has_more": "true when a later page exists",
    "products": "array of product summaries: product_id (string style id), name, brand, product_type, category, categories, decoration_method, decoration_labels, print_areas, minimum_quantity, no_minimum, sizes, color_count, colors[] (color_id, name, rgb {r,g,b}, min_qty, sizes[] with stock_status in|low|out), price_floor, price_ceiling, volume_prices[] (quantity, unit_price, regular_unit_price or null), standard_turn_days, rush_turn_days, rating, rating_count, material, status, url, image_url",
    "total_pages": "number of pages at this page size",
    "hits_per_page": "page size applied",
    "total_results": "total matching products across all pages (site count)"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "Bella Canvas Jersey T-Shirt",
      "has_more": true,
      "products": [
        {
          "url": "https://www.customink.com/products/t-shirts/short-sleeve-t-shirts/bella-+-canvas-jersey-t-shirt/124200",
          "name": "Bella + Canvas Jersey T-shirt",
          "brand": "Bella + Canvas",
          "sizes": [
            "YS",
            "YM",
            "YL",
            "YXL",
            "XS",
            "S",
            "M",
            "L",
            "XL",
            "XXL",
            "XXXL",
            "XXXXL"
          ],
          "colors": [
            {
              "rgb": {
                "b": 255,
                "g": 255,
                "r": 255
              },
              "name": "White",
              "sizes": [
                {
                  "name": "YS",
                  "stock_status": "in"
                },
                {
                  "name": "XXXXL",
                  "stock_status": "low"
                }
              ],
              "min_qty": 1,
              "color_id": "124200"
            }
          ],
          "rating": 4.54,
          "status": "active",
          "category": "Short Sleeve T-shirts",
          "material": "* 4.2 oz. 100% pre-shrunk combed ringspun cotton jersey; Heather colors are poly/cotton blends",
          "image_url": "https://mms-images.out.customink.com/mms/images/catalog/5c410d83cdf5db186769b89c339dbbd5/styles/124200/catalog_detail_image_medium.jpg",
          "categories": [
            "Base Price Under $25",
            "10+ People",
            "Short Sleeve T-shirts"
          ],
          "no_minimum": true,
          "product_id": "124200",
          "color_count": 151,
          "price_floor": 11.35,
          "print_areas": [
            "Front",
            "Back",
            "Left Sleeve",
            "Right Sleeve"
          ],
          "product_type": "Unisex",
          "rating_count": 14969,
          "price_ceiling": 36.45,
          "volume_prices": [
            {
              "quantity": 1,
              "unit_price": 36.25,
              "regular_unit_price": 36.25
            },
            {
              "quantity": 12,
              "unit_price": 16.28,
              "regular_unit_price": 19.15
            },
            {
              "quantity": 500,
              "unit_price": 11.95,
              "regular_unit_price": 11.95
            }
          ],
          "rush_turn_days": 7,
          "minimum_quantity": 6,
          "decoration_labels": [
            "Printed"
          ],
          "decoration_method": "screen",
          "standard_turn_days": 14
        }
      ],
      "total_pages": 6,
      "hits_per_page": 5,
      "total_results": 30
    },
    "status": "success"
  }
}

About the Custom Ink API

Catalog Search and Product Detail

search_products accepts a free-text query plus an optional brand filter and returns up to 50 results per page (capped at 50 regardless of hits_per_page). Each row in products[] includes product_id, brand, product_type, decoration_method, available colors with per-size stock status, and a price floor. Use page and total_pages to paginate. Once you have a product_id, pass it to get_product to receive the full style record: material, fit, features, all active colors (each with rgb, color_family, and sizes[] carrying status and stock_status), maximum imprint dimensions per print location (front, back, sleeves) in inches, placement guidelines, color_limit (max ink colors; 0 = unlimited), and the default volume_prices table by quantity tier.

Pricing Endpoints

get_volume_pricing takes a color_id, up to 12 comma-separated quantities, front_colors, back_colors, and a postal_code (US ZIP or Canadian postal code). It returns one tiers[] entry per requested quantity: unit_price, total_price, savings_percent versus single-item price, and the site-resolved ship_to_state. The best_volume_unit_price field tells you the lowest unit price the site reports for the configuration across all tiers.

get_quote prices a specific order at the size/quantity level. Pass sizes as SIZE:QTY pairs (e.g. M:12,L:12,XL:6) alongside color_id, ink-color counts per location (front_colors, back_colors, sleeve_colors), optional personalization counts (name_count, number_count), and postal_code. The response contains list_price (pre-discount), total_price (standard delivery included, taxes excluded), a shipping object with standard/rush/super_rush objects each carrying turn_time_days, delivery_date (ISO date), charge, and order_by_deadline, plus a price_grid showing totals at nearby larger quantities and caveats strings the site surfaces.

Coverage Notes

All four endpoints are read-only. The API covers the decorated-apparel catalog including T-shirts, sweatshirts, hats, and related styles available on customink.com. It does not include cart creation, order placement, or account operations.

Reliability & maintenanceVerified

The Custom Ink API is a managed, monitored endpoint for customink.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when customink.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 customink.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.

Last verified
1h ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Compare unit prices across Gildan, Next Level, and Bella+Canvas at a fixed quantity by filtering search_products by brand and calling get_volume_pricing for each result.
  • Build a bulk-order cost estimator that resolves shipping delivery dates and surcharges for US and Canadian ZIP codes via get_quote.
  • Display per-color stock availability at each size from get_product.colors[*].sizes[*].stock_status before letting users choose a color.
  • Surface imprint area constraints (max dimensions per print location from get_product) in a custom design tool to enforce safe artwork sizing.
  • Generate a price comparison table across order quantities using get_volume_pricing with up to 12 quantity tiers in a single call.
  • Populate a product configurator with color swatches using rgb values and color_family from get_product.colors.
  • Estimate personalization upcharges for team uniforms by setting name_count and number_count in get_quote and comparing the returned total_price.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Custom Ink have an official public developer API?+
Custom Ink does not publish a public developer API or API documentation for third-party access to its catalog or pricing data.
What does `get_quote` return that `get_volume_pricing` does not?+
get_volume_pricing returns unit and total prices at multiple quantities for a single color without size breakdown. get_quote accepts per-size quantities via sizes (e.g. M:12,L:12,XL:6), ink colors per location including sleeve, optional personalization counts, and returns a full itemized breakdown: list_price, total_price, a shipping object with delivery dates and rush options, price_grid at nearby quantities, setup_fee, and site caveats.
Are there limits on the quantities I can request in `get_volume_pricing`?+
Yes. The quantities parameter accepts a comma-separated list of up to 12 positive integer values per call. Requests with more than 12 values will be clamped or rejected. There is no stated minimum quantity, but Custom Ink's catalog enforces its own minimum order quantities which are reflected in the min_quantity field on product records.
Does the API cover ordering, cart management, or account data?+
No. The API is read-only and covers catalog search, product detail, volume pricing, and order quoting only. Cart creation, order submission, order status, and account operations are not included. You can fork this API on Parse and revise it to add endpoints for those capabilities if the underlying data is accessible.
Can I retrieve customer reviews or ratings for products?+
Not currently. The API covers product attributes, color and size availability, imprint specifications, and pricing. Review text, star ratings, and review counts are not part of any endpoint response. You can fork this API on Parse and revise it to add a reviews endpoint.
Page content last updated . Spec covers 4 endpoints from customink.com.
Related APIs in EcommerceSee all →
customlids.com API
Access data from customlids.com.
vistaprint.com API
Search and browse Vistaprint's catalog of 5,800+ products across business cards, promotional items, clothing, signage, and packaging, with instant access to product names, quantities, pricing, and detailed specifications. Filter by category or search for specific items to compare options and get complete product information for your ordering decisions.
stickermule.com API
Access data from stickermule.com.
inkarto.com API
Browse and shop stationery and art supplies from Inkarto by viewing detailed product information, exploring collections and categories, and adding items directly to your cart. Get instant access to product details and organize your shopping all in one place.
teepublic.com API
Search and browse products from TeePublic's print-on-demand marketplace, discover artists and their designs, and explore product types and featured creators. Get detailed information about specific products, artist profiles, and curated collections to find the perfect custom apparel and merchandise.
swaghq.com API
Browse SwagHQ's complete product catalog by category or brand, search for specific items, and view detailed product information including color variants, inventory levels by size, quantity-based pricing, and logo customization options. Easily navigate paginated product collections with filtering to find exactly what you need.
quince.com API
Search and browse Quince's product catalog across women's clothing and all other categories, getting detailed information like prices, descriptions, and availability for each item. Explore product categories to discover collections and find exactly what you're looking for on Quince.
sanmar.com API
Search SanMar's product catalog to browse t-shirts and other apparel by category, view detailed product information including sizes and MSRP pricing. Access wholesale pricing and real-time inventory data with a B2B account.