# Smyths Toys Scraper: Prices, EAN Codes, Stock & Product Data (`fayoussef/smythstoys-scraper`) Actor

Scrape Smyths Toys UK and Ireland by category, search or product URL. Get prices, was prices, discounts, EAN barcodes, brand, ratings, reviews, images and descriptions, plus delivery and click & collect stock. Track LEGO and toy prices. Proxies included on paid plans.

- **URL**: https://apify.com/fayoussef/smythstoys-scraper.md
- **Developed by:** [Youssef Farhan](https://apify.com/fayoussef) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 products

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

## Smyths Toys Scraper: Prices, EAN Codes, Stock & Product Data

### What does Smyths Toys Scraper do?

Smyths Toys Scraper lets you **scrape Smyths Toys product data at scale** from [smythstoys.com](https://www.smythstoys.com/uk/en-gb), the UK and Ireland's biggest toy retailer. Paste any **category, search or product URL**, or just type a search term like *lego* or *paw patrol*, and get every product with its **price, was price, discount, EAN barcode, brand, rating, review count, description, features, age range, images and category path**. Add **home delivery and click & collect stock status** with one switch.

It works as a ready-made **Smyths Toys API**: run it from the Apify Console, call it over the [Apify API](https://docs.apify.com/api/v2), schedule it daily, connect it to Google Sheets, Make, Zapier or n8n, or call it from an AI agent through the Apify MCP server. Proxies are included on paid Apify plans, so there is nothing to set up.

### Why use this Smyths Toys scraper?

- **Price monitoring**: track Smyths Toys prices, was prices and discounts every day, and catch price drops on LEGO, PAW Patrol, Barbie, Pokemon, prams and gaming.
- **Price comparison and MAP tracking**: every product comes with its **EAN barcode**, so you can match it against Argos, Amazon, Very, The Entertainer or your own catalogue.
- **Stock checking**: see which toys are in stock for home delivery and click & collect, ahead of Christmas and big launches.
- **Market research**: export whole categories (toys, baby, outdoor, gaming) with ratings and review counts to see what sells.
- **Catalogue and product feeds**: get descriptions, features, age ranges, safety warnings and full-size images for listings or comparison sites.

Other things that matter:

- **Three ways in**: category URLs, search terms or product URLs (bundle pages too), mixed freely in one run.
- **Every page, automatically**: a category or search is collected in full, whatever page number you pasted.
- **Fast**: several workers run in parallel; about 600 products with full details take around three minutes.
- **No duplicates**: a product found by two inputs is saved once.
- **UK and Ireland** stores, in GBP and EUR.

### How to scrape Smyths Toys data

1. Click **Try for free** and open the **Input** tab.
2. Paste one or more **Smyths Toys URLs**: a category (`.../c/SM060231`), a search (`.../search?text=lego`) or a product (`.../p/235359`, or a bundle `.../b/700138`).
3. Or type **search terms**, one per line, and pick the store (UK or Ireland) and an optional sort, such as price low to high.
4. Set **Max products**, and choose **Full product details** (on by default) and **Stock status** (off by default).
5. Click **Start**. Download the results as **JSON, CSV, Excel, HTML or XML**, or read them through the API.

### Input

Everything is set in the **Input** tab. The main fields:

| Field | What it does |
|---|---|
| Smyths Toys URLs | Category, search, product or bundle URLs from smythstoys.com |
| Search terms | Words to search, exactly as in the site's search box |
| Market for search terms | UK (GBP) or Ireland (EUR) |
| Sort search terms by | Relevance, bestsellers, price, rating or newest |
| Max products | Stop after this many products |
| Full product details | EAN, description, features, images, category path and more |
| Stock status | Home delivery and click & collect availability |

```json
{
  "startUrls": [
    { "url": "https://www.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231" },
    { "url": "https://www.smythstoys.com/uk/en-gb/outdoor/sports-and-equipment/football/kick-about-interactive-football-training-game/p/235359" }
  ],
  "searchTerms": ["paw patrol"],
  "market": "uk/en-gb",
  "sortBy": "price_asc",
  "maxItems": 500,
  "includeDetails": true,
  "includeStock": false
}
```

### Output: Smyths Toys product data

One item per product. You can download the dataset as JSON, HTML, CSV or Excel, and switch between the **Products**, **Pricing** and **Stock** table views.

```json
{
  "productCode": "235359",
  "name": "Kick-About Interactive Football Training Game",
  "url": "https://www.smythstoys.com/uk/en-gb/outdoor/sports-and-equipment/football/kick-about-interactive-football-training-game/p/235359",
  "brand": "Football Training Equipment",
  "price": 29.99,
  "priceText": "£29.99",
  "currency": "GBP",
  "averageRating": 4.7,
  "reviewCount": 187,
  "ean": "5390946122337",
  "availability": "INSTOCK",
  "labels": ["Top Toys", "EXCLUSIVE"],
  "mainImage": "https://image.smythstoys.com/zoom/235359.jpg",
  "features": ["Interactive football trainer with 2 game modes", "Target with LED lights"],
  "breadcrumb": ["Outdoor", "Sports and Equipment", "Football"],
  "safetyWarning": "SMALL PARTS - CHOKING HAZARD. Not suitable for children under 3 years.",
  "deliveryStatus": "INSTOCK",
  "clickCollectStatus": "INSTOCK"
}
```

### Data fields

| Field | Example |
|---|---|
| `productCode` | `235359` |
| `name` | Kick-About Interactive Football Training Game |
| `url` | Full product page URL |
| `brand` | Football Training Equipment |
| `price`, `priceText`, `currency` | `29.99`, `£29.99`, `GBP` |
| `wasPrice`, `rrpPrice`, `standardPrice`, `discountPercent` | Struck-through and reference prices when Smyths shows them |
| `averageRating`, `reviewCount` | `4.7`, `187` |
| `ean` | `5390946122337` |
| `availability` | `INSTOCK` or `OUTOFSTOCK` |
| `productType` | `REGULAR`, `BUNDLE` or `ESD` (digital code) |
| `labels` | `["Top Toys", "EXCLUSIVE", "-8%"]` |
| `mainImage`, `images` | Full-size product image URLs |
| `description`, `descriptionHtml` | Plain text and original HTML |
| `features` | Bullet points from the product page |
| `ageSuitability` | `["3 Years +"]` |
| `breadcrumb`, `categoryCodes` | `["Outdoor", "Sports and Equipment", "Football"]` |
| `safetyWarning`, `supplierContact`, `supplierPhone`, `manufacturerInfo` | Product safety and supplier details |
| `locationInStore`, `assemblyRequired` | `Outdoor`, `false` |
| `source`, `sourceType`, `position` | Which input found it, and its rank in that listing |
| `deliveryStatus`, `clickCollectStatus` and messages | With **Stock status** on |

### How much does it cost to scrape Smyths Toys?

This Actor is **pay per result**: you pay for each product saved to the dataset, and nothing for products that were not found. There is no monthly fee, and bigger Apify plans get a lower rate per product. The current rates are shown on this Actor's Store page.

- **Free plan**: up to 50 products per run with one worker, so you can test it on your own URLs first.
- **Paid plans**: full listings, parallel workers and **proxies included**. An [Apify plan](https://apify.com/pricing?fpr=youssef) unlocks it.
- Free-plan runs use Apify Proxy (Residential) on your own account.

### Tips for faster and cheaper runs

- **Price-only runs are fastest**: turn off *Full product details* to keep name, prices, rating and image straight from the listing.
- **Turn on Stock status only when you need it**: it is the slowest option.
- **Narrow the input**: a specific category or search term beats a whole department when you only need part of it. Filters in a pasted URL (brand, price band, age) cannot be applied, and the run log says so.
- **Track changes over time**: schedule a daily run and add [Dataset Diff](https://apify.com/fayoussef/dataset-diff?fpr=youssef) to get only new products, price drops and stock changes by Slack, Telegram or email.

### FAQ

#### Is there an official Smyths Toys API?

No public one. This Actor is a Smyths Toys API alternative: you send URLs or search terms and get clean JSON back, by API, on a schedule or from an AI agent.

#### Which Smyths Toys stores are supported?

The UK store (smythstoys.com/uk) and the Ireland store (smythstoys.com/ie). Pasted URLs use the store in their own address; search terms use the store you pick.

#### Can I track Smyths Toys LEGO prices?

Yes. Search for *lego*, or paste a LEGO category URL, and schedule the run daily. Each product has its EAN, so prices can be matched with other retailers.

#### Does it get the EAN barcode?

Yes, with **Full product details** on (the default). Bundles have no single EAN, so that field is empty for them.

#### Can I check if a toy is in stock?

Yes. Turn on **Stock status** to get home delivery and click & collect availability, pre-order flags and expected stock dates.

#### Why are there fewer products than the category shows?

A product found by an earlier input in the same run is saved once. The run log shows how many products each input listed and how many new ones it added.

#### Can I use it from an AI agent?

Yes. Call it through the Apify MCP server or the Apify API from tools like Claude, ChatGPT or n8n agents, and they get structured product data back.

#### Is it legal to scrape Smyths Toys?

This Actor collects publicly visible product information only: no personal data and no login. Make sure your use complies with the site's terms and the laws that apply to you.

### Support and custom solutions

Found a bug or a missing field? Open an **Issue** on this Actor's page and it will be fixed quickly. Need a custom feed, another retailer or a different format? Email youssefarhan24@gmail.com, or [suggest a site to scrape](https://automationbyexperts.com/apify).

# Actor input Schema

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

Paste any mix of Smyths Toys category, search or product URLs, for example https://www.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231, https://www.smythstoys.com/uk/en-gb/search?text=lego or a product page ending in /p/235359. Every page of a category or search is collected (up to Max products), so page and count params in the URL do not matter. A sort in the URL is kept.

## `searchTerms` (type: `array`):

Words to search on Smyths Toys, one per line, exactly as you would type them in the site's search box (for example lego technic or paw patrol). Each term runs as its own search in the market chosen below.

## `market` (type: `string`):

Which Smyths Toys store the search terms run against. URLs always use the store in their own address.

## `sortBy` (type: `string`):

Order for search-term results. Matters when Max products is lower than the number of results, since the first products in this order are the ones collected.

## `maxItems` (type: `integer`):

Stop after this many products across all URLs and search terms. Products found by more than one input are saved once.

## `includeDetails` (type: `boolean`):

Open every product for its EAN, description, features, age range, all images, category path, safety warning and supplier contact. Turn off for a faster price-only run that keeps name, prices, rating and main image.

## `includeStock` (type: `boolean`):

Add home delivery and click & collect stock status for every product (in stock, out of stock, pre-order, expected date). Adds one request per product.

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

How many workers fetch at once. More workers finish large categories faster but need more memory: 3 fits the default 2 GB. Free plan runs use 1.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231"
    }
  ],
  "market": "uk/en-gb",
  "sortBy": "auto",
  "maxItems": 100,
  "includeDetails": true,
  "includeStock": false,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `products` (type: `string`):

Every scraped Smyths Toys product with prices, EAN, brand, rating, description, images and category path.

## `resumeState` (type: `string`):

Progress checkpoint that lets an interrupted or migrated run continue where it stopped.

# 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.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231"
        }
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/smythstoys-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.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231" }],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/smythstoys-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.smythstoys.com/uk/en-gb/baby/travel-systems/c/SM060231"
    }
  ],
  "maxItems": 100
}' |
apify call fayoussef/smythstoys-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fayoussef/smythstoys-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/06105gH4cEb8alg9g/builds/a9vgJYwQTa8IZgJAJ/openapi.json
