# Zooplus Spain Scraper — Pet Supplies & Food (`studio-amba/zooplus-es-scraper`) Actor

Scrape pet products, prices, ratings, and availability from Zooplus.es — Spain's leading online pet supply retailer with thousands of products. Supports search queries and category browsing.

- **URL**: https://apify.com/studio-amba/zooplus-es-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

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

## Zooplus Spain Scraper

Scrapes pet food and supplies from Zooplus.es, Spain's leading online pet
retailer, with thousands of products for dogs, cats, birds, fish, and small
animals. Extract names, prices, discounts, ratings, and availability at scale.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchQuery` | String | Spanish search term (e.g. `"pienso perro"`, `"comida gato"`) |
| `categoryUrls` | Array | Category URLs (e.g. `/shop/tienda_perros/pienso_perros`) |
| `maxResults` | Integer | Limit (default: 100) |
| `proxyConfiguration` | Object | Proxy settings (residential, country ES recommended) |

Default: scrapes the dog dry food category when no input is provided.

### Output

```json
{
    "name": "Wolf of Wilderness Adult «Blue River» salmón - sin cereales",
    "brand": "Wolf Of Wilderness",
    "price": 52.99,
    "originalPrice": 63.59,
    "pricePerUnit": "3,68 EUR/kg",
    "currency": "EUR",
    "productId": "477040",
    "inStock": true,
    "rating": 4.5,
    "reviewCount": 80,
    "url": "https://www.zooplus.es/shop/tienda_perros/pienso_perros/wolf_of_wilderness/wolf_wilderness/477040",
    "imageUrl": "https://media.zooplus.com/bilder/...",
    "scrapedAt": "2026-07-07T10:00:00.000Z"
}
```

### Fields

- `name` — product name
- `brand` — brand or manufacturer
- `price` — current selling price (EUR)
- `originalPrice` — price before discount, when on offer
- `pricePerUnit` — price per kg/litre for easy comparison
- `rating` / `reviewCount` — customer rating on a 0–5 scale and number of reviews
- `inStock` — availability flag
- `productId` — Zooplus internal product ID
- `imageUrl` — main product image
- `url` — full product page URL
- `scrapedAt` — ISO 8601 timestamp of collection

### Technical approach

Zooplus Spain runs on Next.js. Listing and category pages embed a structured
JSON-LD product list containing names, brands, prices, list prices, unit
prices, ratings, and availability. Search result pages render product cards
directly in the server HTML. The scraper reads both, so it collects complete
product records straight from listing pages without needing a separate request
per product. This keeps runs fast and cheap.

### How to scrape Zooplus data

1. Go to this actor's page on the [Apify Store](https://apify.com/store).
2. Click **Try for free** to open it in Apify Console.
3. Enter a Spanish search query (for example `pienso perro`) or paste one or
   more category URLs from Zooplus.es.
4. Set the maximum number of results and, for best reliability, keep the proxy
   set to residential with country ES.
5. Click **Start** and wait for the run to finish.
6. Download your data in JSON, CSV, or Excel, or connect it to your workflow
   via the Apify API.

You can also schedule regular runs, set up webhooks for real-time
notifications, or integrate the results directly into your application using
the [Apify API](https://docs.apify.com/api).

### Example use cases

- **Price monitoring** — track pet food prices and discounts across brands.
- **Competitive intelligence** — compare Zooplus.es pricing against your own.
- **Assortment tracking** — monitor which products and variants are listed.
- **Market research** — analyse ratings and review counts to spot best sellers.

### Cost and performance

The cost depends on the number of results and the pages scraped. As a rough
guide:

- Listing/search extraction: roughly 0.25 compute units per 1,000 results.
- Because full records come from listing pages, no per-product request is
  needed, keeping runs efficient.

The actual cost depends on your Apify subscription plan. Check the
[Apify pricing page](https://apify.com/pricing) for details.

### Tips and tricks

- **Start small**: test with `maxResults: 5` before running large scrapes.
- **Use ES residential proxies**: they give the best success rates for
  Zooplus.es.
- **Search in Spanish**: keywords like `pienso perro`, `comida gato`, or
  `arena para gatos` match the site's language.
- **Schedule runs**: set up recurring runs to keep your dataset fresh.
- **No login required**: this actor scrapes publicly available data without an
  account or cookies.

### Limitations

- Data is scraped from the public website and may change without notice.
- Some products or listings may not be available in all regions.
- Very large scraping jobs may be slower due to proxy rotation and rate
  limiting.
- Respect the website's terms of service and use responsibly.

### Features

- **No login or cookies required** — scrapes publicly available data.
- **Structured output** — clean JSON objects ready for processing.
- **Pagination handling** — automatically follows multiple pages of results.
- **Proxy support** — configurable proxy settings for reliable, large-scale
  scraping.
- **Flexible input** — search by keyword or crawl category URLs.
- **Scheduled runs** — run on a schedule to keep your dataset up to date.
- **API access** — integrate results via the Apify API or webhooks.

### FAQ

**Is it legal to scrape Zooplus?**
Web scraping of publicly available data is generally permitted. This actor only
accesses information that is publicly visible to any website visitor. Always
review the website's terms of service before scraping.

**How often should I run this scraper?**
For price monitoring or competitive intelligence, daily or weekly runs are
common. Set up a [schedule](https://docs.apify.com/schedules) in Apify Console
to automate this.

**Can I export the data to Google Sheets or Excel?**
Yes. After each run, you can download results in CSV, JSON, or Excel format
directly from Apify Console, or connect results to Google Sheets using Apify
integrations.

**What if the scraper stops working?**
Websites change their structure occasionally. If you notice issues, please open
an issue on the actor's page. We actively maintain this scraper and fix issues
promptly.

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API — maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

## `searchQuery` (type: `string`):

Search for products by keyword (e.g., 'pienso perro', 'comida gato', 'arena gato').

## `categoryUrls` (type: `array`):

Zooplus.es category page URLs to scrape. Example: https://www.zooplus.es/shop/tienda\_perros/pienso\_perros

## `maxResults` (type: `integer`):

Maximum number of products to return.

## `proxyConfiguration` (type: `object`):

Proxy settings for better reliability on large runs.

## Actor input object example

```json
{
  "searchQuery": "pienso perro",
  "categoryUrls": [
    {
      "url": "https://www.zooplus.es/shop/tienda_perros/pienso_perros"
    }
  ],
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}
```

# 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 = {
    "searchQuery": "pienso perro",
    "categoryUrls": [
        {
            "url": "https://www.zooplus.es/shop/tienda_perros/pienso_perros"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "ES"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/zooplus-es-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 = {
    "searchQuery": "pienso perro",
    "categoryUrls": [{ "url": "https://www.zooplus.es/shop/tienda_perros/pienso_perros" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "ES",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/zooplus-es-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 '{
  "searchQuery": "pienso perro",
  "categoryUrls": [
    {
      "url": "https://www.zooplus.es/shop/tienda_perros/pienso_perros"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}' |
apify call studio-amba/zooplus-es-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/zooplus-es-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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