FASHIONPHILE New Listings Scraper (Luxury Resale)
Pricing
from $0.35 / 1,000 listing scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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
| Field | Notes |
|---|---|
brands | Return 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. |
publishedAfter | Return 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. |
collections | FASHIONPHILE 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. |
maxItems | Listings to return per collection, or for the whole catalogue (default 250, up to 25,000). 250 per page. |
proxyConfiguration | Apify 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 "".
| Field | Notes |
|---|---|
query, position | The 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). |
store | www.fashionphile.com. |
product_id, handle, url | Shopify's product id (a string), the URL handle (it ends in FASHIONPHILE's item number) and the listing link. |
title, vendor, product_type | Monogram Nano Speedy, Louis Vuitton, Bags. vendor is the luxury house. Null when empty. |
price | The asking price. Each listing is one item, so price_max is the same number. |
original_price, original_price_max, on_sale, discount_percent | FASHIONPHILE 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. |
available | False once the item is sold or on hold. About one in ten of the newest listings was already unavailable when measured. |
variants | One 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_at | When 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_at | When 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). |
tags | FASHIONPHILE's own merchandising tags, as sent (Must-have Mini Bags, exotic, channel tags). |
image_url, image_count | The 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_saleabove:discount_percentis 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 bybrandsorpublishedAfter, 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_atnever increased down the feed (pages 1 to 3, 10, 50 and 99).created_atis not in order: one relisted item was created 478 days before it was published. That is why the cut-off is onpublished_at. - At most 25,000 listings per list. Shopify refuses any page beyond
page * 250 = 25,000with 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.