<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/Product/products(for:)",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV8products3forSayACGx_tYaKSlRzSS7ElementRtzlFZ"
  },
  "title" : "products(for:)"
}
-->

# products(for:)

Requests product data from the App Store.

```
static func products<Identifiers>(for identifiers: Identifiers) async throws -> [Product] where Identifiers : Collection, Identifiers.Element == String
```

## Parameters

`identifiers`

A collection of unique in-app purchase product identifiers that you previously configured in App Store Connect. StoreKit ignores any duplicate identifiers in the collection.

## Return Value

An array of products, returned from the App Store.

## Discussion

Use this method to get an instance of [`Product`](/documentation/StoreKit/Product). Your app must have its product identifiers available to provide them to this function. The following example illustrates requesting two products using hard-coded identifiers.

```swift
let productIdentifiers = ["com.example.productA", "com.example.productB"]
let appProducts = try await Product.products(for: productIdentifiers)
```

You initially create product identifiers when you configure in-app purchases in App Store Connect; for more information, see [Create an in-app purchase](https://help.apple.com/app-store-connect/#/devae49fb316). Your app can store or retrieve product identifiers in several ways, such as embedding the identifiers in the app bundle, or fetching them from your server.

If any identifiers are invalid or the App Store can’t find them, the App Store excludes them from the return value. The [`products(for:)`](/documentation/StoreKit/Product/products(for:)) function can throw a [`StoreKitError`](/documentation/StoreKit/StoreKitError) for system-related errors.

> Tip: Use a single request to fetch a large volume of products.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)