# Zooplus Scraper \[$0.85/1K💰] | Pet Products (`ahmed_jasarevic/zooplus-scraper`) Actor

Scrape zooplus.com pet products: names, brands, EAN/SKU, prices, crossed-out prices, size variants, availability, ratings, ingredients, nutrition, breadcrumbs and photos. $0.85 per 1,000 products.

- **URL**: https://apify.com/ahmed_jasarevic/zooplus-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zooplus Scraper – Pet Product Prices, EANs & Variants

Scrape public **zooplus.com** pet-supply products from category, brand, search and product pages. Get product names, brands, EAN/GTIN codes, SKUs, current prices, crossed-out prices, currencies, locales, size variants, availability, ratings, ingredients, nutrition, breadcrumbs and photos. **$0.85 per 1,000 products.**

### Pet Product Data For E-commerce And Market Research

Zooplus is one of Europe’s largest online pet-supply retailers. This Actor turns public product pages into a structured dataset for pet retailers, brand teams, price-comparison services, market researchers, dropshipping teams and e-commerce analysts.

- **Price monitoring** — track current and crossed-out prices across markets.
- **Catalogue enrichment** — add EAN, SKU, brand and pack-size data.
- **Variant analysis** — compare sizes, prices and availability per product.
- **Assortment research** — analyze categories, brands and product breadth.
- **Nutrition research** — collect ingredients and analytical constituents.

### How It Works

![How the Zooplus Scraper works: category, brand and search pages to structured pet products with prices, EANs and variants.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-zooplus-scraper.webp)

Paste category, brand, search or individual product URLs. The Actor collects matching products, follows the available result pages, adds product details and writes one row per product.

- One row per product.
- Category, brand and search pages supported.
- Individual product URLs supported.
- Variants returned per pack size.
- Free users get a 10-product preview.

### Search Pet Products By Category, Brand Or Keyword

Use the built-in URL inputs to target the products you need:

- **Categories** — dry food, wet food, treats, litter, toys and accessories.
- **Species** — cats, dogs, small pets, birds and fish.
- **Brands** — Whiskas, Royal Canin, Purina, Felix and other sold brands.
- **Searches** — product keywords and specific product pages.
- **Markets** — zooplus.com serves different locales and currencies.
- **Volume** — cap products with `maxProducts` and pages with `maxListPages`.

### Price, EAN And Variant Fields

Each row can include the product ID, product name, brand, SKU, EAN/GTIN, current price, strike-through price, currency, locale, country, availability, rating, review count, variant count, per-variant SKU, EAN, size, price, strike-through price, currency, availability and nutrition, ingredients, category breadcrumb, image URLs, description and product URL.

Prices, currency and availability depend on the market served to the run. Use connection settings to target a country when needed.

### Input – Configure A Zooplus Run

| Field | Type | Default | Notes |
|---|---|---|---|
| `startUrls` | array | `https://www.zooplus.com/shop/cats/dry_cat_food` | Category, brand, search or product URLs |
| `maxProducts` | integer | `100` | Maximum product detail pages saved; free users capped at 10 |
| `maxListPages` | integer | `5` | Result pages followed per start URL, about 48 products each |
| `maxConcurrency` | integer | `15` | Pages processed in parallel, 1–50 |
| `includeUnavailable` | boolean | `true` | Include out-of-stock products and variants |
| `proxy` | object | Off | Optional connection settings for country targeting or large runs |

### Output – Product Fields

- **Identity** — `productId`, `productName`, `brand`, `sku`, `ean`
- **Price** — `price`, `strikeThroughPrice`, `strikeThroughPriceLabel`, `priceMin`, `priceMax`, `currency`
- **Market** — `locale`, `country`
- **Availability** — `availability`
- **Social proof** — `rating`, `reviewCount`
- **Variants** — `variantCount`, `variants.sku`, `variants.ean`, `variants.size`, `variants.price`, `variants.strikeThroughPrice`, `variants.currency`, `variants.availability`, `variants.nutrition`
- **Content** — `ingredients`, `nutrition`, `description`
- **Category** — `categoryBreadcrumb`, `breadcrumb`
- **Media** — `imageUrls`
- **URL** — `url`

### Example Input – Dry Cat Food Products

```json
{
  "startUrls": [
    "https://www.zooplus.com/shop/cats/dry_cat_food"
  ],
  "maxProducts": 100,
  "maxListPages": 3,
  "includeUnavailable": false
}
```

### Example Output – Whiskas Dry Cat Food

```json
{
  "productId": "397986",
  "productName": "Whiskas Dry Cat Food Economy Packs",
  "brand": "Whiskas",
  "sku": "397986.1",
  "ean": "5900951259227",
  "price": 58.49,
  "strikeThroughPrice": 59.98,
  "currency": "EUR",
  "locale": "en-GB",
  "country": "INT",
  "availability": "InStock",
  "rating": 5,
  "reviewCount": 43,
  "variantCount": 2,
  "variants": [
    {
      "sku": "397986.1",
      "ean": "5900951259227",
      "size": "7.2kg",
      "price": 58.49,
      "strikeThroughPrice": 59.98,
      "currency": "EUR",
      "availability": "InStock",
      "nutrition": [
        { "name": "protein", "amount": 30, "unit": "%" }
      ]
    }
  ],
  "ingredients": "Meat and animal derivatives, cereals, oils and fats.",
  "categoryBreadcrumb": "zooplus > Cat > Dry Cat Food > Whiskas > Whiskas Dry Cat Food Economy Packs",
  "imageUrls": ["https://media.zooplus.com/example.jpg"],
  "url": "https://www.zooplus.com/shop/cats/dry_cat_food/whiskas/eco_packs/397986"
}
```

