# products

**Scope required:** product:read

For a complete list of possible response fields see the [ProductConnection](https://docs.bunny.com/developer/api-reference/types/productconnection) type.

```graphql
query products ($after: String, $before: String, $first: Int, $last: Int, $filter: String, $viewId: ID, $sort: String) {
  products (after: $after, before: $before, first: $first, last: $last, filter: $filter, viewId: $viewId, sort: $sort) {
    edges {
      cursor
      node {
        code
        createdAt
        customFieldsData
        description
        everythingInPlus
        hasCustomFields
        id
        internalNotes
        name
        plansToDisplay
        platformId
        productCategoryId
        showProductNameOnLineItem
        updatedAt
      }
    }
    totalCount
    pageInfo {
      startCursor
      endCursor
      hasNextPage
      hasPreviousPage
    }
  }
}
```

## Arguments

| Name   | Type   | Description                                                             |
| ------ | ------ | ----------------------------------------------------------------------- |
| after  | String | Returns the elements in the list that come after the specified cursor.  |
| before | String | Returns the elements in the list that come before the specified cursor. |
| first  | Int    | Returns the first *n* elements from the list.                           |
| last   | Int    | Returns the last *n* elements from the list.                            |
| filter | String |                                                                         |
| viewId | ID     |                                                                         |
| sort   | String |                                                                         |

## Response

* [ProductConnection](https://docs.bunny.com/developer/api-reference/types/productconnection)
