> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# List Products

GET https://api.bigcommerce.com/stores/{store_hash}/v3/catalog/products

Returns a list of **Products**. Optional filter parameters can be passed in.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/admin/catalog/products/get-products

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Products | modify | `store_v2_products` | | Products | read-only | `store_v2_products_read_only` | ### Authentication header | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#api-accounts). | ### Further reading For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).

## Request

### Path parameters

- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Query parameters

- `id` (integer, optional) — Filter items by product ID.
- `id:in` (list of integer, optional) — Pass a comma-separated list to filter by one or more product IDs.
- `channel_id:in` (list of integer, optional) — Pass a comma-separated list to filter by one or more channel IDs.
- `id:not_in` (list of integer, optional) — Pass a comma-separated list to exclude one or more product IDs.
- `include` (list of enum, optional) — A comma-separated list of sub-resources to return with a product object. When you specify `options` or `modifiers`, results are limited to 10 per page.
  - Allowed values: `bulk_pricing_rules`, `channels`, `custom_fields`, `images`, `modifiers`, `options`, `parent_relations`, `primary_image`, `reviews`, `variants`, `videos`
- `include_fields` (list of enum, optional) — Fields to include, in a comma-separated list. The ID and the specified fields will be returned.
  - Allowed values: `name`, `type`, `sku`, `description`, `weight`, `width`, `depth`, `height`, `price`, `cost_price`, `retail_price`, `sale_price`, `map_price`, `tax_class_id`, `product_tax_code`, `calculated_price`, `categories`, `brand_id`, `option_set_id`, `option_set_display`, `inventory_level`, `inventory_warning_level`, `inventory_tracking`, `reviews_rating_sum`, `reviews_count`, `total_sold`, `fixed_cost_shipping_price`, `is_free_shipping`, `is_visible`, `is_featured`, `related_products`, `warranty`, `bin_picking_number`, `layout_file`, `upc`, `mpn`, `gtin`, `date_last_imported`, `search_keywords`, `availability`, `availability_description`, `condition`, `is_condition_shown`, `order_quantity_minimum`, `order_quantity_maximum`, `page_title`, `meta_keywords`, `meta_description`, `date_created`, `date_modified`, `view_count`, `preorder_release_date`, `preorder_message`, `is_preorder_only`, `is_price_hidden`, `price_hidden_label`, `custom_url`, `base_variant_id`, `open_graph_type`, `open_graph_title`, `open_graph_description`, `open_graph_use_meta_description`, `open_graph_use_product_name`, `open_graph_use_image`
- `exclude_fields` (list of string, optional) — Fields to exclude, in a comma-separated list. The specified fields will be excluded from a response. The ID cannot be excluded.
- `page` (integer, optional) — Specifies the page number in a limited (paginated) list of products.
- `limit` (integer, optional, default: 50) — Controls the number of items per page in a limited (paginated) list of products.
- `direction` (enum, optional) — Sort direction. Acceptable values are: `asc`, `desc`.
  - Allowed values: `asc`, `desc`
- `sort` (enum, optional) — Field name to sort by. Note: Since ID increments when new products are added, you can use the ID value to sort by product create date.
  - Allowed values: `id`, `name`, `sku`, `price`, `date_modified`, `date_last_imported`, `inventory_level`, `is_visible`, `total_sold`, `calculated_price`
- `categories` (integer, optional) — Filters by a single category ID, returning only products assigned exclusively to that category. A product that also belongs to one or more other categories will not be returned — to match products in a category regardless of their other memberships, use `categories:in` instead.
- `categories:in` (list of integer, optional) — A comma-separated list of category IDs. Returns products that belong to any of the specified categories.
- `id:min` (integer, optional)
- `id:max` (integer, optional)
- `id:greater` (integer, optional)
- `id:less` (integer, optional)
- `name` (string, optional) — Filter items by name.
- `mpn` (string, optional) — Filter items by Manufacturer Part Number (MPN).
- `upc` (string, optional) — Filter items by UPC.
- `price` (double, optional) — Filter items by price.
- `weight` (double, optional) — Filter items by weight.
- `condition` (enum, optional) — Filter items by condition.
  - Allowed values: `new`, `used`, `refurbished`
- `brand_id` (integer, optional) — Filter items by brand ID.
- `date_modified` (date, optional) — Filter items by `date_modified`.
- `date_modified:max` (string, optional) — Filter items by `date_modified`. If the `date modified:max` does not include hours, minutes and seconds, the API automatically adds the current time of the request to the date. For example, `date_modified:max=2025-01-15` or `date_modified:max=2025-01-15T00:03:17Z`.
- `date_modified:min` (string, optional) — Filter items by `date_modified`. If the `date modified:min` does not include hours, minutes and seconds, the API automatically adds the current time of the request to the date. For example, `date_modified:min=2025-01-15` or `date_modified:min=2025-01-15T00:03:17Z`.
- `date_last_imported` (date, optional) — Filter items by date_last_imported.
- `date_last_imported:not` (date, optional) — Filter products by specifying a date they were NOT last imported. For example, `date_last_imported:not=2015-08-21T22%3A53%3A23%2B00%3A00`.
- `date_last_imported:max` (date, optional) — Filter items by date_last_imported. For example, `date_last_imported:max=2015-08-21T22%3A53%3A23%2B00%3A00`.
- `date_last_imported:min` (date, optional) — Filter items by date_last_imported. For example, `date_last_imported:min=2015-08-21T22%3A53%3A23%2B00%3A00`.
- `is_visible` (boolean, optional) — Filter items based on whether the product is currently visible on the storefront.
- `is_featured` (enum, optional) — Filter items by is_featured. `1` for true, `0` for false.
  - Allowed values: `1`, `0`
