24S Scraper - Luxury Fashion, Prices, Stock & Product Details
Pricing
from $1.00 / 1,000 product scrapeds
24S Scraper - Luxury Fashion, Prices, Stock & Product Details
Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price, discounts, size stock, colors, images, descriptions, composition, and country of origin. Filter by brand, color, size, price, and sale.
Pricing
from $1.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
24S Scraper: Luxury Fashion Catalog, Prices & Stock
24S Scraper turns the 24S luxury fashion catalog into structured product data. Get brand, name, price, discount and stock for every item, the full size list with per-size availability, color variants and the image gallery, plus (optionally) the complete description, composition, made-in country and product code. Search by category with brand, color, size, price and discount filters, or paste any 24S category or product link, then export the results to JSON, CSV or Excel, or pull them straight into your app through the API.
Why This Scraper?
- 40+ fields per product, including per-size stock and color variants that many catalog scrapers skip.
- Two ways to collect: build a category search with brand, color, size, price and discount filters, or paste category and product links directly.
- Specials tracked at the source: was-price, savings amount, discount percentage and a single toggle that checks every discount bucket at once, on every discounted result.
- Optional full product-detail enrichment: description, bullet points, composition, made-in country, product code and the complete image gallery, added with one extra request per product.
- Built for schedules: incremental mode returns only new, updated and reappeared products on recurring runs, and a resume mode continues one interrupted run without re-collecting or re-charging what it already gathered.
- Works across 24S markets (locales such as en-gb, en-us, en-au, fr-fr and more), with the connection's exit country matched to the chosen market automatically.
- A refused run fails loudly instead of silently returning an empty dataset, so a block is never confused with a genuinely empty search.
Use Cases
- Price and markdown monitoring: track was-price, discount percentage and savings amount across brands and categories to watch how 24S prices move over time.
- Sale-cycle tracking: turn on Specials only to catch every discount bucket at once and get alerted the moment new markdowns appear.
- Assortment and merchandising research: build brand- and category-level datasets of stock, sizes and color variants for competitive analysis.
- Resale and sourcing tools: check size-level stock and color availability for products before sourcing or relisting them.
- Content, comparison and affiliate sites: pull descriptions, images, composition and product codes to build product pages automatically.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
id | "BRDXXX0XBCK" |
brand | "Sample Brand" |
name | "Structured shoulder bag" |
title | "Sample Brand Structured shoulder bag" |
color | "Black" |
price | 890.0 |
discountPrice | 623.0 |
currentPrice | 623.0 |
discountPercentage | 30 |
currency | "EUR" |
onSale | true |
isOnSpecial | true |
wasPrice | 890.0 |
savingsAmount | 267.0 |
inStock | true |
sizes | [{"label": "FR 38", "sku": "BRDXXX0XBCKO0AAA00", "inStock": true}] |
otherColors | [{"label": "Beige", "shortSku": "BRDXXX0XBEI"}] |
images | ["https://www.24s.com/static/images/unsafe/fit-in/1024x1280/00000000000000000000000000000000"] |
imagesCount | 8 |
description | "Full product description appears here when Fetch product details is on." |
composition | "Calf leather" |
madeIn | "Italy" |
productCode | "BRDXXX0XBCKO0AAA00" |
url | "https://www.24s.com/en-gb/structured-shoulder-bag-sample-brand_BRDXXX0XBCK?color=black" |
locale | "en-gb" |
Catalog results also carry shortSku, stockLevel, exclusive, productSlug, discountPercent, promoEventName and discountStartDate/discountEndDate (when a discount is active). With Fetch product details on, results add bulletPoints, year, gender, productFamily, categories and detailFetched. Incremental mode adds changeType, changedFields, firstSeenAt and lastSeenAt to every record; see How to Use below.
How to Use
- Pick a mode:
search(build category pages with filters) orurl(paste category or product page links). - For search mode, set Market/locale, one or more categories, and any brand, color, size, price or discount filters. For url mode, paste the pages you want.
- Turn on Fetch product details if you want the full description, composition, made-in country and image gallery.
- Set Max products to control run size and cost, then click Start.
Search a category, basic:
{"mode": "search","locale": "en-gb","categories": ["women/shoes"],"maxItems": 50}
Search with filters:
{"mode": "search","locale": "en-gb","categories": ["women/shoes", "women/bags"],"brands": ["SAMPLE BRAND"],"colors": ["Black"],"minPrice": 300,"maxPrice": 1500,"sortBy": "price_asc","fetchDetails": true,"maxItems": 100}
Only current specials:
{"mode": "search","locale": "en-gb","categories": ["women/shoes"],"specialsOnly": true,"maxItems": 60}
Paste URLs (categories and products mixed):
{"mode": "url","urls": ["https://www.24s.com/en-gb/women/shoes","https://www.24s.com/en-gb/women/bags","https://www.24s.com/en-gb/structured-shoulder-bag-sample-brand_BRDXXX0XBCK"],"maxItems": 200}
A pasted product link returns that product's detail fields only (brand, description, bullet points, composition, made-in, product code and image gallery); price, stock, sizes and color variants come from category pages, so paste the category link when you need them. Search filters are ignored in url mode; use the filters already in the pasted link.
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/24s-com-scraper").call(run_input={"mode": "search", "locale": "en-gb", "categories": ["women/shoes"]})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["brand"], product["name"], product["currentPrice"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/24s-com-scraper').call({ mode: 'search', locale: 'en-gb', categories: ['women/shoes'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Specials, was-price and discount
24S has no separate sale, private-sale or outlet section; its only specials signal is the discount-percentage bucket filter used by discounts above, and a single bucket is not cumulative (asking for the 20% bucket turns up only items in that bucket, not everything discounted 30% or more). Turning on Specials only checks every bucket (20/30/40/50) at once, unless you already picked specific buckets yourself. Every result also carries isOnSpecial, wasPrice and savingsAmount, and, when a discount is active, the promotion name and its start and end dates, all read from the same catalog data with no extra request.
Max products and Max pages
Max products (maxItems) is the real cap on a run: it stops once that many products have been collected across every category and URL, and 0 means unlimited. Max pages (maxPages) is an optional safety cap on how many listing pages are walked per category or URL (72 products per page); leave it empty to let Max products decide instead.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one interrupted run: paste its run or dataset ID and this run skips every product it already collected there, so you do not pay twice for the same catalog pull. - Incremental mode (
incrementalMode) is for recurring runs over the same search. Each product is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEARED, orEXPIRED(only once a run has fully scanned the tracked search, and only withemitExpired).stateKeynames or shares the tracked state; leave it empty and the actor derives one automatically from the locale, categories or URLs and filters, so unrelated searches never mix state. With incremental mode off, output is exactly as before.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you have not authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where product pages should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (category and filters) or url (paste links). |
locale | string | en-gb | 24S market as lang-country, e.g. en-gb, en-us, en-au, fr-fr. The connection's exit country is matched to this automatically. |
categories | array | ["women/shoes"] | Category paths to scrape (search mode), e.g. women/shoes, women/bags, women/ready-to-wear. |
brands | array | (none) | Filter by exact brand name as shown on 24S. Leave empty for all brands. |
colors | array | (none) | Filter by color name. Leave empty for all colors. |
sizes | array | (none) | Filter by size in 24S "FR NN" notation. Leave empty for all sizes. |
minPrice | integer | (none) | Minimum price in the locale's currency (whole units). |
maxPrice | integer | (none) | Maximum price in the locale's currency (whole units). |
discounts | array | (none) | Minimum discount buckets to include: 20, 30, 40, 50. |
specialsOnly | boolean | false | Show only items currently on sale; checks every discount bucket at once. Ignored if you already picked specific buckets. |
sortBy | string | relevance | relevance, price_asc, price_desc, or newest. |
urls | array | (none) | 24S category or product page URLs to scrape (url mode). Category links paginate; product links return detail fields only. Filter fields are ignored in this mode. |
fetchDetails | boolean | false | Add the full product-detail fields to every result: description, bullet points, composition, made-in and the complete image gallery. |
maxItems | integer | 20 | Maximum products to scrape across all categories and URLs. 0 for unlimited. |
maxPages | integer | (none) | Optional safety cap on pages walked per category or URL (72 products per page). Empty means no page limit; the run stops at Max products. |
resumeFromRunId | string | (none) | Continue one interrupted run or dataset without re-collecting or re-charging its products. |
incrementalMode | boolean | false | Recurring monitoring of the same search: later runs return only new, updated and reappeared products. |
stateKey | string | (none) | Optional name for an incremental-mode monitoring campaign; derived automatically from locale, categories or URLs, and filters when empty. |
emitUnchanged | boolean | false | Incremental mode only: also return (and bill for) products unchanged since the last run. |
emitExpired | boolean | false | Incremental mode only: also return (and bill for) products no longer found, once a run fully scans the tracked search. |
proxy | object | Residential (auto-selected) | Connection settings; the exit country follows the locale automatically. |
mcpConnectors | array | (none) | Optional: send a summary of each product to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which product pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. Does not affect the dataset. |
Output Example
Sample shape: values are illustrative placeholders, not from a live listing.
{"id": "BRDXXX0XBCK","shortSku": "BRDXXX0XBCK","brand": "Sample Brand","name": "Structured shoulder bag","title": "Sample Brand Structured shoulder bag","color": "Black","price": 890.0,"discountPrice": 623.0,"currentPrice": 623.0,"discountPercentage": 30,"currency": "EUR","onSale": true,"isOnSpecial": true,"wasPrice": 890.0,"savingsAmount": 267.0,"discountPercent": 30,"promoEventName": "sample_sales","discountStartDate": "2026-01-15T09:00:00+00:00","discountEndDate": "2026-02-15T00:00:00+00:00","inStock": true,"stockLevel": 1,"sizes": [{ "label": "FR 38", "sku": "BRDXXX0XBCKO0AAA00", "inStock": true },{ "label": "FR 39", "sku": "BRDXXX0XBCKO1AAA00", "inStock": false }],"otherColors": [{ "label": "Beige", "shortSku": "BRDXXX0XBEI", "image": "https://www.24s.com/static/images/unsafe/fit-in/1024x1280/00000000000000000000000000000000" }],"images": ["https://www.24s.com/static/images/unsafe/fit-in/1024x1280/00000000000000000000000000000000"],"imagesCount": 8,"description": "Full product description appears here when Fetch product details is on.","bulletPoints": ["Adjustable strap", "Logo detail", "Suede lining"],"composition": "Calf leather","madeIn": "Italy","productCode": "BRDXXX0XBCKO0AAA00","year": "2024","productSlug": "structured-shoulder-bag-sample-brand","url": "https://www.24s.com/en-gb/structured-shoulder-bag-sample-brand_BRDXXX0XBCK?color=black","locale": "en-gb","detailFetched": true}
Plan Requirement
The default connection setting already matches the proxy country to your selected market and works out of the box. 24S serves each market only to connections from that country, so if a run using a different connection setting returns no data, switch back to the default. The Pricing tab shows the current rates for this actor.
FAQ
How much does it cost?
You pay per product returned, plus a smaller fee for product-detail enrichment when Fetch product details is on. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.
Is it legal to scrape 24S?
This actor collects only publicly available catalog data. You are responsible for how you use it: follow 24S's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product names, prices and stock are generally facts, but brand names, photos and descriptions may be subject to third-party rights.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared products, and unchanged ones are not billed unless you turn on Emit unchanged.
What is the difference between Resume and Incremental mode?
Resume continues one specific interrupted run: paste that run's ID and this run skips everything it already collected. Incremental mode is for running the same search again and again on a schedule and getting only what changed each time. Using both together seeds the first incremental baseline from the resumed run so those products are not reported as new the next day; this works only before the search has any saved incremental state, otherwise the run stops and asks you to remove Resume or pick a new State key.
Why did my run fail instead of returning an empty dataset?
If 24S refuses or redirects every request for a category or pasted URL, the run stops with a clear message so "no products in this category" is never confused with "the page could not be read". Run it again in a few minutes. If only some categories or URLs could be read, you still get what was found, along with a note about what is missing.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
π Want more fashion data?
Pair this actor with these related scrapers from the same team:
| π Mango Scraper Scrape Mango (shop.mango.com) fashion products: current price plus strike-through Rebajas... | π Next.co.uk Scraper Scrape Next.co.uk: keyword search, category and product-listing walks, full product... |
| π₯¦ El Corte InglΓ©s Scraper Scrape El Corte InglΓ©s elcorteingles.es products across fashion, electronics, home... | π·οΈ ThredUp Scraper Scrape ThredUp resale listings by keyword, department, brand, size, condition, price or... |
| π YesStyle Scraper Scrape YesStyle products by keyword or URL. Extract prices, discounts, ratings, stock... | π Showpo Scraper Scrape Showpo women's fashion by keyword, collection or URL. Extract product prices... |
π Browse all abotapi scrapers
π¬ Support
- π 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.
- β Enjoying it? A quick review on the actor page helps other users find it.