THE ICONIC Scraper - Fashion Products, Sizes, Stock & Reviews
Pricing
from $1.50 / 1,000 product results
THE ICONIC Scraper - Fashion Products, Sizes, Stock & Reviews
Scrape THE ICONIC (theiconic.com.au) fashion products: name, brand, price, sale price, sizes with stock and price per size, images, colour variants, category path, materials, care and customer reviews. Search by keyword, category or brand, or paste product, search and sale links.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
THE ICONIC Scraper: Fashion Products, Prices, Sizes, Stock & Reviews
THE ICONIC Scraper turns THE ICONIC (theiconic.com.au) catalogue into a clean, structured dataset. Search by keyword, category or brand, or paste product, search, sale and new arrivals links. Every product comes back with its list, sale and final price, every size with its own stock and price, the full image gallery, colour variants, category path, materials, care, customer reviews and more. Export to JSON, CSV or Excel, or pull results straight into your app through the API.
Why This Scraper?
- Every size with its own stock and price. Each product carries parallel size lists (
sizes,size_code,size_stock_status,size_price,size_sku) and asize_detailsarray, so you can see exactly which sizes are in stock and what each one costs. - Two ways in. Search by keyword, category page or brand page with sort, price, gender, size, colour and on-sale filters, or paste links and read exactly those pages.
- Rich product detail. Full image gallery, colour variants with their own prices, description, composition and fabric, care label, category path, breadcrumbs, supplier, dispatch time and sustainability notes.
- Sale and price clarity.
price,special_price,final_priceandmarkdown_price(the reduced price when on sale) with anis_on_saleflag and a price range across sizes, in the store currency. - Customer reviews, ready to use. Turn on reviews to attach each product's reviews (stars, title, text, date, reviewer, recommendation, helpful votes, extra ratings and store replies) plus its rating average, review count and per-star counts. A dedicated Reviews view lists one row per review.
- Built for monitoring. Turn on Incremental mode to track the same search over time and get only new and changed products, with an optional price-and-availability-only scope and compact update rows.
- Light mode when you need it. Switch off full product details to return just what the list shows, for quick market snapshots.
Use Cases
- Price and markdown tracking: watch
final_price,special_priceandis_on_saleacross brands and categories to catch new reductions first. - Stock monitoring: follow per-size stock status to spot sell-outs and restocks for the sizes you care about.
- Brand and range research: build category-level datasets of assortment, colours, materials and pricing for a brand.
- Catalogue enrichment: pull images, descriptions, composition and care text for fashion product databases.
- Review and sentiment analysis: pull reviews with their star ratings for brands and categories to compare quality, fit and value.
- Deal alert tools: feed an app or bot with newly discounted products using Incremental mode.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
product_id / sku | "0000000" / "AB000AA00CD" |
name / brand | "Sample Boxy Tee" / "Sample Label" |
url | Link to the product page |
price / special_price / final_price / markdown_price | 60.0 / 45.0 / 45.0 / 45.0 |
currency / is_on_sale | "AUD" / true |
price_range | { "min_price": 60.0, "max_price": 60.0, "min_final_price": 45.0, "max_final_price": 45.0 } |
image / images / thumbnails | main image / full gallery / thumbnail list |
color_name / color_hex | "Black" / "#000000" |
variants_count / variants_details / variants_message | 3 / other colours with id, link, colour and prices / "More colours available" |
sizes / size_universal / size_code | ["AU 6", "AU 8"] / ["AU 6", "AU 8"] / ["6", "8"] |
size_stock_status / size_price / size_sku | ["in-stock", "out-of-stock"] / [45.0, 45.0] / one SKU per size |
size_details | one object per size with sku, size, prices, stock status, dispatch time and supplier |
dispatch_time / supplier | "1-2 Working Days" / "Sample Supplier Pty Ltd" |
gender / department / category / subcategory | "female" / "Clothing" / "T-Shirts & Singlets" / "Basic T-Shirts" |
category_path / breadcrumbs | "Clothing/Tops/Tees" / trail of name and link |
description | Product description as plain text |
composition_material / fabric_material / measurements | "Main: 100% Cotton" / "Cotton" / "Length: 57cm" (when the product lists them) |
care_label / size_fit / sizeguide_url | "Cold gentle machine wash." / fit note / size guide link |
availability / has_stock / returnable / shipment_type / brand_type / activated_at | "InStock" / true / true / "WH" / "Private Label" / "2026-01-01 00:00:00" |
sustainability | { "groups": [{ "name": "Organic Materials", "description": "..." }], "items": [] } |
reviews_rating / reviews_count / reviews_recommended_count / rating_distribution / reviews | 4.7 / 120 / 110 / [{ "stars": 5, "count": 90 }] / nested list of reviews, newest first (when reviews are on), see below |
wishlist_count_text / is_sponsored | "1.2k+" / false (from the list the product was found on) |
total_items_found / position / keyword / scraped_at | 1000 / 1 / "t-shirt" / "2026-01-01T00:00:00Z" |
changeType | "NEW" (also "UPDATED", "UNCHANGED", "REAPPEARED", "EXPIRED"; incremental mode only) |
Each entry of reviews carries review_id, review_title, review_text, review_rating (1 to 5), review_date, reviewer_name, review_recommended, review_helpful_votes, review_unhelpful_votes, review_secondary_ratings (for example Quality and Value), review_responses, review_locale and review_syndicated (true when the review was collected on another store of the brand). Reviews are read from the same product SKU shown in sku; a product with no reviews returns an empty list and a count of 0. With reviews off, or Max reviews set to 0, the list is empty and the rating fields are null.
composition_material, fabric_material, measurements, care_label and size_fit are filled only when the product lists them, and wishlist_count_text and is_sponsored only when the product was found through a list. In incremental mode every row also carries changedFields, firstSeenAt and lastSeenAt, and compact update rows add previousPrice, priceChanges and variantChanges.
How to Use
- Pick a mode:
search(keywords, categories, brands) orurl(paste links). - For search mode, add Search keywords, Category pages or Brand pages, and optionally a sort, price range, gender, size, colour or on-sale filter.
- Choose whether to Fetch full product details and Fetch customer reviews, set Max reviews per product, and set Max items to control run size and cost.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword with filters, with each product's 20 newest reviews:
{"mode": "search","searchTerms": ["t-shirt"],"gender": "female","minPrice": 10,"maxPrice": 50,"sortBy": "price_low","fetchReviews": true,"maxReviews": 20,"maxItems": 60}
Read a brand page, on sale only, list fields only:
{"mode": "search","brands": ["aere"],"onSaleOnly": true,"fetchDetails": false,"maxItems": 120}
Paste a product link and a category link:
{"mode": "url","urls": ["https://www.theiconic.com.au/womens-clothing-dresses/?sort=new","https://www.theiconic.com.au/leigh-boxy-tshirt-2498829.html"]}
Scheduled price watch: only products whose price or stock moved, as short rows:
{"mode": "search","searchTerms": ["running shoes"],"incrementalMode": true,"changeScope": "priceAndStock","compactUpdates": true,"maxItems": 0}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/theiconic-com-au-scraper").call(run_input={"mode": "search", "searchTerms": ["t-shirt"]})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["name"], product["final_price"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/theiconic-com-au-scraper').call({ mode: 'search', searchTerms: ['t-shirt'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Filters and pasted links
Sort, price, gender, size, colour and on-sale filters are applied by the site itself, so filtered-out products are never returned or charged. When you paste a listing link, the facets already in the link win; the filters in the input only fill in what the link leaves out. A pasted link that starts at a later page continues from that page. A pasted product link is always returned in full and is not affected by price filters.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one specific earlier run: paste its run or dataset id and this run skips products already collected there, returning only the new ones. An automatic checkpoint also protects a run against platform restarts. - Incremental mode (
incrementalMode) is for scheduling the same search or link set repeatedly. The first run returns everything asNEW. Later runs return onlyNEW,UPDATEDandREAPPEAREDproducts by default; unchanged products are not returned or billed unlessemitUnchangedis on.UPDATEDis decided by the product record: price, special price, final price, on-sale flag, availability, per-size stock and price, name, brand, colour, description, materials, category and the size list;changedFieldsnames what moved. Images, the wishlist count, the position in the list, the keyword, the scrape time and the review fields are never compared, so a new review alone does not make a productUPDATED. Reviews are read only for products that are returned (new or changed ones, and unchanged ones are returned without reviews ifemitUnchangedis on). - Price and availability only (
changeScope: priceAndStock) narrowsUPDATEDto price, special price, final price, markdown price, on-sale flag, price range, overall availability and each size's price and stock, ignoring descriptions, images and other details. Compact update rows (compactUpdates) shrinkUPDATEDandEXPIREDrows to ids, current price and stock pluspriceChangesandvariantChanges. - Expired products (
emitExpired) are produced only after a complete scan of a search, category or brand (not when Max items or Max pages capped it, a link started after page 1, or product links or the sitemap were used). A product leaving a list is not proof that it is unavailable; useavailabilityand the size stock fields for that.expireAfterMissedScanswaits for several complete scans in a row before reporting one. - Max items counts products scanned, so the scope stays the same from run to run. Use Ignore fields when detecting changes (
ignoreFieldsForChanges) to exclude more fields; ignored fields are still returned.
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 record, 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 → API & Integrations.
- 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 (keywords, category pages and brand pages) or url (paste product, search, category, brand, sale or sitemap links). |
searchTerms | array | prefill only: ["t-shirt"] | Words to search for, for example t-shirt. One search per entry. Search mode only. |
categories | array | (none) | Category pages by plain name, for example Women's dresses or Men's shoes; a site address such as womens-clothing-dresses or a pasted category link also works. Search mode only. |
brands | array | (none) | Brand pages by plain name, for example Nike or Country Road; a site address such as aere or a pasted brand link also works. Search mode only. |
sortBy | string | popularity | popularity, new, price_low, price_high, brand_asc or brand_desc. Also fills the sort of a pasted listing link that has none. |
minPrice | integer | (none) | Only keep products at or above this whole amount. Applied to searches and listings, not to a pasted product link. |
maxPrice | integer | (none) | Only keep products at or below this whole amount. Applied to searches and listings, not to a pasted product link. |
gender | string | "" (all) | Optional: female or male. Empty keeps all. |
size | string | (none) | Optional size, for example M or 10 (read as AU M or AU 10), or exactly as the site writes it, such as AU 10 or One Size. |
colour | string | (none) | Optional colour as the site writes it, for example black. |
onSaleOnly | boolean | false | Only keep products that are currently reduced. |
urls | array | default: one example link per supported shape (search, category, brand, product, sale, new arrivals, sitemap) | Links to read (URL mode). Product, search, category, brand, sale and new arrivals pages, and the product sitemap index. Facets carried in the link (price, gender, size, sort, sale) are applied and a link that starts at a later page continues from there. Links not recognised are skipped with a log warning. |
fetchDetails | boolean | true | Open each product page to add every size with stock and price, all images, colour variants, description, materials, care and category path. Off returns only what the list shows. A pasted product link always returns full detail. |
fetchReviews | boolean | true | Attach each returned product's customer reviews and rating summary to its row. Works with or without full product details. Off, or Max reviews 0, skips reviews entirely. |
maxReviews | integer | 20 | Reviews attached per product, newest first (0 to 1000). Up to 100 reviews are read per request. 0 skips reviews: no review reads and no review charge. |
maxPages | integer | (none) | Optional limit on result pages read per list (60 products per page). Empty or 0 means no page limit. It does not cap the run: it defers to Max items (default 20). |
maxItems | integer | 20 | Total products to scan across the run. 0 is unlimited. Shared fairly between several searches or links. In incremental mode this counts products scanned. |
proxy | object | Apify Proxy, Residential | Connection used to load pages. Keep the default for the most reliable results, or supply your own proxy URLs. |
resumeFromRunId | string | (none) | Optional run id or dataset id. Products already in that dataset are skipped, so this run returns only new products. |
incrementalMode | boolean | false | Recurring monitoring of the same setup. Returns only NEW, UPDATED and REAPPEARED products on repeat runs. See "Resume and recurring updates". |
stateKey | string | (none) | Optional, incremental mode only. Names or shares a monitoring campaign. Left empty, a key is derived from the search, links and filters. |
baselineDatasetId | string | (none) | Optional, incremental mode only. An earlier full dataset of this Actor used as the starting point so the first incremental run returns only products that changed since then. |
emitUnchanged | boolean | false | Incremental mode only. Also return (and bill) unchanged products, marked UNCHANGED. |
emitExpired | boolean | false | Incremental mode only. Also return (and bill) products no longer found, marked EXPIRED, only after a complete scan. |
changeScope | string | all | Incremental mode only. all or priceAndStock (only price, sale flag, availability and per-size price and stock decide UPDATED). |
compactUpdates | boolean | false | Incremental mode only. UPDATED and EXPIRED rows become short, with priceChanges and variantChanges. NEW rows stay complete. |
expireAfterMissedScans | integer | 1 | Incremental mode only, with Emit expired. A product expires only after missing from this many complete scans in a row. |
ignoreFieldsForChanges | array | (none) | Incremental mode only. Extra field names that must not make a product UPDATED; dotted names such as size_details.dispatch_time ignore a field inside each size. Ignored fields are still returned. |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which item 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 record. Lists are shortened for brevity.
{"product_id": "0000000","sku": "AB000AA00CD","name": "Sample Boxy Tee","brand": "Sample Label","url": "https://www.theiconic.com.au/sample-boxy-tee-0000000.html","price": 60.0,"special_price": 45.0,"final_price": 45.0,"markdown_price": 45.0,"currency": "AUD","is_on_sale": true,"price_range": { "min_price": 60.0, "max_price": 60.0, "min_final_price": 45.0, "max_final_price": 45.0 },"image": "https://img1.theiconic.com.au/sample-image-1.jpg","images": ["https://img1.theiconic.com.au/sample-image-1.jpg", "https://img1.theiconic.com.au/sample-image-2.jpg"],"color_name": "Black","color_hex": "#000000","variants_count": 2,"variants_message": "More colours available","sizes": ["AU 6", "AU 8"],"size_code": ["6", "8"],"size_stock_status": ["in-stock", "out-of-stock"],"size_price": [45.0, 45.0],"size_sku": ["AB000AA00CD-0000001", "AB000AA00CD-0000002"],"dispatch_time": "1-2 Working Days","supplier": "Sample Supplier Pty Ltd","gender": "female","department": "Clothing","category": "T-Shirts & Singlets","subcategory": "Basic T-Shirts","category_path": "Clothing/Tops/Tees","breadcrumbs": [{ "name": "Women", "url": "https://www.theiconic.com.au/women/" }],"description": "A relaxed boxy tee in soft organic cotton.","composition_material": "Main: 100% Cotton","fabric_material": "Cotton","measurements": "Length: 57cm","care_label": "Cold gentle machine wash.","availability": "LimitedAvailability","has_stock": true,"returnable": true,"shipment_type": "WH","brand_type": "Private Label","activated_at": "2026-01-01 00:00:00","reviews_rating": 4.7,"reviews_count": 120,"reviews_recommended_count": 110,"rating_distribution": [{ "stars": 5, "count": 90 }, { "stars": 4, "count": 20 }],"reviews": [{"review_id": "0000001","review_title": "Great fit","review_text": "Soft fabric and true to size.","review_rating": 5,"review_date": "2026-01-01T00:00:00.000+00:00","reviewer_name": "Sample","review_recommended": true,"review_helpful_votes": 2,"review_unhelpful_votes": 0,"review_secondary_ratings": { "Quality": 5, "Value": 5 },"review_responses": [],"review_locale": "en_AU","review_syndicated": false}],"total_items_found": 1000,"position": 1,"keyword": "t-shirt","scraped_at": "2026-01-01T00:00:00Z"}
Plan Requirement
Pages are loaded through the Connection setting. This site refuses datacenter connections, so the default is Apify Residential Proxy, which is the recommended choice for the most reliable results; keep it, or supply your own proxy URLs. Apify free plans do not include residential proxies: on a free plan the log shows a boxed notice and the run continues on a backup datacenter connection, where some or most pages may still fail. Residential traffic is billed to your Apify plan, and each run has a built-in traffic limit of roughly 5,500 products with details; if it is reached the run stops early, says so in its status message, and keeps what it collected. When a lighter connection is able to serve pages, the actor uses it automatically. A run that could not load a single page ends as FAILED with a clear status message, never as a quiet empty success.
FAQ
How much does it cost?
You pay a small per-run start fee, plus per product returned, plus a detail charge for every product whose own product page was read in addition to a list (a pasted product link is one page and carries no extra detail charge), plus a review charge for every returned product that has at least one review attached. Fetch full product details defaults to on; turn it off for list fields only with no detail charge. Fetch customer reviews defaults to on; turn it off, or set Max reviews per product to 0, for no review reads and no review charge. Products without reviews are never charged the review event. Rows that incremental mode suppresses (unchanged products) and compact update rows are never charged the detail event. The Pricing tab shows the current rates, and Max items caps the size of any run.
Is it legal to scrape THE ICONIC?
This actor collects only publicly available product data. You are responsible for how you use it: follow the site's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product descriptions and photos 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 with the same search or links and turn on Incremental mode. Each run then returns only new and updated products by default, and unchanged ones are not billed.
What is the difference between Resume and Incremental mode?
Resume continues one specific earlier run so it is not re-collected or re-charged. Incremental mode is for running the same search again and again on a schedule and wanting only what changed; it remembers its own state, so you never paste a run id.
Why did my run fail instead of finishing empty?
A run that could not load a single page ends as FAILED so a connection problem is never confused with a genuine empty result. The status message says which case it is: the proxy connection was refused for this account (check your plan, or the credentials of your own proxy URLs), no results because the backup connection could not load the pages, a non-residential Apify proxy group was chosen that this site refuses (switch to residential), or a general connection problem (try again later). A search that loads fine but matches nothing completes as a normal successful run.
Why do sponsored products appear in my results?
Some lists show sponsored placements. They are real products, so they are returned and marked with is_sponsored: true when the product was found through a list.
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.
URL mode: supported links and default
| Link shape | Example |
|---|---|
| Search | https://www.theiconic.com.au/catalog/?q=t-shirt |
| Search with filters | https://www.theiconic.com.au/catalog/?q=t-shirt&price=10-50&gender=female&size=M |
| Category | https://www.theiconic.com.au/womens-clothing-dresses/ |
| Category, later page and sort | https://www.theiconic.com.au/womens-clothing-dresses/?page=2&sort=new |
| Category, on sale | https://www.theiconic.com.au/womens-clothing-dresses/?special_price=1&sort=popularity |
| Brand page | https://www.theiconic.com.au/aere |
| Brand page, on sale | https://www.theiconic.com.au/aere/?page=1&sort=popularity&special_price=1 |
| Product page | https://www.theiconic.com.au/leigh-boxy-tshirt-2498829.html |
| Product page with tracking parameters | https://www.theiconic.com.au/leigh-boxy-tshirt-2498829.html?utm_source=x&utm_medium=y |
| Sale page | https://www.theiconic.com.au/sale/ |
| New arrivals | https://www.theiconic.com.au/new-arrivals/ |
| New Zealand product page | https://www.theiconic.co.nz/leigh-boxy-tshirt-2498829.html |
| Product sitemap index | https://sitemap.theiconic.com.au/sitemap_index_product.xml |
Any other link is skipped with a warning in the log. The Links field has a default list with one example of each shape, so a URL-mode run started with the field untouched reads those examples; clear it or paste your own links to read only those.
Output views
The dataset has four views in the Console: Products (every field), Sizes and stock (per-size lists and details), Reviews (one row per customer review, next to the product columns) and Changes (incremental mode changeType, changedFields and compact update rows).
Billing
Each run pays one start event. Each product pushed to the dataset is one dataset-item event. A product whose own page was read in addition to a list also pays the detail-enrichment event, once per product, charged right after it is pushed. Suppressed incremental rows, compact update rows and failed fetches are never charged the detail event. A product that has at least one review attached also pays the review-enrichment event once, charged right after it is pushed, whether it carries 1 review or many (Max reviews per product bounds how many); products with no reviews, unchanged rows, compact update rows and runs with reviews off are never charged it. Current rates are on the Pricing tab.
🔗 Want more fashion data?
Pair this actor with these related scrapers from the same team:
| 👗 Next.co.uk Scraper Scrape Next.co.uk: keyword search, category and product-listing walks, full product... | 👗 24S Scraper Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price... |
| 👗 Mango Scraper Scrape Mango (shop.mango.com) fashion products: current price plus strike-through Rebajas... | 👗 ZOZOTOWN Scrape ZOZOTOWN (zozo.jp), Japan's largest fashion marketplace: name, brand, JPY price... |
| 👗 YesStyle Scraper Scrape YesStyle products by keyword or URL. Extract prices, discounts, ratings, stock... | 👗 Gap US Scraper Scrape Gap US (gap.com) clothing and fashion products by category. Extract product names... |
💬 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.