# Shopify Products API Documentation

Scrappa's `GET /api/shopify/products` returns the public catalog of a Shopify store as JSON.

## Input

`store` is the store domain, for example `allbirds.com`. `collection` is a collection handle and returns only products of that collection. An unknown handle answers `422`. `limit` is 1-250 (default 30). `page` times `limit` can not exceed 25000.

## What you get

Per product: `id`, `title`, `handle`, `url`, `vendor`, `product_type`, `tags`, `description_html`, dates, `available`, `price_min`, `price_max`, `options`, `variants` (sku, price, compare_at_price, available, grams, taxable, featured_image) and `images` with `variant_ids`. `currency` is the store currency or `null`.

## Stock

Shopify publishes only a stock flag. `available` is `true` or `false`. There is no quantity.

## Pagination

`next_page` is set whenever the page has products, so a short page does not end the list. An empty page ends it (`next_page` is `null`). The page you get is always the page you asked for.

## Credits

1 credit per successful request. Stores without a public catalog answer `422` (`CATALOG_UNAVAILABLE`) and cost nothing.

- **Documentation:** [https://scrappa.co/docs/shopify-api/shopify_products](https://scrappa.co/docs/shopify-api/shopify_products)
- **API group:** Shopify API
- **Endpoint:** `GET https://scrappa.co/api/shopify/products`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `store` | string | Yes | Store domain, for example allbirds.com. |
| `page` | integer | No | Page number. Default 1. |
| `limit` | integer | No | Products per page, 1-250. Default 30. |
| `collection` | string | No | Collection handle to filter by. |

## Example response

```json
{
    "data": {
        "page": 1,
        "count": 1,
        "limit": 1,
        "store": "allbirds.com",
        "currency": "USD",
        "products": [
            {
                "id": 1234567890,
                "url": "https://allbirds.com/products/wool-runner",
                "tags": [
                    "mens"
                ],
                "title": "Wool Runner",
                "handle": "wool-runner",
                "images": [
                    {
                        "id": 1,
                        "alt": null,
                        "src": "https://cdn.shopify.com/example.jpg",
                        "width": 800,
                        "height": 800,
                        "position": 1,
                        "variant_ids": []
                    }
                ],
                "vendor": "Allbirds",
                "options": [
                    {
                        "name": "Size",
                        "values": [
                            "9",
                            "10"
                        ],
                        "position": 1
                    }
                ],
                "variants": [
                    {
                        "id": 1,
                        "sku": "WR-9",
                        "grams": 800,
                        "price": 98,
                        "title": "9",
                        "option1": "9",
                        "option2": null,
                        "option3": null,
                        "taxable": true,
                        "position": 1,
                        "available": true,
                        "featured_image": null,
                        "compare_at_price": null,
                        "requires_shipping": true
                    }
                ],
                "available": true,
                "price_max": 98,
                "price_min": 98,
                "created_at": "2026-01-01T00:00:00Z",
                "updated_at": "2026-10-01T00:00:00Z",
                "product_type": "Shoes",
                "published_at": "2026-01-01T00:00:00Z",
                "description_html": "<p>Everyday sneaker</p>"
            }
        ],
        "next_page": 2,
        "collection": null
    },
    "meta": {
        "credits": 1
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A parameter is missing or invalid, or the url points to a private, local or non-public address. Not charged. |
| 503 | Site Unreachable Or Blocked | The site could not be fetched after several tries, or it blocked the request. Not charged. |
| 422 | Catalog Unavailable Or Unknown Collection | The store has no public catalog (`CATALOG_UNAVAILABLE`), or the collection handle does not exist (`UNKNOWN_COLLECTION`). Not charged. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
