Shopify Catalog API: Syncing Products Into Framer Pages (2026)
If you want a Shopify catalog API that feeds products into a Framer site, the one you want is the Storefront API. It serves published products, variants, images and prices straight to the browser, and it is the only Shopify API designed to be called from a public page. The Admin API holds the same catalog plus everything private, but it belongs on a server. And the thing Shopify actually calls a catalog is a third concept entirely — a pricing and publishing context for markets and B2B, not a product feed.
That three-way split is why so much Shopify API documentation reads as contradictory to designers. Every answer is correct about a different API.
Which Shopify API Serves a Catalog to a Framer Site?
The Storefront API, called with a public access token, from the browser. Everything else is a back-office job. Here is the whole decision in one table.
| API | What it returns | Safe to call client-side? | Limit that bites | What a Framer plugin should handle |
|---|---|---|---|---|
| Storefront API (GraphQL) | Published products, variants, prices, collections, cart and checkout | Yes — built for it | Tokenless queries capped at 1,000 complexity points | Token scoping, query cost budgeting, cart state |
| Admin API (GraphQL) | Everything: drafts, inventory, cost prices, orders, customers | No — server only | 100 points/sec restored on Standard, 2,000 on enterprise | Server-side proxy, retry and backoff |
| Admin API (REST) | Same data, legacy shape | No | Being frozen; GraphQL-only for new public apps | Nothing — do not build on it |
| Catalogs / price lists | Which products publish and at what price per market, B2B location or app | No — server only | Tied to Admin API limits | Market and B2B price resolution |
| Webhooks | A push when a product, price or inventory level changes | N/A — server receives | Delivery retries | Triggering a re-sync instead of polling |
Read that table top to bottom and the design decision makes itself: public reads go through the Storefront API, everything else goes through something your visitors never touch.
What the Shopify Catalog API Actually Is
A catalog in Shopify is a pricing and publishing context, not a list of products. Shopify's own reference puts it plainly: catalogs "control which products are published and how they're priced in different contexts". Those contexts are international markets, B2B company locations, and sales channels such as the online store versus point of sale.
So a MarketCatalog decides that a German shopper sees euros, and a CompanyLocationCatalog decides that a wholesale buyer sees contract pricing. Neither is how you render a product grid. If you reached this page searching for a Shopify catalog API because you wanted products on a page, the catalogs query is the wrong door — it is the right door only when the same product needs two different prices.
Can You Call the Shopify Admin API From the Browser?
No, and the reason is not rate limits — it is that an Admin API token grants read and write access to orders, customers and payouts. Shipping one inside a Framer page publishes it to everyone who opens dev tools.
Storefront access tokens are the opposite by design. They are scoped to published, public data, and Shopify expects them to be visible. The platform even accounts for it: buyer traffic on the Storefront API is not request-rate-limited, because capacity scales with the number of real buyers hitting it from different IP addresses. What is capped is complexity — a tokenless query cannot exceed 1,000 cost points before Shopify returns MAX_COMPLEXITY_EXCEEDED.
If a Framer page genuinely needs private data — inventory cost, an order lookup, a B2B price — that call goes to a small server-side function that holds the Admin token and returns only the field the page needs.
How Often Should a Framer Site Re-Fetch the Catalog?
On change, not on a timer. Shopify's Admin API restores 100 points per second on Standard plans, 200 on Advanced, 1,000 on Plus and 2,000 on enterprise, with any single query capped at 1,000 points. A naive hourly full-catalog crawl burns that budget on data that did not change.
Webhooks invert it. Subscribe to product and inventory events, let Shopify tell you what moved, and re-fetch only those items. A 400-product store then costs a handful of queries a day instead of thousands, and your pages stay current within seconds instead of within an hour. The trigger is the event, never the clock.
Which API Version Should You Pin?
Pin an explicit version and move deliberately. Shopify ships a new API version every three months and supports each stable release for a minimum of 12 months, with consecutive versions overlapping by at least nine. As of this writing the latest stable release is 2026-10.
That cadence is generous enough that nobody needs to chase it, and strict enough that an unpinned integration will break on a schedule you did not choose. If you are tracking what moved recently, the 2026-07 Storefront API changes are the most recent set that affected Framer builds directly.
REST is the one place where drifting is expensive. Shopify's developer changelog is unambiguous about the direction:
The REST Admin API will be marked as legacy, and future feature work will focus on GraphQL. — Shopify Developer Changelog
Since April 1, 2025, new public apps submitted to the App Store must be GraphQL-only. Starting a Framer integration on REST in 2026 means starting on a deprecated foundation.
What a Framer Plugin Should Handle for You
All of the above is plumbing, and none of it is design work. The jobs worth delegating are token scoping, query cost budgeting, webhook subscription, version pinning, and mapping Shopify fields onto Framer CMS fields — which matters because the CMS has real limits on list and reference fields that a naive one-to-one mapping will hit.
That is the job FramerLink does: it keeps the Storefront API calls public and cheap, keeps anything privileged off the page, and syncs on webhook rather than on a timer. If you would rather understand the architecture before picking a tool, start with how headless actually works for designers.
The short version stays the same whichever route you take. Storefront API in the browser, Admin API on the server, catalogs only when one product needs two prices.
Frequently asked questions
Is the Shopify API free?
Shopify's APIs cost nothing beyond your Shopify plan. The Storefront API, Admin API and webhooks are included on every paid plan at no extra charge, and Shopify Partner development stores let you build and test against real API endpoints for free before a store goes live.
What is API on Shopify?
An API on Shopify is an endpoint that lets outside software read or change store data without using the Shopify admin. The Storefront API serves public catalog and cart data to a website, the Admin API manages the back office, and webhooks push changes out when data updates.
Is there a REST API for Shopify?
Yes, but it is on the way out. Shopify's REST Admin API still works, while GraphQL is where all new feature work lands. Since April 1, 2025, new public apps submitted to the Shopify App Store must be GraphQL-only, with no REST implementation permitted.
Sources
- GraphQL Admin API rate limits — Shopify
- GraphQL Storefront API — Shopify
- About Shopify API versioning — Shopify
- Starting April 2025, new public apps must use GraphQL — Shopify
- Catalogs query, GraphQL Admin API — Shopify