# Wix Product Parser (`street_protractor/wix-product-parser`) Actor

Scrape and download products from Wix websites. Use a single product page, one or multiple category pages, or scrape the entire site. Get uniform, structured product data easily.

- **URL**: https://apify.com/street\_protractor/wix-product-parser.md
- **Developed by:** [Streetmarkets](https://apify.com/street_protractor) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 44 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$24.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## 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

## Wix Product Scraper Actor

### Overview

The Wix Product Scraper Actor is a powerful tool designed to extract and transform product data from Wix-based websites into a uniform format. This actor is ideal for e-commerce businesses, data analysts, and developers who need structured product information for inventory management, market analysis, or integration with other systems.

### Features

- **Uniform Data Output**: The scraper provides a consistent data structure, making it easy to integrate with various applications. The data format includes product details such as ID, title, URL, description, vendor, product type, tags, variants, images, and options.
- **Customizable Scraping**: Easily modify the scraper to target specific product attributes or handle different data structures.
- **Proxy Support**: Utilize Apify's proxy settings to avoid IP bans and ensure reliable data extraction.
- **Batch Processing**: Scrape multiple product pages or entire categories efficiently with batch URL support.
- **Duplicate and Sale Product Filtering**: Options to remove duplicate entries and filter out products on sale or out of stock.

### Input Schema

The actor supports the following input parameters:

- **URL**: The main website URL to scrape data from.
- **Single URL**: A specific product page URL to extract data from.
- **Batch URL**: An array of URLs for product categories or search results to be scraped.
- **Delete Duplicate**: A boolean option to remove duplicate entries in the dataset.
- **Delete Sale Product**: A boolean option to exclude products on sale from the dataset.
- **Delete Out of Stock**: A boolean option to exclude out-of-stock products from the dataset.
- **Waiting Time**: An integer specifying the delay between requests to avoid overloading the server.
- **Proxy Settings**: Configuration for using Apify's proxy services or custom proxies.

### Data Format

The scraped data is structured as follows:

```json
  {
    "id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
    "title": "Maison Hotel - Rita Pant - Paisley Dream",
    "handle": "maison-hotel-rita-pant-paisley-dream",
    "url": "https://en.miimoparis.com/product-page/maison-hotel-rita-pant-paisley-dream",
    "body_html": "<p>Le pantalon Rita en cachemire de rêve.</p><p>&nbsp;</p><p>Pour les sauvages, les vagabonds et les rebelles qui refusent de jouer la carte de la sécurité. Notre pantalon Rita est un clin d'œil audacieux au rock'n'roll vintage avec un cœur bohème à l'esprit libre.</p><p>&nbsp;</p><p>Fabriqué en coton doux avec une touche d'élasthanne (parce que le confort ne doit jamais être compromis), ces beautés à jambe large présentent un imprimé cachemire délavé qui crie la fraîcheur sans effort. La taille haute flatte, tandis que la coupe décontractée les rend parfaites pour les promenades pieds nus sur la plage ou pour arpenter les champs de festival avec des bottes usées.</p><p>&nbsp;</p><p>Finition avec un style classique à cinq poches, un effet subtilement usé et juste la bonne quantité d'élasticité, car la liberté de mouvement n'est pas négociable.</p><p>&nbsp;</p><p>Associez-le à un chemisier vaporeux, superposez les bijoux et ne vous excusez jamais de prendre de la place.</p><p>- 98% Coton 2% Elasthanne.</p><p>- Taille normalement - choisissez votre taille habituelle.</p><p>- Si vous êtes entre deux tailles, choisissez la petite taille.</p><p>- Le mannequin mesure 1,81 cm et porte une taille S.</p><p>- La longueur totale du pantalon est de 108 cm en taille S.</p><p>- Nous recommandons un lavage à la main uniquement.</p><br><br>",
    "vendor": null,
    "product_type": "physical",
    "tags": [
      
    ],
    "variants": [
      {
        "id": "b38eee1f-2c17-d544-c12a-c7366f878c381",
        "title": "Maison Hotel - Rita Pant - Paisley Dream - XS",
        "sku": "1",
        "requires_shipping": true,
        "taxable": true,
        "featured_image": null,
        "available": true,
        "price": 120,
        "grams": 0,
        "compare_at_price": null,
        "position": 1,
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "option1": "XS",
        "option2": null,
        "option3": null
      },
      {
        "id": "b38eee1f-2c17-d544-c12a-c7366f878c382",
        "title": "Maison Hotel - Rita Pant - Paisley Dream - S",
        "sku": "1",
        "requires_shipping": true,
        "taxable": true,
        "featured_image": null,
        "available": true,
        "price": 120,
        "grams": 0,
        "compare_at_price": null,
        "position": 2,
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "option1": "S",
        "option2": null,
        "option3": null
      },
      {
        "id": "b38eee1f-2c17-d544-c12a-c7366f878c383",
        "title": "Maison Hotel - Rita Pant - Paisley Dream - M",
        "sku": "1",
        "requires_shipping": true,
        "taxable": true,
        "featured_image": null,
        "available": true,
        "price": 120,
        "grams": 0,
        "compare_at_price": null,
        "position": 3,
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "option1": "M",
        "option2": null,
        "option3": null
      },
      {
        "id": "b38eee1f-2c17-d544-c12a-c7366f878c384",
        "title": "Maison Hotel - Rita Pant - Paisley Dream - L",
        "sku": "1",
        "requires_shipping": true,
        "taxable": true,
        "featured_image": null,
        "available": true,
        "price": 120,
        "grams": 0,
        "compare_at_price": null,
        "position": 4,
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "option1": "L",
        "option2": null,
        "option3": null
      }
    ],
    "images": [
      {
        "id": "09bf3d_84fe385e4bf6437b8e7c2b8c4d67ebcc~mv2.webp",
        "created_at": "",
        "position": 1,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_84fe385e4bf6437b8e7c2b8c4d67ebcc~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      },
      {
        "id": "09bf3d_a8d1b7de2e6849bd9e85a2a7ad38dcc5~mv2.webp",
        "created_at": "",
        "position": 2,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_a8d1b7de2e6849bd9e85a2a7ad38dcc5~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      },
      {
        "id": "09bf3d_62fa16a32a9c47e798219fd0908c7404~mv2.webp",
        "created_at": "",
        "position": 3,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_62fa16a32a9c47e798219fd0908c7404~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      },
      {
        "id": "09bf3d_c6ef8339ef6b4e22a2c9cf47a1bfff27~mv2.webp",
        "created_at": "",
        "position": 4,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_c6ef8339ef6b4e22a2c9cf47a1bfff27~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      },
      {
        "id": "09bf3d_58a3769a0d1d432a8de10d66b4d65845~mv2.webp",
        "created_at": "",
        "position": 5,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_58a3769a0d1d432a8de10d66b4d65845~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      },
      {
        "id": "09bf3d_433c0c1d6a01493d894fd72d8d297adf~mv2.webp",
        "created_at": "",
        "position": 6,
        "updated_at": "",
        "product_id": "b38eee1f-2c17-d544-c12a-c7366f878c38",
        "variant_ids": [
          
        ],
        "src": "https://static.wixstatic.com/media/09bf3d_433c0c1d6a01493d894fd72d8d297adf~mv2.webp/v1/fit/w_500,h_500,q_90/file.webp",
        "width": 1080,
        "height": 1440
      }
    ],
    "options": [
      {
        "name": "Size",
        "position": 1,
        "values": [
          "XS",
          "S",
          "M",
          "L"
        ]
      }
    ]
  }
```

### How It Works

1. **Input Configuration**: Define the URLs to scrape via the input schema, which supports single product URLs, batch URLs, and category URLs.
2. **Data Extraction**: The actor uses HTTPX for asynchronous HTTP requests and Beautiful Soup for parsing HTML content.
3. **Data Transformation**: Extracted data is transformed into a uniform JSON format, ready for further processing or storage.
4. **Output**: The structured data is stored in a dataset, accessible for download or integration with other systems.

### Getting Started

1. **Install Apify CLI**: Use Homebrew or NPM to install the Apify CLI for local development.
2. **Pull the Actor**: Use the Apify CLI to pull the actor to your local environment for customization and testing.
3. **Run the Actor**: Execute the actor on the Apify platform or locally to start scraping data.

### SEO Benefits

- **Comprehensive Data**: Gather detailed product information to enhance your e-commerce platform's SEO by providing rich content and metadata.
- **Efficient Updates**: Keep your product listings up-to-date with automated scraping, ensuring your site remains relevant and competitive.
- **Scalable Solution**: Handle large volumes of data with ease, supporting your SEO strategy as your business grows.

### Resources

# Actor input Schema

## `url` (type: `string`):

The URL of website you want to get the data from.

## `single_url` (type: `string`):

product URL you want to get the data from.

## `batch_url` (type: `array`):

List of URLs that will be scraped or crawled. Can be main website URL, category/search URLs or detail/product URLs EXAMPLE : https://www.sixsoeurs.fr/vestes?page=1.

## `delete_duplicate` (type: `boolean`):

This option will delete duplicate in the dataset (using the product url)

## `delete_sale_product` (type: `boolean`):

This option will delete sale product in the dataset (using the product url) but you will not agreagate data since the data is first store and then treated and dispatched

## `delete_out_of_stock` (type: `boolean`):

This option will delete out of stock product in the dataset (using the product url) but you will not agreagate data since the data is first store and then treated and dispatched

## `waiting_time` (type: `integer`):

Waiting time between each call, you may want to increase that value if you may avoid being blocked by the website

## `proxy_settings` (type: `object`):

Select apify proxy groups or custom proxies you want to test

## Actor input object example

```json
{
  "url": "https://www.igewa.fr/",
  "single_url": "https://www.igewa.fr/product-page/chemise-suzie",
  "delete_duplicate": true,
  "delete_sale_product": false,
  "delete_out_of_stock": true,
  "proxy_settings": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "url": "https://www.igewa.fr/",
    "single_url": "https://www.igewa.fr/product-page/chemise-suzie",
    "proxy_settings": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("street_protractor/wix-product-parser").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 = {
    "url": "https://www.igewa.fr/",
    "single_url": "https://www.igewa.fr/product-page/chemise-suzie",
    "proxy_settings": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("street_protractor/wix-product-parser").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 '{
  "url": "https://www.igewa.fr/",
  "single_url": "https://www.igewa.fr/product-page/chemise-suzie",
  "proxy_settings": {
    "useApifyProxy": true
  }
}' |
apify call street_protractor/wix-product-parser --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QI6kzdvV753nrtpkI/builds/axyiv3KB7wf1vHKkQ/openapi.json
