---
title: "Ecommerce web scraping"
description: "Ecommerce web scraping for prices, catalogs, reviews, stock and sellers on Amazon, Walmart, eBay and Shopify stores, returned as structured JSON."
canonical: https://www.zenrows.com/use-cases/ecommerce-web-scraping
updated: 2026-10-18
---

# Ecommerce web scraping

Ecommerce web scraping collects product data from online stores and marketplaces: prices, titles, variants, stock, reviews, sellers and search rank. Zenrows fetches protected pages on Amazon, Walmart, eBay and Shopify stores, returns structured JSON with Extract, and runs whole catalogs through Batch, so your dataset matches what shoppers see.

## Sample output: one product page

```json
{
  "url": "https://www.example-store.com/products/trail-runner-gtx",
  "retailer": "example-store.com",
  "title": "Trail Runner GTX Men's Running Shoe",
  "brand": "North Supply",
  "sku": "NS-TR-GTX-42",
  "gtin": "00812345678906",
  "price": 129.0,
  "list_price": 160.0,
  "currency": "USD",
  "availability": "in_stock",
  "variants": [
    { "size": "9", "color": "Black", "in_stock": true },
    { "size": "10", "color": "Black", "in_stock": false }
  ],
  "rating": 4.6,
  "review_count": 2143,
  "seller": "North Supply Official",
  "category_path": ["Shoes", "Running", "Trail"],
  "images": 7,
  "captured_at": "2026-10-17T08:00:00Z"
}
```

Illustrative: the shape Extract returns from a product page, variants, seller and identifiers in one object.

## What ecommerce web scraping teams collect

Two page types, listings and product pages, read on a schedule. Each job has its own page.

| Job | Data you collect | Typical sources |
|---|---|---|
| [Competitor price tracking](/use-cases/price-scraping) | Price, list price, promotion, shipping | Amazon, Walmart, Target, Best Buy, brand stores |
| Catalog and assortment mapping | Every product URL, category, brand, new and delisted items | Shopify and other brand stores, IKEA, Zara, ASOS |
| [Review collection](/use-cases/review-scraping) | Rating, text, date, verified-purchase flag | Amazon, Walmart, Sephora, Trustpilot |
| [Stock and availability](/use-cases/inventory-monitoring) | In stock, low, back-order, per variant and store | Retailer product and store-locator pages |
| Marketplace seller monitoring | Seller, offer count, fulfillment type, rating | Amazon offer listings, eBay, Mercado Libre, Allegro, Shopee |
| [Search rank on retailer sites](/use-cases/digital-shelf-analytics) | Keyword position, sponsored or organic, category placement | Amazon, Walmart, Instacart, Tesco search |
| [Product matching](/use-cases/product-matching) | GTIN, MPN, brand, model, normalized title | Product pages across retailers |

## Why scraping ecommerce websites breaks

Big retailers block bots, render prices in JavaScript and change templates. Small stores are easier, but thousands, each with its own theme.

| What breaks | What it looks like | How Zenrows handles it |
|---|---|---|
| Bot protection | A CAPTCHA, "press and hold" challenge or 403 instead of the product | Zenrows' stealth, with retries, gets through AWS WAF, PerimeterX (HUMAN), Akamai and Cloudflare |
| Prices loaded by JavaScript | Product name in the HTML, price block empty | Adaptive Stealth Mode renders when needed and returns the page after scripts run |
| Country and region | Another country's price, currency or stock, or a login-wall redirect | Geotargeting sets the request country, like Brazil for Mercado Livre |
| Lazy-loaded reviews and variants | Reviews and sizes appear only after a scroll or click | Page actions scroll, click and wait before returning |
| Many store layouts | Selectors per store, emptied by every redesign | Extract returns product fields as JSON, no selectors to maintain |
| Catalog size | 200,000 URLs per refresh swamp a homegrown queue | Batch runs the list as one job, results per URL |

## How to scrape ecommerce websites with Zenrows

1. **Map the catalog** with a Crawl from the home or a category page, keeping product URLs like `/products/` on Shopify or `/dp/` on Amazon.
2. **Fetch one product page** with Adaptive Stealth Mode, which adds rendering and stealth only when needed, and geotargeting for the market.
3. **Get the fields** as ready-made JSON with Extract, or with CSS selectors for exact names on one retailer.
4. **Refresh the catalog** in Batch on your schedule, diffing runs for price, stock and assortment changes.

```python Python
# pip install requests
import requests

params = {
    "apikey": "YOUR_ZENROWS_API_KEY",
    "url": PRODUCT_URL,  # a product detail page
    "mode": "auto",  # Adaptive Stealth Mode
    "proxy_country": "us",
    "extract": "auto",
}
response = requests.get("https://api.zenrows.com/v1/", params=params)
product = response.json()
print(product)
```

```bash cURL
# Collect every product URL on a store, as Markdown pages
curl -X POST "https://api.zenrows.com/v1/crawls" \
  -H "X-API-Key: YOUR_ZENROWS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "STORE_URL",
    "max_items": 5000,
    "max_pages": 6000,
    "include_patterns": ["/products/"],
    "exclude_patterns": ["/cart", "/account"],
    "output_format": "markdown"
  }'
# Read the results later with GET https://api.zenrows.com/v1/crawls/CRAWL_ID
```

