FASHIONPHILE New Listings Scraper (Luxury Resale) avatar

FASHIONPHILE New Listings Scraper (Luxury Resale)

Pricing

from $0.35 / 1,000 listing scrapeds

Go to Apify Store
FASHIONPHILE New Listings Scraper (Luxury Resale)

FASHIONPHILE New Listings Scraper (Luxury Resale)

FASHIONPHILE scraper: new pre-owned luxury listings, newest first, filtered by brand (Louis Vuitton, Chanel, Hermes...) and by publish time. One row per listing with USD price, availability, SKU, type, tags, photo and timestamps. For new-arrival alerts on luxury resale.

Pricing

from $0.35 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

A FASHIONPHILE scraper for new-arrival alerts on pre-owned luxury. It reads FASHIONPHILE's catalogue newest-published first and returns one flat row per listing: title, brand (Louis Vuitton, Chanel, Hermes), price in USD, whether it is still available, FASHIONPHILE's SKU, product type, tags, photo and the minute it went live. Filter by brand and by publish time (24 hours, 3 days) and schedule it hourly to get a luxury resale new-listing alert for the houses you collect.

No account, no API key, no login, no browser. One request returns 250 listings. FASHIONPHILE published 750 listings in about 11 hours on 2026-10-16, so a 24-hour window is roughly seven requests and an hourly run is one.

Input

