In the Admin GraphQL API create or query existing markets using the markets query; each market has a name, primary and alternate domains, currency settings, and optionally a catalog assignment
Create a B2B-specific catalog using catalogCreate mutation with a priceListId and companyLocationId to link pricing to a specific B2B company location; assign the catalog to the relevant market via marketCatalogCreate
Set market-specific currency and tax settings with marketUpdate; for B2B markets you may want taxShipping: false and tax-exclusive pricing to match B2B invoicing norms
In the Storefront API use the buyer context headers (Shopify-Storefront-Buyer-IP and a customer access token or company context token) so that product queries return market- and catalog-specific prices
To restrict a market to B2B buyers only, combine market access with company-gated login flows: redirect unauthorized visitors who land on B2B market URLs to a login page that requires company credentials
Test by querying product prices from the Storefront API with and without company context tokens to confirm the correct catalog price list is applied
Known gotchas
Markets and B2B catalogs are additive features — a product must be included in the catalog (or the catalog must apply to all products) for it to appear in B2B market Storefront API queries; excluded products return no data
Tax-inclusive vs tax-exclusive pricing in Markets affects the displayed price to customers; confirm your market taxesIncluded setting matches the legal requirement for each country
The Storefront API market context is set via headers or via the country argument on cart/product queries — not via a cookie; headless storefronts must explicitly pass market context on every request
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp