GraphQL Admin API Shop.allProductCategoriesList returns at most 500 items while the docs state a limit of 1000

Hi Shopify team,

We’re using shop.allProductCategoriesList (GraphQL Admin API 2026-01) to sync a shop’s in-use product categories. The docs state “Limit: 1000 product categories” (identical wording across 2026-01 through 2026-10), but we consistently observe a hard cap of 500.

We sampled production shops that each have ≥1000 products: the returned list never exceeds 500, with the longest being exactly 500. Three consecutive calls returned byte-identical results (same md5), so this is a deterministic cap rather than an intermittent issue.

For one of those shops we counted the true number of distinct assigned categories by paginating products(first:250){ edges { node { category { id } } } } — ≥1375 distinct categories, while allProductCategoriesList returns exactly 500.

We also looked at taxonomy.categories: it does support pagination, but it returns the global Shopify taxonomy and cannot be scoped to the categories a specific shop actually uses.

Questions

  1. Is the effective limit 500 or 1000? If 500 is intended, could the documentation be corrected?
  2. For shops exceeding 500 categories, is there any way (or roadmap) to retrieve the complete set? The field is typed [TaxonomyCategory!]! — a plain list rather than a Connection — takes no arguments, and offers no pagination today.
  3. Does the limit differ across API versions?

Thanks!

Hi @_Henry_H - I had a look into this for you internally and my tests confirmed the same thing.

Whether 500 is the intended limit or the documentation reflects the intended behaviour is what needs confirming, so I have raised this with the relevant team internally.

I did look into a workaround too and found there’s currently no supported way to retrieve the complete set above 500 today. The field is a plain list with no arguments and no pagination, so no argument or parameter can raise the cap.

Your approach is the right workaround - derive the distinct set from the products connection, ideally via a bulk operation to avoid synchronous pagination. Then, deduplicate the category.id values from the downloaded output. The bulk operations guide covers the polling and download steps.

Finally, the limit does not differ across versions. Both allProductCategoriesList and the deprecated allProductCategories return the same capped 500.

I’ve asked internally regarding the cap, and if the 500 cap is intended whether we have anything in the works that will allow you to get the full list. I’ll follow up here once I have more details to share from them - thanks for raising this here!