---
title: "List Products"
method: GET
path: "/v2/products"
tags: ["Products V2"]
---

# List Products

`GET /v2/products`

Returns a list of products for the specified project. Requires products:read scope. The `project_id` query parameter is required.

## Query parameters

- `limit` string — a string to be decoded into a number
- `starting_after` string — a string to be decoded into a number
- `ending_before` string — a string to be decoded into a number
- `project_id` string, required — Filter by project ID (required)
- `platform` union — Platform the product belongs to
  - 'ios' — Apple App Store
  - 'android' — Google Play Store
  - 'stripe' — Stripe
  - 'promotional' — Promotional (manual grants)
  - 'custom' — Custom (external purchase controller)

## Response `200`

Success

- object
  - `object` 'list', required — Object type, always `list`
  - `url` '/v2/products', required — API endpoint URL for this list
  - `has_more` boolean, required — Whether there are more results available beyond this page
  - `data` object[], required — List of results
    - `id` string, required — Unique identifier for the product
    - `object` 'product', required — Object type, always `product`
    - `application_id` string, required — ID of the application this product is stored under
    - `project_id` string, required — ID of the project this product belongs to
    - `identifier` string, required — Platform-specific product identifier
    - `name` string, nullable, required — Display name of the product, or null
    - `platform` union, required — Platform the product belongs to
      - 'ios' — Apple App Store
      - 'android' — Google Play Store
      - 'stripe' — Stripe
      - 'promotional' — Promotional (manual grants)
      - 'custom' — Custom (external purchase controller)
    - `store` union, required — Store backing the product, when applicable
      - 'app_store' — Apple App Store
      - 'play_store' — Google Play Store
      - 'custom' — Custom external purchase controller
    - `price` object, nullable, required — Price of the product, or null
      - `amount` number, required
      - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
    - `trial_price` object, nullable, required — Trial or introductory price of the product, or null
      - `amount` number, required
      - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
    - `monthly_billing_plan_price` object, nullable, required — Monthly billing plan price for annual iOS products, or null
      - `amount` number, required
      - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
    - `monthly_billing_plan_trial_period_days` number, nullable, required — Monthly billing plan trial days, or null
    - `monthly_billing_plan_trial_price` object, nullable, required — Monthly billing plan trial price, or null
      - `amount` number, required
      - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
    - `subscription` object, nullable, required — Subscription details, or null for one-time purchases
      - `period` 'day' | 'week' | 'month' | 'year', required — Billing period
      - `period_count` number, required — Number of periods per billing cycle
      - `trial_period_days` number, nullable, required — Number of trial days, or null
      - `introductory_offer` object — Introductory offer details
        - `type` 'free_trial' | 'pay_as_you_go' | 'pay_up_front', required — Type of introductory offer
        - `duration_days` number, required — Duration of the introductory offer in days
    - `app_store_info` object, nullable, required — App Store Connect metadata for iOS App Store products, or null
      - `state` string, required
      - `reference_name` string, required
      - `product_id` string, required
      - `in_app_purchase_type` string, required
    - `entitlements` string[], required — List of entitlement IDs granted by this product
    - `created_at` string, required — ISO 8601 timestamp of when the product was created
    - `updated_at` string, required — ISO 8601 timestamp of when the product was last updated
    - `metadata` object, required

## Other responses

- `400` — The request did not match the expected schema
- `401` — No API key was provided in the request
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `429` — Too many requests have been made in a short period
- `500` — An unexpected error occurred on the server

---

[API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) · [All operations](https://skmtc.dev/superwall/apis/superwall-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/superwall/superwall-api-v2/revisions/44900ad77d2c/schema)
