---
title: "Product data enrichment"
description: "Product data enrichment from manufacturer and retailer pages: fill PIM attributes, specs, images, descriptions and GTINs with web data your catalog lacks."
canonical: https://www.zenrows.com/use-cases/product-data-enrichment
updated: 2026-10-18
---

# Product data enrichment

Product data enrichment fills the gaps in your product records, such as specs, dimensions, images, descriptions and identifiers, using manufacturer and retailer pages. Zenrows fetches those pages from protected sites, returns spec tables and structured fields as JSON, and keeps the source URL for every value, so your PIM gets complete, traceable attributes.

## Sample output: one enriched SKU

```json
{
  "sku": "ACME-DRL-2040",
  "input": { "title": "Acme cordless drill 20V", "brand": "Acme", "mpn": "DRL2040" },
  "enriched": {
    "gtin": "0885911654321",
    "voltage_v": 20,
    "max_torque_nm": 65,
    "chuck_size_mm": 13,
    "weight_kg": 1.4,
    "battery_included": true,
    "dimensions_cm": { "length": 19.1, "height": 22.4, "width": 7.9 },
    "images": [
      "https://www.example-manufacturer.com/media/drl2040-front.jpg",
      "https://www.example-manufacturer.com/media/drl2040-side.jpg"
    ],
    "description_source": "manufacturer"
  },
  "sources": {
    "max_torque_nm": "https://www.example-manufacturer.com/tools/drl2040",
    "gtin": "https://www.example-retailer.com/p/acme-drl2040"
  },
  "filled_fields": 9,
  "enriched_at": "2026-10-17T09:30:00Z"
}
```

An illustrative enriched record: the supplier sent three fields, the web filled nine more, and each value keeps the page it came from.

## What teams use product data enrichment for

Enrichment starts from records you already have, usually a supplier spreadsheet or a PIM export with a title, brand and part number. The job is to find the right page for each SKU and copy the missing attributes into your schema.

| Job | Data you collect | Typical sources |
|---|---|---|
| Attribute completion for a PIM | Dimensions, weight, materials, power, compatibility | Manufacturer product pages and spec tabs |
| Supplier catalog onboarding | Clean titles, category, specs for thousands of new part numbers | Brand sites, distributor sites such as Digi-Key or Grainger |
| Identifier verification | GTIN, EAN, UPC, MPN, model number | Retailer pages, Google Shopping, manufacturer pages |
| Image and media sourcing | Product images, angles, manuals, video links | Brand media pages and authorised retailer listings |
| Marketplace and feed readiness | Fields a channel requires before a listing goes live | Amazon, Walmart and Google Shopping listings of the same product |
| Fitment and cross-references | Which vehicles or devices a part fits, equivalent part numbers | Auto-parts retailers such as O'Reilly, manufacturer fitment pages |

## Why product enrichment stalls

The scraping part of enrichment is short per SKU, but every SKU points to a different website. That breadth is what wears down a homegrown script.

| What breaks | What it looks like | How Zenrows handles it |
|---|---|---|
| Thousands of different layouts | A parser per manufacturer site, most of them used for a handful of SKUs | Extract and the tables output filter return fields and spec tables without a parser per site |
| Specs hidden in tabs | The spec table loads only after a click, so the HTML has no attributes | Page actions click the tab in a full browser render before the page is returned |
| Wrong product page | The search found a bundle, a newer model or a different pack size | Fetch the candidate page and compare its GTIN or MPN with your record before you write |
| Protected retailers | Retailer pages that carry the GTIN answer with a challenge page | Zenrows' stealth gets through Cloudflare, Akamai and similar protections |
| Regional catalogs | The US page lists imperial units and a different model code | Geotargeting returns the page your market sees |

## How to enrich product data with Zenrows

1. **Prepare your input.** Export SKUs with whatever identifiers you hold: brand, MPN, GTIN, title.
2. **Find the source page.** Search the manufacturer site or a shopping search page by identifier, and keep the best candidate URL per SKU.
3. **Pull the attributes.** Request spec tables with the tables output filter, or the whole record with Extract.
4. **Verify before writing.** Accept a page only when its identifier matches your record, then map fields to your PIM attributes and store the source URL.
5. **Hand descriptions to a model.** Fetch long descriptions as Markdown when you rewrite them with an LLM.

```python Python
# pip install requests
import requests

params = {
    "apikey": "YOUR_ZENROWS_API_KEY",
    "url": "MANUFACTURER_PRODUCT_URL",
    "mode": "auto",
    "outputs": "tables",
}
data = requests.get("https://api.zenrows.com/v1/", params=params).json()

# Each table has a heading list and content (one dict per row)
for table in data.get("tables", []):
    for row in table.get("content", []):
        print(row)
```

