PristineMarketplace API endpoint
Returns product detail for one Pristine Marketplace (https://www.pristinemarketplace.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.
/pristine-marketplace/products/{handle}Returns product detail from Pristine Marketplace.
This is a brand-pinned endpoint: the storefront URL (https://www.pristinemarketplace.com) is fixed server-side, so unlike the generic /shopify/* family this wraps, there is no url request parameter. The same storefront is reachable through the generic family by passing url=https://www.pristinemarketplace.com directly.
Path parameters:
handle: required. Product handle, such as washington-commanders-sts22-f-s-authentic-football-helmet.This endpoint takes no other query parameters.
Notable response behavior:
404 when Shopify returns not found.transport_mode: "ssr_embedded" and additive fields (colour, canonical_colour, discount_percentage, rating, rating_count, collection_tags, labels, per-variant inventory_quantity). transport_mode is omitted entirely for stores served by the classic transport.transport_mode allowed values: ssr_embedded (only ever present, never any other value; omitted for the classic transport).
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| name | 1 | “Title” |
| position | 1 | 1 |
| values | 1 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| handle (path) | string | Yes | Product handle | product-handle | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/pristine-marketplace/products/product-handle" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_url": "https://www.pristinemarketplace.com",
"source_url": "https://www.pristinemarketplace.com",
"product": {
"id": "8463815540780",
"handle": "washington-commanders-sts22-f-s-authentic-football-helmet",
"title": "Washington Commanders STS22 F/S Authentic Football Helmet",
"price": 509,
"images": [
{
"url": "https://cdn.shopify.com/s/files/1/0553/6196/2028/files/12503c93-75b7-4671-90c8-a873cb8c6e8e.png"
}
]
}
}
}Request schema
No body schema
Response schema
#/definitions/shopifybrands.productResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopify.ProductResponse | No | ||||
| data.product | object | No | The requested product with its variants, options and images. | |||
| data.product.available | boolean | No | Whether at least one variant is available to buy. | |||
| data.product.canonical_colour | string | No | black | Main colour name the storefront groups the product under, for example `black`. | ||
| data.product.collection_tags | array | No | Collections the product is listed in, as the storefront labels them. | |||
| data.product.colour | string | No | black | The fields below are only populated when the product was resolved via the embedded-SSR-JSON fallback transport (see ssr_fallback.go) and the source page exposed this data; they are additive and never populated for classic-store responses. | ||
| data.product.compare_at_price | number | No | 120 | Original price before discount, in the store's currency. The highest compare-at price across variants. | ||
| data.product.condition | string | No | Excellent | Condition is only populated for resale-marketplace search results (Fashionphile's AlgoliaSearch, Rebag's StorefrontSearch -- see search.go) whose catalog data exposes a condition grade. Never populated for any other brand or endpoint in this family. | ||
| data.product.created_at | string | No | Time the record was created, as Shopify returns it. | |||
| data.product.description | string | No | Product description as plain text. | |||
| data.product.discount_percentage | number | No | 20 | Discount currently applied to the product, as a percentage. | ||
| data.product.featured_image | string | No | URL of the product's main image. | |||
| data.product.handle | string | No | mens-wool-runners | URL slug of the product, for example `mens-wool-runners`. | ||
| data.product.id | string | No | 6616124981328 | Shopify product id. | ||
| data.product.images | array | No | Images of the product, in the storefront's order. ImageItem record, 9 fields: alt, created_at, height, id, position, updated_at, url, variant_ids, width. Described under Pristine Marketplace Search API. | |||
| data.product.labels | array | No | new | Badges the storefront shows on the product, for example `new`. | ||
| data.product.options | array | No | Options the product varies by, such as size or colour. | |||
| data.product.options[].name | string | No | Size | Option name, for example `Size`. | ||
| data.product.options[].position | integer | No | 1 | Position of the option on the product, starting at 1. | ||
| data.product.options[].values | array | No | Values the option can take, for example `S` or `M`. | |||
| data.product.price | number | No | 98 | Current price in the store's currency. The lowest variant price when variants are listed. | ||
| data.product.product_type | string | No | Shoes | Product type set by the merchant, for example `Shoes`. | ||
| data.product.published_at | string | No | Time the record was published, as Shopify returns it. | |||
| data.product.rating | number | No | 4.2 | Average customer rating shown by the storefront. | ||
| data.product.rating_count | integer | No | 1549 | Number of customer ratings behind `rating`. | ||
| data.product.tags | array | No | Tags the merchant attached to the product. | |||
| data.product.title | string | No | Men's Wool Runners | Product name as shown on the storefront. | ||
| data.product.updated_at | string | No | Time the record was last updated, as Shopify returns it. | |||
| data.product.url | string | No | https://www.allbirds.com/products/mens-wool-runners | Storefront page URL of the product. | ||
| data.product.variants | array | No | Purchasable variants of the product, such as each size and colour. VariantItem record, 19 fields: available, barcode, compare_at_price, created_at, featured_image, grams, id, inventory_quantity, option1, option2, option3, position and 7 more. Described under Pristine Marketplace Search API. | |||
| data.product.vendor | string | No | Allbirds | Brand or vendor name set by the merchant. | ||
| data.source_url | string | No | https://www.allbirds.com | URL the data was read from. | ||
| data.store_url | string | No | https://www.allbirds.com | Base URL of the Shopify storefront that was queried. | ||
| data.transport_mode | string | No | ssr_embedded | ssr_embedded | Set only for headless storefronts that do not expose Shopify's standard catalogue; the value is `ssr_embedded`. Omitted otherwise. | |
| 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/pristine-marketplace/products/product-handle" \
-H "x-api-key: $CRAWLORA_API_KEY"