--- title: Storefront API description: |- Contains objects used to interact with the Storefront API. This object is returned as part of different contexts, such as [`appProxy`](/docs/api/shopify-app-remix/authenticate/public/app-proxy), and [`unauthenticated.storefront`](/docs/api/shopify-app-remix/unauthenticated/unauthenticated-storefront). api_version: v1 api_name: shopify-app-remix source_url: html: https://shopify.dev/docs/api/shopify-app-remix/v1/apis/storefront-api md: https://shopify.dev/docs/api/shopify-app-remix/v1/apis/storefront-api.md --- # Storefront APIobject Contains objects used to interact with the Storefront API. This object is returned as part of different contexts, such as [`appProxy`](https://shopify.dev/docs/api/shopify-app-remix/authenticate/public/app-proxy), and [`unauthenticated.storefront`](https://shopify.dev/docs/api/shopify-app-remix/unauthenticated/unauthenticated-storefront). ## storefront Provides utilities that apps can use to make requests to the Storefront API. * graphql GraphQLClient required Method for interacting with the Shopify Storefront GraphQL API If you're getting incorrect type hints in the Shopify template, follow [these instructions](https://github.com/Shopify/shopify-app-template-remix/tree/main#incorrect-graphql-hints). ## Examples ### graphql Querying the GraphQL API Use `storefront.graphql` to make query / mutation requests. ### Examples * #### Querying the GraphQL API ##### Description Use \`storefront.graphql\` to make query / mutation requests. ##### Example ```typescript import { ActionArgs } from "@remix-run/node"; import { authenticate } from "../shopify.server"; export async function action({ request }: ActionArgs) { const { storefront } = await authenticate.storefront(request); const response = await storefront.graphql(`{blogs(first: 10) { edges { node { id } } } }`); const productData = await response.json(); return json({ data: productData.data }); } ``` ## Related [![](https://shopify.dev/images/icons/32/pickaxe-1.png)![](https://shopify.dev/images/icons/32/pickaxe-1-dark.png)](https://shopify.dev/docs/api/shopify-app-remix/authenticate/public/app-proxy) [Authenticate requests from Shopify app proxies.App proxy context](https://shopify.dev/docs/api/shopify-app-remix/authenticate/public/app-proxy) [![](https://shopify.dev/images/icons/32/pickaxe-1.png)![](https://shopify.dev/images/icons/32/pickaxe-1-dark.png)](https://shopify.dev/docs/api/shopify-app-remix/unauthenticated/unauthenticated-storefront) [Interact with the Storefront API on non-Shopify requests.Unauthenticated context](https://shopify.dev/docs/api/shopify-app-remix/unauthenticated/unauthenticated-storefront)