- `is_free_shipping` (integer, optional) — Filter items by is_free_shipping. `1` for true, `0` for false.
- `inventory_level` (integer, optional) — Filter items by inventory_level.
- `inventory_level:in` (list of integer, optional) — A comma-separated list of inventory levels. Returns a list of all products that have any of the listed inventory amounts.
- `inventory_level:not_in` (list of integer, optional) — A comma-separated list of inventory levels. Returns a list of all products that have inventory amounts other than those specified.
- `inventory_level:min` (integer, optional)
- `inventory_level:max` (integer, optional)
- `inventory_level:greater` (integer, optional)
- `inventory_level:less` (integer, optional)
- `inventory_low` (integer, optional) — Filter items by inventory_low. Values: 1, 0.
- `out_of_stock` (integer, optional) — Filter items by out_of_stock. To enable the filter, pass `out_of_stock`=`1`.
- `total_sold` (integer, optional) — Filter items by total_sold.
- `type` (enum, optional) — Filter items by type.
  - Allowed values: `digital`, `physical`
- `keyword` (string, optional) — Filter items by keywords found in the `name`, `description`, or `sku` fields, or in the brand name.
- `keyword_context` (enum, optional) — Set context used by the search algorithm to return results targeted towards the specified group. Use `merchant` to help merchants search their own catalog. Use `shopper` to return shopper-facing search results.
  - Allowed values: `shopper`, `merchant`
- `availability` (enum, optional) — Filter items by availability. Values are: available, disabled, preorder.
  - Allowed values: `available`, `disabled`, `preorder`
- `sku` (string, optional) — Filter items by main SKU. To filter by variant SKU, see [Get all variants](/developer/api-reference/rest/admin/catalog/product-variants/get-product-variants).
- `sku:in` (list of string, optional) — A comma-separated list of SKUs. Returns a list of products with those SKUs.

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

## Response

### 200

