---
title: "List products"
method: GET
path: "/v1/climate/products"
---

# List products

`GET /v1/climate/products`

## Request

- Base URL: `https://api.stripe.com`
- URL: `https://api.stripe.com/v1/climate/products`
- Auth: one of:
  - HTTP basic
  - HTTP bearer

Lists all available Climate product objects.

## Query parameters

- `ending_before` string
- `expand` string[]
- `limit` integer
- `starting_after` string

## Response `200`

Successful response.

- object
  - `data` ClimateProduct[], required
    - `created` integer, required: Time at which the object was created. Measured in seconds since the Unix epoch.
    - `current_prices_per_metric_ton` object, required: Current prices for a metric ton of carbon removal in a currency's smallest unit.
    - `delivery_year` integer, nullable: The year in which the carbon removal is expected to be delivered. If the year is in the past, this represents spot inventory with guaranteed delivery.
    - `id` string, required: Unique identifier for the object. For convenience, Climate product IDs are human-readable strings that start with `climsku_`. See [carbon removal inventory](https://stripe.com/docs/climate/orders/carbon-removal-inventory) for a list of available carbon removal products.
    - `livemode` boolean, required: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
    - `metric_tons_available` string, decimal, required: The quantity of metric tons available for reservation.
    - `name` string, required: The Climate product's name.
    - `object` 'climate.product', required: String representing the object's type. Objects of the same type share the same value.
    - `suppliers` ClimateSupplier[], required: The carbon removal suppliers that fulfill orders for this Climate product.
      - `id` string, required: Unique identifier for the object.
      - `info_url` string, required: Link to a webpage to learn more about the supplier.
      - `livemode` boolean, required: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
      - `locations` ClimateRemovalsLocation[], required: The locations in which this supplier operates.
        - `city` string, nullable: The city where the supplier is located.
        - `country` string, required: Two-letter ISO code representing the country where the supplier is located.
        - `latitude` number, nullable: The geographic latitude where the supplier is located.
        - `longitude` number, nullable: The geographic longitude where the supplier is located.
        - `region` string, nullable: The state/county/province/region where the supplier is located.
      - `name` string, required: Name of this carbon removal supplier.
      - `object` 'climate.supplier', required: String representing the object’s type. Objects of the same type share the same value.
      - `removal_pathway` 'biomass_carbon_removal_and_storage' | 'direct_air_capture' | 'enhanced_weathering' | 'marine_carbon_removal', required: The scientific pathway used for carbon removal.
  - `has_more` boolean, required: True if this list has another page of items after this one that can be fetched.
  - `object` 'list', required: String representing the object's type. Objects of the same type share the same value. Always has the value `list`.
  - `url` string, required: The URL where this list can be accessed.

## Other responses

- `default`: Error response.

## Changes

> 19 revisions in range; 7 not diffed, 2 could not be searched.

- **2026-09-25** `8b5c2f03d4cd`: 11 info
  - added the optional property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/payment_method_details/anyOf[subschema #1: payment_method_details]/bancontact/generated_sepa_debit_mandate/anyOf[subschema #2: Mandate]/payment_method_details/card/india` to the response with the `default` status
  - added the optional property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/payment_method_details/anyOf[subschema #1: payment_method_details]/card/mandate/anyOf[subschema #2: Mandate]/payment_method_details/card/india` to the response with the `default` status
  - added the optional property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/payment_method_details/anyOf[subschema #1: payment_method_details]/ideal/generated_sepa_debit_mandate/anyOf[subschema #2: Mandate]/payment_method_details/card/india` to the response with the `default` status
  - added the optional property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/payment_method_details/anyOf[subschema #1: payment_method_details]/sofort/generated_sepa_debit_mandate/anyOf[subschema #2: Mandate]/payment_method_details/card/india` to the response with the `default` status
  - …7 more
  - …this revision’s changelog is incomplete
- …earlier changes not shown

[Operation history](https://skmtc.dev/stainless-api/apis/stripe-api/changes/v1/climate/products/get.md)

---

[API](https://skmtc.dev/stainless-api/apis/stripe-api.md) · [All operations](https://skmtc.dev/stainless-api/apis/stripe-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stainless-api/apis/stripe-api/revisions/7cff4cc46d06?raw)
