Shop.app API endpoint
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.
/shop-app/products/{id}Returns public product details for a Shop.app product.
Path parameters:
id: required. Shop.app product id. Example: 4596217053229.Query parameters:
variant_id: optional. Variant id to mark as selected.Notable response behavior:
| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| name | 3 | “Colour” and 2 other values |
| values | 3 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Product id | 4596217053229 | |
| variant_id | string | No | Variant id | 34761278160941 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shop-app/products/4596217053229" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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"
}
}
}Request schema
No body schema
Response schema
#/definitions/shopapp.productResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopapp.ProductDetailResponse | No | ||||
| data.product | object | No | Details of the product. | |||
| data.product.available | boolean | No | `true` when the selected variant is available for sale. | |||
| data.product.currency | string | No | HKD | Currency code of `price` and `original_price`. | ||
| data.product.description | string | No | Product description text. | |||
| data.product.external_url | string | No | URL of the product on the seller's own online store. | |||
| data.product.id | string | No | 4596217053229 | Shop.app product ID. | ||
| data.product.images | array | No | Images of the product. | |||
| data.product.images[].alt | string | No | Product image | Alt text of the image. | ||
| data.product.images[].url | string | No | https://cdn.shopify.com/example.jpg | URL of the image. | ||
| data.product.option_groups | array | No | Option choices of the product, such as size or colour, with their values. | |||
| data.product.option_groups[].name | string | No | Size | Option name, for example `Size`. | ||
| data.product.option_groups[].values | array | No | Values available for the option. | |||
| data.product.original_price | number | No | 1166 | Price before the discount, in `currency`. | ||
| data.product.price | number | No | 1076 | Current price of the selected variant, in `currency`. | ||
| data.product.rating | number | No | 4.4 | Average shopper rating of the product. | ||
| data.product.related_products | array | No | Products Shop.app shows as related to this one. | |||
| data.product.related_products[].currency | string | No | USD | Currency code of `price` and `original_price`. | ||
| data.product.related_products[].group_query | string | No | kids' athletic sneakers | Search query of the product group this item belongs to. | ||
| data.product.related_products[].group_title | string | No | kids' athletic sneakers | Title of the product group this item belongs to. | ||
| data.product.related_products[].id | string | No | 8075903107261 | Shop.app product ID. | ||
| data.product.related_products[].image | string | No | https://cdn.shopify.com/s/files/1/1145/5784/files/example.jpg | URL of the product's first image. | ||
| data.product.related_products[].image_alt | string | No | Black sneaker side view | Alt text of the product's first image. | ||
| data.product.related_products[].on_sale | boolean | No | `true` when the original price is higher than the current price. | |||
| data.product.related_products[].original_price | number | No | 120 | Price before the discount, in `currency`. | ||
| data.product.related_products[].position | integer | No | 1 | Position of the product in the results, starting at 1. | ||
| data.product.related_products[].price | number | No | 100 | Current price of the product, in `currency`. | ||
| data.product.related_products[].shop_id | string | No | 62696 | Shop.app ID of the shop selling the product. | ||
| data.product.related_products[].shop_name | string | No | BILLY Footwear | Name of the shop selling the product. | ||
| data.product.related_products[].title | string | No | Black/Black/Gum BILLY Sport Inclusion DZ1 | Product title as shown on the Shop.app card. | ||
| data.product.related_products[].url | string | No | https://billyfootwear.com/products/black-black-gum-billy-sport-inclusion-dz1-zipper-shoes?utm_source=shop_app | Link to the product page. | ||
| data.product.related_products[].variant_id | string | No | 46242960965821 | ID of the product variant shown on the card. | ||
| data.product.reviews | array | No | Shopper reviews shown on the product page. | |||
| data.product.reviews[].author | string | No | Donal | Name of the reviewer. | ||
| data.product.reviews[].body | string | No | Perfect fit. | Text of the review. | ||
| data.product.reviews[].date | string | No | December 6, 2025 | Date of the review, either an ISO 8601 timestamp such as `2026-01-01T00:00:00Z` or text such as `December 6, 2025`. | ||
| data.product.reviews[].helpful_count | integer | No | Number of shoppers who found the review helpful. | |||
| data.product.reviews[].id | string | No | Shop.app review ID. | |||
| data.product.reviews[].product | object | No | Product the review is for. | |||
| data.product.reviews[].product.id | string | No | 8114373328975 | Shop.app ID of the reviewed product. | ||
| data.product.reviews[].product.image | string | No | URL of the product image. | |||
| data.product.reviews[].product.image_alt | string | No | Alt text of the product image. | |||
| data.product.reviews[].product.slug | string | No | solana-brown-woven-leather-backstrap-clogs | URL slug of the reviewed product. | ||
| data.product.reviews[].product.title | string | No | Solana Brown Woven Leather Backstrap Clogs | Title of the reviewed product. | ||
| data.product.reviews[].product.url | string | No | Shop.app page URL of the reviewed product. | |||
| data.product.reviews[].product.variant | string | No | 7 / Brown Woven / Leather | Variant of the product that was reviewed, for example `7 / Brown Woven / Leather`. | ||
| data.product.reviews[].rating | number | No | 5 | Rating the reviewer gave. | ||
| data.product.reviews[].title | string | No | Headline of the review. | |||
| data.product.reviews[].variant_label | string | No | Black / 12.5 / 4E | Label of the product variant that was reviewed, for example `Black / 12.5 / 4E`. | ||
| data.product.reviews_count | integer | No | 22 | Number of shopper reviews of the product. | ||
| data.product.shop_handle | string | No | n1r478fp0h | Shop.app handle of the shop selling the product. | ||
| data.product.shop_id | string | No | Shop.app ID of the shop selling the product. | |||
| data.product.shop_name | string | No | Wide Fit Shoes UK | Name of the shop selling the product. | ||
| data.product.slug | string | No | mens-wide-fit-new-balance-624v5-black-trainers-abzorb | URL slug of the product. | ||
| data.product.title | string | No | Mens Wide Fit New Balance 624V5 Black Trainers ABZORB | Product title as shown on the product page. | ||
| data.product.url | string | No | Shop.app page URL of the product. | |||
| data.product.variant_id | string | No | 34761278160941 | ID of the selected variant. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/shop-app/products/4596217053229" \
-H "x-api-key: $CRAWLORA_API_KEY"