Read_markets scope granted, but markets field returns "Access denied" for a specific store

Hi Shopify Community,

I’m facing an issue with a public Shopify app where the read_markets scope appears to be granted, but I still receive an “Access denied for markets field” error when querying the Markets API.

Environment

  • App type: Custom Public App

  • Scope added in shopify.app.toml:

    read_markets
    
  • The issue occurs while rendering the Admin → Variant Tier Listing page.

  • The app was installed on the affected store after adding the read_markets scope.

Error

When the Variant Tier Listing page loads, I get the following error in the browser console:

Error loading volume rules: Error: Access denied for markets field.

Scope Verification

I also checked the granted scopes using:

shopify.scopes.query()

The response shows that read_markets is already granted:

granted: [
  'read_cart_transforms',
  'read_customers',
  'read_delivery_customizations',
  'read_discounts',
  'read_draft_orders',
  'read_inventory',
  'read_locations',
  'read_markets',
  'read_metaobject_definitions',
  'read_metaobjects',
  'read_orders',
  'read_payment_customizations',
  'read_products',
  'read_publications',
  'read_shipping',
  'read_themes',
  'read_validations',
  'write_cart_transforms',
  'write_checkouts',
  'write_customers',
  'write_delivery_customizations',
  'write_discounts',
  'write_draft_orders',
  'write_inventory',
  'write_metaobject_definitions',
  'write_metaobjects',
  'write_orders',
  'write_payment_customizations',
  'write_products',
  'write_publications',
  'write_shipping',
  'write_themes',
  'write_validations',
  'read_checkouts'
]

So, from the app’s perspective, read_markets is definitely present in the granted scopes.

Important Observation

This issue is not occurring on all stores.

It is happening only on a particular store, and that store was installed/reinstalled after read_markets was added to shopify.app.toml.

This makes me suspect that the issue may be related to one of the following:

  1. Store-specific Markets configuration or permissions.
  2. Differences in Shopify API version or GraphQL access.
  3. read_markets being granted at the OAuth/app level but not allowing access to the specific markets field being queried.
  4. A difference between the scopes returned by shopify.scopes.query() and the permissions actually enforced by the GraphQL Admin API.
  5. Some store/account-level restriction related to Shopify Markets.

Question

Could someone help clarify why Shopify is returning Access denied for markets field even though read_markets is present in the granted scopes?

Also, is there any additional permission, store-level configuration, API version requirement, or Markets-specific restriction that needs to be checked?

Since the same app and functionality work correctly on other stores, I would especially like to understand what could cause this behavior for only one store.

Hey @Shrutika_Lokhande - thanks for flagging this.

The markets query should only require read_markets, so the next thing I’d check is whether the embedded request is using an online/per-user token. Direct API requests use online access by default, meaning the logged-in staff user’s permissions can also affect the request.

Could you try the following and let me know what you see?

  1. Test the same page as the shop owner, or a staff user with View Markets and Domains permissions.
  2. Confirm whether direct_api_mode is set to online or offline, and try the request with an offline/shop token if possible.

This solved case had the same ACCESS_DENIED pattern and was fixed by switching to a shop token/correcting the staff user’s permissions:

The Markets scope requirements are documented here:

If it still fails as the owner and with an offline token, could you share the exact query, API version, UTC timestamp, and x-request-id from the failed response? Those would be the most useful details for checking further on our end. Hope this helps!