```bash cURL
curl -G "https://api.zenrows.com/v1/" \
  --data-urlencode "apikey=YOUR_ZENROWS_API_KEY" \
  --data-urlencode "url=RETAILER_PRODUCT_URL" \
  --data-urlencode "mode=auto" \
  --data-urlencode "response_type=markdown"
```

```bash CLI
npx -y @zenrows/cli init
# Spec tables from a manufacturer page
zenrows extract MANUFACTURER_PRODUCT_URL --outputs tables
# The whole product record as JSON, no selectors
zenrows extract MANUFACTURER_PRODUCT_URL --autoparse
# A supplier file overnight: one {"url": "..."} per line
zenrows batch create candidates.jsonl --wait
```

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

# Then ask:
For each SKU in skus.csv, use Zenrows to open the Bosch or Makita product page for
its model number, confirm the model number matches, and return weight, dimensions,
voltage and the page URL. Mark any SKU where you could not confirm the match.
```

## Which Zenrows product fits

| If you need to | Use | Why |
|---|---|---|
| Pull spec tables or named fields from one page | [Fetch](/products/fetch) | The tables output filter or fields named with CSS selectors return only what you ask for |
| Get a whole product record from unfamiliar sites | [Extract](/products/extract) | Structured JSON with no selectors, plus the raw HTML to check against |
| Let an agent find and verify pages SKU by SKU | [MCP Server](/mcp) | Claude, Cursor and other MCP clients call Zenrows as a tool |
| Enrich a supplier file overnight | [Batch](/products/batch) | Submit every candidate URL as one job |
| Test a manufacturer site from a terminal | [CLI](/cli) | One `extract` command prints the parsed fields |

## What success looks like

| Measure | What good looks like | How to check it |
|---|---|---|
| Attribute fill rate | Required attributes per category are filled for most SKUs after one pass | Count empty required fields per category before and after |
| Match precision | Enriched values belong to the exact model and pack size | Review a random sample of SKUs against the source page |
| Traceability | Every enriched value has a source URL and date | Reject writes that arrive without a source |
| Onboarding time | A new supplier file is ready for listing within a few days of arriving | Track time from file received to SKUs published |
| Verification failure rate | Few candidate pages are rejected for a wrong GTIN or MPN | Count rejected candidates per source site on each run |

## Product data enrichment FAQ

### What is product data enrichment?

Product data enrichment is adding missing or better information to existing product records: specifications, dimensions, identifiers, images, descriptions and category attributes. The data comes from manufacturer sites, retailer listings and other public pages. Complete records show up in on-site search filters and pass marketplace listing checks.

### How is product enrichment different from product data scraping?

Product data scraping copies entire catalogs from a site you choose. Product enrichment starts from your own catalog and looks up specific SKUs wherever their best data lives, often on a different site for each brand. The volume per site is small and the number of sites is large, which favours selector-free extraction.

### Where does enrichment data come from?

The manufacturer's own product page is usually the most accurate source for specs and images. Large retailers and Google Shopping listings are useful for identifiers such as GTIN and for confirming model names. Distributor sites carry technical attributes for industrial and electronic parts. Keep the source per field, since sources disagree.

### Can an LLM map scraped attributes to my PIM schema?

Yes. Give the model the page as Markdown or Extract JSON, plus your attribute list with units and allowed values, and ask it to return only those attributes with the sentence each came from. Unit conversion (inches to centimetres, watts to volts and amps) is safer in code after the model has labelled the values. For deciding whether two listings are the same item, see product matching .

### Can I build a product data feed from enriched records?

Yes. Once attributes are filled and verified, export them in the format your channel expects, such as a Google Merchant Center or marketplace feed. Re-run enrichment for new SKUs only, and refresh existing ones when the manufacturer page changes.

### Can I reuse manufacturer images and descriptions?

Specifications and identifiers are factual. Images and written descriptions can be protected by copyright, and many brands publish them for authorised resellers under specific terms. Check those terms or ask the brand for its media kit, and ask your legal team when reuse is unclear.

### What is PIM data enrichment?

PIM data enrichment fills the attributes your product information management system requires for each category, using values found on manufacturer and retailer pages. The scraped values arrive as JSON, get mapped to your PIM attribute names and units, and are written back with their source URL. Most teams run it per supplier file: new SKUs come in thin, enrichment fills them, and a reviewer approves anything the match step flagged.

## Related use cases

- [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.
- [Ecommerce web scraping](https://www.zenrows.com/use-cases/ecommerce-web-scraping.md): Product, price, stock, review and seller data from Amazon, Walmart, eBay and Shopify stores, as JSON.
- [Automotive data](https://www.zenrows.com/use-cases/automotive-data.md): Vehicle listings, dealer inventory, prices, specs and parts from marketplaces and dealer sites, keyed on VIN.
- [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
