Johnlewis Product Scraper is a focused data extraction tool that collects structured product information from John Lewis product pages. It helps teams and developers turn product listings into clean, usable data for analysis, monitoring, and downstream systems.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for johnlewis-actor you've just found your team — Let’s Chat. 👆👆
This project extracts detailed product-level data from John Lewis product pages using a simple URL-based input. It solves the problem of manually collecting product details by automating structured data retrieval. It is designed for developers, analysts, and businesses that need consistent retail product data.
- Accepts direct product page URLs as input
- Extracts standardized product attributes from each page
- Returns clean, structured JSON output
- Designed for repeatable and scalable data runs
| Feature | Description |
|---|---|
| URL-Based Input | Collects product data from a list of provided product page URLs. |
| Structured Output | Returns normalized JSON records for each product. |
| Core Product Fields | Extracts name, price, image, description, and SKU. |
| Batch Processing | Processes multiple product pages in a single run. |
| Data Consistency | Ensures predictable field structure across products. |
| Field Name | Field Description |
|---|---|
| product_name | The full name or title of the product. |
| product_price | The listed price of the product. |
| product_image | Direct URL to the main product image. |
| product_url | The original URL of the product page. |
| description | Detailed textual description of the product. |
| sku | Unique stock keeping unit identifier. |
[
{
"product_name": "Oura Ring 4 Health & Fitness Tracker Smart Ring, Black",
"product_price": "349.00",
"product_image": "https://media.johnlewiscontent.com/i/JohnLewis/112562905",
"product_url": "https://www.johnlewis.com/oura-ring-4-health-fitness-tracker-smart-ring-black/p112664179",
"description": "Introducing Oura Ring 4: the latest evolution of the revolutionary smart ring...",
"sku": "112562899"
},
{
"product_name": "Oura Ring 4 Health & Fitness Tracker Smart Ring, Silver",
"product_price": "349.00",
"product_image": "https://media.johnlewiscontent.com/i/JohnLewis/112562967",
"product_url": "https://www.johnlewis.com/oura-ring-4-health-fitness-tracker-smart-ring-silver/p112664239",
"description": "Introducing Oura Ring 4: the latest evolution of the revolutionary smart ring...",
"sku": "112562960"
}
]
Johnlewis Actor/
├── src/
│ ├── main.py
│ ├── scraper/
│ │ ├── product_parser.py
│ │ └── validators.py
│ ├── utils/
│ │ └── http_client.py
│ └── config/
│ └── settings.example.json
├── data/
│ ├── input.sample.json
│ └── output.sample.json
├── requirements.txt
└── README.md
- E-commerce analysts use it to collect product prices, so they can track pricing changes over time.
- Retail data teams use it to build structured product catalogs, so they can feed analytics pipelines.
- Market researchers use it to study product descriptions, so they can compare positioning across items.
- Developers use it to automate product data ingestion, so they can integrate retail data into applications.
Does this project support multiple product URLs at once? Yes, it accepts a list of product page URLs and processes them in a single execution.
What type of pages are supported? Only valid John Lewis product pages are supported. Non-product pages may return incomplete data.
Is the output format consistent across products? Yes, all products follow the same field structure for predictable downstream usage.
Can the data be extended with additional fields? The structure is designed to be extensible, allowing new product attributes to be added if needed.
Primary Metric: Processes product pages with an average extraction time of 2–4 seconds per URL.
Reliability Metric: Maintains a high success rate when provided with valid product page URLs.
Efficiency Metric: Supports batch URL input to reduce repeated execution overhead.
Quality Metric: Delivers complete product records with consistent field coverage across runs.
