Harrods Scraper — Luxury Product Prices, Stock & Images
Pricing
from $1.20 / 1,000 result scrapeds
Harrods Scraper — Luxury Product Prices, Stock & Images
Scrape harrods.com, the UK's flagship luxury department store: product names, brands, prices, per-size stock, images, descriptions and breadcrumb categories from category browsing or site search, unblocked with Bright Data Web Unlocker.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Harrods Scraper
Pull product data from harrods.com, the UK's flagship luxury department store. This scraper reads Harrods' own server-rendered category pages and product pages, so it returns clean, structured data — name, brand, price, per-size stock, images, description — for real catalogue listings, not a scraped screenshot of a page.
How to scrape Harrods data
Point the actor at a Harrods category URL (e.g. https://www.harrods.com/en-gb/women-clothing or https://www.harrods.com/en-gb/designers/gucci) and it pages through that category's own listing, 60 products per page, until it hits maxResults. Or give it a free-text searchQuery (e.g. "gucci bag") to run against Harrods' own site search instead.
Harrods sits behind Akamai Bot Manager: a plain request to any harrods.com path — including /robots.txt — comes back as a direct 403 Access Denied from Akamai's edge. This actor routes every request through Bright Data's Web Unlocker, which clears the block, so you don't need your own proxy or browser-automation setup.
Harrods runs on the SCAYLE commerce platform (Nuxt 3 frontend) with Algolia for on-site search. Category pages are fully server-rendered and embed a complete application/ld+json ItemList block — one entry per listed product, with name, SKU, URL, image, brand, price, currency and stock status already structured — so category-mode results come straight out of the page HTML with no extra requests. Harrods' /en-gb/search page, by contrast, is client-rendered (Algolia has no public key exposed in the bundle), so search mode collects the product links Harrods still renders into that page and fetches each product's own page to get its data — one extra Bright Data request per result, see the cost note below.
Every product page also carries a small embedded data blob (Nuxt's SSR payload) that includes SCAYLE's real per-size stock ladder — the actual variant IDs and stock quantities feeding the "Add to Bag" size picker, not just a size list. Turn on fetchProductDetails (or use search mode, which always fetches details) to get that per-size breakdown, plus the full description, image gallery, colour and breadcrumb category.
If you don't provide any input, it defaults to scraping Harrods' Women's Clothing category as a demo.
Input
| Field | Type | Description |
|---|---|---|
categoryUrl | string | A Harrods category/browse page URL. Paged automatically. Ignored when searchQuery is set (default: https://www.harrods.com/en-gb/women-clothing) |
searchQuery | string | A free-text search term run against Harrods' own site search. When set, replaces categoryUrl entirely and forces per-product detail fetching |
maxResults | integer | Cap on number of products returned (default: 20, max: 500) |
fetchProductDetails | boolean | OFF by default. ON adds description, full image gallery, colour, breadcrumb category and per-size stock — at the cost of one extra Bright Data request per product. Always on in search mode. |
brightDataApiKey | string | Your own Bright Data API key, if you want to use your own Web Unlocker zone instead of the actor's built-in one |
proxyConfiguration | object | Not used — this actor reaches harrods.com exclusively through Bright Data, which handles unblocking on its own. Kept for input-shape compatibility. |
What you get back
| Field | Type | Example |
|---|---|---|
name | string | "Agnona Cashmere Lipstick Sweater" |
brand | string | "Agnona" — falls back to "Harrods" for own-label items |
price | number | null | 810 — current selling price in GBP |
currency | string | "GBP" — harrods.com is a single UK storefront |
sku | string | null | "000000000000199415" — Harrods' internal SKU |
productId | string | null | Same value as sku |
inStock | boolean | null | true — real 3-state signal from Harrods' own availability field, never coerced to false |
url | string | Full product page URL |
imageUrl | string | null | Primary product image |
imageUrls | array | All product images (with fetchProductDetails on) |
colour | string | null | "BURGUNDY" — only with fetchProductDetails on |
description | string | null | Editorial product copy — only with fetchProductDetails on |
category | string | null | Deepest breadcrumb category — only with fetchProductDetails on |
categories | array | Full breadcrumb path — only with fetchProductDetails on |
sizes | array | Per-size stock ladder (size, sku, inStock, stockQuantity) — only with fetchProductDetails on, and only for products with size variants |
scrapedAt | string | ISO timestamp |
Sample output
{"name": "Agnona Cashmere Lipstick Sweater","brand": "Agnona","price": 810,"currency": "GBP","sku": "000000000000199415","productId": "000000000000199415","inStock": true,"url": "https://www.harrods.com/en-gb/p/agnona-cashmere-lipstick-sweater-000000000000199415","imageUrl": "https://hrd-live.cdn.scayle.cloud/images/70af0731b110863c4a4cd665de0d3579.jpg?quality=75","imageUrls": ["https://hrd-live.cdn.scayle.cloud/images/70af0731b110863c4a4cd665de0d3579.jpg?quality=75","https://hrd-live.cdn.scayle.cloud/images/98c28c1ba7eeb341c4fd9df3d3e1f79d.jpg?quality=75"],"colour": "L77PURPLE - BURGUNDY","description": "Elevate your wardrobe with Agnona's Lipstick sweater, where exquisite softness meets function...","category": "Womens Clothing","categories": ["Women New In", "Womens Clothing"],"sizes": [{ "size": "XS", "sku": "000000000199415001", "inStock": false, "stockQuantity": 0 },{ "size": "S", "sku": "000000000199415002", "inStock": true, "stockQuantity": 2 }],"scrapedAt": "2026-09-08T09:16:13.016Z"}
Use cases
- Price monitoring — track Harrods' own pricing across designer brands and categories over time.
- Assortment research — see which designers and products a category is actually carrying, and in what depth of size runs.
- Stock intelligence —
sizesexposes the real per-size stock quantity behind the "Add to Bag" picker, not just a size list. - Market comparison — Harrods is a standard UK luxury reference point alongside NET-A-PORTER, Mytheresa and Farfetch.
Coverage
harrods.com is a single UK storefront, priced in GBP throughout. Harrods ships internationally, but there is no separate country-specific storefront the way some luxury e-tailers run — this actor covers the one live site.
Performance and cost
Category mode's listing data (name, brand, price, SKU, image, stock) comes from a single Bright Data request per 60 products — a small fraction of a cent per result. Turning on fetchProductDetails, or using search mode (which always fetches details), adds one Bright Data request per product for the richer fields (description, full gallery, colour, breadcrumb, sizes) — budget for that when sizing a run. Your run's usage cost only settles after the run reports SUCCEEDED — checking cost mid-run will undercount it.
Limitations
- Search mode depends on Harrods still rendering product links into
/en-gb/search's initial HTML even though the result data itself is client-side (Algolia); if Harrods moves to a fully client-only search page, search mode would need a different data source. sizesis only populated when the product's own page carries a discoverable per-sizevariantsstructure in its embedded data — a handful of product types (e.g. some beauty/home items) may only ever offer a single "Default" variant.- Ratings and review counts aren't exposed on either the listing or detail pages, so they're not included in the output.
- If Harrods restructures its category/product JSON-LD or its Nuxt payload shape, the actor will need updating.
Related scrapers
If you're covering European luxury fashion more broadly, also check out:
- NET-A-PORTER Scraper — luxury fashion, per-size stock, 20+ markets
- Mytheresa Scraper — luxury fashion e-tail, full per-size stock
- Farfetch Scraper — luxury fashion marketplace
Support
Found an issue or need a category that isn't resolving correctly? Open an issue on this actor's Apify Store page and we'll take a look.
Why Bright Data instead of a standard proxy
Harrods' Akamai Bot Manager layer returns a direct 403 Access Denied on every path from a plain datacenter connection, including /robots.txt itself — confirmed live. Bright Data's Web Unlocker handles that fingerprinting and challenge-solving so this actor can focus on parsing real product data instead of maintaining an anti-bot bypass.