Shopify's Open Secret: Every Store Exposes /products.json Build in public: how I turned a 10-line trick into a working Shopify scraper — no login, no CAPTCHA, no anti-bot. If you've ever tried scraping an e-commerce site, you know the drill: Cloudflare walls, CAPTCHAs, session tokens, cat-and-mouse games with anti-bot teams. Then I discovered that most Shopify stores hand you their entire product catalog on a silver platter. The trick Every Shopify store has a public JSON endpoint: https://STORE.com/products.json?limit=250&page=1 No auth. No CAPTCHA. Just clean JSON — title, price, variants, SKUs, inventory, tags. For the store, it's the API behind their own product pages. For us, it's a gift. The whole scraper in 10 lines import requests def get_products ( store_url , max_pages = 4 ): base = store_url . rstrip ( " / " ) + " /products.json " products = [] for page in range ( 1 , max_pages + 1 ): data = requests . get ( f " { base } ?limit=250&page= { page } " , timeout = 20 ). json () items = data . get ( " products " , []) if not items : break products . extend ( items ) return products That's it. Paginate until empty, and you have a store's full catalog. Real result: kith.com I ran it against a real store while writing this. One page, 250 products, 215 variants in the response — including this: { "title" : "Nike WMNS Moon Shoe - Sail / Chlorophyll" , "price" : 105.0 , "sku" : "14318102" , "inventory" : null , "available" : false , "tags" : "sneaker, nike, footwear, ..." } Every variant has its own SKU, price, and compare-at price. That's competitor intelligence data — prices, stock, product launches — sitting behind a single GET request. Try it yourself (30 seconds) Don't take my word for it — run this and see the live response: curl -s "https://kith.com/products.json?limit=5&page=1" | head -c 2000 If you get JSON back, the store is scrapeable the easy way. (Not all stores leave it open — test before you commit to a project.) What's it good for? Competitor monitoring — track when a rival changes prices or restocks Dropshipping / product research — find what's trending across stores Catalog snapshots — for analytics, dashboards, or AI training data The honest limits Only works on Shopify stores (non-Shopify sites return nothing — check https://store.com/products.json first) Some big stores disable it or rate-limit aggressively (usually the ones with the most aggressive bot protection) Inventory data is sometimes null — the store decides what to expose The polished version Full disclosure: I built this and I maintain it — it's the tool I use for my own competitor monitoring. If you want this packaged and ready-to-run, I published it as a free-to-try Apify actor — handles pagination, normalization, and exports clean CSV/JSON/Excel. No Docker setup, no proxy management, runs on demand. Otherwise the 10 lines above are all you need. If you're doing competitor research or building a price tracker, try the endpoint first — you might not need a battle against anti-bot at all. Have you found other public endpoints like this? Drop them in the comments — the good ones deserve a thread.

Shopify's Open Secret: Every Store Exposes /products.json
Shan Yun