- `data` (list of object, optional)
  - `id` (integer, optional) — ID of the product. Read-Only.
  - `name` (string, optional) — A unique product name.
  - `type` (enum, optional) — The product type. One of: `physical` - a physical stock unit, `digital` - a digital download.
    - Allowed values: `physical`, `digital`
  - `sku` (string, optional) — A unique user-defined alphanumeric product code/stock keeping unit (SKU).
  - `description` (string, optional) — The product description, which can include HTML formatting.
  - `weight` (float, optional) — Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store
  - `width` (float, optional) — Width of the product, which can be used when calculating shipping costs.
  - `depth` (float, optional) — Depth of the product, which can be used when calculating shipping costs.
  - `height` (float, optional) — Height of the product, which can be used when calculating shipping costs.
  - `price` (float, optional) — The price of the product. The price should include or exclude tax, based on the store settings.
  - `cost_price` (float, optional) — The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.
  - `retail_price` (float, optional) — The retail cost of the product. If entered, the retail cost price will be shown on the product page.
  - `sale_price` (float, optional) — If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.
  - `map_price` (double, optional) — Minimum Advertised Price.
  - `tax_class_id` (double, optional) — The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)
  - `product_tax_code` (string, optional) — Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.
  - `categories` (list of double, optional) — An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.
  - `brand_id` (integer, optional) — You can add a product to an existing brand during a product /PUT or /POST use the `brand_id` field. The response body can include `brand_id'.
  - `inventory_level` (integer, optional) — Current inventory level of the product. You must track inventory by _product_ for this to take effect (see the `inventory_tracking` field). The Catalog API returns the inventory for only the default location. The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit. The Catalog API handles limits in a different way than the Inventory API. For more information, see [Limit handling](/developer/docs/admin/catalog-and-inventory/inventory-adjustments#limit-handling-in-inventory-versus-catalog-api).
  - `inventory_warning_level` (integer, optional) — Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the `inventory_tracking` field) for this to take any effect.
  - `inventory_tracking` (enum, optional) — The type of inventory tracking for the product. Values are: `none` - inventory levels will not be tracked; `product` - inventory levels will be tracked using the `inventory_level` and `inventory_warning_level` fields; `variant` - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels.
    - Allowed values: `none`, `product`, `variant`
  - `fixed_cost_shipping_price` (float, optional) — A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.
  - `is_free_shipping` (boolean, optional) — Flag used to indicate whether the product has free shipping. If `true`, the shipping cost for the product will be zero.
  - `is_visible` (boolean, optional) — Flag to determine whether the product should be displayed to customers browsing the store. If `true`, the product will be displayed. If `false`, the product will be hidden from view.
  - `is_featured` (boolean, optional) — Flag to determine whether the product should be included in the `featured products` panel when viewing the store.
  - `related_products` (list of integer, optional) — An array of IDs for the related products.
  - `warranty` (string, optional) — Warranty information displayed on the product page. Can include HTML formatting.
  - `bin_picking_number` (string, optional) — The BIN picking number for the product.
  - `layout_file` (string, optional) — The layout template file used to render this product. This field applies only to stores with a Blueprint theme applied, and the returned value is a template file from the store's Blueprint theme. Custom Stencil template associations are not returned in this field. For stores with a Stencil theme applied, see [Custom Template Associations](/developer/api-reference/rest/admin/content/custom-template-associations).
  - `upc` (string, optional) — The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.
  - `search_keywords` (string, optional) — A comma-separated list of keywords that can be used to locate the product when searching the store.
  - `availability_description` (string, optional) — Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'
  - `availability` (enum, optional) — Availability of the product. (Corresponds to the productʼs [Purchasability](https://support.bigcommerce.com/s/article/Adding-Products-v3?language=en_US#sections) section in the control panel.) Supported values: `available` - the product is available for purchase; `disabled` - the product is listed on the storefront, but cannot be purchased; `preorder` - the product is listed for pre-orders.
    - Allowed values: `available`, `disabled`, `preorder`
  - `gift_wrapping_options_type` (enum, optional) — Type of gift-wrapping options. Values: `any` - allow any gift-wrapping options in the store; `none` - disallow gift-wrapping on the product; `list` – provide a list of IDs in the `gift_wrapping_options_list` field. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
    - Allowed values: `any`, `none`, `list`
  - `gift_wrapping_options_list` (list of integer, optional) — A list of gift-wrapping option IDs. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
  - `sort_order` (integer, optional) — Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.
  - `condition` (enum, optional) — The product condition. Will be shown on the product page if the `is_condition_shown` fieldʼs value is `true`. Possible values: `New`, `Used`, `Refurbished`.
    - Allowed values: `New`, `Used`, `Refurbished`
  - `is_condition_shown` (boolean, optional) — Flag used to determine whether the product condition is shown to the customer on the product page.
  - `order_quantity_minimum` (integer, optional) — The minimum quantity an order must contain, to be eligible to purchase this product.
  - `order_quantity_maximum` (integer, optional) — The maximum quantity an order can contain when purchasing the product.
  - `page_title` (string, optional) — Custom title for the product page. If not defined, the product name will be used as the meta title.
  - `meta_keywords` (list of string, optional) — Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.
  - `meta_description` (string, optional) — Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.
  - `preorder_release_date` (datetime, optional, nullable) — Pre-order release date. See the `availability` field for details on setting a productʼs availability to accept pre-orders.
  - `preorder_message` (string, optional) — Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the `%%DATE%%` placeholder, which will be substituted for the release date.
  - `is_preorder_only` (boolean, optional) — If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status **will not** be removed. It will need to be changed manually either in the control panel or using the API. Using the API set `availability` to `available`.
  - `is_price_hidden` (boolean, optional) — False by default, indicating that this productʼs price should be shown on the product page. If set to `true`, the price is hidden. (NOTE: To successfully set `is_price_hidden` to `true`, the `availability` value must be `disabled`.)
  - `price_hidden_label` (string, optional) — By default, an empty string. If `is_price_hidden` is `true`, the value of `price_hidden_label` is displayed instead of the price. (NOTE: To successfully set a non-empty string value with `is_price_hidden` set to `true`, the `availability` value must be `disabled`.)
  - `custom_url` (object, optional) — The custom URL for the product on the storefront. If not provided in the POST request, the URL will be autogenerated from the product name.
    - `url` (string, optional) — Product URL on the storefront.
    - `is_customized` (boolean, optional) — Returns `true` if the URL has been changed from its default state (the auto-assigned URL that BigCommerce provides).
    - `create_redirect` (boolean, optional) — Optional field. This field automatically creates a dynamic 301 redirect when a product URL change occurs with a PUT request. Existing dynamic redirects will automatically update to a new URL to avoid a loop.
  - `open_graph_type` (enum, optional) — Type of product, defaults to `product`.
    - Allowed values: `product`, `album`, `book`, `drink`, `food`, `game`, `movie`, `song`, `tv_show`
  - `open_graph_title` (string, optional) — Title of the product, if not specified the product name will be used instead.
  - `open_graph_description` (string, optional) — Description to use for the product, if not specified then the meta_description will be used instead.
  - `open_graph_use_meta_description` (boolean, optional) — Flag to determine if product description or open graph description is used.
  - `open_graph_use_product_name` (boolean, optional) — Flag to determine if product name or open graph name is used.
  - `open_graph_use_image` (boolean, optional) — Flag to determine if product image or open graph image is used.
  - `gtin` (string, optional) — Global Trade Item Number
  - `mpn` (string, optional) — Manufacturer Part Number
  - `date_last_imported` (string, optional) — the date when the Product had been imported
  - `reviews_rating_sum` (integer, optional) — The total (cumulative) rating for the product.
  - `reviews_count` (integer, optional) — The number of times the product has been rated.
  - `total_sold` (integer, optional) — The total quantity of this product sold.
  - `custom_fields` (list of object, optional) — 200 maximum custom fields per product. 255 maximum characters per custom field.
    - `name` (string, required) — The name of the field, shown on the storefront, orders, etc. Required for /POST
    - `value` (string, required) — The name of the field, shown on the storefront, orders, etc. Required for /POST
    - `id` (integer, optional) — The unique numeric ID of the custom field; increments sequentially. Required to update existing custom field in /PUT request. Read-Only
  - `bulk_pricing_rules` (list of object, optional)
    - `id` (integer, required) — Unique ID of the *Bulk Pricing Rule*. Read-Only.
    - `quantity_min` (integer, required) — The minimum inclusive quantity of a product to satisfy this rule. Must be greater than or equal to zero. For `fixed` rules, the minimum quantity canʼt be less than two. Required in /POST.
    - `quantity_max` (integer, required) — The maximum inclusive quantity of a product to satisfy this rule. Must be greater than the `quantity_min` value – unless this field has a value of 0 (zero), in which case there will be no maximum bound for this rule. Required in /POST.
    - `type` (enum, required) — The type of adjustment that is made. Values: `price` - the adjustment amount per product; `percent` - the adjustment as a percentage of the original price; `fixed` - the adjusted absolute price of the product. Required in /POST.
      - Allowed values: `price`, `percent`, `fixed`
    - `amount` (double or string, required) — You can express the adjustment type as either a fixed dollar amount or a percentage. Send a number; the response will return a number for `price` and `fixed` adjustments. Divide the adjustment percentage by 100 and send the result in string format. For example, represent 10% as “.10”. The response will return a float value for both `price` and `percentage` adjustments. Required in /POST.
  - `images` (list of object, optional)
    - `date_modified` (datetime, optional) — The date on which the product image was modified.
    - `description` (string, optional) — The description for the image.
    - `id` (integer, optional) — The unique numeric ID of the image; increments sequentially.
    - `image_url` (string, optional) — The URL for an image displayed on the storefront when the conditions are applied. Limit of 8MB per file. Cannot be used with `image_file`.
    - `is_thumbnail` (boolean, optional) — Flag for identifying whether the image is used as the productʼs thumbnail.
    - `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
    - `sort_order` (integer, optional) — The order in which the image will be displayed on the product page. Higher integers give the image a lower priority. When updating, if the image is given a lower priority, all images with a `sort_order` the same as or greater than the imageʼs new `sort_order` value will have their `sort_order`s reordered.
    - `url_standard` (string, optional) — The standard URL for this image. By default, this is used for product-page images.
    - `url_thumbnail` (string, optional) — The thumbnail URL for this image. By default, this is the image size used on the category page and in side panels.
    - `url_tiny` (string, optional) — The tiny URL for this image. By default, this is the image size used for thumbnails beneath the product image on a product page.
    - `url_zoom` (string, optional) — The zoom URL for this image. By default, this is used as the zoom image on product pages when zoom images are enabled. You should provide an image smaller than 1280x1280; otherwise, the API returns a resized image.
  - `primary_image` (object, optional) — Common PrimaryImage properties.
    - `id` (integer, optional) — The unique numeric ID of the image; increments sequentially.
    - `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
    - `is_thumbnail` (boolean, optional) — Flag for identifying whether the image is used as the productʼs thumbnail.
    - `sort_order` (integer, optional) — The order in which the image will be displayed on the product page. Higher integers give the image a lower priority. When updating, if the image is given a lower priority, all images with a `sort_order` the same as or greater than the imageʼs new `sort_order` value will have their `sort_order`s reordered.
    - `description` (string, optional) — The description for the image.
    - `image_file` (string, optional) — The local path to the original image file uploaded to BigCommerce. Use image_url when creating a product. Must be sent as a `multipart/form-data` field in the request body. Limit of 8 MB per file.
    - `url_zoom` (string, optional) — The zoom URL for this image. By default, this is used as the zoom image on product pages when zoom images are enabled. You should provide an image smaller than 1280x1280; otherwise, the API returns a resized image.
    - `url_standard` (string, optional) — The standard URL for this image. By default, this is used for product-page images.
    - `url_thumbnail` (string, optional) — The thumbnail URL for this image. By default, this is the image size used on the category page and in side panels.
    - `url_tiny` (string, optional) — The tiny URL for this image. By default, this is the image size used for thumbnails beneath the product image on a product page.
    - `date_modified` (datetime, optional) — The date on which the product image was modified.
  - `videos` (list of object, optional) — The Catalog API integrates with third-party YouTube. The [YouTube Terms of Service](https://www.youtube.com/t/terms) and [Google Privacy Policy](https://policies.google.com/privacy) apply, as indicated in our [Privacy Policy](https://www.bigcommerce.com/privacy/) and [Terms of Service](https://www.bigcommerce.com/terms/).
    - `description` (string, optional) — The description for the video. If left blank, this will be filled in according to data on a host site.
    - `id` (integer, optional) — The unique numeric ID of the product video; increments sequentially.
    - `length` (string, optional) — Length of the video. This will be filled in according to data on a host site.
    - `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
    - `sort_order` (integer, optional) — The order in which the video will be displayed on the product page. Higher integers give the video a lower priority. When updating, if the video is given a lower priority, all videos with a `sort_order` the same as or greater than the videoʼs new `sort_order` value will have their `sort_order`s reordered.
    - `title` (string, optional) — The title for the video. If left blank, this will be filled in according to data on a host site.
    - `type` (enum, optional) — The video type (a short name of a host site).
      - Allowed values: `youtube`
    - `video_id` (string, optional) — The ID of the video on a host site.
  - `date_created` (datetime, optional) — The date on which the product was created.
  - `date_modified` (datetime, optional) — The date on which the product was last modified. This value changes when the product record itself changes, for example when you update a product using the Catalog API or edit the product in the control panel. Changes to fields such as the product's name, description, pricing, categories, custom fields, images, options, modifiers, and variants update this value. Inventory is a separate entity from the product, so a stock change does not always update `date_modified`. Inventory updates that the [Inventory API](/developer/docs/admin/catalog-and-inventory/inventory-adjustments) processes, including stock edits made from the control panel **Products** list, leave `date_modified` unchanged. Inventory updates that the Catalog API processes, such as a `PUT` request that sets `inventory_level`, update it. To track when a product or its stock changes, use the `store/product/updated` and `store/product/inventory/updated` [webhooks](/developer/docs/integrations/webhooks/event-reference/events#products) rather than polling `date_modified`.
  - `base_variant_id` (integer, optional) — The unique identifier of the base variant associated with a simple product. This value is `null` for complex products.
  - `calculated_price` (float, optional) — The calculated_price is derived from the default price and sale price of the product. It is equal to the sale price if set or the default price if there is not a sale price present. Depending on your store settings and customer group, or channel-specific pricing, this value may or may not be equal to the price seen on the storefront.
  - `options` (list of object, optional)
    - `id` (integer, optional, nullable) — The unique numerical ID of the option, increments sequentially.
    - `product_id` (integer, optional) — The unique numerical ID of the product to which the option belongs.
    - `display_name` (string, optional) — The name of the option shown on the storefront.
    - `type` (enum, optional) — The type of option, which determines how it will display on the storefront. Acceptable values: `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`. For reference, the former v2 API values are: RB = radio_buttons, RT = rectangles, S = dropdown, P = product_list, PI = product_list_with_images, CS = swatch.
      - Allowed values: `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`
    - `config` (object, optional) — The values for option config can vary based on the Modifier created.
      - `default_value` (string, optional) — (date, text, multi_line_text, numbers_only_text) The default value. Shown on a date option as an ISO-8601–formatted string, or on a text option as a string.
      - `checked_by_default` (boolean, optional) — (checkbox) Flag for setting the checkbox to be checked by default.
      - `checkbox_label` (string, optional) — (checkbox) Label displayed for the checkbox option.
      - `date_limited` (boolean, optional) — (date) Flag to limit the dates allowed to be entered on a date option.
      - `date_limit_mode` (enum, optional) — (date) The type of limit that is allowed to be entered on a date option.
        - Allowed values: `earliest`, `range`, `latest`
      - `date_earliest_value` (date, optional) — (date) The earliest date allowed to be entered on the date option, as an ISO-8601 formatted string.
      - `date_latest_value` (date, optional) — (date) The latest date allowed to be entered on the date option, as an ISO-8601 formatted string.
      - `file_types_mode` (enum, optional) — (file) The kind of restriction on the file types that can be uploaded with a file upload option. Values: `specific` - restricts uploads to particular file types; `all` - allows all file types.
        - Allowed values: `specific`, `all`
      - `file_types_supported` (list of string, optional) — (file) The type of files allowed to be uploaded if the `file_type_option` is set to `specific`. Values: `images` - Allows upload of image MIME types (`bmp`, `gif`, `jpg`, `jpeg`, `jpe`, `jif`, `jfif`, `jfi`, `png`, `wbmp`, `xbm`, `tiff`). `documents` - Allows upload of document MIME types (`txt`, `pdf`, `rtf`, `doc`, `docx`, `xls`, `xlsx`, `accdb`, `mdb`, `one`, `pps`, `ppsx`, `ppt`, `pptx`, `pub`, `odt`, `ods`, `odp`, `odg`, `odf`). `other` - Allows file types defined in the `file_types_other` array.
      - `file_types_other` (list of string, optional) — (file) A list of other file types allowed with the file upload option.
      - `file_max_size` (integer, optional) — (file) The maximum size for a file that can be used with the file upload option. This will still be limited by the server.
      - `text_characters_limited` (boolean, optional) — (text, multi_line_text) Flag to validate the length of a text or multi-line text input.
      - `text_min_length` (integer, optional) — (text, multi_line_text) The minimum length allowed for a text or multi-line text option.
      - `text_max_length` (integer, optional) — (text, multi_line_text) The maximum length allowed for a text or multi line text option.
      - `text_lines_limited` (boolean, optional) — (multi_line_text) Flag to validate the maximum number of lines allowed on a multi-line text input.
      - `text_max_lines` (integer, optional) — (multi_line_text) The maximum number of lines allowed on a multi-line text input.
      - `number_limited` (boolean, optional) — (numbers_only_text) Flag to limit the value of a number option.
      - `number_limit_mode` (enum, optional) — (numbers_only_text) The type of limit on values entered for a number option.
        - Allowed values: `lowest`, `highest`, `range`
      - `number_lowest_value` (double, optional) — (numbers_only_text) The lowest allowed value for a number option if `number_limited` is true.
      - `number_highest_value` (double, optional) — (numbers_only_text) The highest allowed value for a number option if `number_limited` is true.
      - `number_integers_only` (boolean, optional) — (numbers_only_text) Flag to limit the input on a number option to whole numbers only.
      - `product_list_adjusts_inventory` (boolean, optional) — (product_list, product_list_with_images) Flag for automatically adjusting inventory on a product included in the list.
      - `product_list_adjusts_pricing` (boolean, optional) — (product_list, product_list_with_images) Flag to add the optional productʼs price to the main productʼs price.
      - `product_list_shipping_calc` (enum, optional) — (product_list, product_list_with_images) How to factor the optional productʼs weight and package dimensions into the shipping quote. Values: `none` - donʼt adjust; `weight` - use shipping weight only; `package` - use weight and dimensions.
        - Allowed values: `none`, `weight`, `package`
    - `sort_order` (integer, optional) — Order in which the option is displayed on the storefront.
    - `option_values` (list of object, optional)
      - `label` (string, required) — The text display identifying the value on the storefront. Required in a /POST.
      - `sort_order` (integer, required) — The order in which the value will be displayed on the product page. Required in a /POST.
      - `id` (integer, optional) — The unique numeric ID of the value; increments sequentially.
      - `is_default` (boolean, optional) — The flag for preselecting a value as the default on the storefront. This field is not supported for swatch options/modifiers.
      - `value_data` (object, optional, nullable) — Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.
  - `modifiers` (list of object, optional)
    - `required` (boolean, required) — Whether or not this modifer is required or not at checkout. Required in a /POST.
    - `type` (enum, required) — BigCommerce API, which determines how it will display on the storefront. Acceptable values: `date`, `checkbox`, `file`, `text`, `multi_line_text`, `numbers_only_text`, `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`. Required in a /POST.
      - Allowed values: `date`, `checkbox`, `file`, `text`, `multi_line_text`, `numbers_only_text`, `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`
    - `config` (object, optional) — The values for option config can vary based on the Modifier created.
      - `default_value` (string, optional) — (date, text, multi_line_text, numbers_only_text) The default value. Shown on a date option as an ISO-8601–formatted string, or on a text option as a string.
      - `checked_by_default` (boolean, optional) — (checkbox) Flag for setting the checkbox to be checked by default.
      - `checkbox_label` (string, optional) — (checkbox) Label displayed for the checkbox option.
      - `date_limited` (boolean, optional) — (date) Flag to limit the dates allowed to be entered on a date option.
      - `date_limit_mode` (enum, optional) — (date) The type of limit that is allowed to be entered on a date option.
        - Allowed values: `earliest`, `range`, `latest`
      - `date_earliest_value` (date, optional) — (date) The earliest date allowed to be entered on the date option, as an ISO-8601 formatted string.
      - `date_latest_value` (date, optional) — (date) The latest date allowed to be entered on the date option, as an ISO-8601 formatted string.
      - `file_types_mode` (enum, optional) — (file) The kind of restriction on the file types that can be uploaded with a file upload option. Values: `specific` - restricts uploads to particular file types; `all` - allows all file types.
        - Allowed values: `specific`, `all`
      - `file_types_supported` (list of string, optional) — (file) The type of files allowed to be uploaded if the `file_type_option` is set to `specific`. Values: `images` - Allows upload of image MIME types (`bmp`, `gif`, `jpg`, `jpeg`, `jpe`, `jif`, `jfif`, `jfi`, `png`, `wbmp`, `xbm`, `tiff`). `documents` - Allows upload of document MIME types (`txt`, `pdf`, `rtf`, `doc`, `docx`, `xls`, `xlsx`, `accdb`, `mdb`, `one`, `pps`, `ppsx`, `ppt`, `pptx`, `pub`, `odt`, `ods`, `odp`, `odg`, `odf`). `other` - Allows file types defined in the `file_types_other` array.
      - `file_types_other` (list of string, optional) — (file) A list of other file types allowed with the file upload option.
      - `file_max_size` (integer, optional) — (file) The maximum size for a file that can be used with the file upload option. This will still be limited by the server.
      - `text_characters_limited` (boolean, optional) — (text, multi_line_text) Flag to validate the length of a text or multi-line text input.
      - `text_min_length` (integer, optional) — (text, multi_line_text) The minimum length allowed for a text or multi-line text option.
      - `text_max_length` (integer, optional) — (text, multi_line_text) The maximum length allowed for a text or multi line text option.
      - `text_lines_limited` (boolean, optional) — (multi_line_text) Flag to validate the maximum number of lines allowed on a multi-line text input.
      - `text_max_lines` (integer, optional) — (multi_line_text) The maximum number of lines allowed on a multi-line text input.
      - `number_limited` (boolean, optional) — (numbers_only_text) Flag to limit the value of a number option.
      - `number_limit_mode` (enum, optional) — (numbers_only_text) The type of limit on values entered for a number option.
        - Allowed values: `lowest`, `highest`, `range`
      - `number_lowest_value` (double, optional) — (numbers_only_text) The lowest allowed value for a number option if `number_limited` is true.
      - `number_highest_value` (double, optional) — (numbers_only_text) The highest allowed value for a number option if `number_limited` is true.
      - `number_integers_only` (boolean, optional) — (numbers_only_text) Flag to limit the input on a number option to whole numbers only.
      - `product_list_adjusts_inventory` (boolean, optional) — (product_list, product_list_with_images) Flag for automatically adjusting inventory on a product included in the list.
      - `product_list_adjusts_pricing` (boolean, optional) — (product_list, product_list_with_images) Flag to add the optional productʼs price to the main productʼs price.
      - `product_list_shipping_calc` (enum, optional) — (product_list, product_list_with_images) How to factor the optional productʼs weight and package dimensions into the shipping quote. Values: `none` - donʼt adjust; `weight` - use shipping weight only; `package` - use weight and dimensions.
        - Allowed values: `none`, `weight`, `package`
    - `display_name` (string, optional) — The name of the option shown on the storefront.
    - `id` (integer, optional) — The unique numeric ID of the modifier; increments sequentially.
    - `name` (string, optional) — The unique option name. Auto-generated from the display name, a timestamp, and the product ID.
    - `option_values` (list of object, optional)
      - `label` (string, required) — The text display identifying the value on the storefront. Required in a /POST.
      - `sort_order` (integer, required) — The order in which the value will be displayed on the product page. Required in a /POST.
      - `adjusters` (object, optional)
        - `price` (object, optional) — Adjuster for Complex Rules.
          - `adjuster` (enum, optional, nullable) — The type of adjuster for either the price or the weight of the variant, when the modifier value is selected on the storefront.
            - Allowed values: `relative`, `percentage`
          - `adjuster_value` (double, optional) — The numeric amount by which the adjuster will change either the price or the weight of the variant, when the modifier value is selected on the storefront.
        - `weight` (object, optional) — Adjuster for Complex Rules.
          - `adjuster` (enum, optional, nullable) — The type of adjuster for either the price or the weight of the variant, when the modifier value is selected on the storefront.
            - Allowed values: `relative`, `percentage`
          - `adjuster_value` (double, optional) — The numeric amount by which the adjuster will change either the price or the weight of the variant, when the modifier value is selected on the storefront.
        - `image_url` (string, optional) — The URL for an image displayed on the storefront when the modifier value is selected.Limit of 8MB per file.
        - `purchasing_disabled` (object, optional)
          - `status` (boolean, optional) — Flag for whether the modifier value disables purchasing when selected on the storefront. This can be used for temporarily disabling a particular modifier value.
          - `message` (string, optional) — The message displayed on the storefront when the purchasing disabled status is `true`.
      - `id` (integer, optional) — The unique numeric ID of the value; increments sequentially.
      - `is_default` (boolean, optional) — The flag for preselecting a value as the default on the storefront. This field is not supported for swatch options/modifiers.
      - `option_id` (integer, optional)
      - `value_data` (object, optional, nullable) — Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.
    - `product_id` (integer, optional) — The unique numeric ID of the product to which the option belongs.
    - `sort_order` (integer, optional) — The order the modifiers display on the product detail page.
  - `option_set_id` (integer, optional) — Indicates that the product is in an Option Set (legacy V2 concept).
  - `option_set_display` (string, optional) — Legacy template setting which controls if the option set shows up to the side of or below the product image and description.
  - `channels` (list of integer, optional) — The channels to which the product is assigned. This field only appears in the response if you include `channels` in the `include` query parameter.
  - `view_count` (integer, optional, deprecated) — The number of times the product has been viewed.
