Shopify API Guide
Everything you need to understand Shopify's API surfaces โ when to use each, how rate limits work, and how to scale from single calls to async bulk operations.
APIs at a Glance
Shopify exposes several API surfaces. New apps should default to the GraphQL Admin API.
GraphQL Admin API
The recommended API for all admin CRUD. Rate limiting uses a calculated query cost model โ not simple requests-per-second. Each app + store pair gets a bucket that restores over time.
Rate limits by plan
| Plan | Points / sec | Restore rate |
|---|---|---|
| Standard | 100 | 50 / sec |
| Advanced Shopify | 200 | โ |
| Shopify Plus | 1,000 | โ |
| Commerce Components | 2,000 | โ |
Throttle status in every response
Use the extensions.cost block to implement dynamic backoff โ don't guess, read the signal Shopify gives you.
REST Admin API Legacy
Marked legacy as of October 2024. Uses a leaky bucket model based on raw requests-per-second rather than query cost.
| Plan | Requests / sec | Bucket size |
|---|---|---|
| Standard | 2 | 40 |
| Advanced Shopify | 4 | โ |
| Shopify Plus | 20 | 400 |
| Commerce Components | 40 | โ |
Retry-After header. Always respect it before retrying.Storefront API
Buyer-facing GraphQL API โ products, collections, carts, checkout. No fixed requests-per-minute for real buyer traffic.
Bulk Operations
Designed for high-volume reads and writes that would exhaust normal query cost limits. Submit โ poll โ download. No HTTP connection held open.
How it works
Use bulk operations for
- Exporting all products, all orders, or all customers
- Large catalog syncs or platform migrations
- Any write that would drain your entire rate limit bucket in one go
Webhooks
Shopify POSTs to your HTTPS endpoint when a subscribed event occurs โ orders/create, products/update, app/uninstalled, and more.
- Respond with 2xx within a few seconds, or Shopify retries with backoff
- Webhook deliveries do not count against your outbound API rate limits
- Any Shopify API calls you make inside a webhook handler do count
- Use for keeping external systems in sync without polling
Shopify Functions
WebAssembly functions deployed via Admin GraphQL, invoked by Shopify at checkout runtime (discounts, shipping, payment customizations). You deploy โ Shopify calls them when relevant events occur. No direct API call per buyer action.
Global Limits
These apply across all APIs, regardless of plan.
Choosing Sync vs Async
Quick decision rule
- Low to moderate volume + targeted โ synchronous GraphQL Admin API
- Would hit the 1,000-point query cap or drain your bucket โ Bulk operations
- Need to react to something that happened โ Webhooks