Shopify store research
Look up and crawl independent Shopify-powered storefronts — products,
collections, pages, sitemaps, predictive search, and product recommendations
— all as normalized JSON from the Crawlora API, with no HTML scraping. Works
against any Shopify store by domain (not Shop.app; see the separate
shop-app-research skill for that), plus 14 brand storefronts with their own
pre-wired, no-url-needed endpoints: Allbirds, Brooklinen, Cole Haan,
Everlane, Fashion Nova, Gymshark, J.Crew, Kylie Cosmetics, Oh Polly, Quince,
Rothy's, SKIMS, Steve Madden, and The Body Shop.
When to use this skill
- "List the products/collections in this Shopify store."
- "What's on this Shopify store's
/pages/about page?"
- "Crawl this Shopify store's sitemap for every product URL."
- "What does this Shopify store's search suggest for 'running shoes'?"
- "What products does Shopify recommend alongside this product?"
- Catalog audits, competitive-assortment research, or full-store crawls of a
Shopify-powered site.
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEY in the environment before running the helper.
- The helper reads
CRAWLORA_API_KEY from the environment and sends requests to https://api.crawlora.net/api/v1. Missing/invalid key → 401.
How it works
Every call takes the storefront's url (the store's public domain, e.g.
https://example.myshopify.com or a custom domain like
https://example.com) plus endpoint-specific params:
- Resolve the store —
/shopify/store returns normalized storefront
metadata; if the vanity domain blocks /products.json, it falls back to
the store's public *.myshopify.com domain.
- Browse the catalog —
/shopify/collections and /shopify/products
(paginated, limit up to 250) list collections and products; drill into
one collection's products with /shopify/collections/{handle}/products.
- Detail —
/shopify/products/{handle} for a single product's full
detail.
- Recommendations —
/shopify/products/{handle}/recommendations
(intent=related|complementary) for cross-sell/upsell data.
- Static content —
/shopify/pages and /shopify/pages/{handle} for
the store's static pages (body HTML returned as cleaned text).
- Sitemap crawl —
/shopify/sitemaps lists the child sitemaps;
/shopify/sitemap/urls (type=products|collections|pages|blogs|...)
returns capped URL entries from them, useful for enumerating a whole
store without paginating every list endpoint.
- Search —
/shopify/search/suggest (q=, optional types=) returns
predictive-search products, collections, and query suggestions.
- Brand-pinned stores — the same operations exist under a brand prefix
with no
url param needed, e.g. /allbirds/products,
/rothys/products/{handle}, /skims/sitemap/urls. Use these instead of
/shopify/...?url=... when the user names one of the 14 pre-wired
brands directly.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Resolve store metadata:
scripts/crawlora.sh /shopify/store url="https://example.myshopify.com" | jq '.'
# List products / collections (paginated):
scripts/crawlora.sh /shopify/products url="https://example.myshopify.com" limit=100 page=1 | jq '.'
scripts/crawlora.sh /shopify/collections url="https://example.myshopify.com" | jq '.'
# Crawl the sitemap for every product URL:
scripts/crawlora.sh /shopify/sitemap/urls url="https://example.myshopify.com" type=products limit=250 | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for every Shopify
endpoint this skill uses (method, path, params, description), including
the 14 brand-pinned mirrors.
Examples
- Catalog audit:
/shopify/products (paginate with page/limit) to
list a store's full catalog with prices and variants, then flag gaps or
outliers.
- Sitemap-driven full crawl:
/shopify/sitemaps to find the child
sitemaps, then /shopify/sitemap/urls?type=products to enumerate every
product URL without walking paginated list endpoints.
- Search & recommendation research:
/shopify/search/suggest for a
query to see what a store's predictive search surfaces, then
/shopify/products/{handle}/recommendations to map cross-sell links
between products.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo.
Key at https://crawlora.net.
- Public data only — public storefront pages; respect each store's terms.
- Security: key lives in
CRAWLORA_API_KEY only — never hardcode, query-param, or commit it.
url is required on every call — the store's public domain
(*.myshopify.com or custom domain); there's no default store.
- Results are paginated — pass
page (and limit where supported, up to
- to walk collections, products, and pages.
- Product/collection/page lookups take a
handle, not a numeric ID —
discover handles via the list endpoints or sitemap crawl first.
- Empty result pages return
200 with an empty array rather than an error —
check the array length to know when to stop paginating.
1---2name: shopify-research3description: Researches independent Shopify-powered storefronts — products, collections, pages, sitemaps, search suggestions, and product recommendations — using the Crawlora API, returning clean JSON for any store by domain, plus 14 pre-wired DTC brand storefronts (Allbirds, Brooklinen, Cole Haan, Everlane, Fashion Nova, Gymshark, J.Crew, Kylie Cosmetics, Oh Polly, Quince, Rothy's, SKIMS, Steve Madden, The Body Shop). Use when the user asks to audit a Shopify store's catalog, crawl its sitemap, look up a product or collection, or pull search/recommendation data — instead of scraping the store's pages directly.4---56# Shopify store research78Look up and crawl independent Shopify-powered storefronts — products,9collections, pages, sitemaps, predictive search, and product recommendations10— all as normalized JSON from the Crawlora API, with no HTML scraping. Works11against any Shopify store by domain (not Shop.app; see the separate12`shop-app-research` skill for that), plus 14 brand storefronts with their own13pre-wired, no-`url`-needed endpoints: Allbirds, Brooklinen, Cole Haan,14Everlane, Fashion Nova, Gymshark, J.Crew, Kylie Cosmetics, Oh Polly, Quince,15Rothy's, SKIMS, Steve Madden, and The Body Shop.1617## When to use this skill1819- "List the products/collections in this Shopify store."20- "What's on this Shopify store's `/pages/about` page?"21- "Crawl this Shopify store's sitemap for every product URL."22- "What does this Shopify store's search suggest for 'running shoes'?"23- "What products does Shopify recommend alongside this product?"24- Catalog audits, competitive-assortment research, or full-store crawls of a25 Shopify-powered site.2627## Setup (one-time)2829- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).30- Set `CRAWLORA_API_KEY` in the environment before running the helper.31- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.3233## How it works3435Every call takes the storefront's `url` (the store's public domain, e.g.36`https://example.myshopify.com` or a custom domain like37`https://example.com`) plus endpoint-specific params:38391. **Resolve the store** — `/shopify/store` returns normalized storefront40 metadata; if the vanity domain blocks `/products.json`, it falls back to41 the store's public `*.myshopify.com` domain.422. **Browse the catalog** — `/shopify/collections` and `/shopify/products`43 (paginated, `limit` up to 250) list collections and products; drill into44 one collection's products with `/shopify/collections/{handle}/products`.453. **Detail** — `/shopify/products/{handle}` for a single product's full46 detail.474. **Recommendations** — `/shopify/products/{handle}/recommendations`48 (`intent=related|complementary`) for cross-sell/upsell data.495. **Static content** — `/shopify/pages` and `/shopify/pages/{handle}` for50 the store's static pages (body HTML returned as cleaned text).516. **Sitemap crawl** — `/shopify/sitemaps` lists the child sitemaps;52 `/shopify/sitemap/urls` (`type=products|collections|pages|blogs|...`)53 returns capped URL entries from them, useful for enumerating a whole54 store without paginating every list endpoint.557. **Search** — `/shopify/search/suggest` (`q=`, optional `types=`) returns56 predictive-search products, collections, and query suggestions.578. **Brand-pinned stores** — the same operations exist under a brand prefix58 with no `url` param needed, e.g. `/allbirds/products`,59 `/rothys/products/{handle}`, `/skims/sitemap/urls`. Use these instead of60 `/shopify/...?url=...` when the user names one of the 14 pre-wired61 brands directly.6263Full endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).6465## Calling the API6667```sh68# Resolve store metadata:69scripts/crawlora.sh /shopify/store url="https://example.myshopify.com" | jq '.'7071# List products / collections (paginated):72scripts/crawlora.sh /shopify/products url="https://example.myshopify.com" limit=100 page=1 | jq '.'73scripts/crawlora.sh /shopify/collections url="https://example.myshopify.com" | jq '.'7475# Crawl the sitemap for every product URL:76scripts/crawlora.sh /shopify/sitemap/urls url="https://example.myshopify.com" type=products limit=250 | jq '.'77```7879Use `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.808182## Endpoint reference8384See [`reference/endpoints.md`](reference/endpoints.md) for every Shopify85endpoint this skill uses (method, path, params, description), including86the 14 brand-pinned mirrors.8788## Examples8990- **Catalog audit:** `/shopify/products` (paginate with `page`/`limit`) to91 list a store's full catalog with prices and variants, then flag gaps or92 outliers.93- **Sitemap-driven full crawl:** `/shopify/sitemaps` to find the child94 sitemaps, then `/shopify/sitemap/urls?type=products` to enumerate every95 product URL without walking paginated list endpoints.96- **Search & recommendation research:** `/shopify/search/suggest` for a97 query to see what a store's predictive search surfaces, then98 `/shopify/products/{handle}/recommendations` to map cross-sell links99 between products.100101## Notes & limits102103- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.104 Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).105- **Public data only** — public storefront pages; respect each store's terms.106- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.107- **`url` is required on every call** — the store's public domain108 (`*.myshopify.com` or custom domain); there's no default store.109- Results are paginated — pass `page` (and `limit` where supported, up to110 250) to walk collections, products, and pages.111- Product/collection/page lookups take a `handle`, not a numeric ID —112 discover handles via the list endpoints or sitemap crawl first.113- Empty result pages return `200` with an empty array rather than an error —114 check the array length to know when to stop paginating.