Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Salida estructurada
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.
Workflows de SERP
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 intelligenceEsquema de la solicitud
Estos parámetros provienen de la entrada activa del catálogo de Search Shop.app products.
| Parámetro | Tipo | Obligatorio | Descripción | Ejemplo |
|---|---|---|---|---|
| query | string | Sí | Search query | - |
| limit | integer | No | Maximum products, defaults to 20 and supports up to 50 | - |
| in_stock | boolean | No | Request in-stock products | - |
| on_sale | boolean | No | Request sale products | - |
| deep_search | boolean | No | Enable Shop.app deep search mode | - |
Ejemplo de JSON
Este ejemplo se renderiza a partir del catálogo de endpoints activo, así que la página se mantiene alineada con Docs y 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,
"group_title": "kids' athletic sneakers"
}
],
"groups": [
{
"title": "kids' athletic sneakers",
"query": "kids' athletic sneakers",
"products_seen": 1
}
]
}
}Catálogo de endpoints
/shop-app/searchSearches Shop.app product results using the credential-free public web search flow. Limit defaults to 20 and accepts values up to 50.
Notas de la respuesta
- Products are deduplicated by product id and variant id. - `groups` summarizes the Shop.app expanded product groups used to produce the flattened `products` list. - Blocked pages, malformed SSE events, and non-empty searches with no parsed products return an upstream error instead of `200 []`. Example response: ```json { "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, "group_title": "kids' athletic sneakers" } ], "groups": [ { "title": "kids' athletic sneakers", "query": "kids' athletic sneakers", "products_seen": 1 } ] } } ```
Herramienta MCP shop_app_search
/shop-app/products/{id}Returns normalized public product details from Shop.app.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "product": { "id": "4596217053229", "title": "Mens Wide Fit New Balance 624V5 Black Trainers ABZORB", "shop_name": "Wide Fit Shoes UK", "price": 1076, "currency": "HKD" } } } ```
Herramienta MCP shop_app_product
/shop-app/shops/{handle}Returns public Shop.app merchant profile details.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop": { "handle": "marcnolan", "name": "Marc Nolan", "rating": 4.7 } } } ```
Herramienta MCP shop_app_shop
/shop-app/shops/{handle}/productsReturns public product cards from a Shop.app merchant profile. sort_by allowed values: MOST_SALES, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW, RELEVANCE.
Notas de la respuesta
- Invalid `sort_by` values return invalid-param errors before upstream IO. - Blocked pages, malformed route data, and empty parsed products return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_handle": "marcnolan", "sort_by": "MOST_SALES", "products": [ {"id": "4796042281039", "title": "Aiden Black Leather Combat Boots", "position": 1} ] } } ```
Herramienta MCP 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.
Notas de la respuesta
- `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. - Blocked pages, malformed SSE events, and non-empty searches with no parsed products return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "sneakers", "products_count": 5, "groups_count": 2, "shops_count": 3, "currencies": ["USD"], "prices_by_currency": [ { "currency": "USD", "count": 5, "min": 40, "max": 100, "average": 67.5 } ], "sale_count": 2, "discounts": { "min_percent": 20, "max_percent": 50, "average_percent": 35 }, "top_shops": [ { "shop_id": "62696", "shop_name": "BILLY Footwear", "count": 2 } ], "sampled_product_ids": ["8075903107261", "7093164834901"] } } ```
Herramienta MCP shop_app_analysis
/shop-app/suggestionsReturns Shop.app autocomplete suggestions. Limit defaults to 10 and supports up to 20.
Notas de la respuesta
- Suggestions can be query suggestions or shop suggestions. - Blocked pages, malformed route data, and empty parsed suggestions return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "sneakers", "limit": 2, "suggestions": [ {"text": "sneakers", "type": "query", "url": "https://shop.app/search/results?query=sneakers"} ] } } ```
Herramienta MCP shop_app_suggestions
/shop-app/categoriesReturns public Shop.app product categories.
Notas de la respuesta
- Category ids are normalized from Shopify product category GIDs when present. - Blocked pages, malformed route data, and empty parsed categories return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "categories": [ {"id": "1", "name": "Women", "slug": "women", "has_children": true} ] } } ```
Herramienta MCP 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.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "4596217053229", "variants": [ {"id": "34761278160941", "title": "Black / 7 / 6E", "available_for_sale": true} ] } } ```
Herramienta MCP 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.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "4596217053229", "variant": {"id": "34761278160941", "title": "Black / 7 / 6E", "available_for_sale": true} } } ```
Herramienta MCP shop_app_product_variant
/shop-app/products/{id}/reviewsReturns public product reviews from a Shop.app product page.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "4596217053229", "reviews": [ {"rating": 5, "body": "Perfect fit.", "author": "Donal", "date": "December 6, 2025"} ] } } ```
Herramienta MCP shop_app_product_reviews
/shop-app/products/{id}/relatedReturns related product cards from a public Shop.app product page.
Notas de la respuesta
- Product cards use the same normalized shape as search results where fields are available. - Blocked pages and product pages with no parsed related products return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "4596217053229", "products": [ {"id": "5176966185005", "title": "Womens Wide Fit New Balance", "position": 1} ] } } ```
Herramienta MCP shop_app_product_related
/shop-app/products/{id}/shopResolves the public Shop.app merchant profile for a product id.
Notas de la respuesta
- Uses Shop.app's public product-to-shop JSON route before resolving normalized shop details. - Unknown products or products without a public shop mapping return not-found errors. - Blocked pages and malformed JSON return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "product_id": "4596217053229", "shop": {"id": "1084107", "handle": "n1r478fp0h", "name": "Wide Fit Shoes UK"} } } ```
Herramienta MCP shop_app_product_shop
/shop-app/shops/{handle}/collections/{collection_id}/productsReturns public product cards from a Shop.app merchant collection. sort_by allowed values: MOST_SALES, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW, RELEVANCE.
Notas de la respuesta
- Invalid `sort_by` values return invalid-param errors before upstream IO. - Blocked pages, malformed route data, and empty parsed products return an upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_handle": "marcnolan", "collection_id": "292518002767", "products": [ {"id": "1372981887055", "title": "Belmont Mahogany Leather Wingtip Combat Boots", "position": 1} ] } } ```
Herramienta MCP shop_app_collection_products
/shop-app/shops/{handle}/locationsReturns public retail locations for a Shop.app merchant profile.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_handle": "marcnolan", "locations": [ {"name": "NYC", "latitude": 40.7205232, "longitude": -73.9961032, "address": {"city": "New York", "country": "US"}} ] } } ```
Herramienta MCP shop_app_shop_locations
/shop-app/shops/{handle}/reviewsReturns public reviews for a Shop.app merchant profile.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_handle": "marcnolan", "shop_id": "186720", "reviews": [ {"rating": 5, "body": "Great shoes.", "author": "Ada", "product": {"id": "8114373328975", "title": "Solana Brown Woven Leather Backstrap Clogs"}} ], "total_count": 15015 } } ```
Herramienta MCP shop_app_shop_reviews
/shop-app/shops/{handle}/typeaheadReturns public store typeahead suggestions for a Shop.app merchant profile.
Notas de la respuesta
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "shop_handle": "marcnolan", "query": "loafer", "suggestions": [ {"type": "term", "text": "loafer", "position": 1}, {"type": "product", "text": "Odell White Leather Belgian Loafer Sneakers", "id": "7438827651151", "position": 2} ] } } ```
Herramienta MCP shop_app_shop_typeahead
Ejecución gestionada
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
Construir o comprar
Usa esta comparación para decidir si mantener infraestructura de scraping internamente o llamar a un endpoint gestionado.
| Requisito | Construcción interna | 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.
APIs relacionadas
Conecta este endpoint con páginas adyacentes de Crawlora de búsqueda, monitoreo, documentación y precios.
Add Amazon product and search result monitoring to marketplace workflows.
AbrirCollect eBay item, search, and seller data for resale and marketplace research.
AbrirConnect e-commerce research with startup and launch discovery.
AbrirPlan product monitoring, pricing research, catalog enrichment, and review workflows.
AbrirUse a marketplace-specific workflow for Amazon product monitoring.
AbrirReview credit-based usage for Shop.app and other marketplace endpoints.
AbrirCómo hacer scraping de 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.
Preguntas frecuentes
Respuestas para desarrolladores que evalúan Crawlora para páginas de resultados de búsqueda públicas compatibles.
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.
Cobertura de la empresa
Shopify Inc. · SHOP
Shop.app es operado por Shopify Inc. (SHOP). Los endpoints SEC de Crawlora usan el mismo CIK de esa empresa, así que los filings, datos financieros, transacciones de insiders y participaciones 13F provienen de la misma API key que los endpoints de Shop.app de arriba.
Otras plataformas de Shopify Inc. en el catálogo
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.