# MoneySuperMarket Scraper - UK Financial Comparison (`studio-amba/moneysupermarket-scraper`) Actor

Scrape MoneySuperMarket.com for credit cards, broadband, energy, insurance, and mortgage deals. Extract prices, features, provider details, and ratings from the UK's largest financial comparison site.

- **URL**: https://apify.com/studio-amba/moneysupermarket-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

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## MoneySuperMarket Scraper - UK Financial Comparison Data

Scrape financial comparison deals from MoneySuperMarket.com, the UK's largest price comparison website. Extract credit card offers, broadband packages, energy tariffs, insurance quotes, mortgage rates, and loan deals with prices, features, provider details, and ratings.

### Why use this actor?

MoneySuperMarket aggregates deals from hundreds of UK financial providers across 8 categories. This actor lets you programmatically collect and compare those deals at scale. Perfect for fintech companies, price comparison platforms, market researchers, and anyone monitoring UK financial product pricing. No login or cookies required.

### How to scrape MoneySuperMarket data

1. Create a free Apify account at [apify.com](https://apify.com)
2. Open the MoneySuperMarket Scraper actor page
3. Select a financial category (credit cards, broadband, energy, etc.)
4. Optionally narrow to a subcategory or search for specific providers
5. Click "Start" to begin scraping
6. Download results as JSON, CSV, or Excel when the run completes

You can also call the actor via the Apify API, schedule recurring runs, or integrate with webhooks for automated data pipelines.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | Select | No | Financial category to scrape (default: credit-cards). Options: credit-cards, broadband, gas-and-electricity, mortgages, car-insurance, home-insurance, travel-insurance, loans |
| `subcategory` | String | No | Narrow to a specific subcategory (e.g. "cashback", "fibre-broadband", "fixed-price-energy"). Leave empty for all. |
| `searchQuery` | String | No | Filter results by provider or keyword (e.g. "Amex", "BT", "Octopus") |
| `maxResults` | Integer | No | Maximum deals to return (default: 50, max: 500) |
| `proxyConfiguration` | Object | No | Proxy settings. GB residential proxies recommended. |

#### Subcategories by category

**Credit Cards:** cashback, travel, balance-transfer, interest-free, rewards, business
**Broadband:** fibre, packages, broadband-and-tv, broadband-and-phone, mobile-broadband
**Energy:** fixed-price, dual-fuel, electricity, gas, business
**Mortgages:** fixed-rate, tracker, buy-to-let, first-time-buyer, remortgage
**Car Insurance:** cheap, temporary, black-box, young-drivers
**Home Insurance:** contents, buildings, landlord
**Travel Insurance:** single-trip, annual, europe, family
**Loans:** personal, car, debt-consolidation

### Output

Each result contains:

| Field | Type | Example |
|-------|------|---------|
| `planName` | String | `"Platinum Cashback Everyday"` |
| `provider` | String | `"American Express"` |
| `category` | String | `"Credit Cards"` |
| `subcategory` | String | `"cashback"` |
| `monthlyPrice` | Number | `29.99` |
| `annualPrice` | Number | `359.88` |
| `currency` | String | `"GBP"` |
| `rating` | Number | `4.5` |
| `features` | Array | `["5% cashback for 3 months", "No annual fee"]` |
| `planDescription` | String | `"Earn cashback on everyday spending..."` |
| `url` | String | `"https://www.moneysupermarket.com/credit-cards/..."` |
| `scrapedAt` | String | `"2026-06-09T14:30:00.000Z"` |

### Example output

```json
{
    "planName": "Platinum Cashback Everyday",
    "provider": "American Express",
    "category": "Credit Cards",
    "subcategory": "cashback",
    "monthlyPrice": null,
    "annualPrice": null,
    "currency": "GBP",
    "rating": 4.5,
    "features": [
        "5% cashback for 3 months",
        "Up to 1% cashback after",
        "No annual fee",
        "Contactless payments"
    ],
    "planDescription": "Earn cashback on everyday spending with no annual fee",
    "url": "https://www.moneysupermarket.com/credit-cards/cashback/amex-platinum/",
    "scrapedAt": "2026-06-09T14:30:00.000Z"
}
````

```json
{
    "planName": "Full Fibre 900",
    "provider": "BT",
    "category": "Broadband",
    "subcategory": "fibre",
    "monthlyPrice": 39.99,
    "annualPrice": 479.88,
    "currency": "GBP",
    "rating": 4.2,
    "features": [
        "900Mbps average download speed",
        "24-month contract",
        "BT Smart Hub 2 included",
        "Unlimited usage"
    ],
    "planDescription": "Ultra-fast full fibre broadband with average speeds of 900Mbps",
    "url": "https://www.moneysupermarket.com/broadband/providers/bt/",
    "scrapedAt": "2026-06-09T14:30:00.000Z"
}
```

### Use cases

- **Fintech comparison** -- Build your own comparison engine using real MoneySuperMarket data across credit cards, broadband, energy, and insurance
- **Market research** -- Track UK financial product pricing trends, new entrants, and competitive positioning over time
- **Price monitoring** -- Schedule daily runs to detect when providers change prices, add features, or launch new deals
- **Lead generation** -- Identify providers offering specific features or price points for partnership or sales outreach
- **Data journalism** -- Analyze cost-of-living data: energy tariff changes, mortgage rate movements, broadband price competition
- **Academic research** -- Study UK financial product markets, consumer choice architecture, and comparison platform dynamics

### Categories available

| Category | URL Path | What you get |
|----------|----------|-------------|
| Credit Cards | `/credit-cards/` | Card offers, APR, cashback rates, balance transfer deals |
| Broadband | `/broadband/` | Internet packages, speeds, monthly costs, contract lengths |
| Energy | `/gas-and-electricity/` | Gas & electricity tariffs, unit rates, standing charges |
| Mortgages | `/mortgages/` | Mortgage rates, LTV, fixed/tracker deals |
| Car Insurance | `/car-insurance/` | Policy types, coverage options, provider ratings |
| Home Insurance | `/home-insurance/` | Buildings, contents, combined policies |
| Travel Insurance | `/travel-insurance/` | Single-trip, annual, family, European cover |
| Loans | `/loans/` | Personal loans, car finance, APR, repayment terms |

### Tips for best results

- **Use GB proxies** -- MoneySuperMarket serves UK-specific content. Use `apifyProxyCountry: "GB"` for accurate results.
- **Start with credit cards or broadband** -- These categories have the most publicly listed deals without needing personal details.
- **Combine category + subcategory** -- For focused scrapes, specify both (e.g. category "credit-cards" + subcategory "cashback").
- **Schedule recurring runs** -- Financial products change frequently. Weekly scrapes capture price movements and new offers.

### Cost estimate

This actor uses Playwright (headless browser) and requires approximately **3-8 compute units per 50 results** depending on the category and how many subcategory pages are crawled. At standard Apify pricing, that is roughly **$0.15-0.40 per 50 deals**.

### Integrations

Connect MoneySuperMarket data to your existing tools:

- **Google Sheets** -- Automatic export after every run
- **Slack / Email** -- Get notified when deals match your criteria
- **Webhooks** -- Push financial data to your own API endpoint
- **Zapier / Make** -- Connect to 5,000+ apps without code
- **Power BI / Tableau** -- Build financial comparison dashboards

### Limitations

- Energy comparison results require a postcode for personalized quotes on moneysupermarket.com. This actor scrapes publicly listed tariff information and editorial content, not personalized quotes.
- Insurance categories show general information and provider listings rather than personalized quotes (which require personal details).
- MoneySuperMarket is a dynamic web application. The actor uses a headless browser which is slower than API-based scrapers.
- Data reflects what is publicly listed on the website at scrape time and may change without notice.
- Some deal details (exact APR, eligibility criteria) may require visiting individual deal pages.

# Actor input Schema

## `category` (type: `string`):

Financial product category to scrape

## `subcategory` (type: `string`):

Optional subcategory to narrow results (e.g. 'cashback', 'travel-credit-cards', 'balance-transfer', 'fibre-broadband', 'fixed-price-energy'). Leave empty for all deals in the category.

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

Search term for finding specific deals or providers (e.g. 'Amex', 'BT broadband', 'Octopus Energy')

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

Maximum number of deals to return

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

Apify proxy settings. Residential proxies recommended for UK geo-targeting.

## Actor input object example

```json
{
  "category": "credit-cards",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/moneysupermarket-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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    } }

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/moneysupermarket-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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call studio-amba/moneysupermarket-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MoneySuperMarket Scraper - UK Financial Comparison",
        "description": "Scrape MoneySuperMarket.com for credit cards, broadband, energy, insurance, and mortgage deals. Extract prices, features, provider details, and ratings from the UK's largest financial comparison site.",
        "version": "0.1",
        "x-build-id": "GrjgCICofPMYNjgS2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~moneysupermarket-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-moneysupermarket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/studio-amba~moneysupermarket-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-moneysupermarket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/studio-amba~moneysupermarket-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-moneysupermarket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "category": {
                        "title": "Category",
                        "enum": [
                            "credit-cards",
                            "broadband",
                            "gas-and-electricity",
                            "mortgages",
                            "car-insurance",
                            "home-insurance",
                            "travel-insurance",
                            "loans"
                        ],
                        "type": "string",
                        "description": "Financial product category to scrape",
                        "default": "credit-cards"
                    },
                    "subcategory": {
                        "title": "Subcategory",
                        "type": "string",
                        "description": "Optional subcategory to narrow results (e.g. 'cashback', 'travel-credit-cards', 'balance-transfer', 'fibre-broadband', 'fixed-price-energy'). Leave empty for all deals in the category."
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search term for finding specific deals or providers (e.g. 'Amex', 'BT broadband', 'Octopus Energy')"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of deals to return",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Residential proxies recommended for UK geo-targeting.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "GB"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
