如何通过Shopify Partner API获取所有托管店铺的商品列表?
实现Shopify托管店铺商品库存查询的Node.js代码
前置准备
- 确认应用已获取托管店铺的
read_products权限(你已完成该配置) - 从Shopify Partners控制台获取应用的
API_KEY、API_SECRET,以及托管店铺的SHOP_DOMAIN(格式如your-shop.myshopify.com)和ACCESS_TOKEN(可在托管店铺详情页生成)
代码示例
先安装依赖包:
npm install shopify-api-node
编写查询代码:
const Shopify = require('shopify-api-node'); // 初始化Shopify客户端 const shopify = new Shopify({ shopName: 'YOUR_SHOP_DOMAIN', // 替换为目标托管店铺域名(无需带https) apiKey: 'YOUR_API_KEY', // 应用的API密钥 password: 'YOUR_ACCESS_TOKEN', // 托管店铺的访问令牌 apiVersion: '2024-04' // 使用Shopify最新稳定API版本 }); // 批量获取所有商品及对应库存信息 async function fetchAllProductsInventory() { let allProducts = []; let nextPage = null; try { do { const response = await shopify.product.list({ limit: 250, // 单次请求最大返回数,Shopify允许的上限 ...(nextPage && { pageInfo: nextPage }) // 分页续传参数 }); // 提取核心的商品与库存字段 const processedProducts = response.data.map(product => ({ productId: product.id, productTitle: product.title, variants: product.variants.map(variant => ({ variantId: variant.id, sku: variant.sku, inventoryQuantity: variant.inventory_quantity, inventoryItemId: variant.inventory_item_id })) })); allProducts = [...allProducts, ...processedProducts]; nextPage = response.pageInfo?.nextPageInfo; } while (nextPage); console.log('全量商品库存数据:', allProducts); return allProducts; } catch (error) { console.error('获取库存失败:', error.response?.data || error.message); throw error; } } // 执行查询 fetchAllProductsInventory();
关键说明
- 代码通过分页机制处理大量商品,避免单次请求数据超限
- 仅保留了核心的商品标识、SKU和库存数量字段,可根据需求自行扩展其他字段
- 若需批量处理多个托管店铺,可将各店铺的配置信息存入数组,循环调用查询函数
- 实时查询建议添加缓存逻辑,避免频繁调用触发Shopify的API速率限制
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