FieldNotes
brandsReturn only listings by these brands, spelled as FASHIONPHILE spells them (Louis Vuitton, Chanel, Hermes, Gucci, Christian Dior). Case and extra spaces are ignored; otherwise the match is exact. Leave empty for every brand.
publishedAfterReturn only listings that went live after this moment: a span back from now (24 hours, 3 days, 90 minutes, 1 week), a date (2026-10-16, midnight UTC) or a date-time (2026-10-16T12:00:00Z, no offset means UTC). This is the listing's publish time (published_at), not the record's creation time (created_at), which is months older for a relisted item. On the whole catalogue the run stops at the first older listing. Leave empty for no cut-off.
collectionsFASHIONPHILE collections to read instead of the whole catalogue, one per line: the name from the address bar (louis-vuitton) or the link (https://www.fashionphile.com/collections/louis-vuitton). A collection is in FASHIONPHILE's own order, not newest first, so publishedAfter filters it but cannot stop early: the whole collection is read. For new listings by brand, prefer brands on the catalogue. A collection name that does not exist fails at no charge.
maxItemsListings to return per collection, or for the whole catalogue (default 250, up to 25,000). 250 per page.
proxyConfigurationApify datacenter proxy by default.

Filtered listings are read but not returned and not charged, and do not count toward maxItems.

Example input, new Hermes and Chanel listings from the last day:

{
"brands": ["Hermes", "Chanel"],
"publishedAfter": "24 hours",
"maxItems": 1000
}

Example input, everything listed since a date:

{
"publishedAfter": "2026-10-16",
"maxItems": 5000
}

Output

Prices are numbers in US dollars; currency is USD (the shop's own /meta.json says so). A field the shop did not send is null, never 0 or "".

FieldNotes
query, positionThe shop URL (whole catalogue) or collection URL that first found the listing, and its place in that list (1 is newest on the catalogue, 250 per page).
storewww.fashionphile.com.
product_id, handle, urlShopify's product id (a string), the URL handle (it ends in FASHIONPHILE's item number) and the listing link.
title, vendor, product_typeMonogram Nano Speedy, Louis Vuitton, Bags. vendor is the luxury house. Null when empty.
priceThe asking price. Each listing is one item, so price_max is the same number.
original_price, original_price_max, on_sale, discount_percentFASHIONPHILE sends a compare_at_price equal to the price on every listing measured (1,000 of 1,000), so on_sale is false, original_price equals price and discount_percent is null. The columns are kept because they would show a real reduction if FASHIONPHILE starts sending one.
availableFalse once the item is sold or on hold. About one in ten of the newest listings was already unavailable when measured.
variantsOne entry: variant_id, title (Default Title), sku (FASHIONPHILE's item number, 1996503), price, compare_at_price, available, options. variant_count, available_variant_count and option_names follow from it.
published_atWhen the listing went live, ISO 8601 with the shop's offset. What the feed is ordered by and what publishedAfter compares against.
created_at, updated_atWhen the record was created (older than published_at for a relisted item) and last changed (FASHIONPHILE rewrites it in bulk, so it is not a price-change time).
tagsFASHIONPHILE's own merchandising tags, as sent (Must-have Mini Bags, exotic, channel tags).
image_url, image_countThe first photo on cdn.shopify.com, as sent (null when there is none), and how many photos there are.

Example row (real values, 2026-10-17):

{
"query": "https://www.fashionphile.com",
"position": 4,
"store": "www.fashionphile.com",
"product_id": "16216347607343",
"title": "Monogram Nano Speedy",
"handle": "louis-vuitton-monogram-nano-speedy-1996503",
"url": "https://www.fashionphile.com/products/louis-vuitton-monogram-nano-speedy-1996503",
"vendor": "Louis Vuitton",
"product_type": "Bags",
"tags": ["amazon-market-template", "Must-have Mini Bags", "tiktok-market-template-shoulder-bags", "updated-1792181783", "US"],
"created_at": "2026-10-16T13:15:43-07:00",
"published_at": "2026-10-16T13:15:47-07:00",
"updated_at": "2026-10-16T22:09:46-07:00",
"image_url": "https://cdn.shopify.com/s/files/1/0894/3186/7695/files/192ea24720bc30c820f01c8eb07e912e.jpg?v=1792181748",
"image_count": 9,
"currency": "USD",
"price": 1495.0,
"price_max": 1495.0,
"original_price": 1495.0,
"original_price_max": 1495.0,
"on_sale": false,
"discount_percent": null,
"available": true,
"variant_count": 1,
"available_variant_count": 1,
"option_names": ["Title"],
"variants": [
{
"variant_id": "58666931847471",
"title": "Default Title",
"sku": "1996503",
"price": 1495.0,
"compare_at_price": 1495.0,
"available": true,
"options": ["Default Title"]
}
]
}

Honest nulls and what is not here

  • No condition grade. FASHIONPHILE's catalogue feed carries no condition: none of 1,000 listings had one in its tags or description. The listing page shows it; this actor does not invent it.
  • No reductions. See on_sale above: discount_percent is null, never 0.

Pricing

Pay per event:

  • $0.002 per run (actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing.
  • $0.00035 per listing row written (listing-scraped), i.e. $0.35 per 1,000 listings. A row that is not written is not charged: listings filtered by brands or publishedAfter, and repeats another collection already returned, are free.

How it fetches

It reads /products.json, the public catalogue feed every Shopify shop serves (and /collections/<name>/products.json for a collection). Measured 2026-10-17: HTTP 200 JSON, about 1 MB per 250 listings, no key or cookie needed. A refusal (403, 429, 430, 5xx), a 200 that is not the feed, or a dropped connection is treated as the address being blocked, and the actor rotates to a fresh one and retries; a sporadic HTTP 500 was seen and answered on the next try.

Things worth knowing, all measured:

  • Newest-published first. published_at never increased down the feed (pages 1 to 3, 10, 50 and 99). created_at is not in order: one relisted item was created 478 days before it was published. That is why the cut-off is on published_at.
  • At most 25,000 listings per list. Shopify refuses any page beyond page * 250 = 25,000 with HTTP 400. FASHIONPHILE lists about 25,001, so the single oldest listing cannot be read by anyone; a walk that reaches the window is logged as capped.
  • Filters on the feed are ignored. ?vendor=, ?product_type=, ?q=, ?order= all return the same page as sending nothing, so brands are matched on the rows instead. Brand collections do filter (louis-vuitton: 250 of 250 Louis Vuitton) but are not in date order.
  • An unknown collection looks empty. The feed answers an unknown name with an empty list; the actor asks the collection's own record, and a name that does not exist fails instead of being reported as empty.

If FASHIONPHILE changes its feed, the run fails with a message instead of returning empty rows.