John Lewis Scraper — UK Department Store Prices & Stock
Pricing
from $1.20 / 1,000 result scrapeds
John Lewis Scraper — UK Department Store Prices & Stock
Scrape product data from johnlewis.com, the UK's largest department-store group. Extract names, brands, prices, ratings, stock and images by category or search term. No login, no cookies.
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
19 hours ago
Last modified
Categories
Share
John Lewis Scraper
Pull product data from johnlewis.com, John Lewis & Partners -- the UK's largest department-store group, spanning fashion, home, electricals, furniture and beauty. This scraper reads the same JSON data John Lewis' own Next.js storefront embeds in every category and search page, so it returns clean, structured data -- brand, price, rating, stock, category and images -- without any per-product page fetching.
How to scrape John Lewis data
Give the actor either a search term (e.g. "headphones", "air fryer", "dress") or one or more John Lewis category page URLs (e.g. https://www.johnlewis.com/browse/electricals/televisions/view-all-tvs/_/N-6srf), and it paginates through the results until it hits maxResults or runs out of matching products. You can combine both in a single run.
Under the hood, every John Lewis category and search page is server-rendered by a Next.js (Pages Router) app that embeds the full product listing -- title, brand, price, rating, review count, stock status, images and the breadcrumb category path -- as JSON inside a single <script id="__NEXT_DATA__"> tag on the page. This actor requests that page directly and reads the embedded JSON instead of rendering the page in a browser, which makes it fast and avoids the fragility of parsing rendered HTML markup.
If you don't provide any input, it defaults to searching for "dress" as a demo.
Why this needs a residential proxy
johnlewis.com blocks Apify's automatic/datacenter proxy pool outright for both HTTP/1.1 and HTTP/2 requests -- the connection doesn't complete at all, on every attempt tested. A residential exit IP gets a clean response every time, with no retries needed. Because of this, the proxyConfiguration input is prefilled with the RESIDENTIAL group and GB country and should be left as-is; switching to the automatic pool will make every request fail.
Input
| Field | Type | Description |
|---|---|---|
searchQuery | string | Single search term, e.g. "headphones" |
searchQueries | array | Multiple search terms, combined with startUrls if both are given (max 20) |
startUrls | array | John Lewis category (/browse/...) page URLs to scrape (max 20) |
maxResults | integer | Cap on number of products returned across all inputs combined (default: 100, max: 2000) |
proxyConfiguration | object | Apify proxy settings. Prefilled to RESIDENTIAL / GB -- required, see above |
What you get back
| Field | Type | Example |
|---|---|---|
name | string | "Sony WH-CH720 Noise Cancelling Bluetooth Wireless Over-Ear Headphones" |
brand | string | "Sony" |
price | number | null | 67.00 |
originalPrice | number | null | null (only populated when a higher pre-markdown price is exposed) |
currency | string | "GBP" |
productId | string | "110194491" |
sku | string | "110163003" |
inStock | boolean | null | true (straight from John Lewis' own stock flag; null only if that flag is missing entirely) |
rating | number | null | 4.6 on a 0-5 scale |
reviewCount | integer | null | 2551 |
category | string | null | "Headphones" |
categories | array | null | Full breadcrumb path, e.g. ["Electricals", "Headphones"] |
imageUrl | string | null | Primary product image |
imageUrls | array | All product images found on the listing card |
url | string | Full product page URL |
source | string | Always "johnlewis.com" |
searchQuery | string | null | The search term used to find this product, when scraped via search |
categoryUrl | string | null | The category page used to find this product, when scraped via a category URL |
scrapedAt | string | ISO timestamp |
Sample output
{"name": "Sony WH-CH720 Noise Cancelling Bluetooth Wireless Over-Ear Headphones with Mic/Remote","brand": "Sony","price": 67.00,"originalPrice": null,"currency": "GBP","productId": "110194491","sku": "110163003","inStock": true,"rating": 4.6,"reviewCount": 2551,"category": "Headphones","categories": ["Electricals", "Headphones"],"imageUrl": "https://media.johnlewiscontent.com/i/JohnLewis/110163003?","imageUrls": ["https://media.johnlewiscontent.com/i/JohnLewis/110163003?","https://media.johnlewiscontent.com/i/JohnLewis/110163003alt2"],"url": "https://www.johnlewis.com/sony-wh-ch720-noise-cancelling-bluetooth-wireless-over-ear-headphones-with-mic-remote/p110194491","source": "johnlewis.com","searchQuery": "headphones","categoryUrl": null,"scrapedAt": "2026-09-14T19:42:31.145Z"}
Use cases
- Price monitoring -- track John Lewis' price changes over time on the products you sell against, department store-wide.
- Assortment research -- John Lewis carries a wide mix of own-brand (ANYDAY, John Lewis & Partners) and third-party brands across fashion, home, electricals and beauty; see which brands and categories it's carrying at what price points.
- Rating and review tracking --
ratingandreviewCountcome straight from the listing, no extra requests needed, useful for popularity/quality signals across a category. - Stock tracking --
inStockreflects John Lewis' own listing-level stock flag. - Market comparison -- as the UK's largest department-store group, John Lewis is a natural comparison point against Debenhams, Next, House of Fraser, Selfridges and Harrods.
Coverage
v1 covers the UK flagship storefront (www.johnlewis.com, GBP pricing).
Performance and cost
The scraper reads John Lewis' own server-rendered listing JSON directly -- no per-product page fetches, no browser rendering -- so throughput is one HTTP request per 72 products. A run of 100 products typically completes in under 15 seconds. This actor charges $0.005 per run (start fee) plus $0.002 per result -- a 100-product run costs about $0.205 in platform fees. Your run's usage cost only settles after the run reports SUCCEEDED -- checking cost mid-run will undercount it.
Limitations
originalPriceis only populated when John Lewis' own promotion-history data exposes a pre-markdown price higher than the current one -- many products simply don't have one.category/categoriesreflect the breadcrumb of the page a product was found on (the category URL, or the generic "search results" label for search), not a per-product category lookup.- v1 targets the UK flagship catalogue (GBP) only.
Related scrapers
If you're covering UK department-store and general retail more broadly, also check out:
- Debenhams Scraper -- relaunched UK department-store brand
- Selfridges Scraper -- UK luxury department store
- Harrods Scraper -- UK luxury department store
- Next Co UK Scraper -- UK multi-brand fashion retailer
- Boots Scraper -- UK health, beauty and lifestyle retail
Support
Found an issue or need a different locale covered? Open an issue on this actor's Apify Store page and we'll take a look.