Pre-owned luxury resale pricing and inventory monitoring
Use Fashionphile endpoints to turn pre-owned luxury resale pricing and inventory monitoring into repeatable API requests with documented inputs and JSON responses.
Turn Fashionphile's public Shopify storefront into structured pre-owned luxury data — full consignment listing catalog and detail for authenticated secondhand designer handbags, jewelry, and accessories, collection browsing by brand, storefront pages, recommendations, and search-box suggestions, all pinned to Fashionphile's own storefront URL so no url parameter is needed. Credential-free.
Get Fashionphile's pre-owned luxury listings, collections, pages, and recommendations as structured JSON — no url parameter needed.
Endpoint families
6
Documented params
37
Examples
12
Live catalog snapshot
Active endpoints
12
Methods
GET
Required params
17
Schema refs
12
{
"platform": "Fashionphile",
"endpoint": "fashionphile-store",
"method": "GET",
"path": "/fashionphile/store",
"auth": "apiKey"
}Use cases
Get Fashionphile's pre-owned luxury listings, collections, pages, and recommendations as structured JSON — no url parameter needed.
Use Fashionphile endpoints to turn pre-owned luxury resale pricing and inventory monitoring into repeatable API requests with documented inputs and JSON responses.
Use Fashionphile endpoints to turn brand-collection and consignment coverage research into repeatable API requests with documented inputs and JSON responses.
Use Fashionphile endpoints to turn secondhand designer demand tracking into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Fashionphile endpoint catalog — 12 endpoints, 37 documented request parameters, and 12 published response schemas — the same catalog Docs and Playground run against.
12 documented Fashionphile endpoints, grouped into 7 request families — Products, Collections and Pages, plus 4 more.
37 request parameters are documented across those Fashionphile endpoints, 17 of them required — the full input contract is public before you write any integration code.
12 of the 12 Fashionphile endpoints ship a recorded example response, and 12 carry a documented response schema — you can code against the real JSON before the first request.
Fashionphile endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
12 hosted MCP tools back the Fashionphile endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/fashionphile/products
/fashionphile/collections
/fashionphile/pages
/fashionphile/search/suggest
/fashionphile/sitemap/urls
/fashionphile/sitemaps
Endpoint catalog
/fashionphile/storeReturns normalized storefront metadata for Fashionphile (https://www.fashionphile.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.
Response notes
- Returns the resolved source URL used for JSON requests. - Includes `myshopify_domain`, store name, currency, country, and published product/collection counts when `/meta.json` exposes them. - Blocked pages, malformed JSON, missing Shopify roots, and unavailable fallback domains return upstream errors. - If the classic `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to fetching the storefront's own pages directly and parsing their embedded structured data. When this fallback was used, `transport_mode` is `ssr_embedded`; it is omitted entirely for stores served by the classic catalog JSON. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "requested_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "domain": "www.fashionphile.com", "source_domain": "www.fashionphile.com", "name": "FASHIONPHILE", "currency": "USD", "country": "US", "published_products_count": 25001 } } ```
MCP tool fashionphile_store
/fashionphile/productsReturns normalized products from Fashionphile's (https://www.fashionphile.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.
Response notes
- Valid empty result pages return `200` with an empty `products` array. - Product prices are normalized to decimal currency units. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - If the classic `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless storefronts on a Shopify catalog do not expose either), the service falls back to the storefront's own conventional "all products" collection page and parses its embedded search-result payload. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`, `total_items`, and `total_pages`, plus additive per-product fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`). `limit` is honored as an upper bound; the underlying page size is fixed by the storefront and cannot be requested larger in fallback mode. All of the above are omitted entirely for stores served by the classic catalog JSON. - When the `ssr_embedded` fallback was used, the response may also include `facets` and `facets_stats`, mirroring the storefront's own filter sidebar for that listing. - This brand-pinned endpoint does not accept `sortBy` or facet-filter query parameters (out of scope -- use the generic `/shopify/products` endpoint with `url` set to this brand's storefront for sort/filter support). The response reuses the same shared DTO as the generic family, which carries `sort`/`filters` fields for that feature; they are always omitted here since this endpoint never populates them. `sort` allowed values (never actually returned by this endpoint, listed for schema completeness): `sortLTH`, `sortHTL`, `newest`. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "page": 1, "limit": 2, "products": [ { "id": "16162141339951", "handle": "louis-vuitton-monogram-grand-palais-1967585", "title": "Monogram Grand Palais", "url": "https://www.fashionphile.com/products/louis-vuitton-monogram-grand-palais-1967585", "price": 1350, "available": true } ] } } ```
MCP tool fashionphile_products
/fashionphile/products/{handle}Returns normalized product detail for one Fashionphile (https://www.fashionphile.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.
Response notes
- Product prices from `.js` responses are normalized from cent values to decimal currency units. - Missing product handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing product fields return upstream errors. - If the classic product `.js` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to fetching the product detail page directly and parsing its embedded structured data (a richer Next.js data block when the storefront exposes one, otherwise the page's schema.org JSON-LD `ProductGroup`/`Product` block). When this fallback was used, the response includes `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). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "product": { "id": "16162141339951", "handle": "louis-vuitton-monogram-grand-palais-1967585", "title": "Monogram Grand Palais", "price": 1350, "images": [{"url": "https://cdn.shopify.com/s/files/1/0894/3186/7695/files/c77879f8dfbe42c952b7b7e3390e38f7.jpg?v=1788968134"}] } } } ```
MCP tool fashionphile_product
/fashionphile/products/{handle}/recommendationsReturns normalized recommended products for one Fashionphile (https://www.fashionphile.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.
Response notes
- Missing product handles return `404` when Shopify returns not found while resolving the seed product. - Valid empty recommendation arrays return `200` with an empty `products` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - If the classic recommendations endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to fetching the seed product's own detail page (recommendations are embedded there). When this fallback was used, the response includes `transport_mode: "ssr_embedded"`, with 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). Example response: ```json { "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"}] } } ```
MCP tool fashionphile_product_recommendations
/fashionphile/collectionsReturns normalized collections from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.
Response notes
- Valid empty result pages return `200` with an empty `collections` array. - Blocked pages, malformed JSON, and missing `collections` roots return upstream errors. - If the classic `/collections.json` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to enumerating collections from the storefront's own `collections` sitemap. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`, and `title` is a best-effort derivation from the handle -- **not** the storefront's real display name. `products_count` and other classic-only fields are omitted, never fabricated. - In fallback mode, `handle` is derived from the last path segment of the collection URL and is not guaranteed unique across nested sub-collections; use the item's own `url` to identify a specific one. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "page": 1, "limit": 2, "collections": [ { "id": "491937530159", "handle": "31-phillip-lim", "title": "3.1 Phillip Lim", "url": "https://www.fashionphile.com/collections/31-phillip-lim", "products_count": 24 } ] } } ```
MCP tool fashionphile_collections
/fashionphile/collections/{handle}/productsReturns normalized products from one Fashionphile (https://www.fashionphile.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.
Response notes
- Valid empty result pages return `200` with an empty `products` array. - Missing collections return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - If the classic collection `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to fetching the collection listing page directly and parsing its embedded search-result payload. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`, `total_items`, `total_pages`, plus additive per-product fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`) and may include `facets`/`facets_stats`. `limit` is honored as an upper bound only; underlying page size is fixed by the storefront in fallback mode. - This brand-pinned endpoint does not accept `sortBy` or facet-filter query parameters (out of scope -- use the generic `/shopify/collections/{handle}/products` endpoint with `url` set to this brand's storefront for sort/filter support). The response reuses the same shared DTO as the generic family, which carries `sort`/`filters` fields for that feature; they are always omitted here since this endpoint never populates them. `sort` allowed values (never actually returned by this endpoint, listed for schema completeness): `sortLTH`, `sortHTL`, `newest`. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "collection": "31-phillip-lim", "page": 1, "limit": 2, "products": [ {"handle": "louis-vuitton-monogram-grand-palais-1967585", "title": "Monogram Grand Palais", "price": 1350} ] } } ```
MCP tool fashionphile_collection_products
/fashionphile/search/suggestReturns products, collections, and query suggestions from Fashionphile's (https://www.fashionphile.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.
Response notes
- Products and collections are normalized to the same shapes used by the product and collection endpoints. - Query suggestions include text and a storefront search URL when the storefront provides one. - Valid empty suggestion arrays return `200` with empty arrays. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "query": "chanel", "types": ["product", "collection", "query"], "limit": 10, "products": [{"handle": "chanel-caviar-quilted-chanel-19-wallet-on-chain-woc-white-pink-1838641", "title": "Caviar Quilted Chanel 19 Wallet On Chain WOC White Pink", "price": "2995.00"}], "collections": [{"handle": "chanel", "title": "Chanel"}], "queries": [{"text": "chanel", "url": "https://www.fashionphile.com/search?q=chanel"}] } } ```
MCP tool fashionphile_search_suggest
/fashionphile/pagesReturns normalized static pages from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side.
Response notes
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Valid empty page arrays return `200` with an empty `pages` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - If the classic `/pages.json` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to enumerating page handles from the storefront's own `pages` sitemap. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`, and each item only carries `handle`, `url`, and `updated_at` -- no `title`, `id`, or `content`. Call the single-page endpoint per handle for full content. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "page": 1, "limit": 50, "pages": [ { "id": "150373237039", "handle": "about", "title": "about", "url": "https://www.fashionphile.com/pages/about", "content": "" } ] } } ```
MCP tool fashionphile_pages
/fashionphile/pages/{handle}Returns normalized static page detail for one Fashionphile (https://www.fashionphile.com) page handle. The storefront URL is fixed server-side.
Response notes
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Missing page handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - If the classic `/pages/{handle}.json` endpoint and `*.myshopify.com` domain resolution are both unavailable, the service falls back to fetching the page's own HTML and parsing an embedded Contentful CMS entry. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`; `content` is plain text rendered from the page's rich-text blocks, and `id` is omitted (the source id is a Contentful entry id, not a Shopify numeric id). `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "page": { "id": "150373237039", "handle": "about", "title": "about", "url": "https://www.fashionphile.com/pages/about", "content": "" } } } ```
MCP tool fashionphile_page
/fashionphile/sitemapsReturns child sitemap URLs from Fashionphile's (https://www.fashionphile.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.
Response notes
- Sitemap `type` is inferred from the child sitemap URL. - Inferred sitemap types are `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, and `other`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors. Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "sitemaps": [ { "loc": "https://www.fashionphile.com/sitemap_products_1.xml?from=10544817340719&to=10544876159279", "type": "products" } ] } } ```
MCP tool fashionphile_sitemaps
/fashionphile/sitemap/urlsReturns capped URL entries from Fashionphile's (https://www.fashionphile.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.
Response notes
- The service fetches matching child sitemaps from `/sitemap.xml` until `limit` URL entries is reached. - URL entries include `loc`, inferred `type`, `handle`, `lastmod`, `changefreq`, and optional `images`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors. Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "type": "products", "limit": 2, "urls": [ { "loc": "https://www.fashionphile.com/products/chanel-caviar-quilted-extra-mini-coco-handle-flap-white-1610099", "type": "products", "handle": "chanel-caviar-quilted-extra-mini-coco-handle-flap-white-1610099", "lastmod": "2026-09-09T08:49:59-07:00", "changefreq": "daily" } ] } } ```
MCP tool fashionphile_sitemap_urls
/fashionphile/searchReturns normalized, ranked products from Fashionphile's (https://www.fashionphile.com) own full-text and faceted product search, including condition grade, discount percentage, and other filter attributes not available from the classic catalog JSON endpoints in this family. The storefront URL is fixed server-side. Omitting `q` browses the full catalog subject to any condition/vendor filters and the chosen sort.
Response notes
- `total_items` is Fashionphile's own exact total match count for the query/filters. - Each product's `condition` field reflects its condition grade (e.g. `Excellent`); `discount_percentage` is derived from `price` vs. `compare_at_price` when Fashionphile lists a retail estimate. - A query with genuinely zero matches returns `200` with `total_items: 0` and an empty `products` array, not an error. Example response (`q=chanel&condition=Excellent&sort=price_desc&limit=1`): ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.fashionphile.com", "source_url": "https://www.fashionphile.com", "query": "chanel", "condition": "Excellent", "sort": "price_desc", "page": 1, "limit": 1, "total_items": 67020, "products": [ { "id": "16063392055343", "handle": "chanel-brass-calfskin-large-grocery-by-chanel-shopping-basket-silver-1804472", "title": "Brass Calfskin Large Grocery By Chanel Shopping Basket Silver", "url": "https://www.fashionphile.com/products/chanel-brass-calfskin-large-grocery-by-chanel-shopping-basket-silver-1804472", "vendor": "Chanel", "product_type": "Bags", "price": 72075, "condition": "Excellent", "available": true } ] } } ```
MCP tool fashionphile_search
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
How to scrape Fashionphile
Crawlora's Fashionphile endpoints return listing, collection, page, recommendation, and search-suggestion data as normalized JSON with one API key — Fashionphile's storefront URL is pinned server-side, so no account or url parameter is required. Every listing is a pre-owned, authenticated designer item (Chanel, Louis Vuitton, Prada, and others), not Fashionphile's own house line.
Call /fashionphile/products for Fashionphile's full public listing catalog with pagination, or /fashionphile/collections and /fashionphile/collections/{handle}/products to browse by designer brand, e.g. the 31-phillip-lim collection.
Pass a product handle (from a /fashionphile/products or collection result) to /fashionphile/products/{handle} for full detail — price normalized from cents, images, and the resolved Shopify product id.
Send a partial query to /fashionphile/search/suggest for predictive product, collection, and query suggestions — pass types to limit the mix (product, collection, query), e.g. searching chanel returns matching listings, the Chanel collection, and a query suggestion with its own storefront search URL.
Use /fashionphile/pages and /fashionphile/pages/{handle} for static storefront pages, /fashionphile/products/{handle}/recommendations for related or complementary listings (set intent to related or complementary), or /fashionphile/sitemaps and /fashionphile/sitemap/urls to enumerate the storefront's indexed URLs.
FAQ
Pre-owned — every listing on /fashionphile/products and its collection/search-suggest results is an authenticated secondhand designer item from another luxury house (Louis Vuitton, Chanel, Prada, and others), not merchandise Fashionphile manufactures itself.
/fashionphile/* pins Fashionphile's own storefront URL (https://www.fashionphile.com) server-side, so every call needs only your Crawlora API key — no url parameter. The same storefront is also reachable through /shopify/* by passing url=https://www.fashionphile.com, which is the only way to reach this storefront's sort and filter options on /shopify/products and /shopify/collections/{handle}/products — those parameters are out of scope on the brand-pinned routes.
No — only your Crawlora API key. Fashionphile's consignment listing data is collected from its public, credential-free storefront surface.
Yes — /fashionphile/products/{handle}/recommendations returns related or complementary listings for a given product handle (set intent to choose which), sourced from Fashionphile's own storefront recommendation data.
Dollars — the underlying Shopify .js endpoint reports prices in cents, but Crawlora normalizes every price on /fashionphile/products/{handle} and related endpoints to decimal currency units before returning it.