The Shopify Catalog API lists products from a public Shopify shop. query is the shop domain or any URL on that shop, such as decathlon.com or https://www.decathlon.com. A product link on the same host selects that shop too. shopify.com and apps.shopify.com are rejected.
The shop's public /products.json feed is returned as results and pagination.
GET https://api.piloterr.com/v2/shopify/catalog?query=https://www.decathlon.com&page=1&limit=30
| Parameter |
Type |
Required |
Description |
query |
string |
yes |
Shop domain or shop URL. decathlon.com and https://www.decathlon.com/products/some-handle both read the Decathlon shop. |
page |
integer |
no |
Page number, starting at 1. Omit it for page 1. page=2 is the next slice. |
limit |
integer |
no |
Items on this page. Default 30. Maximum 250. |
| Field |
Type |
Description |
results[].title |
string |
Product title |
results[].handle |
string |
Product handle |
results[].url |
string |
Product URL on the shop |
results[].vendor |
string |
Vendor |
results[].product_type |
string |
Product type |
results[].tags |
array |
Tags |
results[].description |
string |
Product description |
results[].variants[].price |
number |
Variant price |
results[].variants[].price_display |
string |
Price label, without a trailing dash |
results[].variants[].compare_at_price |
number or null |
Compare-at price when the shop sends one |
results[].variants[].available |
boolean |
Variant availability |
results[].image.src |
string |
First image URL |
pagination.page |
number |
Requested page |
pagination.per_page |
number |
Requested limit |
pagination.total_results |
null |
The shop JSON does not include a total |
pagination.total_pages |
null |
The shop JSON does not include a page count |
pagination.next |
string or null |
Next shop JSON URL when this page is full, otherwise null |
- Walk a merchant catalog for price and availability checks
- Import the first pages of a Shopify shop into a PIM
- Follow
pagination.next until the shop runs out of products
| Code |
Meaning |
| 400 |
Missing query, a domain that is not a shop, or page / limit out of range |
| 403 |
The shop blocked the JSON feed |
| 404 |
This page has no products |
| 500 |
The feed could not be fetched |