Mango Scraper - Prices, Rebajas, Variants & Composition
Pricing
from $1.00 / 1,000 product results
Mango Scraper - Prices, Rebajas, Variants & Composition
Scrape Mango (shop.mango.com) fashion products: current price plus strike-through Rebajas (sale) discount, full colour/size variant matrix, section and category, and (with full detail) composition, care, materials, origin, fit and per-size availability. Search by keyword or Rebajas, or paste links.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
13
Total users
5
Monthly active users
32 minutes ago
Last modified
Categories
Share
Mango Scraper: Prices, Rebajas Discounts, Variant Matrix & Composition
Mango Scraper turns shop.mango.com into structured product data. Search by keyword, browse Mango's own Rebajas (sale) feed, or paste product and listing links directly, and the actor continues pagination automatically. Every record carries the current price, the strike-through original price with a discount amount and Mango's own discount percentage when a product is marked down, and the full colour/size variant matrix. Turn on full detail for composition, care instructions, materials, country of origin, fit measurements and per-size availability. Export the results as JSON, CSV or Excel, or read them straight through the API.
Why This Scraper?
- Was-price and discount, straight from Mango's own pricing service. When a product is marked down, both the current and original prices are captured, plus the discount percentage and Mango's own promotion label.
- Rebajas, first class. A
specialsOnlytoggle browses Mango's own, real, queryable Rebajas (sale) catalog for the chosen section, with genuine server-side pagination, not a guessed category filter. Mango Outlet is a separate site and out of scope here. - Full colour/size matrix. Every colourway and size Mango sells for a product, each colour with its own price, discount and image gallery. Turn on full detail and each size also carries real-time availability (in stock, last units, or delayed).
- Composition, care, materials, origin and fit. With full detail on, every product also returns its fabric composition, wash-care instructions, a material breakdown by percentage, country of origin, and garment fit measurements.
- Two ways in. Keyword search or Rebajas browse, or paste any product or category link and the actor continues pagination forward automatically from wherever the link points.
- Built for recurring monitoring. Incremental mode returns only new and changed products on repeated runs against the same search, and a rejected scan fails loudly instead of quietly returning an empty dataset.
- Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
Use Cases
- Price monitoring and repricing: track current price, was-price and discount percentage across a catalog or a competitor's Rebajas feed.
- Sale and markdown tracking: watch Mango's own Rebajas feed for new markdowns, or monitor a specific search for pieces that go on sale.
- Merchandising and content teams: pull product names, categories, colours and imagery to power a storefront, lookbook, or newsletter.
- Size and stock monitoring: use full detail mode to track per-size availability (in stock, last units, delayed) for a product line.
- Catalog and assortment research: build a dataset of category, composition, materials and origin across a section for market or sustainability research.
Data You Get
Sample shape: values are illustrative placeholders, not from a live product.
| Field | Example |
|---|---|
productId | "37021368" |
name | "Sample Linen Trousers" |
brand | "Mango" (single-brand shop; always this value) |
section | "Women" (also "Men") |
category / families | "Trousers" / [{"id": "26", "label": "Trousers", "labelEn": "Trousers"}] |
collection / model | "OI2026" / "SACO" |
url | "https://shop.mango.com/es/es/p/mujer/pantalones/sample-linen-trousers/37021368" |
price / currency | 19.99 / "EUR" |
originalPrice / discountAmount / discountPercent | 29.99 / 10.00 / 33.3 (only when on sale) |
isOnSpecial / promoLabel | true / "PROMOCION HASTA REBAJAS" |
defaultColorId / image | "99" / a media.mango.com image URL |
colors[] | one entry per colourway: id, label, rgb, its own price/originalPrice/discountPercent, images[], sizes[] |
colors[].sizes[] | id, label, plusSize; plus available, isDelayed, lastUnits when full detail is on |
compositions | ["Composition: 55% linen, 45% viscose"] |
care | ["Machine wash max 30°C, short spin"] |
materials | [{"name": "LINEN", "percent": 55}, {"name": "VISCOSE FSC", "percent": 45}] |
originCountry | "China" |
measures | ["Inseam 76 cm", "Side length 104 cm"] |
lastUnits / isSellable / isUniqueSize | false / true / false (product-level, with full detail) |
reviews | {"averageRating": null, "totalReviewCount": 0, "items": []} |
changeType / changedFields / firstSeenAt / lastSeenAt | Incremental mode only, e.g. "UPDATED" / ["price"] / timestamps |
Mango's product pages carry no customer reviews, so reviews is always returned as this empty structure rather than omitted or guessed, and its own search and listing routes expose no server-side sort parameter, so none is offered here either.
How to Use
- Pick a mode:
search(keyword and/or Rebajas browse) orurl(paste product or listing links). - Fill in the fields for that mode:
market,sectionandsearchTermand/orspecialsOnlyfor search, orurlsfor url mode.minPrice/maxPriceapply in either mode. - Turn on Fetch full product detail if you need composition, care, materials, origin, fit measurements and per-size availability.
- Set Max products total and Max pages per search to control run size and cost, then click Start.
Keyword search, default market and section (Women, Spain):
{"mode": "search","searchTerm": "vestido","maxItems": 20}
Browse the UK men's Rebajas feed:
{"mode": "search","market": "gb/en","section": "MEN","specialsOnly": true,"maxItems": 50,"maxPages": 5}
Full product detail (composition, care, per-size availability) for a pasted product link:
{"mode": "url","urls": ["https://shop.mango.com/es/es/p/mujer/sample-linen-trousers/37021368"],"fetchDetails": true}
Daily monitoring of a search, only what changed:
{"mode": "search","specialsOnly": true,"section": "WOMEN","incrementalMode": true}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/mango-com-scraper").call(run_input={"mode": "search", "searchTerm": "vestido", "maxItems": 20})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["name"], product["price"], product["currency"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/mango-com-scraper').call({ mode: 'search', searchTerm: 'vestido', maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Resume and recurring updates
Two different things: Resume continues ONE specific interrupted run. Incremental mode is for running this same search again and again and getting only the changes.
- Resume (
resumeFromRunId) continues one interrupted run: paste its run or dataset id and the actor skips every product it already collected there, so you don't pay twice. - Incremental mode (
incrementalMode) is for scheduled runs over the same mode/section/search/URL/detail scope. Each product is classifiedNEW,UPDATED(withchangedFields), or suppressed asUNCHANGED(not billed unlessemitUnchangedis on). Turning onemitExpiredadditionally marks a productEXPIREDonce a run has fully scanned the tracked scope and no longer finds it; amaxItems/maxPagescap, Resume, or a rejected page all skip this step and keep the previous state as is.REAPPEAREDis not a default outcome: it only appears for a product that was previously markedEXPIREDand is then found again on a later run, so it requiresemitExpiredto have been on for an earlier, complete scan.stateKeynames or shares the stored state; leave it empty and the actor derives one automatically from the search/URL/detail settings, so different searches never mix state.
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 haven't authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where item 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 (keyword and/or Rebajas) or url (paste product or listing links). |
market | string | es/es | Mango's own market path prefix, e.g. es/es, gb/en (search mode only; a pasted URL carries its own market). Search mode's own nav path is verified for es, en, fr, de, it and pt language markets; other languages may fail loudly rather than silently return nothing. |
section | string | WOMEN | WOMEN or MEN (search mode only). Other Mango sections can still be reached by pasting URLs in url mode. |
searchTerm | string | none (prefill: vestido) | Keyword for search mode. Mango's own search results page never paginates, so a keyword search always returns a single page. |
specialsOnly | boolean | false | Browse Mango's Rebajas (sale) catalog for the chosen section instead of a keyword search (search mode only); a keyword is ignored when this is on. |
urls | array | none (prefill: one sample Rebajas listing URL) | Product or category/Rebajas listing links to scrape (url mode only). Pagination continues forward automatically from any ?page= already in the URL. |
minPrice | number | none | Only return products priced at or above this amount, in both search mode and url mode. |
maxPrice | number | none | Only return products priced at or below this amount, in both search mode and url mode. |
fetchDetails | boolean | false | Adds composition, care, materials, origin, fit measures, and per-size availability. A pasted product URL in url mode always fetches this detail regardless of this toggle. |
maxPages | integer | 0 (unlimited) | Stop after this many result pages per Rebajas/URL entry; keyword search is always a single page. |
maxItems | integer | 20 | Hard cap on total products returned across every search/URL entry; 0 = unlimited. |
resumeFromRunId | string | none | Continue one interrupted run; products it already collected are skipped, so this run returns only new products. |
incrementalMode | boolean | false | Turn on for recurring monitoring of the same search/section/URL scope; classifies each product as NEW, UPDATED, UNCHANGED, EXPIRED or REAPPEARED. |
stateKey | string | none (auto-derived) | Name a monitoring campaign to keep its state stable, or deliberately share state across differently-configured runs. |
emitUnchanged | boolean | false | Also return, and bill, products that have not changed since the last run. |
emitExpired | boolean | false | Also return, and bill, products no longer found, after a complete scan of the tracked scope. |
proxy | object | Apify Proxy | Connection settings. This actor always requests a residential connection matched to the requested market's country underneath, regardless of the Apify Proxy group selected; supplying your own proxy URLs replaces it. |
mcpConnectors | array | none | Optional MCP connectors to export a summary of results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | string | none | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items exported to each connector per run. Does not affect the dataset. |
Output Example
Sample shape: values are illustrative placeholders, not from a live product.
{"productId": "37021368","name": "Sample Linen Trousers","brand": "Mango","section": "Women","collection": "OI2026","model": "SACO","category": "Trousers","families": [{ "id": "26", "label": "Trousers", "labelEn": "Trousers" }],"url": "https://shop.mango.com/es/es/p/mujer/pantalones/sample-linen-trousers/37021368","price": 19.99,"currency": "EUR","originalPrice": 29.99,"discountAmount": 10.0,"discountPercent": 33.3,"isOnSpecial": true,"promoLabel": "PROMOCION HASTA REBAJAS","image": "https://media.mango.com/is/image/punto/37021368-99-002","defaultColorId": "99","colors": [{"id": "99","label": "Black","rgb": "36,36,36","sizes": [{ "id": "36", "label": "36", "plusSize": false, "available": true, "isDelayed": false, "lastUnits": false }],"images": [{ "code": "002", "url": "https://media.mango.com/is/image/punto/37021368-99-002", "alt": "Sample Linen Trousers" }],"price": 19.99,"currency": "EUR","originalPrice": 29.99,"discountAmount": 10.0,"discountPercent": 33.3,"isOnSpecial": true,"promoLabel": "PROMOCION HASTA REBAJAS"}],"compositions": ["Composition: 55% linen, 45% viscose"],"care": ["Machine wash max 30°C, short spin", "Do not bleach"],"materials": [{ "name": "LINEN", "percent": 55 }, { "name": "VISCOSE FSC", "percent": 45 }],"originCountry": "China","measures": ["Inseam 76 cm", "Side length 104 cm"],"lastUnits": false,"isSellable": true,"isUniqueSize": false,"reviews": { "averageRating": null, "totalReviewCount": 0, "items": [] }}
Plan Requirement
This actor always connects through a residential connection matched to your requested market's country, regardless of what you select under Connection; the proxy input only lets you supply your own custom proxy URLs instead. Residential connections are billed at a higher rate than datacenter, so factor this into large or frequent runs. See the Pricing tab for this actor's current per-result and per-enrichment charges.
FAQ
How much does it cost?
You pay per product returned, plus a per-item surcharge when full detail is fetched: with Fetch full product detail on, and always for a pasted product URL, which fetches its detail page regardless of that setting. The surcharge applies only to records that are actually returned and successfully enriched, never to a failed detail fetch or a suppressed UNCHANGED record. The Pricing tab shows the current rates. Use Max products total to cap the cost of any run.
Is it legal to scrape Mango?
This actor collects only publicly available product data. You are responsible for how you use it: follow Mango's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product names and prices are generally facts, but photos and brand names 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 later run against the same search/section/URL set returns only NEW and UPDATED products by default; unchanged ones are suppressed and not billed unless you turn on Emit unchanged products.
Does a returning product ever come back marked REAPPEARED?
Only if it was previously marked EXPIRED. That itself requires Emit expired products to have been on for an earlier run that scanned the tracked scope completely, with no Max products or Max pages cap, no Resume, and no rejected page. Without that history, a product that disappears and later comes back is classified UPDATED if anything about it changed, or suppressed UNCHANGED if it did not; its state record is never deleted, so it is never NEW again.
What's the difference between Resume and Incremental mode?
Resume (resumeFromRunId) continues ONE specific interrupted run: paste its run or dataset id and already-collected products are skipped. Incremental mode is for running the same search again and again, daily or weekly, and getting only what changed; it remembers its own state between runs, keyed by the search/section/URL/detail settings or by your own State key.
Why did my run fail instead of returning an empty dataset?
If the run returns nothing and at least one page or product request (a search page, a Rebajas catalog page, a pasted listing page, or a product detail fetch) was rejected by the site (for example, the Rebajas catalog can go offline outside its own sale season), the run stops with a clear error message instead of finishing successfully with 0 items, so "nothing matched" is never confused with "nothing could be read". A price filter that legitimately narrows a successfully loaded catalog to zero rows, with no rejected requests, still finishes as a normal, empty run.
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 a summary of results into Notion, Linear or Airtable.
🔗 Want more fashion data?
Pair this actor with these related scrapers from the same team:
| 👗 Zara Scraper Scrape Zara (zara.com) products: current price plus strike-through Rebajas (sale)... | 👗 24S Scraper Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price... |
| 👗 El Corte Inglés Scraper Scrape El Corte Inglés elcorteingles.es products across fashion, electronics, home... | 👗 ZOZOTOWN Scrape ZOZOTOWN (zozo.jp), Japan's largest fashion marketplace: name, brand, JPY price... |
| 👗 UNIQLO Scraper Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre... | 👗 ASOS Scraper Scrape ASOS by keyword, category or URL. Every row carries the selling price and the... |
💬 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.