Skip to main content

Shopify API limits

Some Shopify APIs limit the inputs they accept, and most are rate-limited. This page covers the limits that apply across the APIs, and points to the figures for each one.


Rate limits keep the platform stable and fair for everyone. How a limit is calculated, and the figures that apply to you, vary by API. Use industry standard techniques for limiting calls, caching results, and retrying requests responsibly.

Every API applies limits differently, so the figures and the mechanics are documented with each API, including:

Anchor to The leaky bucket algorithmThe leaky bucket algorithm

Most Shopify rate limits are enforced with a leaky bucket algorithm. The main points to understand about the leaky bucket metaphor are as follows:

  • Each app has access to a bucket. Its size is set by the API and by your plan.
  • Each API request tosses some number of marbles into the bucket. How many depends on the API's rate-limiting method.
  • The bucket leaks continuously at that API's restore rate, which frees up capacity for more marbles.
  • If the bucket fills, you get a throttle error and have to wait for more bucket capacity to become available.

Both the bucket size and the restore rate vary by API and by plan, so refer to rate limits by API for the figures that apply to you. This model means that apps that manage API calls responsibly keep capacity for bursts: as long as your average stays under the restore rate, a short burst above it still succeeds.

The Storefront API works differently. Buyer traffic isn't rate-limited at all, and the limits it does apply are described in Storefront API rate limits.

Shopify may temporarily reduce API rate limits to protect platform stability. We will strive to keep these instances brief and rare. However, your application should be built to handle limits gracefully.

Anchor to Resource-based rate limitsResource-based rate limits

Once a store has 500,000 product variants, no more than 10,000 new variants can be created per day, on any API.

The resources and mutations that are subject to the throttle are listed with each API's rate limits: GraphQL Admin API and REST Admin API.

Plus

The variant creation throttle doesn't apply to stores on the Shopify Plus plan.

Anchor to Avoiding rate limit errorsAvoiding rate limit errors

Designing your app with best practices in mind is the best way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. Consider the following best practices when designing your app:

  • Optimize your code to only get the data that your app requires.
  • Use caching for data that your app uses often.
  • Regulate the rate of your requests for smoother distribution.
  • Include code that catches errors. If you ignore these errors and keep trying to make requests, then your app won't be able to gracefully recover.
  • Use metadata about your app's API usage, included with all API responses, to manage your app's behavior dynamically.
  • Your code should stop making additional API requests until enough time has passed to retry. The recommended backoff time is one second.

Input arguments that accept an array have a maximum size of 250, on every Shopify API. Requests return an error if an input array exceeds 250 items.


Pagination of arrays of objects caps at 25,000 objects, and the cap applies to count queries too. For how the limit behaves and what to do when you need to page past it, refer to GraphQL pagination.


Was this page helpful?