# Shopify API

> Shopify returns public store products, prices, and availability as a workflow and API.

Shopify lists publicly published store products, prices, and availability; provide a store website or page, with optional name or collection filters. Get store product returns product details, options, and variants; provide a store or product page link and, optionally, a product name.

- Page: https://fous.com/tools/shopify
- Handle: `@shopify`
- Category: [Commerce](https://fous.com/tools/category/commerce)
- Source website: https://shop.app
- Last verified: Sep 29, 2026

## Methods

### Get store product

Operation `get_store_product`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a public Shopify product by its page link or closest name match within a store. Stores that restrict public product access cannot be read.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `store` | string | yes | `"https://www.allbirds.com/products/mens-tree-runners"` | Store website, such as allbirds.com, or product page link, such as https://www.allbirds.com/products/mens-tree-runners. |
| `product_name` | string | no | `"Floral Heritage Crew"` | Product to find by name, such as Tree Runners; leave blank when store is a product page link. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "store"
  ],
  "properties": {
    "store": {
      "type": "string",
      "description": "Store website, such as allbirds.com, or product page link, such as https://www.allbirds.com/products/mens-tree-runners.",
      "examples": [
        "https://www.allbirds.com/products/mens-tree-runners",
        "tentree.com",
        "allbirds.com"
      ]
    },
    "product_name": {
      "type": "string",
      "default": "",
      "description": "Product to find by name, such as Tree Runners; leave blank when store is a product page link.",
      "examples": [
        "Floral Heritage Crew",
        "Tree Runners"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "store": "https://www.allbirds.com/products/mens-tree-runners"
    },
    {
      "store": "tentree.com",
      "product_name": "Floral Heritage Crew"
    },
    {
      "store": "allbirds.com",
      "product_name": "Tree Runners"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tags` | array |  | Product tags. |
| `brand` | string or null | `"Allbirds"` | Vendor name. |
| `price` | number or null | `100` | Lowest variant price in the storefront currency. |
| `handle` | string | `"mens-tree-runners"` | Shopify product handle. |
| `options` | array |  | Option names and offered values. |
| `options[].name` | string | `"Size"` | Option name. |
| `options[].values` | array |  |  |
| `currency` | string | `"USD"` | Three-letter storefront currency code. |
| `variants` | array |  | Individual purchasable variants. |
| `variants[].sku` | string or null | `"TR3MJBW080"` | Variant SKU. |
| `variants[].price` | number or null | `100` | Variant price in the storefront currency. |
| `variants[].in_stock` | boolean | `true` | Whether the variant is available. |
| `variants[].variant_id` | integer or null | `33179624669264` | Shopify variant ID. |
| `variants[].option_values` | array |  | Option selections such as Size: 8. |
| `product_id` | integer or null | `4870548979792` | Shopify product ID. |
| `description` | string | `"The Allbirds Tree Runner is a breathable and lightweight sneaker made with responsibly sourced eucalyptus tree fiber th` | Product description in plain text. |
| `image_links` | array |  | Links to product images. |
| `product_link` | string | `"https://www.allbirds.com/products/mens-tree-runners"` | Link to this product on the store. |
| `product_name` | string | `"Men's Tree Runner - Jet Black (White Sole)"` | Product title. |
| `product_type` | string or null | `"Shoes"` | Product category or type. |
| `original_price` | number or null |  | Compare-at price for the lowest-priced variant, when higher than its price. |
| `published_date` | string or null | `"2026-09-25"` | Date the store published this product, YYYY-MM-DD. |

**Example input**

```json
{
  "store": "https://www.allbirds.com/products/mens-tree-runners"
}
```

**Example output**

```json
{
  "tags": [
    "allbirds::carbon-score => 4.52",
    "allbirds::cfId => color-mens-tree-runners-jet-black-white",
    "allbirds::complete => true"
  ],
  "brand": "Allbirds",
  "price": 100,
  "handle": "mens-tree-runners",
  "options": [
    {
      "name": "Size",
      "values": [
        "8",
        "9",
        "10"
      ]
    }
  ],
  "currency": "USD",
  "variants": [
    {
      "sku": "TR3MJBW080",
      "price": 100,
      "in_stock": true,
      "variant_id": 33179624669264,
      "option_values": [
        "Size: 8"
      ]
    },
    {
      "sku": "TR3MJBW090",
      "price": 100,
      "in_stock": false,
      "variant_id": 33179624702032,
      "option_values": [
        "Size: 9"
      ]
    },
    {
      "sku": "TR3MJBW100",
      "price": 100,
      "in_stock": false,
      "variant_id": 33179624734800,
      "option_values": [
        "Size: 10"
      ]
    }
  ],
  "product_id": 4870548979792,
  "description": "The Allbirds Tree Runner is a breathable and lightweight sneaker made with responsibly sourced eucalyptus tree fiber that feels silky smooth and cool on your skin. These shoes are perfect for everyday…",
  "image_links": [
    "https://cdn.shopify.com/s/files/1/1104/4168/files/TR3MJBW080_SHOE_LEFT_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486",
    "https://cdn.shopify.com/s/files/1/1104/4168/files/TR3MJBW080_SHOE_BACK_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486",
    "https://cdn.shopify.com/s/files/1/1104/4168/files/TR3MJBW080_SHOE_TOP_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486"
  ],
  "product_link": "https://www.allbirds.com/products/mens-tree-runners",
  "product_name": "Men's Tree Runner - Jet Black (White Sole)",
  "product_type": "Shoes",
  "original_price": null,
  "published_date": "2026-09-25"
}
```

### List store products

Operation `list_store_products`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List publicly published products from a Shopify store in catalogue or collection order, including variant prices and availability. Prices and stock reflect the store’s public storefront; some stores restrict catalogue access.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `page` | integer | no | `2` | Page of matching products, for example 1. |
| `store` | string | yes | `"tentree.com"` | Store website or a page on the store, for example allbirds.com or https://www.allbirds.com/collections/mens-shoes. |
| `keywords` | string | no | `"crew"` | Text that each product name must contain, such as runner. Case-insensitive; leave blank for all names. |
| `collection` | string | no | `"Men's Active Shoes"` | Exact collection name to list, such as Men’s Active Shoes. Leave blank for all products. |
| `max_results` | integer | no | `3` | Maximum matching products returned per page, for example 50. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "store"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page of matching products, for example 1.",
      "x-fous-developer": true,
      "examples": [
        2
      ]
    },
    "store": {
      "type": "string",
      "description": "Store website or a page on the store, for example allbirds.com or https://www.allbirds.com/collections/mens-shoes.",
      "examples": [
        "tentree.com",
        "allbirds.com",
        "https://www.allbirds.com/collections/mens-active-shoes"
      ]
    },
    "keywords": {
      "type": "string",
      "default": "",
      "description": "Text that each product name must contain, such as runner. Case-insensitive; leave blank for all names.",
      "examples": [
        "crew",
        "veryunlikelynonexistentzzzx"
      ]
    },
    "collection": {
      "type": "string",
      "default": "",
      "description": "Exact collection name to list, such as Men’s Active Shoes. Leave blank for all products.",
      "examples": [
        "Men's Active Shoes"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 50,
      "maximum": 250,
      "minimum": 1,
      "description": "Maximum matching products returned per page, for example 50.",
      "x-fous-developer": true,
      "examples": [
        3,
        2
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "store": "tentree.com",
      "keywords": "crew",
      "max_results": 3
    },
    {
      "store": "allbirds.com",
      "collection": "Men's Active Shoes",
      "max_results": 3
    },
    {
      "page": 2,
      "store": "https://www.allbirds.com/collections/mens-active-shoes",
      "collection": "Men's Active Shoes",
      "max_results": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `products` | array |  |  |
| `products[].tags` | array |  |  |
| `products[].brand` | string or null | `"tentree"` |  |
| `products[].currency` | string | `"USD"` |  |
| `products[].in_stock` | boolean | `true` |  |
| `products[].variants` | array |  |  |
| `products[].product_id` | integer or null | `8468279460026` |  |
| `products[].lowest_price` | number or null | `78` |  |
| `products[].product_link` | string | `"https://tentree.com/products/floral-heritage-crew-meteorite-black-hazelnut"` |  |
| `products[].product_name` | string | `"Floral Heritage Crew"` |  |
| `products[].product_type` | string or null | `"Womens"` |  |
| `products[].shopify_handle` | string | `"floral-heritage-crew-meteorite-black-hazelnut"` |  |
| `products[].main_image_link` | string or null | `"https://cdn.shopify.com/s/files/1/2341/3995/files/Black-Women_s-Graphic-Sweatshirt-TCW6629-6591_1.png?v=1785365544"` |  |
| `products[].last_updated_date` | string or null | `"2026-09-29"` |  |
| `products[].price_before_discount` | number or null | `140` |  |
| `store_name` | string | `"Tentree"` |  |

**Example input**

```json
{
  "store": "tentree.com",
  "keywords": "crew",
  "max_results": 3
}
```

**Example output**

```json
{
  "products": [
    {
      "tags": [
        "crew-neck"
      ],
      "brand": "tentree",
      "currency": "USD",
      "in_stock": true,
      "variants": [
        {
          "sku": "TCW6629-6591-XS",
          "price": 78,
          "in_stock": true,
          "variant_id": 46235239022778,
          "option_names": "METEORITE BLACK HAZELNUT / XS"
        }
      ],
      "product_id": 8468279460026,
      "lowest_price": 78,
      "product_link": "https://tentree.com/products/floral-heritage-crew-meteorite-black-hazelnut",
      "product_name": "Floral Heritage Crew",
      "product_type": "Womens",
      "shopify_handle": "floral-heritage-crew-meteorite-black-hazelnut",
      "main_image_link": "https://cdn.shopify.com/s/files/1/2341/3995/files/Black-Women_s-Graphic-Sweatshirt-TCW6629-6591_1.png?v=1785365544",
      "last_updated_date": "2026-09-29",
      "price_before_discount": null
    }
  ],
  "store_name": "Tentree"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@shopify",
  "visibility": "public",
  "operation": "get_store_product",
  "version": 1,
  "input": {
    "store": "https://www.allbirds.com/products/mens-tree-runners"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@shopify\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_store_product\",\n  \"version\": 1,\n  \"input\": {\n    \"store\": \"https://www.allbirds.com/products/mens-tree-runners\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@shopify",
  "visibility": "public",
  "operation": "get_store_product",
  "version": 1,
  "input": {
    "store": "https://www.allbirds.com/products/mens-tree-runners"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/shopify`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_store_product`: Get store product. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_store_products`: List store products. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-shopify https://api.fous.com/mcp/tools/shopify --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare product prices across stores.
- Track public product availability.
- Find products by name or collection.
- Review product variants and options.
- Build a catalogue of publicly listed products.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Shopify tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Shopify account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from shop.app when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What products does a store list?

List store products returns publicly published products for a store, optionally filtered by product name or collection.

### What variants and prices does a product have?

Get store product returns variant prices, availability, options, and the lowest variant price.

### Is a product available to buy?

List store products and Get store product return availability for products or their variants.

## Related

- [Sephora API](https://fous.com/tools/sephora.md): Sephora provides US beauty products, shopping information, product details, and customer reviews; prices and availability may change.
- [Apple Store API](https://fous.com/tools/apple-store.md): Apple Store shows current public-store prices and configurations, compares prices across up to 15 countries at latest ECB rates, checks local pickup without reservations, and lists currently shown refurbished products.
- [Amazon API](https://fous.com/tools/amazon.md): Amazon returns publicly shown product listings, prices, details, ratings, reviews, current best sellers, and Today's Deals; availability and content vary by store, location, and access.
- [Nike API](https://fous.com/tools/nike.md): Nike returns country-specific listings and details, including prices, sizes, availability and reviews, plus publicly shown upcoming or recently stocked SNKRS releases with local launch times.
- [Nordstrom API](https://fous.com/tools/nordstrom.md): Search clothing, shoes, and beauty products at Nordstrom.
- [Walmart API](https://fous.com/tools/walmart.md): Walmart helps shoppers find products from Walmart and marketplace sellers, view details, prices, ratings and reviews; availability uses Walmart’s default location, not ZIP codes.
- [H&M API](https://fous.com/tools/hm.md): H&M offers clothing and home shopping, with country-specific prices and online size stock; product details reflect current catalog information.
- [AliExpress API](https://fous.com/tools/aliexpress.md): AliExpress returns product listings and selected product details, including prices, variants, reviews, and destination-specific shipping options shown for the displayed variant.
- [All Commerce tools](https://fous.com/tools/category/commerce)
