Shopify hub

Shopify Menu API

A store's navigation menu, including one level of nested items.

GET /v1/shopify/store/menus/{handle}

1 credit Failed requests are free

About this endpoint

GET /v1/shopify/store/menus/{handle}?store=… returns data.menu with id, title, itemsCount and items. Each item has id, title, type, url, resourceId and tags, plus its own items for one level of nesting. Common handles are main-menu and footer.

A handle that does not exist returns not_found with menu null. The public schema exposes the nested level the storefront publishes; deeper levels are not returned.

Shopify Menu API FAQ

How do I find a menu handle?

Handles usually describe the region, for example main-menu or footer. They appear in the store's navigation settings and in its page links.

How deep does the menu go?

Top-level items and one nested level are returned. Deeper nesting is not part of the public shape.

What if the handle is wrong?

The answer is not_found with menu null. HTTP 200 only means the request finished.

How do I name the store?

The store is the domain, for example allbirds.com, www.allbirds.com or weareallbirds.myshopify.com. A full URL is reduced to its host.

How is it billed?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.

What does lookupStatus mean?

found means the lookup succeeded. not_found means the store or entity does not exist or is not a Shopify store. private means the storefront is password-protected. restricted means it is paused or frozen. HTTP 200 only means the request finished, so branch on lookupStatus.