Shopify Store API — Single Product in Full
Documentation menu
FetchLayer FetchLayer API

Get one product in full

Read everything a store publishes about a single product, from its URL or from its handle plus the store: the complete description in both plain text and HTML, every image with dimensions and alt text, the option matrix, and every variant with price, compare-at price, SKU, barcode, weight, taxability and stock. This is the only endpoint that returns inventoryQuantity, and only for stores that track inventory.

POST /product-detail Catalog
https://api.fetchlayer.dev/shopify-stores/product-detail
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

product string required

Product URL, or the product's handle as it appears in the URL.

store string optional

Required only when product is a handle rather than a full URL.

format string optional

json or markdown. Markdown returns the same result rendered for a model to read. (default: json)

timeoutMs number optional

Per-request time limit in milliseconds (max 120000).

Response Fields

product-detail

Get one product in full

requestedUrl string

The store URL this result corresponds to.

scrapedAt string

When the store was read, as an ISO timestamp.

transport string

Always shopify-storefront — the upstream source this data came from.

notes string[]

Caveats about this specific result: a truncated walk, an upstream limit, or a field this store does not publish. Read it before treating a result as complete.

resultType string

Always product-detail.

domain string

The store the product came from.

handle string

The resolved product handle.

product object

The full product record, or null when the store has no such product.

product.variants[].inventoryQuantity number

Units on hand, for stores that track and publish inventory. Null where they do not.

product.variantsTruncated boolean

True when the product carries more than the 250 variants the store publishes.

product.images[].downloadUrl string

Pass to GET /media to stream the image bytes through FetchLayer.

Request

curl -X POST "https://api.fetchlayer.dev/shopify-stores/product-detail" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"product":"https://allbirds.com/products/mens-tree-runners"}'

Response

{
  "resultType": "product-detail",
  "domain": "allbirds.com",
  "handle": "mens-tree-runners",
  "product": {
    "title": "Men's Tree Runners",
    "priceMin": "98.00",
    "currency": "USD",
    "variantCount": 24,
    "variants": [
      {
        "sku": "TR-M-10-NAT",
        "price": "98.00",
        "available": true,
        "inventoryQuantity": 112
      }
    ]
  },
  "notes": []
}