Endpoint Playground
Returns products from a public Shopify storefront. Valid empty result pages return `200` with an empty products array. `sortBy` and dynamic facet-filter query params (e.g. `fit`, `canonicalColour`) only take effect for headless storefronts (`transport_mode: "ssr_embedded"`) and return an invalid-param error if supplied against a classic store, since classic Shopify storefronts have no server-side sort or filter support. `sort_by`, `min_price`, `max_price`, `product_type`, `in_stock_only`, and `option_`-prefixed params (e.g. `option_size=Small,Medium`) drive a separate, independent mechanism -- Shopify's own native Storefront Filtering collection-page feature (`transport_mode: "storefront_filtered"`) -- which works for both classic and headless stores; supplying any of these takes precedence over sortBy/dynamic facet filters.
14 Oct 2026: 40 products; 14 fields had a value in every checked item and 3 varied between items.
Sample value profiles: published_at: 2026-09-25; product_type: Shoes (37), Apparel (2), Socks (1); price: 12 to 140, median 77.
curl 'https://api.crawlora.net/api/v1/shopify/products?url=https%3A%2F%2Fwww.allbirds.com&sortBy=sortLTH&sort_by=manual' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| url | string | Yes | https://www.allbirds.com | Shopify storefront URL |
| page | integer | No | 1-based page, defaults to 1 | |
| limit | integer | No | Maximum products, defaults to 50 and supports up to 250 | |
| sortBy | string | No | sortLTH | SSR-fallback transport only (transport_mode ssr_embedded). Allowed values: sortLTH, sortHTL, newest. Omit for the storefront's default relevancy order. Rejected as an invalid param for classic-transport stores. |
| sort_by | string | No | manual | Storefront-filtering transport. Allowed values: manual, best-selling, title-ascending, title-descending, price-ascending, price-descending, created-ascending, created-descending. Omit for the collection's own default order. |
| min_price | number | No | Storefront-filtering transport. Minimum price (inclusive), in the storefront's display currency's major unit. | |
| max_price | number | No | Storefront-filtering transport. Maximum price (inclusive), in the storefront's display currency's major unit. | |
| product_type | string | No | Storefront-filtering transport, comma-separated. Exact product-type display strings from the storefront's own Product Type facet -- see facets.product_type in an unfiltered response for the live value set. | |
| in_stock_only | boolean | No | Storefront-filtering transport. true restricts to currently in-stock items only. | |
| option_size | string | No | Storefront-filtering transport. Example dynamic variant-option filter: comma-separated exact display values for the storefront's own size option (e.g. option_size=Small,Medium). Any variant option name is accepted the same way (option_color, ...) -- see facets in an unfiltered response for the live option names/values per store. |
{
"code": 200,
"msg": "OK",
"data": {
"store_url": "https://www.allbirds.com",
"source_url": "https://www.allbirds.com",
"page": 1,
"limit": 2,
"products": [
{
"id": "7188363542608",
"handle": "mens-tree-runner-nz-natural-white",
"title": "Men's Tree Runner NZ - Natural White (Natural White Sole)",
"url": "https://www.allbirds.com/products/mens-tree-runner-nz-natural-white",
"price": 100,
"available": true
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.