# Zazzle Product Search Scraper (`soft_alexist/zazzle-product-search-scraper`) Actor

Scrape thousands of products from Zazzle's catalog with detailed attributes, pricing, store info, and search rankings. Ideal for e-commerce researchers, price monitoring, inventory analysis, and marketplace intelligence on custom merchandise offerings.

- **URL**: https://apify.com/soft\_alexist/zazzle-product-search-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Zazzle Product Search Scraper: Extract Custom Merchandise Data at Scale

***

### What Is Zazzle?

Zazzle.com is a leading marketplace for personalized and custom merchandise — from wedding invitations and apparel to home décor and gifts. With millions of user-designed and reseller products, Zazzle offers rich data on design trends, pricing strategies, and product performance. Manually collecting this product-level data across search results is impractical; the **Zazzle Product Search Scraper** automates extraction of comprehensive product records including pricing, attributes, store details, and ranking signals.

***

### Overview

The **Zazzle Product Search Scraper** extracts detailed product information from Zazzle search and category pages, transforming unstructured listings into structured datasets with 35+ fields per item. It is designed for:

- **E-commerce researchers** analyzing marketplace trends and competitive positioning
- **Price monitoring platforms** tracking Zazzle product pricing and promotions
- **Inventory analysts** conducting category-level performance studies
- **Marketplace sellers** benchmarking product performance and design attributes
- **Data scientists** building machine learning models on Zazzle's product ecosystem

Core strengths include configurable item limits, automatic handling of pagination, and graceful error recovery with `ignore_url_failures`.

***

### Input Format

The scraper accepts a JSON configuration with three primary settings:

```json
{
  "urls": [
    "https://www.zazzle.com/c/wedding+invitations?pg=2"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | array | Product list or category page URLs to scrape (e.g., search results, category pages, filtered listings) |
| `max_items_per_url` | integer | Maximum products extracted per URL (default: 100, max: 200+) |
| `ignore_url_failures` | boolean | If `true`, continues processing if individual URLs fail; if `false`, stops entire run on first error |

**Example URLs:**

- Category: `https://www.zazzle.com/c/wedding+invitations`
- Search: `https://www.zazzle.com/search?q=custom+mugs`
- Filtered: `https://www.zazzle.com/c/t-shirts?color=blue&price_min=10`

> **Tip:** Use multiple URLs with different categories or search terms to build larger, more diverse datasets.

***

### Output Format

**Sample output**

```json
{
  "alternates": [
    {
      "alternates": [],
      "color_names": [],
      "colors": [
        "591c42"
      ],
      "id": "256905249522238679",
      "realviews": [],
      "use_content_realview_on_hover": false
    }
  ],
  "attributes": "style=5x7&cornerstyle=normal&media=matte&printquality=4color&envelopes=white&zattribution=none&design.areas=[5x7_front_full_vert,5x7_back_full_vert]&view=117550635181293468&oview=113337099578326473",
  "background_color": "2A4A6D",
  "color_names": [],
  "colors": [
    "1d4061"
  ],
  "customizer_link_url": null,
  "description": "",
  "design_id": "b71e3f80-6bb5-49bc-ae78-06ffc40e2ef7",
  "id": "256321141486202512",
  "is_adz": false,
  "is_dpl": false,
  "is_vizlite": false,
  "link_url": "https://www.zazzle.com/navy_dusty_blue_ocean_watercolor_wedding_invitation-256321141486202512",
  "price": 2.87,
  "product_type": "zazzle_invitation3",
  "realviews": [],
  "seeking_alpha_src": "Explore",
  "seeking_alpha_src_type": "SearchResultsCollections",
  "store_id": "250267046411814688",
  "title_seo": "Navy Dusty Blue Ocean Watercolor Wedding Invitation",
  "keywords": "modern watercolor wedding dusty blue sky+blue navy beach ocean water ",
  "lr_score": null,
  "time_decay_score": 12.741657,
  "order_item_count_all": 63,
  "reranking_reason": {
    "seeking_alpha_source_types": [
      4
    ],
    "is_adz": false,
    "is_q_s_r": false,
    "is_personalized_search_store_limit": false,
    "is_pinned": false,
    "is_boosted_template": false,
    "original_position": 0,
    "current_position": 0
  },
  "is_wedding": true,
  "store_handle": "Nicheandnest",
  "store_image_url": "https://rlv.zcache.com/svc/getimage?profile_id=250267046411814688&profile_type=default&max_dim=65&bg=00000000&square_it=false&image_type=png&dmticks=638859001214000000",
  "store_name": "Niche & Nest (💍Wedding, Birthdays & More!)",
  "image_url": "https://rlv.zcache.com/navy_dusty_blue_ocean_watercolor_wedding_invitation-r_v4nu7k_216.jpg",
  "promo_label": "You save 50%",
  "strike_through_info": {
    "price": 2.87,
    "price_adjusted": 1.44,
    "discount_percent": 0.5,
    "discount_amount": 0
  },
  "product_badge": "editorsPick",
  "badges": [
    {
      "type": "EditorsPick",
      "category": "Performance",
      "is_deal_badge": false,
      "priority_callout": null,
      "priority_p_d_p": 5,
      "priority_s_r_p": 5
    },
    {
      "type": "CrossSell",
      "category": "Attribute",
      "is_deal_badge": false,
      "priority_callout": null,
      "priority_p_d_p": 5,
      "priority_s_r_p": 4
    },
    {
      "type": "XViewsInMonth",
      "category": "Activity",
      "is_deal_badge": false,
      "priority_callout": null,
      "priority_p_d_p": 6,
      "priority_s_r_p": 6,
      "view_count": 121
    }
  ],
  "is_old_school_digital": false,
  "prp_link_url_obfuscated": "s||www<zazzle<com|navy_dusty_blue_ocean_watercolor_wedding_invitation-256321141486202512|related",
  "from_url": "https://www.zazzle.com/c/wedding+invitations?pg=2"
}
```