- `meta` (object, optional) — Data about the response, including pagination and collection totals.
  - `pagination` (object, optional) — Data about the response, including pagination and collection totals.
    - `total` (integer, optional) — Total number of items in the result set.
    - `count` (integer, optional) — Total number of items in the collection response.
    - `per_page` (integer, optional) — The amount of items returned in the collection per page, controlled by the limit parameter.
    - `current_page` (integer, optional) — The page you are currently on within the collection.
    - `total_pages` (integer, optional) — The total number of pages in the collection.
    - `links` (object, optional) — Pagination links for the previous and next parts of the whole collection.
      - `previous` (string, optional) — Link to the previous page returned in the response.
      - `current` (string, optional) — Link to the current page returned in the response.
      - `next` (string, optional) — Link to the next page returned in the response.

## Examples

**Response**

```json
{
  "data": [
    {
      "id": 1,
      "name": "Smith Journal 13",
      "type": "physical",
      "sku": "SM-13",
      "description": "<p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>",
      "weight": 1.1,
      "width": 1.1,
      "depth": 1.1,
      "height": 1.1,
      "price": 1.1,
      "cost_price": 1.1,
      "retail_price": 1.1,
      "sale_price": 1.1,
      "map_price": 1.1,
      "tax_class_id": 1.1,
      "product_tax_code": "string",
      "categories": [
        1.1
      ],
      "brand_id": 1,
      "inventory_level": 1,
      "inventory_warning_level": 1,
      "inventory_tracking": "none",
      "fixed_cost_shipping_price": 1.1,
      "is_free_shipping": true,
      "is_visible": true,
      "is_featured": true,
      "related_products": [
        1
      ],
      "warranty": "string",
      "bin_picking_number": "string",
      "layout_file": "string",
      "upc": "string",
      "search_keywords": "string",
      "availability_description": "string",
      "availability": "available",
      "gift_wrapping_options_type": "any",
      "gift_wrapping_options_list": [
        1
      ],
      "sort_order": 1,
      "condition": "New",
      "is_condition_shown": true,
      "order_quantity_minimum": 1,
      "order_quantity_maximum": 1,
      "page_title": "string",
      "meta_keywords": [
        "string"
      ],
      "meta_description": "string",
      "preorder_release_date": "2024-01-15T09:30:00Z",
      "preorder_message": "string",
      "is_preorder_only": true,
      "is_price_hidden": true,
      "price_hidden_label": "string",
      "custom_url": {
        "url": "string",
        "is_customized": true,
        "create_redirect": true
      },
      "open_graph_type": "product",
      "open_graph_title": "string",
      "open_graph_description": "string",
      "open_graph_use_meta_description": true,
      "open_graph_use_product_name": true,
      "open_graph_use_image": true,
      "gtin": "string",
      "mpn": "string",
      "date_last_imported": "string",
      "reviews_rating_sum": 3,
      "reviews_count": 4,
      "total_sold": 80,
      "custom_fields": [
        {
          "name": "ISBN",
          "value": "1234567890123",
          "id": 6
        }
      ],
      "bulk_pricing_rules": [
        {
          "id": 1,
          "quantity_min": 10,
          "quantity_max": 50,
          "type": "price",
          "amount": 10
        }
      ],
      "images": [
        {
          "date_modified": "2024-01-15T09:30:00Z",
          "description": "string",
          "id": 1,
          "image_url": "string",
          "is_thumbnail": true,
          "product_id": 1,
          "sort_order": 1,
          "url_standard": "string",
          "url_thumbnail": "string",
          "url_tiny": "string",
          "url_zoom": "string"
        }
      ],
      "primary_image": {
        "id": 1,
        "product_id": 1,
        "is_thumbnail": true,
        "sort_order": 1,
        "description": "string",
        "image_file": "string",
        "url_zoom": "string",
        "url_standard": "string",
        "url_thumbnail": "string",
        "url_tiny": "string",
        "date_modified": "2024-01-15T09:30:00Z"
      },
      "videos": [
        {
          "description": "A video about documenation",
          "id": 1,
          "length": "string",
          "product_id": 1,
          "sort_order": 1,
          "title": "Writing Great Documentation",
          "type": "youtube",
          "video_id": "z3fRu9pkuXE"
        }
      ],
      "date_created": "2018-08-15T14:49:05+00:00",
      "date_modified": "2018-08-24T14:41:00+00:00",
      "base_variant_id": 1,
      "calculated_price": 1.1,
      "options": [
        {
          "id": 55,
          "product_id": 4,
          "display_name": "Add-a-$5-Donation1535042499-187",
          "type": "radio_buttons",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "sort_order": 1,
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "id": 1,
              "is_default": false,
              "value_data": {}
            }
          ]
        }
      ],
      "modifiers": [
        {
          "required": true,
          "type": "date",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "display_name": "string",
          "id": 12,
          "name": "Add-a-$5-Donation1535039590-191",
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "adjusters": {
                "price": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "weight": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "image_url": "https://cdn8.bigcommerce.com/s-{{store_hash}}/products/184/images/445/naturalcanvascart2_1024x1024__92347__29648.1534344533.1280.1280.jpg?c=2",
                "purchasing_disabled": {
                  "status": true,
                  "message": "string"
                }
              },
              "id": 1,
              "is_default": false,
              "option_id": 1,
              "value_data": {}
            }
          ],
          "product_id": 77,
          "sort_order": 1
        }
      ],
      "option_set_id": 1,
      "option_set_display": "string",
      "channels": [
        1
      ],
      "view_count": 1
    }
  ],
  "meta": {
    "pagination": {
      "total": 36,
      "count": 36,
      "per_page": 50,
      "current_page": 1,
      "total_pages": 1,
      "links": {
        "previous": "string",
        "current": "?page=1&limit=50",
        "next": "string"
      }
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products"

querystring = {"date_last_imported":"date_last_imported","date_last_imported:max":"date_last_imported:max","date_last_imported:min":"date_last_imported:min","date_last_imported:not":"date_last_imported:not","date_modified":"date_modified","is_visible":"true"}

headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>"
}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true';
const options = {
  method: 'GET',
  headers: {Accept: 'application/json', 'X-Auth-Token': '<apiKey>'}
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true', [
  'headers' => [
    'Accept' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true");
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products?date_last_imported=date_last_imported&date_last_imported%3Amax=date_last_imported%3Amax&date_last_imported%3Amin=date_last_imported%3Amin&date_last_imported%3Anot=date_last_imported%3Anot&date_modified=date_modified&is_visible=true")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```