### Export Pet Product Data And Schedule Alerts

Download JSON, CSV, Excel or HTML from Apify Console, or use the Apify API. Send new products to Google Sheets, Airtable, Make, Zapier, n8n or a webhook. Schedule daily runs to track new products, price changes, stock status and variant updates.

### Related Actors

- [IKEA Scraper](https://apify.com/ahmed_jasarevic/ikea-scraper) — add furniture and home-product data
- [Target Scraper](https://apify.com/ahmed_jasarevic/target-scraper) — add US retail products
- [Nykaa Scraper](https://apify.com/ahmed_jasarevic/nykaa-scraper) — add beauty and personal-care products
- [Total Wine Scraper](https://apify.com/ahmed_jasarevic/total-wine-scraper) — add beverage catalogue data

### FAQ

#### Do prices depend on my location?

Yes. Prices, currency and availability depend on the market and locale served to the run. Different countries can show different prices and stock.

#### What is `strikeThroughPrice`?

It is the crossed-out or reference price shown by Zooplus, usually for multipacks or previous prices. Not every product has one.

#### Why are variants returned separately?

Because one product can have several pack sizes, each with its own SKU, EAN, price, stock status and nutrition data.

#### Are ingredients always available?

No. Ingredients and nutrition appear only when Zooplus publishes them for that product. Some brands omit them.

#### Does the Actor include out-of-stock products?

Yes by default. Set `includeUnavailable` to `false` to keep only products and variants with a purchasable offer.

#### How many products can one run return?

`maxProducts` defaults to 100. Free users get a 10-product preview.

#### Do I need a Zooplus account?

No. The Actor reads public product pages without login.

#### How much does it cost?

FREE and BRONZE users pay **$0.00085 per product** ($0.85 per 1,000). SILVER and GOLD+ pay **$0.0008** ($0.80 per 1,000), plus a small Actor Start event.

### For AI Agents & LLM Apps

Returns one row per public Zooplus product with pricing, EAN, variants, availability, ingredients and category fields.

Minimal working input:

```json
{ "startUrls": ["https://www.zooplus.com/shop/cats/dry_cat_food"], "maxProducts": 20, "includeUnavailable": true }
```

Output fields: `productId, productName, brand, sku, ean, price, strikeThroughPrice, strikeThroughPriceLabel, priceMin, priceMax, currency, locale, country, availability, rating, reviewCount, variantCount, variants, nutrition, ingredients, description, categoryBreadcrumb, breadcrumb, imageUrls, url, scrapedAt`.

Behaviors an agent should know:

- `strikeThroughPrice` can be `null`.
- `variants` contains one entry per pack size with its own EAN and stock status.
- `nutrition` is nested inside each variant and can be empty.
- Prices and availability are market-dependent.
- Free users get a 10-product preview.

Billing: **$0.00085 per product** on FREE/BRONZE ($0.85 per 1,000), $0.0008 on SILVER and GOLD+ ($0.80 per 1,000), plus a small Actor Start event.

### Legal & Compliance Disclaimer

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Zooplus.

It collects publicly available product listings. Prices, stock, ingredients and product details are published by Zooplus and its brands and may change. Users are responsible for complying with Zooplus’s terms, privacy law and applicable consumer and advertising rules. Nothing here is legal, veterinary or nutritional advice.

### SEO Keywords

zooplus scraper, pet products, pet food data, zooplus prices, dog food data, cat food data, pet supplies, ean data, product variants, price tracking, pet ecommerce, product data, competitor prices, pet market data, sku data, nutrition data, product catalog, ecommerce scraping

# Actor input Schema

## `startUrls` (type: `array`):

Zooplus.com category, brand, search or product URLs. Example: https://www.zooplus.com/shop/cats/dry_cat_food or https://www.zooplus.com/shop/dogs. Product pages are detected automatically.

## `maxProducts` (type: `integer`):

Maximum number of product detail pages to scrape. Free users are capped at 10 products.

## `maxListPages` (type: `integer`):

Maximum number of paginated category/search pages to follow per start URL (48 products per page).

## `maxConcurrency` (type: `integer`):

How many pages are downloaded in parallel. Higher is faster but more likely to trigger rate limiting. Recommended 10-30.

## `includeUnavailable` (type: `boolean`):

If disabled, products/variants without a purchasable offer are dropped.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.zooplus.com/shop/cats/dry_cat_food"
    }
  ],
  "maxProducts": 100,
  "maxListPages": 5,
  "maxConcurrency": 15,
  "includeUnavailable": true,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.zooplus.com/shop/cats/dry_cat_food"
        }
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/zooplus-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 = {
    "startUrls": [{ "url": "https://www.zooplus.com/shop/cats/dry_cat_food" }],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/zooplus-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.zooplus.com/shop/cats/dry_cat_food"
    }
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/zooplus-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/zooplus-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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