Each product record contains 35 detailed fields covering product info, pricing, design attributes, store details, and performance metrics:

#### Product Identity & Core Info

| Field | Meaning |
|---|---|
| `ID` | Unique Zazzle product identifier |
| `Design ID` | ID of the underlying design template |
| `Title SEO` | Product title optimized for search visibility |
| `Description` | Full product description and details |
| `Link URL` | Direct product page URL |
| `Customizer Link URL` | URL to Zazzle's product customizer tool |
| `Product Type` | Category (e.g., t-shirt, mug, invitation, canvas) |

#### Design & Visual Attributes

| Field | Meaning |
|---|---|
| `Attributes` | Product-specific technical specs (material, size options, etc.) |
| `Colors` | Available color variants for the product |
| `Color Names` | Human-readable names of color options |
| `Background Color` | Primary or default background color |
| `Image URL` | Direct URL to the product preview/thumbnail image |

#### Pricing & Promotions

| Field | Meaning |
|---|---|
| `Price` | Current selling price in USD |
| `Strike Through Info` | Original or regular price (for discounted items) |
| `Promo Label` | Promotional text (e.g., "20% off", "New") |

#### Store & Creator Information

| Field | Meaning |
|---|---|
| `Store ID` | Unique identifier for the seller/creator store |
| `Store Name` | Display name of the Zazzle store |
| `Store Handle` | URL-friendly store identifier |
| `Store Image URL` | Store logo or avatar URL |

#### Product Variants & Related Items

| Field | Meaning |
|---|---|
| `Alternates` | Related or alternative product variants |
| `PRP Link URL Obfuscated` | Obfuscated link to related products (for tracking) |

#### Search & Ranking Signals

| Field | Meaning |
|---|---|
| `Realviews` | Approximate product view count |
| `LR Score` | Relevance/ranking score for search results |
| `Time Decay Score` | Recency-weighted performance metric |
| `Seeking Alpha Source` | External ranking or review source reference |
| `Seeking Alpha Source Type` | Classification of the external source |
| `Reranking Reason` | Why the product was repositioned in results |
| `Order Item Count All` | Estimated total sales volume |

#### Product Classification Flags

| Field | Meaning |
|---|---|
| `Is Wedding` | Whether the product is wedding-related |
| `Is ADZ` | Advertising/promoted product flag |
| `Is DPL` | Deep product listing designation |
| `Is VizLite` | Lightweight/fast-loading version indicator |
| `Is Old School Digital` | Legacy digital product format |
| `Product Badge` | Single badge label (e.g., "bestseller", "trending") |
| `Badges` | Multiple applicable badges or labels |
| `Keywords` | SEO keywords associated with the product |

***

### How to Use

1. **Prepare URLs** — Copy Zazzle category, search, or filtered product list URLs. Examples:
   - `https://www.zazzle.com/c/wedding+invitations`
   - `https://www.zazzle.com/search?q=custom+phone+cases&price_min=15`

2. **Set configuration** — Paste URLs into the `urls` array, set `max_items_per_url` (e.g., `200` for large datasets), and enable `ignore_url_failures` if running multiple URLs.

3. **Run the scraper** — Start the actor and monitor progress in the run log.

4. **Handle pagination** — Zazzle pagination parameters (e.g., `?pg=2`) are preserved; include multiple pages for larger datasets.

5. **Export results** — Download as JSON, CSV, or Excel for analysis, integration, or storage.

**Troubleshooting:**

- If no products appear, verify the URL is a product listing page, not a single product page.
- If products are incomplete, the page may have JavaScript-heavy rendering; consider retry or adjusting page load times.
- Set `ignore_url_failures: true` for bulk runs to skip problematic pages gracefully.

***

### Use Cases & Business Value

- **Price monitoring:** Track Zazzle product pricing, discounts, and promotional trends over time.
- **Competitive analysis:** Benchmark product attributes, designs, and seller strategies across categories.
- **Inventory insights:** Analyze bestsellers, trending products, and design patterns by category.
- **Market research:** Study custom merchandise demand, pricing elasticity, and consumer preferences.
- **Data enrichment:** Enhance e-commerce platforms with Zazzle product feeds and metadata.
- **Trend detection:** Identify emerging product types, seasonal trends, and design innovations.

The scraper's rich output of 35+ fields enables sophisticated analysis without requiring manual data entry or browser automation scripts.

***

### Conclusion

The **Zazzle Product Search Scraper** delivers comprehensive, ready-to-use product data from one of the web's largest custom merchandise marketplaces. Whether you're conducting market research, monitoring competitors, or building a product database, this scraper saves significant time and ensures data consistency across large scales.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.zazzle.com/c/wedding+invitations?pg=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.zazzle.com/c/wedding+invitations?pg=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/zazzle-product-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.zazzle.com/c/wedding+invitations?pg=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/zazzle-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.zazzle.com/c/wedding+invitations?pg=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call soft_alexist/zazzle-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=soft_alexist/zazzle-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vzmbgbHvKZs5zU0m2/builds/df02A6RaWwBv9D2TG/openapi.json
