---
title: ProductConnection - Storefront API
description: |
  An auto-generated type for paginating through multiple Products.
api_version: unstable
api_name: storefront
source_url:
  html: >-
    https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection
  md: >-
    https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection.md
---

# Product​Connection

connection

An auto-generated type for paginating through multiple Products.

## Fields with this connection

* [Collection.products](https://shopify.dev/docs/api/storefront/unstable/objects/Collection#field-Collection.fields.products)

  OBJECT

  A group of products [organized by a merchant](https://help.shopify.com/manual/products/collections) to make their store easier to browse. Collections can help customers discover related products by category, season, promotion, or other criteria.

  Query a collection's products with [filtering options](https://shopify.dev/docs/storefronts/headless/building-with-the-storefront-api/products-collections/filter-products) like availability, price range, vendor, and tags. Each collection includes [`SEO`](https://shopify.dev/docs/api/storefront/current/objects/SEO) information, an optional [`Image`](https://shopify.dev/docs/api/storefront/current/objects/Image), and supports custom data through [`metafields`](https://shopify.dev/docs/api/storefront/current/objects/Metafield).

***

## Queries with this connection

* [products](https://shopify.dev/docs/api/storefront/unstable/queries/products)

  query

  Returns a paginated list of the shop's [products](https://shopify.dev/docs/api/storefront/unstable/objects/Product).

  For full-text storefront search, use the [`search`](https://shopify.dev/docs/api/storefront/unstable/queries/search) query instead.

  * first

    [Int](https://shopify.dev/docs/api/storefront/unstable/scalars/Int)

    ### Arguments

    Returns up to the first `n` elements from the list.

  * after

    [String](https://shopify.dev/docs/api/storefront/unstable/scalars/String)

    Returns the elements that come after the specified cursor.

  * last

    [Int](https://shopify.dev/docs/api/storefront/unstable/scalars/Int)

    Returns up to the last `n` elements from the list.

  * before

    [String](https://shopify.dev/docs/api/storefront/unstable/scalars/String)

    Returns the elements that come before the specified cursor.

  * reverse

    [Boolean](https://shopify.dev/docs/api/storefront/unstable/scalars/Boolean)

    Default:false

    Reverse the order of the underlying list.

  * sort​Key

    [Product​Sort​Keys](https://shopify.dev/docs/api/storefront/unstable/enums/ProductSortKeys)

    Default:ID

    Sort the underlying list by the given key.

  * query

    [String](https://shopify.dev/docs/api/storefront/unstable/scalars/String)

    You can apply one or multiple filters to a query. Learn more about [Shopify API search syntax](https://shopify.dev/api/usage/search-syntax).

    * available\_for\_sale

      Filter by products that have at least one product variant available for sale.

    * * created\_at

      * product\_type

      * tag

      * tag\_not

      * title

      * updated\_at

      * variants.price

      - Filter by the date and time when the product was created.

      - Example:

        * `created_at:>'2020-10-21T23:39:20Z'`
        * `created_at:<now`
        * `created_at:<=2024`

        Filter by a comma-separated list of [product types](https://help.shopify.com/en/manual/products/details/product-type).

      - Example:

        * `product_type:snowboard`

        Filter products by the product [`tags`](https://shopify.dev/docs/api/storefront/latest/objects/Product#field-tags) field.

      - Example:

        * `tag:my_tag`

        Filter by products that don't have the specified product [tags](https://shopify.dev/docs/api/storefront/latest/objects/Product#field-tags).

      - Example:

        * `tag_not:my_tag`

        Filter by the product [`title`](https://shopify.dev/docs/api/storefront/latest/objects/Product#field-title) field.

      - Example:

        * `title:The Minimal Snowboard`

        Filter by the date and time when the product was last updated.

      - Example:

        * `updated_at:>'2020-10-21T23:39:20Z'`
        * `updated_at:<now`
        * `updated_at:<=2024`

        Filter by the price of the product's variants.

    * vendor

      Filter by the product [`vendor`](https://shopify.dev/docs/api/storefront/latest/objects/Product#field-vendor) field.

      Example:

      * `vendor:Snowdevil`
      * `vendor:Snowdevil OR vendor:Icedevil`

  ***

***

## Possible returns

* edges

  [\[Product​Edge!\]!](https://shopify.dev/docs/api/storefront/unstable/objects/ProductEdge)

  non-null

  A list of edges.

* filters

  [\[Filter!\]!](https://shopify.dev/docs/api/storefront/unstable/objects/Filter)

  non-null

  A list of available filters.

* nodes

  [\[Product!\]!](https://shopify.dev/docs/api/storefront/unstable/objects/Product)

  non-null

  A list of the nodes contained in ProductEdge.

* page​Info

  [Page​Info!](https://shopify.dev/docs/api/storefront/unstable/objects/PageInfo)

  non-null

  Information to aid in pagination.

***

## Map

### Fields with this connection

* [Collection.products](https://shopify.dev/docs/api/storefront/unstable/objects/Collection#field-Collection.fields.products)

### Queries with this connection

* [products](https://shopify.dev/docs/api/storefront/unstable/queries/products)

### Possible returns

* [Product​Connection.edges](https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection#returns-edges)
* [Product​Connection.filters](https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection#returns-filters)
* [Product​Connection.nodes](https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection#returns-nodes)
* [Product​Connection.pageInfo](https://shopify.dev/docs/api/storefront/unstable/connections/ProductConnection#returns-pageInfo)
