Fashionphile API endpoint
Returns recommended products for one Fashionphile (https://www.fashionphile.com) product handle. The storefront URL is fixed server-side.
/fashionphile/products/{handle}/recommendationsReturns recommended products from Fashionphile.
This is a brand-pinned endpoint: the storefront URL (https://www.fashionphile.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.fashionphile.com directly.
Path parameters:
handle: required. Product handle, such as louis-vuitton-monogram-grand-palais-1967585.Query parameters:
limit: optional. Defaults to 10, maximum 20.intent: optional. Allowed values: related, complementary. Defaults to related.Notable response behavior:
404 when Shopify returns not found while resolving the seed product.200 with an empty products array.transport_mode: "ssr_embedded", it carries the same additive product fields documented for the products endpoint.transport_mode allowed values: ssr_embedded (only ever present, never any other value; omitted for the classic transport).
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| handle | 10 | |
| title | 10 | “Lambskin Embossed Monogram Pochette Coussin Crossbody Black” and 9 other values |
| url | 10 | fashionphile.com |
| description | 10 | median 410 characters |
| vendor | 10 | Louis Vuitton in all 10 |
| product_type | 10 | Bags in all 10 |
| published_at | 10 | 2025-07-09 to 2026-06-04 |
| created_at | 10 | 2025-07-09 to 2026-06-04 |
| price | 10 | 995 to 4,555, median 2,370 |
| compare_at_price | 10 | 995 to 4,555, median 2,495 |
| available | 10 | true in 10 of 10 |
| options | 10 | median 1 entry |
| variants | 10 | median 1 entry |
| images | 10 | median 9 entries |
| featured_image | 10 | cdn.shopify.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| handle (path) | string | Yes | Product handle | product-handle | |
| limit | integer | No | 10 and supports up to 20 | Maximum products, defaults to 10 and supports up to 20 | 10 |
| intent | string | No | Recommendation intent. Allowed values: related, complementary Allowed values: related, complementary. | related | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fashionphile/products/product-handle/recommendations?limit=10&intent=related" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_url": "https://www.fashionphile.com",
"source_url": "https://www.fashionphile.com",
"handle": "louis-vuitton-monogram-grand-palais-1967585",
"product_id": "16162141339951",
"intent": "related",
"limit": 10,
"products": [
{
"handle": "prada-spazzolato-triangle-logo-monolith-pointy-55mm-loafers-41-black-1754823",
"title": "Spazzolato Triangle Logo Monolith Pointy 55mm Loafers 41 Black"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shopifybrands.productRecommendationsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopify.ProductRecommendationsResponse | No | ||||
| data.handle | string | No | mens-wool-runners | Handle of the product the recommendations are based on. | ||
| data.intent | string | No | related | Recommendation type returned: `related` or `complementary`. | ||
| data.limit | integer | No | 10 | Maximum number of recommended products returned. | ||
| data.product_id | string | No | 6616124981328 | Shopify id of the product the recommendations are based on. | ||
| data.products | array | No | Recommended products, one item per product. ProductItem record, 57 fields: available, canonical_colour, collection_tags, colour, compare_at_price, condition, created_at, description, discount_percentage, featured_image, handle, id and 14 more. Described under Fashionphile Search API. | |||
| 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/fashionphile/products/product-handle/recommendations?limit=10&intent=related" \
-H "x-api-key: $CRAWLORA_API_KEY"