Minimal working example: query your store's products using the Shopify GraphQL Admin API. Uses @shopify/shopify-api with a custom app access token for zero-friction setup.
shopify-install-auth setupshpat_xxx) from Settings > Apps > Develop appsmkdir shopify-hello-world && cd shopify-hello-world
npm init -y
npm install @shopify/shopify-api dotenv
# .env
SHOPIFY_STORE=your-store.myshopify.com
SHOPIFY_ACCESS_TOKEN=shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SHOPIFY_API_KEY=your_api_key
SHOPIFY_API_SECRET=your_api_secret
Initialize the Shopify API client with LATEST_API_VERSION (imported from @shopify/shopify-api), create a custom app session, then query shop info and products via GraphQL.
See Hello World Script for the complete implementation.
npx tsx hello-shopify.ts
# Or compile first:
npx tsc hello-shopify.ts && node hello-shopify.js
Expected console output:
Store: My Dev Store
Currency: USD
Products:
- Classic T-Shirt (ACTIVE, 150 in stock)
Variant: Small — $29.99 (SKU: TSH-SM)
Variant: Medium — $29.99 (SKU: TSH-MD)
Variant: Large — $29.99 (SKU: TSH-LG)
- Coffee Mug (ACTIVE, 42 in stock)
Variant: Default Title — $14.99 (SKU: MUG-01)
Success! Your Shopify connection is working.
| Error | Cause | Solution |
|---|---|---|
HttpResponseError: 401 Unauthorized |
Invalid or revoked access token | Regenerate token in Shopify admin > Settings > Apps |
HttpResponseError: 403 Forbidden |
Token lacks required scopes | Enable read_products scope in app config |
HttpResponseError: 404 Not Found |
Wrong store domain or API version | Verify store URL is *.myshopify.com |
ENOTFOUND your-store.myshopify.com |
Store domain typo or DNS issue | Double-check SHOPIFY_STORE value |
GraphqlQueryError with userErrors |
Invalid query syntax | Check field names against API version docs |
MODULE_NOT_FOUND @shopify/shopify-api |
Package not installed | Run npm install @shopify/shopify-api |
See GraphQL Mutation and REST Examples for a productCreate mutation and legacy REST API usage.