Switch Scraper - Luxury Handbags, Jewelry & Rental Listings
Pricing
from $1.60 / 1,000 rental piece records
Switch Scraper - Luxury Handbags, Jewelry & Rental Listings
Scrape Switch designer handbag and jewelry rental listings by keyword, filter or URL. Extract product names, brands, retail values, member purchase prices, Core or Select membership tiers, availability and product images.
Pricing
from $1.60 / 1,000 rental piece records
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Switch Rental Scraper: Luxury Jewelry & Handbag Rental Catalog
This actor returns the Switch luxury rental catalog as structured records: designer jewelry and handbags from Chanel, Hermes, Dior, Gucci, Cartier, Louis Vuitton and more, with retail value, member buy price, rental tier (Core or Select), availability, image gallery and the store's own category, collection and occasion tags. Search by keyword, walk the catalog with filters, or paste Switch URLs. Results arrive in the dataset as clean JSON, with CSV, Excel and API export built in.
Why This Scraper?
- Three ways in. Keyword search across the catalog, filtered browse walks (brand, category, occasion, collection, tier, availability, sort), or pasted piece and catalog URLs.
- Everything on the card. Brand, category, collection, occasion, rental tier, retail value, member buy price, availability, favorite and restock-watch counts, description, condition and authenticity notes, and the lead image.
- Full gallery on request. With piece details on, every record also carries the complete image gallery from the piece's own page, plus fresh availability and prices.
- Watch the catalog. Incremental mode reports NEW, UPDATED and REAPPEARED pieces across scheduled runs, so a daily walk returns only what changed since last time.
- Resume big walks. An interrupted or capped crawl continues from where it stopped, without charging for pieces already collected.
- Depth without caps that surprise. Forward pagination walks the store's own pages to the natural end; the only binding cap is Max items.
- Pipe it anywhere. Records land in the dataset and, optionally, straight into Notion, Airtable, Linear or any MCP-connected app.
Use Cases
- Resale and pricing analysts: track retail values and member buy prices across the designer rental market as a pricing signal.
- Personal shoppers and stylists: monitor availability of specific bags and jewelry pieces and get told when a piece is back on the shelf.
- Market researchers: quantify catalog composition by brand, category, collection and rental tier, and how it shifts month to month.
- Deal and drop watchers: schedule walks on a designer or collection and receive only the new or changed pieces.
- App and dashboard builders: feed a clean, filterable rental catalog into your own tooling via the dataset API.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
recordId | joinswitch:12201 |
url | https://joinswitch.com/product/sample-piece-123 |
productId | 12201 |
title | Sample Chain Flap Bag |
brand | Sample Designer |
brandSlug | sample-designer |
category | Handbags |
occasion | Wedding |
shop | Vintage |
tier | Select |
retailValue | 7000 |
memberPurchasePrice | 5500 |
currency | USD |
availability | available |
isSoldOut | false |
favoritesCount | 168 |
notifyCount | 95 |
isNew | false |
description | Sample description text of the piece appears here. |
condition | Condition note text appears here when fetchDetails=true. |
imageUrl | https://img.example.com/sample-piece.png |
imageUrls | ["https://img.example.com/sample-piece.png"] |
imageCount | 1 |
dateAdded | 2026-01-01 00:00:00 |
scrapedAt | 2026-01-01T00:00:00Z |
Piece rows also carry sku, slug, isFeatured, metaTitle, descriptionText, imageUrlHover, updatedAt and, in incremental mode, changeType, changedFields, firstSeenAt and lastSeenAt.
How to Use
- Pick a mode: search the catalog, or paste Switch URLs.
- In search mode, set search terms and the catalog filters you want (brand, category, occasion, collection, tier, availability, sort). Leave search terms empty to browse the whole catalog.
- Set Max items. 20 is the default; set 0 for unlimited.
- Run the actor and export the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword:
{"mode": "search","searchTerms": ["chanel flap bag"],"fetchDetails": true,"maxItems": 50}
Browse one designer's handbags, available now, priciest first:
{"mode": "search","searchTerms": [],"brands": ["Hermes"],"categories": ["handbags"],"availability": "available","sort": "price-desc","maxItems": 100}
Walk catalog URLs you already have:
{"mode": "url","urls": ["https://joinswitch.com/product/chanel-matelasse-chain-flap-bag-1731355475","https://joinswitch.com/collections/designer/chanel/handbags"],"maxItems": 100}
Daily watch on a designer (incremental mode):
{"mode": "search","searchTerms": [],"brands": ["Chanel"],"incrementalMode": true,"stateKey": "chanel-watch","maxItems": 0}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("abotapi/joinswitch-rental-scraper").call(run_input={"mode": "search","searchTerms": ["chanel flap bag"],"maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["retailValue"], item["availability"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('abotapi/joinswitch-rental-scraper').call({mode: 'search',searchTerms: ['chanel flap bag'],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].title, items[0].retailValue);
You can also export the dataset to Make, Zapier, n8n, Google Sheets or a webhook from the Integrations tab of the actor.
How maxItems shapes a run
Max items is the single binding cap: the walk stops as soon as it has collected that many pieces across all search terms and URLs, whatever the page depth. Set 0 to walk to the natural end of the catalog (roughly 4,800 pieces today). Each catalog page carries 66 pieces, so a 100-piece run reads two pages plus the piece pages when details are on.
Resume and recurring updates
Resume from a previous run continues ONE interrupted crawl: paste its run ID and the walk skips pieces already collected there. Incremental mode is for scheduled monitoring of the same walk: the first run returns everything as NEW, later runs return only NEW, UPDATED and REAPPEARED pieces, and availability flips count as real changes (that is the signal on a rental catalog). Member counters (favorites, restock watches) and the store's own sync stamps are excluded from change detection by default; tune the list with the ignore-fields input.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector under Apify, Settings, API and Integrations, then select it in the mcpConnectors input and set notionParentPageUrl for Notion. Each connector receives a condensed summary per piece (title, brand, tier, retail value, availability and the piece link), not the full record; the complete record always stays in the dataset. maxNotifyListings caps how many records each connector receives per run. Leaving the connector fields empty changes nothing about the dataset output.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | select | search | Search the catalog by keyword and filters, or process pasted Switch URLs. |
searchTerms | array | ["chanel bag"] | One or more keyword searches, run independently. Leave empty to browse the whole catalog. Search mode only. |
brands | array | empty | Designer filter, by plain name, slug or store id. Several allowed. Search mode only. |
categories | array | empty | Piece category filter: handbags, necklaces, earrings, bracelets, rings, belts, brooches, other. Search mode only. |
occasions | array | empty | Occasion filter: everyday, festival, night-out, vacation, wedding. Search mode only. |
shop | select | any | The store's own collection: fine, fashion, statement, everyday or vintage. Search mode only. |
tier | select | any | Restrict to Core or Select pieces. Search mode only. |
availability | select | any | Restrict to pieces on the shelf right now. Search mode only. |
sort | select | recommended | Server-side ordering: recommended, newest, highest or lowest retail value first. |
urls | array | empty | Piece, catalog, search and designer links in URL mode; every link shape the site uses is accepted. URL mode only. |
minRetailValue | number | empty | Keep only pieces worth at least this much, in US dollars. Applies in both modes. |
maxRetailValue | number | empty | Keep only pieces worth at most this much, in US dollars. Applies in both modes. |
fetchDetails | checkbox | true | Read each piece's own page for the full gallery and fresh availability and prices; adds a per-record surcharge. |
maxItems | integer | 20 | The single cap on the run across all search terms and URLs. 0 means unlimited. |
maxPages | integer | 0 | Safety bound on result pages per source. 0 means no page limit. |
proxy | object | Apify proxy | Leave the default; residential is recommended for the most reliable large runs. |
resumeFromRunId | string | empty | Continue one interrupted run, skipping pieces it already collected. |
incrementalMode | checkbox | false | For scheduled runs of the same walk: return only NEW, UPDATED and REAPPEARED pieces. |
stateKey | string | empty | Name a monitoring campaign so its state stays stable across runs. |
emitUnchanged | checkbox | false | Also return unchanged pieces, marked UNCHANGED (returns and bills extra rows). |
emitExpired | checkbox | false | Also return pieces no longer in the catalog, marked EXPIRED (returns and bills extra rows). |
ignoreFieldsForChanges | array | empty | Extra field names to exclude from incremental change detection. |
mcpConnectors | array | empty | Send results into Notion, Linear, Airtable or Apify via MCP connectors. |
notionParentPageUrl | string | empty | Notion parent page for the Notion connector. |
maxNotifyListings | integer | 50 | Cap on records written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
One piece record with details on:
{"recordId": "joinswitch:12201","url": "https://joinswitch.com/product/sample-chain-flap-bag-123","productId": "12201","slug": "sample-chain-flap-bag-123","title": "Sample Chain Flap Bag","brand": "Sample Designer","brandSlug": "sample-designer","category": "Handbags","occasion": "Everyday","shop": "Vintage","tier": "Select","retailValue": 7000,"memberPurchasePrice": 5500,"currency": "USD","availability": "available","isSoldOut": false,"favoritesCount": 168,"notifyCount": 95,"description": "<li>Sample description line one.</li><li>Sample line two.</li>","descriptionText": "Sample description line one. Sample line two.","condition": "Condition note text appears here.","authenticity": "Authenticity note text appears here.","imageUrl": "https://img.example.com/sample-piece.png","imageUrlHover": "https://img.example.com/sample-piece-2.png","imageUrls": ["https://img.example.com/sample-piece.png"],"imageCount": 2,"sku": "12201","dateAdded": "2026-01-01 00:00:00","updatedAt": "2026-01-01 00:00:00","scrapedAt": "2026-01-01T00:00:00Z"}
Plan Requirement
This actor runs on any paid Apify plan; the default connection is included with every plan, and the input recommends the most reliable option for large runs. Billing is per returned record, with a per-record surcharge when piece details are on, listed on the Pricing tab.
FAQ
How much does it cost?
You pay per returned record (the Pricing tab lists the exact tiered price) plus a smaller per-record surcharge when Fetch piece details is on, and the run's normal Apify compute and proxy usage. A 20-piece default run with details on is a few tenths of a cent in event charges; Max items is the lever that bounds a run.
Is it legal to scrape Switch?
This actor reads only publicly available catalog pages. You remain responsible for using the data in line with the site's terms, applicable privacy law such as GDPR or CCPA, and your own use case. Personal data is not the target here: records describe products, not people.
Can I get only new or changed pieces on a schedule?
Yes. Turn on Incremental mode (optionally with a State key to name the campaign). The first run classifies everything NEW; later runs return only NEW, UPDATED and REAPPEARED pieces, so a daily watch is cheap. Availability flips and price moves are reported as UPDATED on purpose.
Why did a run return fewer pieces than Max items?
The walk stops at the natural end of the results for your filters. A narrow filter set (one designer, one category) may simply have fewer pieces than the cap. Set Max items to 0 to walk everything the filters match.
Why did my run fail instead of returning an empty dataset?
If the catalog could not be read at all (a refused connection on every attempt), the run fails loudly instead of reporting an empty success: check the run log and try again shortly. A run that read the catalog and genuinely matched nothing succeeds quietly with zero items.
Can I use it with AI agents or MCP?
Yes. The dataset is plain JSON an agent can read, and the actor ships an MCP connector input so results can be written straight into Notion, Airtable, Linear or Apify from the same run.
🔗 More scrapers you might like
Pair this actor with these related scrapers from the same team:
| 🛒 The RealReal Scraper Scrape luxury consignment listings from therealreal.com. Browse by designer, category or... | 🧩 SSENSE Scraper Scrape SSENSE by keyword, category, designer or URL. Every row carries the selling price... |
| 👗 24S Scraper Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price... | 🧩 Grailed Scraper Scrape Grailed by keyword, category, designer, condition, size or URL. Extract prices and... |
| 🧩 Too Good To Go Scraper Scrape Too Good To Go (TGTG) stores and surprise bags by location or item: price, value... | 🏷️ Chrono24 Scraper Scrape Chrono24 luxury watch listings by keyword, filters or URL. Extract 50+ fields... |
💬 Support & custom scrapers
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.