# ProductConnection A connection to a list of Product items. This connection type provides paginated access to products with support for filtering and metadata about the result set. ## Connection Structure ```graphql type ProductConnection { edges: [ProductEdge] nodes: [Product] pageInfo: PageInfo totalCount: Int filters: [Filter] } ``` ## Pagination Arguments | Argument | Type | Description | |----------|------|-------------| | first | Int | Returns the first n items from the list | | last | Int | Returns the last n items from the list | | before | String | Returns items before the specified cursor | | after | String | Returns items after the specified cursor | ## PageInfo Structure The `pageInfo` object contains metadata about pagination state and includes the following fields: - `hasNextPage` (Boolean): Indicates whether there are more items after the current page - `hasPreviousPage` (Boolean): Indicates whether there are items before the current page - `startCursor` (String): The cursor of the first item in the current page - `endCursor` (String): The cursor of the last item in the current page ## Example ```graphql query GetProducts { products(first: 10, after: "eyJvZmZzZXQiOjB9") { edges { node { id name } cursor } nodes { id name } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } totalCount filters { name values } } } ``` ## Edge Type The `ProductEdge` type represents a single item in the connection and contains: - `node` (Product): The product item itself - `cursor` (String): An opaque cursor value used for pagination, allowing you to request items before or after this edge ## Related Types - [ProductEdge](/reference/storefront/1.3.0/connections/product-edge) - [Product](/reference/storefront/1.3.0/objects/product) - [PageInfo](/reference/storefront/1.3.0/objects/page-info) - [Filter](/reference/storefront/1.3.0/objects/filter)