# Storefront API 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). ## storefront Provides utilities that apps can use to make requests to the Storefront API. ### StorefrontContext ### graphql 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). ## Related - [App proxy context](/docs/api/shopify-app-remix/authenticate/public/app-proxy) - [Unauthenticated context](/docs/api/shopify-app-remix/unauthenticated/unauthenticated-storefront) ## Examples 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). ### graphql ### Querying the GraphQL API ```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 }); } ```