Fashionphile Handbag Listings Scraper
Pricing
Pay per event
Fashionphile Handbag Listings Scraper
Scrape live Fashionphile.com luxury handbag inventory by brand or keyword search — price, condition, SKU, images, and retail savings per row, sourced directly from Fashionphile's own Algolia search backend. No per-item HTTP calls, no HTML parsing, fully-resolved records in one pass.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
🎯 What this scrapes
Fashionphile doesn't publish a bulk export of its live handbag inventory, and its own /shop search page ships a decoy JSON block with null price and SKU fields. This Actor queries Fashionphile's own Algolia search index directly — the same backend that powers its on-site search — so luxury handbag resellers, authenticators, and price-arbitrage operators get fully-resolved listing data (price, condition, SKU, images, retail savings) in one pass, with zero per-item HTTP calls and no HTML parsing.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Price-arbitrage sourcing — scan brand/keyword queries for underpriced authenticated handbags before casual buyers find them via Fashionphile's own storefront search.
- Authentication and resale comps — pull condition, SKU, and retail-savings data to benchmark a bag's resale value against Fashionphile's live listings.
- Inventory monitoring — track how many listings a brand or model holds in Fashionphile's catalog and at what price band, run over run.
- Luxury market research — build a keyword-level snapshot of live handbag supply, condition mix, and pricing across brands.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchTerms | array | yes | ['chanel', 'hermes birkin'] | Brand or keyword queries to run against Fashionphile's Algolia search index, e.g. "chanel", "hermes birkin". Blank… |
maxItemsPerSearch | integer | no | 60 | Cap on rows collected per search term. Pagination stops early once this is reached. |
proxyConfiguration | object | no | {'useApifyProxy': True} | Apify Proxy configuration. Datacenter default — Fashionphile's Algolia backend showed no block signal in testing;… |
Example input
{"searchTerms": ["chanel","hermes birkin"],"maxItemsPerSearch": 5,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
object_id | string | Stable Algolia identifier (objectID), used as dedup key. |
sku | string | Fashionphile's own SKU. |
title | string | Listing title. |
url | string | Canonical fashionphile.com/products/ URL, constructed with no extra fetch. |
price | number | Current asking price, whole USD. |
compare_at_price | ['number', 'null'] | Retail price before markdown, whole USD. |
retail_savings_percent | ['number', 'null'] | Percent saved vs. retail. |
condition | ['string', 'null'] | Fashionphile's own condition label, e.g. 'Excellent'. |
images | array | CDN image URLs — may be empty, never null. |
categories | array | Category/collection tags — may be empty, never null. |
description | ['string', 'null'] | Listing description (Shopify-sanitized HTML passthrough). |
inventory_quantity | integer | Units in stock, default 0. |
published_at | ['string', 'null'] | ISO-8601 publish timestamp, pass-through. |
search_term | string | The input search term that produced this row. |
scraped_at | string | ISO-8601 UTC timestamp when this row was recorded. |
Example output
{"object_id": "shopify_products_7841234567890","sku": "FP-CHN-00042","title": "Chanel Classic Medium Double Flap Black Caviar","url": "https://www.fashionphile.com/products/chanel-classic-medium-double-flap-black-caviar-00042","price": 5095.0,"compare_at_price": 6200.0,"retail_savings_percent": 17.8,"condition": "Excellent","images": ["https://cdn.shopify.com/s/files/1/fashionphile/00042-front.jpg"],"categories": ["Handbags","Chanel","Flap Bags"],"description": "Chanel Classic Medium Double Flap in black caviar leather with gold hardware.","inventory_quantity": 1,"published_at": "2026-07-30T14:22:00Z","search_term": "chanel","scraped_at": "2026-08-24T12:00:00.000Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.05 | One-off warm-up charge per run |
result-row | $0.003 | Per unique dataset item |
Example: 1 000 results at the rates above ≈ $3.05. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Live inventory only — no sold/historical pricing or comps mode.
- No strict "bags only" filtering — a broad brand query may return non-bag accessories from the wider catalog; scope via search_terms.
- USD pricing only — non-US storefronts are out of scope.
- No cross-search-term deduplication — overlapping queries can return the same listing twice, each tagged with its own search term.
❓ FAQ
Do I need a Fashionphile account or API key?
No. This Actor queries Fashionphile's own public, search-only Algolia index — the same backend that powers its on-site search — no login, no API key.
Does this scrape the /shop HTML page instead?
No — the /shop page's embedded JSON block carries null price and SKU placeholders. This Actor queries Algolia directly for fully-resolved data.
Does this fetch each listing's detail page?
No — the Algolia hit already carries every field this Actor emits (price, condition, SKU, images), so there's no extra per-item HTTP call.
What happens if a search term matches nothing?
That term finishes as a clean, zero-row success — a genuine no-match is not treated as a failure. The run only fails if every search term could not be reached at all.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.