# Moneyland Scraper - Swiss Financial Comparison Data (`studio-amba/moneyland-scraper`) Actor

Scrape comparison data from Moneyland.ch, Switzerland's #1 financial comparison site. Extract banking rates, insurance premiums, mortgage rates. No login required.

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

## Moneyland Scraper

Scrape financial comparison data from [Moneyland.ch](https://www.moneyland.ch), Switzerland's leading independent financial comparison platform. Extract savings account rates, mortgage rates, banking fees, insurance premiums, and investment costs across 300+ Swiss financial products.

No login or cookies required.

### How to scrape Moneyland data

1. Go to the [Moneyland Scraper](https://apify.com/studio-amba/moneyland-scraper) on Apify Store.
2. Click **Try for free** to open the actor in Apify Console.
3. Select a **Category** -- Savings, Mortgages, Banking, or Insurance.
4. Optionally enter a **Search Query** to filter results (e.g. "UBS savings", "Hypothek 10 Jahre").
5. Set **Max Results** to control how many items to scrape.
6. Click **Start** and wait for the run to finish.
7. Download your data in JSON, CSV, Excel, or any other supported format.

### What data can you extract from Moneyland?

This scraper extracts structured comparison data across all major Moneyland categories:

#### Savings Accounts & Pillar 3a
- Interest rates on savings accounts (300+ accounts compared)
- Pillar 3a retirement savings account rates
- Account conditions and withdrawal terms
- Interest rate tiers for different balance amounts
- Youth, student, and senior-specific accounts

#### Mortgages & Construction Loans
- Fixed-rate mortgage rates (2-year to 15-year terms)
- Variable-rate mortgage offers
- SARON mortgage rates
- Construction loan terms
- Loan-to-value and amortization conditions

#### Banking, Accounts & Credit Cards
- Private account fees and conditions
- Banking package comparisons
- Credit card annual fees and benefits
- Business account costs
- Prepaid card comparisons

#### Insurance
- Compulsory health insurance (KVG) premiums
- Supplemental health insurance plans
- Life insurance comparisons
- Car insurance quotes
- Household and liability insurance
- Legal protection and travel insurance

### Input parameters

| Parameter | Type | Description |
|---|---|---|
| `category` | Select | Comparison category: savings, mortgages, banking, or insurance. Default: savings |
| `searchQuery` | String | Optional search term to filter results |
| `maxResults` | Integer | Maximum number of items to scrape (1-500). Default: 100 |
| `proxyConfiguration` | Object | Proxy settings. Swiss residential proxies recommended |

### Output fields

Each scraped item contains the following fields:

| Field | Type | Description |
|---|---|---|
| `providerName` | String | Financial institution name (e.g. UBS, Raiffeisen, CSS) |
| `productName` | String | Specific product or plan name |
| `category` | String | Comparison category (savings, mortgages, banking, insurance) |
| `interestRate` | Number | Interest rate as percentage (savings and mortgages) |
| `monthlyFee` | Number | Monthly fee in CHF (banking products) |
| `annualPremium` | Number | Annual premium in CHF (insurance products) |
| `currency` | String | Currency code (CHF) |
| `conditions` | Array | Product conditions, requirements, or features |
| `providerUrl` | String | URL to provider detail page on Moneyland.ch |
| `url` | String | Source URL where data was scraped |
| `scrapedAt` | String | ISO 8601 timestamp of data collection |

### Output example

```json
[
    {
        "providerName": "Raiffeisen",
        "productName": "Savings Account",
        "category": "savings",
        "interestRate": 0.65,
        "monthlyFee": null,
        "annualPremium": null,
        "currency": "CHF",
        "conditions": [
            "No account maintenance fee",
            "Withdrawal notice: 3 months for amounts over CHF 25,000"
        ],
        "providerUrl": "https://www.moneyland.ch/en/provider/raiffeisen",
        "url": "https://www.moneyland.ch/en/savings-accounts-comparison",
        "scrapedAt": "2026-06-09T10:30:00.000Z"
    },
    {
        "providerName": "UBS",
        "productName": "Fix Hypothek 5 Years",
        "category": "mortgages",
        "interestRate": 1.45,
        "monthlyFee": null,
        "annualPremium": null,
        "currency": "CHF",
        "conditions": [
            "Minimum loan: CHF 100,000",
            "Fixed rate for 5 years"
        ],
        "providerUrl": "https://www.moneyland.ch/en/provider/ubs",
        "url": "https://www.moneyland.ch/en/mortgage-comparison",
        "scrapedAt": "2026-06-09T10:31:00.000Z"
    },
    {
        "providerName": "CSS",
        "productName": "Basic Health Insurance",
        "category": "insurance",
        "interestRate": null,
        "monthlyFee": null,
        "annualPremium": 4200.00,
        "currency": "CHF",
        "conditions": [
            "Standard model",
            "Deductible: CHF 300"
        ],
        "providerUrl": "https://www.moneyland.ch/en/provider/css",
        "url": "https://www.moneyland.ch/en/health-insurance-comparison",
        "scrapedAt": "2026-06-09T10:32:00.000Z"
    }
]
````

### Cost estimate

Running this actor with default settings (20 results, residential proxy) costs approximately:

- **Compute**: ~0.05 USD (Playwright browser, ~1-2 minutes)
- **Proxy**: ~0.10-0.30 USD (Swiss residential proxy traffic)
- **Total**: ~0.15-0.35 USD per run

Larger runs with more results will cost proportionally more due to additional proxy traffic.

### Tips for best results

- **Use Swiss residential proxies** for the most reliable results. Moneyland.ch is a Swiss site and may filter non-Swiss traffic.
- **Start with a specific category** rather than a broad search to get the most structured data.
- **Keep maxResults reasonable** (20-50) for faster runs and lower proxy costs.
- **Savings and mortgages** categories typically yield the most structured numeric data (interest rates).
- **Check debug data** if a run returns zero results. The actor saves the page HTML and a screenshot to the key-value store for troubleshooting.

### FAQ

**Does this scraper require a Moneyland account?**
No. All comparison data on Moneyland.ch is publicly available without registration or login.

**What languages does the scraper support?**
The scraper targets the English version of Moneyland.ch (/en/) for consistency. The same comparison data is available in German and French on the site.

**How often is Moneyland data updated?**
Moneyland.ch updates its comparison data regularly. Interest rates and insurance premiums are typically updated when providers change their offers. Run the scraper periodically to capture the latest rates.

**Can I scrape specific providers only?**
Use the `searchQuery` parameter with a provider name (e.g. "UBS", "Raiffeisen", "CSS") to filter results to a specific institution.

**Why might a run return zero results?**
Moneyland uses interactive comparison tools that require form parameters. The scraper attempts to trigger results automatically, but some comparison pages may need specific input combinations. Check the debug HTML and screenshot in the key-value store. Try using Swiss residential proxies if you suspect blocking.

### About Moneyland.ch

Moneyland.ch is Switzerland's largest independent online comparison platform for banking, insurance, and telecom products. Founded in Switzerland, it provides unbiased comparisons across more than 100 product categories with over 3 million data points. The platform compares savings accounts, mortgages, health insurance, credit cards, mobile plans, and many more financial products from Swiss banks and insurance companies.

Moneyland.ch serves as a neutral comparison service and does not sell financial products directly. It generates revenue through advertising and referral fees while maintaining editorial independence. The platform is available in German, French, and English.

# Actor input Schema

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

Which Moneyland comparison category to scrape. Savings: interest rates on savings accounts and pillar 3a. Mortgages: mortgage rates and terms. Banking: private accounts, credit cards, and banking packages. Insurance: health, life, car, and household insurance.

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

Optional search term to filter results (e.g. 'UBS savings', 'Hypothek 10 Jahre', 'Krankenkasse Zurich'). Leave empty to browse the selected category.

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

Maximum number of comparison items to scrape.

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

Proxy settings for the browser. Swiss residential proxies are recommended -- Moneyland.ch may block datacenter IPs.

## Actor input object example

```json
{
  "category": "savings",
  "searchQuery": "savings account",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CH"
  }
}
```

# 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 = {
    "category": "savings",
    "searchQuery": "savings account",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CH"
    }
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Moneyland Scraper - Swiss Financial Comparison Data",
        "description": "Scrape comparison data from Moneyland.ch, Switzerland's #1 financial comparison site. Extract banking rates, insurance premiums, mortgage rates. No login required.",
        "version": "0.1",
        "x-build-id": "vDFN2n67ZP5NKmoK7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~moneyland-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-moneyland-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~moneyland-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-moneyland-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~moneyland-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-moneyland-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": [
                            "savings",
                            "mortgages",
                            "banking",
                            "insurance"
                        ],
                        "type": "string",
                        "description": "Which Moneyland comparison category to scrape. Savings: interest rates on savings accounts and pillar 3a. Mortgages: mortgage rates and terms. Banking: private accounts, credit cards, and banking packages. Insurance: health, life, car, and household insurance.",
                        "default": "savings"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Optional search term to filter results (e.g. 'UBS savings', 'Hypothek 10 Jahre', 'Krankenkasse Zurich'). Leave empty to browse the selected category."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of comparison items to scrape.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for the browser. Swiss residential proxies are recommended -- Moneyland.ch may block datacenter IPs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
