Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Structured output
Use Crawlora's Shop.app Scraper API to collect public product, merchant, search, review, variant, category, and suggestion data without maintaining Shop.app-specific request handling, parsers, normalization, billing, and developer documentation.
SERP workflows
Shop.app data can support e-commerce discovery, price monitoring, merchant research, assortment tracking, review analysis, and catalog enrichment when teams need repeatable structured data instead of manual browsing.
E-commerce product intelligenceRequest schema
These parameters come from the active Search Shop.app products catalog entry.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| query | string | Yes | Search query | sneakers |
| limit | integer | No | Maximum products, defaults to 20 and supports up to 50 | 20 |
| in_stock | boolean | No | Request in-stock products | true |
| on_sale | boolean | No | Request sale products | false |
| deep_search | boolean | No | Accepted for compatibility; Shop.app no longer offers a separate deep search mode, so results are unchanged | false |
Example JSON
This example is rendered from the active endpoint catalog so the page stays aligned with Docs and Playground.
{
"code": 200,
"msg": "OK",
"data": {
"query": "sneakers",
"limit": 5,
"products": [
{
"id": "8075903107261",
"variant_id": "46242960965821",
"title": "Black/Black/Gum BILLY Sport Inclusion DZ1",
"url": "https://billyfootwear.com/products/black-black-gum-billy-sport-inclusion-dz1-zipper-shoes?utm_source=shop_app",
"shop_id": "62696",
"shop_name": "BILLY Footwear",
"price": 100,
"currency": "USD",
"position": 1
}
]
}
}Endpoint catalog
/shop-app/searchSearches Shop.app product results. Limit defaults to 20 and accepts values up to 50.
Response notes
- Products are deduplicated by product id and variant id. - Results come from Shop.app's public search feed in its ranking order; a `limit` above one feed page is filled by following the feed's cursor. - `groups` and each product's `group_title` are returned only when Shop.app supplies expanded product groups. Its current search feed does not, so they are normally absent. - Blocked pages, malformed responses, and product cards that cannot be parsed return an upstream error instead of `200 []`.
MCP tool shop_app_search
/shop-app/products/{id}Returns a Shop.app product by `id`: title, description, price and original price, currency, availability, images, option groups, rating, review count with reviews, related products and the selling shop. Pass `variant_id` to mark a variant as selected. Missing products return an error.
Response notes
- Product detail parsing uses public page HTML and route data only. - Blocked pages, not-found pages, and product pages without a parsed title return typed errors.
MCP tool shop_app_product
/shop-app/shops/{handle}Returns a Shop.app merchant profile by shop `handle`: name, description, logo, banner, rating, review count, storefront and Shop.app URLs, and collection summaries when the shop page lists them. Unknown handles return an error.
Response notes
- Collection summaries are included when discoverable on the public shop page. - Blocked pages, not-found pages, and shop pages without a parsed name return typed errors.
MCP tool shop_app_shop
/shop-app/shops/{handle}/productsLists products from a Shop.app merchant, by shop `handle`. `limit` defaults to 30 (max 60), `sort_by` is `MOST_SALES` (default), `PRICE_LOW_TO_HIGH`, `PRICE_HIGH_TO_LOW` or `RELEVANCE`, and `in_stock` defaults to true. Each card has its id, title, price, original price, image and URL. An invalid `sort_by` is rejected.
Response notes
- Invalid `sort_by` values return invalid-param errors before upstream IO. - Blocked pages, malformed route data, and empty parsed products return an upstream error.
MCP tool shop_app_shop_products
/shop-app/analysisReturns a market snapshot derived from Shop.app search results, including price ranges, currencies, sale counts, discounts, and top shops. Limit defaults to 20 and accepts values up to 50.
Response notes
- `prices_by_currency` reports min, max, average, and count for each currency present in parsed products. - `discounts` is computed only from products with both `price` and `original_price`. - `top_shops` ranks shops by the number of parsed products in the analyzed result set. - `groups_count` counts Shop.app expanded product groups; its current search feed does not supply them, so it is normally `0`. - Blocked pages, malformed responses, and product cards that cannot be parsed return an upstream error.
MCP tool shop_app_analysis
/shop-app/suggestionsReturns Shop.app autocomplete suggestions for the required `query`. `limit` defaults to 10 and is capped at 20. Each suggestion is either a search query or a shop, with its `text`, `type`, URL and, for shops, the shop handle, name, rating and image.
Response notes
- Suggestions can be query suggestions or shop suggestions. - Blocked pages, malformed route data, and empty parsed suggestions return an upstream error.
MCP tool shop_app_suggestions
/shop-app/categoriesReturns the Shop.app product category tree, with no parameters. Each category has its `id`, `gid`, `name`, `slug`, `image`, `has_children`, nested `children` and a `path` of ancestors. Ids are taken from Shopify product category GIDs where present.
Response notes
- Category ids come from Shopify product category GIDs when present. - Blocked pages, malformed route data, and empty parsed categories return an upstream error.
MCP tool shop_app_categories
/shop-app/products/{id}/variantsReturns adjacent variants for a Shop.app product. selected_options must be a JSON object when provided. Repeated option filters may also be sent as option.Name=value or option[Name]=value.
Response notes
- Invalid `selected_options` JSON returns an invalid-param error before upstream IO. - Blocked pages, malformed route data, and empty parsed variants return an upstream error.
MCP tool shop_app_product_variants
/shop-app/products/{id}/variantReturns the exact public product variant matching selected options. selected_options must be a JSON object when provided. Repeated option filters may also be sent as option.Name=value or option[Name]=value.
Response notes
- At least one selected option is required. - Complete option sets are more reliable; incomplete combinations may return not-found. - Malformed `selected_options` returns an invalid-param error before upstream IO.
MCP tool shop_app_product_variant
/shop-app/products/{id}/reviewsLists customer reviews for a Shop.app product, by `id`, up to `limit` (default 20, max 50). Each review has its rating, title, body, author, date, helpful count and variant label, where present. A product with no reviews returns an error.
Response notes
- Review body, rating, author, date, and variant label are returned when present. - Blocked pages and product pages with no parsed reviews return an upstream error.
MCP tool shop_app_product_reviews
/shop-app/products/{id}/relatedLists products related to a Shop.app product, by `id`. `limit` defaults to 20 and is capped at 50. Each card has the product's id, title, price, original price, currency, `on_sale` flag, image, shop name and URL. A product page with no related items returns an error.
Response notes
- Product cards use the same shape as search results where fields are available. - Blocked pages and product pages with no parsed related products return an upstream error.
MCP tool shop_app_product_related
/shop-app/products/{id}/shopFinds the Shop.app merchant that sells a product, by the product `id`. Returns the shop's handle, name, description, logo, banner, rating, review count, storefront URL, and its collections. Unknown products, or ones with no public shop, return not found.
Response notes
- Unknown products or products without a public shop mapping return not-found errors. - Blocked pages and malformed JSON return an upstream error.
MCP tool shop_app_product_shop
/shop-app/shops/{handle}/collections/{collection_id}/productsLists products in one collection of a Shop.app merchant, by shop `handle` and `collection_id`. `limit` defaults to 30 (max 60), `sort_by` is `MOST_SALES` (default), `PRICE_LOW_TO_HIGH`, `PRICE_HIGH_TO_LOW` or `RELEVANCE`, and `in_stock` defaults to true. Each card has its title, price, original price, image and URL.
Response notes
- Invalid `sort_by` values return invalid-param errors before upstream IO. - Blocked pages, malformed route data, and empty parsed products return an upstream error.
MCP tool shop_app_collection_products
/shop-app/shops/{handle}/locationsReturns the public retail locations of a Shop.app merchant by shop handle, up to `limit` (default 10, max 50). Each location has its id, name, latitude and longitude, and street address; the response also carries the total count and a cursor for the next page. A shop with no public retail locations returns an error.
Response notes
- Location id, name, coordinates, address, total count, and next cursor are returned when present. - Unknown shops return not-found errors. - Shops with no public retail locations return an upstream error.
MCP tool shop_app_shop_locations
/shop-app/shops/{handle}/reviewsLists customer reviews for a Shop.app merchant, by shop `handle`, up to `limit` (default 20, max 50). Each review has its rating, body, author, date, helpful count and the product reviewed. Also returns `total_count` and `next_cursor`. Unknown shops return not found.
Response notes
- Review body, rating, author, date, helpful count, reviewed product, total count, and next cursor are returned when present. - Unknown shops return not-found errors. - Blocked pages, malformed JSON, and responses with no parsed reviews return an upstream error.
MCP tool shop_app_shop_reviews
/shop-app/shops/{handle}/typeaheadReturns search suggestions inside one Shop.app shop, for the shop `handle` and required `query`. `limit` defaults to 20, which is also the maximum. Suggestions are `type` term, product or collection, with text, position and a product or collection object where relevant. Unknown shops return not found.
Response notes
- Suggestions can include terms, products, and collections. - Unknown shops return not-found errors. - Blocked pages, malformed JSON, and responses with no parsed suggestions return an upstream error.
MCP tool shop_app_shop_typeahead
Managed execution
Crawlora wraps supported public Shop.app pages and JSON flows behind API-key protected endpoints with normalized responses, documented errors, Playground examples, and credit-based usage.
Endpoint-specific request handling for Shop.app search, product, shop, category, review, and suggestion pages
Normalized product, shop, variant, review, location, and category fields where available
Validation for enum and structured option inputs before upstream IO
Documented upstream failure behavior for blocked, malformed, not-found, or empty parsed responses
Docs and Playground pages generated from the active endpoint catalog
Credit-based usage tied to backend billing weights
Build or buy
Use this comparison to decide whether to maintain scraping infrastructure internally or call a managed endpoint.
| Requirement | Building internally | Crawlora |
|---|---|---|
| Endpoint coverage | Maintain separate collectors for search, products, shops, collections, reviews, variants, and suggestions. | Use documented Shop.app endpoint families from one API surface. |
| Parser maintenance | Track Shop.app route data, public JSON flows, page changes, and empty-result edge cases. | Use endpoint-specific parsers maintained behind the Crawlora API. |
| Schema normalization | Design product, shop, review, variant, and category models yourself. | Receive normalized JSON examples and schemas in Docs and Playground. |
| Input validation | Validate sort options, selected options, limits, and path identifiers in every caller. | Use documented endpoint validation and structured error behavior. |
| Usage billing | Build your own metering and pricing model. | Use credit-based endpoint weights and API-key usage tracking. |
Crawlora is not the official Shop.app, Shopify, or Shop Pay API. Crawlora provides structured public web data extraction endpoints for supported public Shop.app pages and flows. If your use case requires an official Shopify API, account-scoped commerce data, checkout, orders, or merchant administration, use Shopify's official APIs. Customers are responsible for ensuring their use complies with applicable laws, third-party rights, platform terms, and Crawlora terms.
Related APIs
Connect this endpoint with adjacent Crawlora search, monitoring, docs, and pricing pages.
Add Amazon product and search result monitoring to marketplace workflows.
OpenCollect eBay item, search, and seller data for resale and marketplace research.
OpenConnect e-commerce research with startup and launch discovery.
OpenPlan product monitoring, pricing research, catalog enrichment, and review workflows.
OpenUse a marketplace-specific workflow for Amazon product monitoring.
OpenReview credit-based usage for Shop.app and other marketplace endpoints.
OpenHow to scrape Shop.app
Crawlora's Shop.app endpoints are GETs over the credential-free public Shop.app web flow. Search: /shop-app/search with query, limit (up to 50), in_stock, on_sale and deep_search, /shop-app/suggestions for autocomplete and /shop-app/analysis for a market snapshot of a query (price ranges, currencies, sale counts, discounts and top shops). Products: /shop-app/products/{id} plus its related, reviews, shop, variant and variants routes. Merchants: /shop-app/shops/{handle} plus its products, collection products, reviews, locations and typeahead routes, with sort_by values MOST_SALES, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW and RELEVANCE. /shop-app/categories lists the public categories.
GET /shop-app/search?query=<term>&limit=50&in_stock=true for product cards, or /shop-app/analysis with the same filters for the query's price range, currency mix, sale share and top shops in one call. Use deep_search when you need more than the first page of the public flow.
GET /shop-app/products/{id} for normalized detail, /shop-app/products/{id}/variants (or /variant with selected_options as a JSON object) for the option matrix, /shop-app/products/{id}/reviews for public reviews and /shop-app/products/{id}/related for the related-product rail.
GET /shop-app/products/{id}/shop resolves the merchant from a product; GET /shop-app/shops/{handle} returns the profile, /shop-app/shops/{handle}/products the catalog (sort_by MOST_SALES for what sells), /shop-app/shops/{handle}/reviews the merchant reviews and /shop-app/shops/{handle}/locations any retail locations.
GET /shop-app/suggestions?query=<prefix> for Shop.app autocomplete, /shop-app/shops/{handle}/typeahead for suggestions inside one shop, and /shop-app/categories for the public category list.
FAQ
Answers for developers evaluating Crawlora for supported public search result pages.
Yes. Crawlora provides Shop.app endpoints for supported public Shop.app product, shop, search, review, category, suggestion, and variant workflows.
No. Crawlora is not the official Shop.app, Shopify, or Shop Pay API. It provides structured public web data extraction endpoints for supported public Shop.app pages and flows.
The active catalog includes product search, product detail, product variants, related products, product reviews, product-to-shop lookup, shop profile, shop products, collection products, shop locations, shop reviews, shop typeahead, categories, suggestions, and query analysis where supported.
Yes, Shop.app product and search responses can support price research and monitoring where price, original price, currency, availability, and sale fields are available in the response.
Yes. The Shop.app platform includes merchant profile, shop products, collection products, location, review, and product-to-shop endpoints where public data is available.
No. Crawlora Shop.app endpoints are for supported public Shop.app data extraction. Use official Shopify APIs for account-scoped commerce, order, checkout, or merchant administration data.
Search with Crawlora's /shop-app/search endpoint, read products with /shop-app/products/{id} and its variants, reviews and related routes, and profile merchants with /shop-app/shops/{handle} and its products and reviews routes. All are GETs over the public, credential-free Shop.app flow.
A market snapshot for a query derived from the search results: price ranges, currencies, sale counts, discount levels and the top shops, with the same in_stock, on_sale and deep_search filters as search and a limit up to 50.
Yes. the /shop-app/shops/{handle}/products endpoint accepts sort_by with MOST_SALES, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW or RELEVANCE, plus in_stock, so best-sellers per shop are one call.
Yes. Pass selected_options as a JSON object (or repeated option.Name=value filters) to the /shop-app/products/{id}/variant endpoint for the exact variant, or /shop-app/products/{id}/variants for the adjacent ones.
The endpoints read public product and merchant pages without credentials. Collecting them for research and monitoring is generally permissible when you respect Shop's terms, rate limits and applicable law.
Company coverage
Shopify Inc. · SHOP
Shop.app is operated by Shopify Inc. (SHOP). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Shop.app endpoints above.
Other Shopify Inc. platforms in the catalog
Guides
Read Crawlora guides and comparisons that use the Shop.app API.
Test Shop.app search in Playground, inspect the current response schema in Docs, and compare credit-based usage on the pricing page.