# Mamas And Papas Scraper (`mrdoe/mamas-and-papas-scraper`) Actor

Scrape product listings from Mamas & Papas - prices, descriptions, availability, images, and variants across the UK baby and nursery retailer's full catalog. No login required, built for price monitoring and catalog research. Give it a category or search URL and get one row per product.

- **URL**: https://apify.com/mrdoe/mamas-and-papas-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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?

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

![Mamas And Papas Scraper hero](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/mamas-and-papas-scraper--hero.png)

### What does Mamas & Papas Scraper do?

Mamas & Papas Scraper collects products from Mamas & Papas category and product pages and returns them as clean, structured data. Open a category page on the Mamas & Papas website, paste the URL, press **Start**, and download a dataset with the product title, brand, category, age or size band, colour, gender, current price, "was" price, sale flag, availability, size options, description, and images. Use it for price monitoring, range and assortment analysis, competitor research, and catalogue enrichment.

### Why use Mamas & Papas Scraper?

- **Whole categories in one run** – point it at a category page and it walks the whole product list.
- **Nursery-retail fields** – age/size band, colour, gender, and collection lifted out of the site's own merchandising data.
- **Sale tracking** – current price, "was" price, and a sale flag for every product.
- **Clean, normalised output** – prices as numbers, `null` for missing values, deduplicated by product.
- **No proxy needed** – the catalogue is public, so runs are fast and cheap.
- **Automation ready** – schedule runs and connect results to Google Sheets, Make, Zapier, or your own API.

### What makes this different?

The Actor reads Mamas & Papas' structured product catalogue, so it returns the fields nursery-goods buyers actually filter on — age/size band, colour, gender, and range — as separate columns, alongside the current and "was" price for sale monitoring. One request per page of results, so a full category export is quick.

### What data can you extract?

![Mamas And Papas Scraper dataset output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/mamas-and-papas-scraper--output.png)

![Mamas And Papas Scraper data fields](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/mamas-and-papas-scraper--fields.png)

| Field                                      | Description                                                 |
| ------------------------------------------ | ----------------------------------------------------------- |
| `url` / `handle` / `id`                    | Product page URL, Shopify handle, and product ID            |
| `sku`                                      | Stock-keeping unit of the first variant                     |
| `title`                                    | Product title                                               |
| `brand`                                    | Brand (e.g. Mamas & Papas, Venicci, BabyBjörn)              |
| `productType` / `category` / `subCategory` | Product classification                                      |
| `collectionName`                           | Design collection / character (e.g. "Welcome To The World") |
| `ageSize`                                  | Age or size band (e.g. "Newborn", "0-3 Months")             |
| `colour`                                   | Colour                                                      |
| `gender`                                   | Boys / Girls / Unisex, where tagged                         |
| `badge`                                    | On-site badge, e.g. "New In!"                               |
| `price`                                    | Current price (lowest variant) as a number                  |
| `wasPrice`                                 | Pre-discount price, when the product is reduced             |
| `onSale`                                   | Whether the product is discounted or on promotion           |
| `priceRange`                               | Highest variant price, when variants differ                 |
| `priceCurrency`                            | Currency code, `GBP`                                        |
| `available`                                | Whether any variant is in stock                             |
| `variantCount` / `sizeOptions` / `options` | Variant summary and the available choices                   |
| `description`                              | Product description (plain text)                            |
| `imageUrl` / `images`                      | Main image and all image URLs                               |
| `tags`                                     | Raw catalogue tags                                          |
| `publishedAt` / `updatedAt`                | Catalogue timestamps                                        |
| `scrapedAt`                                | ISO timestamp of collection                                 |

### How to use Mamas & Papas Scraper

![How Mamas And Papas Scraper works](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/mamas-and-papas-scraper--how-it-works.png)

