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
38
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, 38 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.
38 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
/fashionphile/products
/fashionphile/collections
/fashionphile/pages
/fashionphile/search
/fashionphile/sitemap/urls
/fashionphile/sitemaps
Endpoint catalog
/fashionphile/storeReturns storefront metadata for Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side, so no `url` parameter is accepted.
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. - `transport_mode` is `ssr_embedded` for some stores; it is omitted entirely otherwise. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
Sampled 14 Oct 2026: 12 of 12 fields returned with a value. published_products_count: 25,001; domain: “www.fashionphile.com”.
MCP tool fashionphile_store
/fashionphile/searchReturns 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 endpoints in this family. The storefront URL is fixed server-side. Omitting `q` browses the full catalog subject to any condition/vendor/availability filters and the chosen sort. By default only in-stock listings are searched, matching the storefront; `availability=sold` searches the sold archive instead. `total_items` is the exact number of products matching the query and all filters.
Response notes
- `total_items` is the exact number of products matching `q` and every filter, including `availability`. It does not change with `sort`. Fashionphile's index also contains a large sold archive (for `q=chanel`: 6,630 in stock versus 42,610 sold), so `availability=all` totals are far larger than the default. - `availability` in the response echoes the filter that was applied (`available` when omitted). - Each product's `condition` field is one of the `condition` values above; `available` is `false` only for sold listings (`availability=sold` or `all`). `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", "availability": "available", "sort": "price_desc", "page": 1, "limit": 1, "total_items": 3729, "products": [ { "id": "16142007206191", "handle": "chanel-lambskin-quilted-mini-giraffe-flap-dark-burgundy-1963153", "title": "Lambskin Quilted Mini Giraffe Flap Dark Burgundy", "url": "https://www.fashionphile.com/products/chanel-lambskin-quilted-mini-giraffe-flap-dark-burgundy-1963153", "vendor": "Chanel", "product_type": "Bags", "price": 28995, "condition": "Excellent", "available": true } ] } } ```
Sampled 14 Oct 2026: 20 items, 14 fields filled in every item. updated_at: 2026-10-12 to 2026-10-13; product_type: Bags (13), Accessories (6), Jewelry (1).
MCP tool fashionphile_search
/fashionphile/productsReturns 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. - When the response includes `transport_mode: "ssr_embedded"`, it also includes `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 page size is fixed by the storefront and cannot be requested larger in that mode. All of the above are omitted entirely otherwise. - 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`. This brand-pinned endpoint also does not accept the generic family's `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*` Storefront Filtering params (same out-of-scope reasoning -- use the generic `/shopify/products` endpoint with `url` set to this brand's storefront). The response DTO carries the matching `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`variant_options` fields for that feature; they are always omitted here since this endpoint never populates them. `sort_by` allowed values (never actually returned by this endpoint, listed for schema completeness): `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (only ever these two values; omitted for the classic transport).
Sampled 14 Oct 2026: 40 items, 17 fields filled in every item. published_at: 2026-10-13; product_type: Bags (28), Accessories (11), Jewelry (1).
MCP tool fashionphile_products
/fashionphile/products/{handle}Returns 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 are returned in decimal currency units. - Missing product handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing product fields return upstream errors. - When the response includes `transport_mode: "ssr_embedded"`, it also carries additive fields (`colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, per-variant `inventory_quantity`). `transport_mode` is omitted entirely otherwise. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
Sampled 14 Oct 2026: 1 item, 3 fields filled in every item. name: “Title”; values: median 1 entry.
MCP tool fashionphile_product
/fashionphile/products/{handle}/recommendationsReturns recommended products for one Fashionphile (https://www.fashionphile.com) product handle. 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. - When the response includes `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).
Sampled 14 Oct 2026: 10 items, 16 fields filled in every item. published_at: 2025-07-09 to 2026-06-04; price: 995 to 4,555, median 2,370.
MCP tool fashionphile_product_recommendations
/fashionphile/collectionsReturns 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. - When the response includes `transport_mode: "ssr_embedded"`, `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).
Sampled 14 Oct 2026: 40 items, 6 fields filled in every item, 1 not. published_at: 2025-03-27 to 2026-10-01; products_count: 2 to 21,678, median 270.
MCP tool fashionphile_collections
/fashionphile/collections/{handle}/productsReturns 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. - When the response includes `transport_mode: "ssr_embedded"`, it also includes `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; the page size is fixed by the storefront in that 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`. This brand-pinned endpoint also does not accept the generic family's `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*` Storefront Filtering params (same out-of-scope reasoning -- use the generic `/shopify/collections/{handle}/products` endpoint with `url` set to this brand's storefront). The response DTO carries the matching `sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`variant_options` fields for that feature; they are always omitted here since this endpoint never populates them. `sort_by` allowed values (never actually returned by this endpoint, listed for schema completeness): `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (only ever these two values; omitted for the classic transport).
Sampled 14 Oct 2026: 2 items, 17 fields filled in every item. published_at: 2026-03-28 to 2026-07-31; price: 210 to 295, median 210.
MCP tool fashionphile_collection_products
/fashionphile/search/suggestReturns products, collections, and query suggestions from Fashionphile's (https://www.fashionphile.com) predictive search. The storefront URL is fixed server-side.
Response notes
- Products and collections use the same shapes as 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.
Sampled 14 Oct 2026: 3 items, 10 fields filled in every item. price: 5,295 to 8,995, median 8,995; title: “Caviar Quilted Small Chanel 25 Handbag Brown” and 2 other values.
MCP tool fashionphile_search_suggest
/fashionphile/pagesLists Fashionphile static pages, 50 per page by default (`limit`, max 250), with `page` starting at 1. Each page has its handle, title, URL, plain-text content, and created, updated and published dates. When `transport_mode` is `ssr_embedded`, items carry only `handle`, `url` and `updated_at`. Fetch a single page for its full content.
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. - When the response includes `transport_mode: "ssr_embedded"`, 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).
Sampled 14 Oct 2026: 40 items, 7 fields filled in every item, 1 not. published_at: 2024-09-27 to 2026-10-01; title: “A Current Affair” and 39 other values.
MCP tool fashionphile_pages
/fashionphile/pages/{handle}Returns one Fashionphile static page by its required `handle`, such as `about`: title, URL, plain-text content, and created, updated and published dates. An unknown handle returns `404`. In a fallback mode flagged by `transport_mode: "ssr_embedded"`, the response omits `id`.
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. - When the response includes `transport_mode: "ssr_embedded"`, `content` is plain text rendered from the page's rich-text blocks, and `id` is omitted. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
Sampled 14 Oct 2026: 8 of 8 fields returned with a value. store_url: fashionphile.com.
MCP tool fashionphile_page
/fashionphile/sitemapsLists the child sitemaps in Fashionphile's sitemap index, with no parameters. Each entry has its `loc` URL and an inferred `type`: `products`, `collections`, `pages`, `blogs`, `agentic_discovery` or `other`. Product sitemap URLs may carry `from` and `to` query values.
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.
Sampled 14 Oct 2026: 1944 items, 0 fields filled in every item, 2 not. type: products (499), agentic_discovery (1); loc: fashionphile.com.
MCP tool fashionphile_sitemaps
/fashionphile/sitemap/urlsLists URL entries from Fashionphile's sitemaps, filtered by `type` (`all` by default, or `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, `other`) and capped by `limit` (default 50, max 250). Each entry has its `loc`, inferred type, handle, last modified date, change frequency, and optional images.
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.
Sampled 14 Oct 2026: 40 items, 3 fields filled in every item, 3 not. lastmod: 2026-10-13; loc: fashionphile.com.
MCP tool fashionphile_sitemap_urls
Related APIs
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
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.
How to scrape Fashionphile
Crawlora's Fashionphile endpoints return listing, search, collection, page, recommendation, and search-suggestion data as normalized JSON with one API key, pinned server-side to www.fashionphile.com. Every listing is a pre-owned, authenticated designer item (Chanel, Louis Vuitton, Hermès, and others). The endpoint to start with is /fashionphile/search, which reads Fashionphile's own faceted search: it filters by designer and condition grade and returns each listing's markdown against Fashionphile's retail estimate. The plain Shopify catalog JSON carries none of those fields.
Call /fashionphile/search with a keyword in q, or leave q out to browse the whole catalog. Narrow with vendor (an exact designer name such as Chanel or Hermes) and condition (New, Excellent, Giftable, Shows Wear, Worn, Flawed, or Fair, which is Fashionphile's full grade list), and order with sort: relevance, newest, price_asc, or price_desc. Results are in-stock listings by default, as on the storefront; availability=sold searches the sold archive and availability=all covers both. limit goes up to 50 per page. total_items is the exact match count for that query and filter combination and does not change with sort. A query with no matches returns total_items: 0 with an empty products array rather than an error.
Each search result carries its condition grade, a product_type such as Bags, Jewelry, or Accessories, and an available flag. compare_at_price is Fashionphile's retail estimate. When a listing is priced below it, discount_percentage is filled in; a necklace listed 30% under its estimate returns discount_percentage: 30. When the price equals the estimate, the field is null.
Pass a handle from any result to /fashionphile/products/{handle} for images, the resolved Shopify product id, and a price converted from cents to dollars. To walk one designer's shelf, list the ids with /fashionphile/collections, then page through /fashionphile/collections/{handle}/products (for example the 31-phillip-lim collection).
/fashionphile/search/suggest returns predictive products, collections, and queries for a partial term; restrict the mix with types. /fashionphile/products/{handle}/recommendations returns related or complementary listings, depending on intent. /fashionphile/pages covers static pages, and /fashionphile/sitemaps plus /fashionphile/sitemap/urls enumerate every indexed URL.
Agent skills
Install a Crawlora agent skill and your agent can pull Fashionphile data as JSON through the documented API, without writing a scraper. These skills cover Fashionphile:
Research luxury-fashion and watch resale listings, sold evidence, condition, and seller signals across specialist marketplaces. Use for sourcing or…
npx skills add github.com/Crawlora-org/crawlora-skills --skill luxury-resale-researchFAQ
Yes, on /fashionphile/search only. condition accepts every grade Fashionphile uses: New, Excellent, Giftable, Shows Wear, Worn, Flawed, and Fair. vendor takes an exact designer name. Each result reports its own condition grade from that same list. The catalog endpoints (/fashionphile/products and collection products) have neither filter.
Yes. /fashionphile/search returns in-stock listings by default, matching the storefront. Pass availability=sold for the sold archive, which is much larger (for q=chanel on 2026-09-18: 6,630 in stock against 42,610 sold), or availability=all for both. Sold results carry available: false.
Use /fashionphile/search. Each result carries compare_at_price, which is Fashionphile's retail estimate, and discount_percentage, which is filled in only when the listing is priced below that estimate. Sort with price_asc or price_desc within a designer to see the spread.
No. Leave q out and the endpoint browses the full catalog, subject to any vendor, condition, or availability filter and the chosen sort. For example, vendor=Chanel with sort=newest lists Chanel pieces newest first.
/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.
Pre-owned. Fashionphile resells authenticated secondhand pieces from other luxury houses; it does not make its own line. Every listing on /fashionphile/products, the collection endpoints, and /fashionphile/search is resale stock.