```bash CLI
npx -y @zenrows/cli init
zenrows extract PRODUCT_URL --autoparse
zenrows crawl create STORE_URL --include-patterns /products/ --max-pages 6000 --output-format markdown --follow
zenrows crawl results <crawl-id> --out product-urls.jsonl
```

```text Claude Code (MCP)
# Connect once
claude mcp add zenrows -e ZENROWS_API_KEY=YOUR_ZENROWS_API_KEY -- npx -y @zenrows/mcp

# Then ask:
Use Zenrows to read these ten Walmart and eBay product pages from the US
and return one JSON record per product with title, brand, price, list
price, availability, rating, review count and seller.
```

## Which Zenrows product fits

| If you need to | Use | Why |
|---|---|---|
| Pull one product, category or search page | [Fetch](/products/fetch) | The rendered page from protected retailers in one request |
| Get product JSON across many store layouts | [Extract](/products/extract) | Structured extraction that adapts to template changes |
| List every product URL on a store | [Crawl](/products/crawl) | Follows links and pagination on the domain, keeps URLs matching your patterns |
| Refresh a full catalog daily or weekly | [Batch](/products/batch) | Thousands of URLs in one job, results by webhook or download |
| Choose a size, postcode or configurator | [Browser](/products/browser) | Playwright or Puppeteer run the steps in a real browser first |

## What success looks like

| Measure | What good looks like | How to check it |
|---|---|---|
| Catalog coverage | Products per store match its own category counts | Crawled URLs against category page counts |
| Field completeness | Price, availability and title on nearly every record | Empty-field share per store and run |
| Freshness | No record older than your refresh interval | Alert on `captured_at` older than one cycle |
| Accuracy | The price a shopper sees in that country | Weekly browser spot-check from that market |
| Failure rate per run | Few failures, fixed on retry | Failed tasks per Batch job and store, retried before the next run |
| Upkeep | Redesigns need little or no selector work | Monthly hours on scraper fixes |

## Ecommerce web scraping FAQ

### What is ecommerce web scraping?

Automated collection of product data from stores and marketplaces: listing and product pages become records with price, stock, title, brand, variants, rating and seller. Teams use it for price monitoring, assortment, reviews, product matching and digital shelf reporting.

### What ecommerce data can I scrape?

Anything a shopper sees without logging in: title, description, brand, price and list price, promotions, shipping, stock per variant, images, specs, GTIN or MPN, ratings and reviews, seller details, and search and category position.

### Can Zenrows scrape Amazon, Walmart and eBay?

Yes. Large marketplaces commonly use AWS WAF, PerimeterX (HUMAN) or Akamai. Adaptive Stealth Mode escalates to rendering and stealth only when a page needs it, and geotargeting sets the country. Each site has a dedicated guide linked here.

### What should I look for in a web scraping API for ecommerce sites?

Test it on your own key stores for at least a week: success on protected sites, local prices by country, JSON without selectors, thousands of URLs at once, and upkeep after a redesign.

### How do I scrape a whole online store?

Crawl from the home or category pages with a product URL pattern; it stays on the domain and returns URLs, or pages as HTML or Markdown. Batch with Extract then gives one JSON record per product.

### How do I scrape product variants and stock per size?

Many pages embed every variant in JSON or structured data, so one request returns each size and color with price and stock, as an Extract variants list. If a price loads only on selection, page actions click it first; Browser handles longer flows. Store one row per variant, keyed by SKU or GTIN.

### Is it legal to scrape ecommerce websites?

Collecting public product and price data is common for price monitoring and market research. Read each site's terms, skip personal data like reviewer profiles without a basis to process it, and do not republish copyrighted images or descriptions. Ask your legal team about your use.

## Related use cases

- [Competitor price scraping](https://www.zenrows.com/use-cases/price-scraping.md): Competitor prices, promotions, shipping and stock per SKU from retailers and marketplaces, refreshed on your schedule.
- [Product data scraping](https://www.zenrows.com/use-cases/product-data-scraping.md): Whole product catalogs, variants, specs, images and sellers from marketplaces, normalized into one feed.
- [Digital shelf analytics](https://www.zenrows.com/use-cases/digital-shelf-analytics.md): Search rank, share of shelf, content compliance, ratings and availability for CPG brands, per retailer and region.
- [Review scraping](https://www.zenrows.com/use-cases/review-scraping.md): Review text, ratings, dates and replies from Amazon, Google, Yelp, Trustpilot and G2, every page.
- [Inventory monitoring](https://www.zenrows.com/use-cases/inventory-monitoring.md): In stock, out of stock and restock events per variant and per store, from retailer product pages.
- [Retail data scraping](https://www.zenrows.com/use-cases/retail-data.md): Store locations, store-level prices, promotions and click-and-collect stock from grocery and high-street chains.

Start free: https://app.zenrows.com/register. Docs: https://docs.zenrows.com