1. Open the Actor.
2. On [mamasandpapas.com](https://www.mamasandpapas.com), open a category page (its URL contains `/collections/`). Copy the URL from your browser.
3. Paste it into **Start URLs**. Add more URLs to combine several categories. Leave it empty to scrape the whole catalogue.
4. Set **Max products per start URL**.
5. Press **Start**.
6. Download the dataset as JSON, CSV, Excel, or XML, or use the API.

### Input Parameters

| Parameter            | Type    | Required | Default             | Description                                                                                         |
| -------------------- | ------- | -------- | ------------------- | --------------------------------------------------------------------------------------------------- |
| `startUrls`          | Array   | No       | Pushchairs category | Mamas & Papas category (`/collections/…`) or product (`/products/…`) URLs. Empty = whole catalogue. |
| `maxItems`           | Integer | No       | 20                  | Maximum products per start URL (or for the whole catalogue when no start URL is given).             |
| `proxyConfiguration` | Object  | No       | No proxy            | Optional. The catalogue is not bot-protected; only useful if your IP gets rate-limited.             |

### Output Data

Each dataset item is one product. Example (trimmed):

```json
{
    "url": "https://www.mamasandpapas.com/products/corduroy-embroidered-romper-set-s42lo1ab1",
    "handle": "corduroy-embroidered-romper-set-s42lo1ab1",
    "id": 8123456789012,
    "sku": "S42LO1AB1",
    "title": "Corduroy Embroidered Romper Set",
    "brand": "Mamas & Papas",
    "productType": "Outfits & Sets",
    "category": "Clothing",
    "subCategory": "Outfits & Sets",
    "collectionName": "Welcome To The World",
    "ageSize": "Up To 1 Month",
    "colour": "Pink",
    "gender": "Girls",
    "badge": "New In!",
    "price": 24.0,
    "wasPrice": 32.0,
    "onSale": true,
    "priceCurrency": "GBP",
    "available": true,
    "variantCount": 5,
    "sizeOptions": ["Up To 1 Month", "0-3 Months", "3-6 Months", "6-9 Months", "9-12 Months"],
    "description": "A pretty two-piece romper set in soft corduroy with delicate embroidery...",
    "imageUrl": "https://cdn.shopify.com/s/files/1/.../romper-front.jpg",
    "images": ["https://cdn.shopify.com/s/files/1/.../romper-front.jpg"],
    "scrapedAt": "2026-09-01T09:00:00.000Z"
}
```

### Usage Examples

**A whole category**

- Start URL: a Mamas & Papas category page (URL contains `/collections/`)
- `maxItems`: 1000

**Sale monitoring**

- Start URL: the sale/clearance category page
- `maxItems`: 500, then schedule daily and compare `price` vs `wasPrice`

**Whole catalogue snapshot**

- Leave **Start URLs** empty
- `maxItems`: 5000

### Tips for Best Results

- Category pages are the fastest way to target a product set; the whole-catalogue mode is best for a periodic full snapshot.
- Add several category URLs to cover multiple ranges in one run; `maxItems` applies to each separately.
- For monitoring, schedule the Actor and diff `price`, `wasPrice`, and `available` between runs.

### Known Limitations

- Prices are shop prices for the site's default region; basket-level and member promotions are not applied.
- `wasPrice` is only present when the catalogue records a pre-discount price for the product.
- Stock is a catalogue-level "any variant available" flag, not per-size live stock.
- Bundle products list the bundle price; individual bundled items are not broken out.
- Very large categories are paginated to a practical depth.

### Integrations

Connect results to Google Sheets, Make, Zapier, Slack, or your own systems via the Apify API and webhooks. Schedule runs to keep a dataset current.

### Export Formats

JSON, CSV, Excel, and XML from the Dataset tab or the Apify API.

### Frequently Asked Questions

**How many products can I get per run?**
Up to `maxItems` per start URL. Use multiple category URLs, or the whole-catalogue mode, for wider coverage.

**Can I scrape one product?**
Yes. Paste a product page URL (it contains `/products/`) and the Actor returns that single product.

**How are duplicates handled?**
Products are deduplicated by handle within a run, so overlapping categories won't double up.

**Why are some fields `null`?**
The catalogue does not record that attribute for the product — common for `gender` on nursery furniture or `wasPrice` on full-price lines.

**Do I need a proxy?**
No. The product catalogue is public. A proxy is only useful if your own IP gets rate-limited.

**How fresh is the data?**
Every run reads the live catalogue.

### Support

Found a problem or need an extra field? Open an issue on the Actor's **Issues** tab in the Apify Console.

### Legal / Responsible Use

You are responsible for how you use this Actor and the data it collects, including compliance with Mamas & Papas' Terms of Use and applicable laws. The data is product-catalogue information; collect only what you need and respect the website's terms.

### Preview

![Mamas And Papas Scraper input options](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/mamas-and-papas-scraper--input.png)

# Actor input Schema

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

Mamas & Papas category or product pages. On mamasandpapas.com, open a category (its URL contains /collections/, for example https://www.mamasandpapas.com/collections/pushchairs) and paste it here. Individual product pages (URL contains /products/) also work. Leave empty to scrape the whole catalogue.

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

Maximum number of products to collect for each start URL (or, when no start URL is given, for the whole catalogue). Keep this low for quick test runs and raise it for full exports.

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

Optional. The product catalogue is not bot-protected, so a proxy is not required — only useful if your IP gets rate-limited.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.mamasandpapas.com/collections/pushchairs"
    }
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `products` (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.mamasandpapas.com/collections/pushchairs"
        }
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/mamas-and-papas-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.mamasandpapas.com/collections/pushchairs" }],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/mamas-and-papas-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.mamasandpapas.com/collections/pushchairs"
    }
  ],
  "maxItems": 20
}' |
apify call mrdoe/mamas-and-papas-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/mamas-and-papas-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/MyVeYBWEVJiPeUg6T/builds/2Y70kQnF6RasaHWnV/openapi.json
