Discover/MutuiSupermarket API
live

MutuiSupermarket APImutuisupermarket.it ↗

Fetch live Italian mortgage quotes from MutuiSupermarket.it. Get rates, installments, bank details, insurance costs, and promo info for any loan profile.

Endpoint health
verified 2h ago
search_mortgage_quotes
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the MutuiSupermarket API?

The MutuiSupermarket.it API exposes a single endpoint, search_mortgage_quotes, that returns the full ranked list of Italian mortgage offers — typically 15–35 quotes per call — matching a loan profile defined by amount, property value, duration, rate type, purpose, province, applicant age, monthly income, and energy class. Each quote includes the bank name, TAN, TAEG, monthly installment, insurance costs, promo flags, and a direct link to the product sheet on MutuiSupermarket.

This call costs1 credit / call— charged only on success
Try it
Mortgage purpose (finalità).
Two-letter Italian province code of the property (also used as the applicant's home province), e.g. MI or RM.
Interest rate type filter; TUTTI returns every rate type.
Requested mortgage amount in euro (ImportoMutuo).
Property energy class. Omitted = unknown (site default), which also includes green-only offers in the list.
Applicant age in years.
Mortgage duration in years. Banks publish their own enabled durations (see enabled_durations_years in each quote); 20 and 25 were exercised.
Applicant net monthly income in euro.
Value of the property in euro (ValoreImmobile).
→ api.parse.bot/scraper/dc093b80-3af1-4fec-844f-46bc43824439/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/dc093b80-3af1-4fec-844f-46bc43824439/search_mortgage_quotes?loan_amount=140000&property_value=220000' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace mutuisupermarket-it-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: MutuiSupermarket SDK — compare Italian mortgage quotes."""
from parse_apis.mutuisupermarket_it_api import (
    MutuiSupermarket, Purpose, RateType, InputFormatInvalid,
)

client = MutuiSupermarket()

# Fetch the full comparison wrapper to inspect metadata alongside quotes.
try:
    comparison = client.comparisons.search(
        loan_amount=140000,
        property_value=220000,
        purpose=Purpose.FIRST_HOME_PURCHASE,
        rate_type=RateType.FIXED,
    )
except InputFormatInvalid as e:
    print("Bad input:", e.message)
    raise

print(f"Total quotes: {comparison.total}, adjusted: {comparison.search_adjusted}")
if comparison.warning:
    print("Warning:", comparison.warning)

# Show applied search parameters echoed by the site.
print(f"Search applied — duration: {comparison.search.duration_years}y, province: {comparison.search.province}")

# Browse top quotes via the paginated accessor, capped at 5 items.
for quote in client.quotes.search(
    loan_amount=140000,
    property_value=220000,
    purpose=Purpose.FIRST_HOME_PURCHASE,
    rate_type=RateType.FIXED,
    limit=5,
):
    print(
        f"{quote.bank_name}: {quote.product_name} — "
        f"installment €{quote.monthly_installment}/mo, "
        f"TAN {quote.tan}%, TAEG {quote.taeg}%"
    )
    if quote.is_promo and quote.promo_text:
        print(f"  Promo: {quote.promo_text}")

# Drill into the cheapest quote's details.
cheapest = client.quotes.search(
    loan_amount=140000,
    property_value=220000,
    rate_type=RateType.FIXED,
    limit=1,
).first()

if cheapest is not None:
    print(f"\nCheapest fixed: {cheapest.product_name} by {cheapest.bank_name}")
    print(f"  Upfront costs: €{cheapest.upfront_costs_total}, recurring: €{cheapest.recurring_costs_total}")
    print(f"  Total credit cost: €{cheapest.total_credit_cost}")
    for benefit in cheapest.benefits:
        print(f"  ✓ {benefit.text}")

print("\nexercised: comparisons.search / quotes.search")
All endpoints · 1 totalmissing one? ·

Runs a mortgage quote search on MutuiSupermarket and returns the full list of matching bank offers in one call (no pagination; the site returns the whole comparison list, typically 15-35 quotes, ordered as the site ranks them by monthly installment). Each quote carries the bank, product identity and page URL, computed monthly installment, TAN/TAEG, index and spread, upfront and recurring costs, substitute tax, insurance premiums (frequency codes AN = annual, UP = one-off), total credit amount and cost, promo/highlight info with end dates in DD/MM/YYYY, benefits, enabled durations and the full product-sheet descriptions (target customers, financeable amount, rate calculation, fees, insurance, early repayment penalty, guarantees, notes). Monetary values are euro; percentages are plain numbers (2.9 = 2.90%). Province, purpose, rate type and energy class combinations with no exact match make the site relax the criteria: search_adjusted becomes true and warning carries the site's notice (the quotes list can then be empty). Unknown province codes behave the same way. Invalid rate_type, purpose or energy_class values and non-positive numeric inputs are rejected with a stale_input error before any request.

Input
ParamTypeDescription
purposestringMortgage purpose (finalità).
provincestringTwo-letter Italian province code of the property (also used as the applicant's home province), e.g. MI or RM.
rate_typestringInterest rate type filter; TUTTI returns every rate type.
loan_amountrequiredintegerRequested mortgage amount in euro (ImportoMutuo).
energy_classstringProperty energy class. Omitted = unknown (site default), which also includes green-only offers in the list.
applicant_ageintegerApplicant age in years.
duration_yearsintegerMortgage duration in years. Banks publish their own enabled durations (see enabled_durations_years in each quote); 20 and 25 were exercised.
monthly_incomeintegerApplicant net monthly income in euro.
property_valuerequiredintegerValue of the property in euro (ValoreImmobile).
Response
{
  "type": "object",
  "fields": {
    "total": "integer number of quotes returned",
    "quotes": "array of quote objects: bank_code, bank_name, bank_customer_rating (0-5), channel_type, product_code, product_name, product_url, rate_type_label, monthly_installment, initial_period_years/installment (mixed-rate products), cap, tan, tan_description, taeg, index_name, index_value, spread, upfront_costs_total, application_fee, appraisal_fee, appraisal_fee_is_estimate, other_upfront_costs, substitute_tax, recurring_costs_total, monthly_admin_fee, annual_admin_fee, fire/life/job_loss/cpi insurance premium + frequency, cpi_insurance_note, total_credit_amount, total_credit_cost, application_type, is_promo, is_consap, is_sponsored, promo_type, promo_text, promo_end_date, signing_deadline, highlight_label, rate_conditions, average_disbursement_time, benefits[] ({icon_id,text}), enabled_durations_years[], enabled_energy_classes, and product-sheet texts (target_customers, purposes, financeable_amount, min_amount, max_amount, available_durations, rate_calculation, upfront_costs_description, recurring_costs_description, insurance_description, early_repayment_penalty, required_guarantees, disbursement_timing, notes); text fields are null when the bank publishes none",
    "search": "object echoing the parameters the site actually applied (loan_amount, property_value, duration_years, rate_type, purpose, province, applicant_age, monthly_income, energy_class)",
    "warning": "site notice text when search_adjusted is true, otherwise null",
    "search_adjusted": "boolean, true when the site relaxed the criteria because no exact match existed"
  },
  "sample": {
    "data": {
      "total": 31,
      "quotes": [
        {
          "cap": null,
          "tan": 2.9,
          "taeg": 3.1342,
          "notes": "Il mutuo è perfezionato sotto forma di \"mutuo fondiario\".",
          "spread": 0,
          "benefits": [
            {
              "text": "Offerta esclusiva per clienti MutuiSupermarket",
              "icon_id": "43"
            },
            {
              "text": "Spese di istruttoria ridotte",
              "icon_id": "4"
            },
            {
              "text": "Ampia offerta polizze facoltative",
              "icon_id": "20"
            }
          ],
          "is_promo": true,
          "purposes": "Acquisto prima casa",
          "bank_code": "BCCM",
          "bank_name": "BCC Milano",
          "is_consap": false,
          "index_name": "Tasso finito",
          "max_amount": "€ 400.000",
          "min_amount": "Non previsto",
          "promo_text": "Promozione fino al 31/12/2026",
          "promo_type": "PROSTD",
          "index_value": 2.9,
          "product_url": "https://www.mutuisupermarket.it/mutuo-a-tasso-fisso",
          "channel_type": "F",
          "is_sponsored": false,
          "product_code": "BCCMACQFIS",
          "product_name": "Mutuo Fisso ScegliMI Acquisto",
          "appraisal_fee": 250,
          "promo_end_date": "31/12/2026",
          "substitute_tax": 350,
          "application_fee": 1000,
          "highlight_label": "Promozione fino al 31/12/2026",
          "rate_conditions": "Condizioni valide per mutui deliberati entro il 31/12/2026",
          "rate_type_label": "Fisso",
          "tan_description": "Tasso finito",
          "annual_admin_fee": 0,
          "application_type": "F",
          "rate_calculation": "Tasso fisso finito determinato in funzione della percentuale di intervento (LTV): Durata fino a 25 anni: 2,90%",
          "signing_deadline": "31/12/2026",
          "target_customers": "Persone fisiche residenti e acquistanti nel territorio di competenza della Banca con età ricompresa negli 80 anni a scadenza del mutuo.",
          "monthly_admin_fee": 2.5,
          "total_credit_cost": 60458.1247,
          "cpi_insurance_note": "non obbligatoria per ottenere il mutuo, ma necessaria per ottenerlo alle condizioni sotto riportate",
          "financeable_amount": "Importo massimo: fino all' 80% del valore dell'immobile posto a garanzia e non oltre € 400.000",
          "available_durations": "10, 15, 20, 25 anni",
          "disbursement_timing": "Erogazione contestuale all'atto, salvo verifica sulla singola pratica",
          "monthly_installment": 656.64,
          "other_upfront_costs": 0,
          "product_sheet_title": "Preventivo completo Mutuo Fisso ScegliMI Acquisto",
          "required_guarantees": "La garanzia è rappresentata da ipoteca di primo grado concessa sulla base dei requisiti del credito fondiario.",
          "total_credit_amount": 138400,
          "upfront_costs_total": 1250,
          "bank_customer_rating": 4.5,
          "initial_period_years": 0,
          "cpi_insurance_premium": 0,
          "insurance_description": "Coperture assicurative obbligatorie: Polizza incendio e scoppio immobile Casa Protetta di BCC Assicurazioni a premio annuo.",
          "recurring_costs_total": 1867,
          "enabled_energy_classes": "Ogni categoria di Classe Energetica da A a G",
          "fire_insurance_premium": 44.68,
          "life_insurance_premium": 0,
          "cpi_insurance_frequency": "UP",
          "early_repayment_penalty": null,
          "enabled_durations_years": [
            10,
            15,
            20,
            25
          ],
          "fire_insurance_frequency": "AN",
          "life_insurance_frequency": "UP",
          "appraisal_fee_is_estimate": true,
          "average_disbursement_time": "dalla consegna dei documenti d'istruttoria alla banca: 81 giorni medi, 56 minimi (rilevazione MutuiSupermarket sugli ultimi 24 mesi)",
          "upfront_costs_description": "Spese di istruttoria: € 1.000\r\nSpese di perizia: € 250",
          "fire_insurance_is_estimate": false,
          "initial_period_installment": 0,
          "job_loss_insurance_premium": 0,
          "recurring_costs_description": "Spese incasso rata: € 2,50",
          "job_loss_insurance_frequency": "UP"
        }
      ],
      "search": {
        "purpose": "APC",
        "province": "MI",
        "rate_type": "F",
        "loan_amount": 140000,
        "energy_class": null,
        "applicant_age": 35,
        "duration_years": 25,
        "monthly_income": 2400,
        "property_value": 220000
      },
      "warning": null,
      "search_adjusted": false
    },
    "status": "success"
  }
}

About the MutuiSupermarket API

What the API returns

Calling search_mortgage_quotes with a loan_amount (required, in euro) and optional filters returns a quotes array plus a search object that reflects the parameters the site actually applied. Each quote object includes bank_name, bank_code, bank_customer_rating (0–5 scale), channel_type, product_name, product_code, product_url, and a full set of rate and cost fields. The total field tells you how many quotes were returned without needing to parse the array first.

Filtering the search

Beyond loan_amount, the endpoint accepts purpose (e.g. first home purchase, refinancing), rate_type (fixed, variable, or TUTTI for all types), province (two-letter Italian province code such as MI or RM), duration_years, applicant_age, monthly_income, and energy_class. Banks publish their own enabled durations; the enabled_durations_years field on each quote lets you know which terms that lender actually supports, so you can surface mismatches between the requested duration and what's available.

Adjusted results and warnings

When the site cannot find quotes that exactly match the requested criteria, it relaxes the constraints and sets search_adjusted to true. In that case the warning field carries the notice text the site displays to the user — useful for surfacing to end-users why results may differ from what they entered. When an exact match is found, warning is null.

Coverage and data freshness

The API covers the Italian mortgage market as listed on MutuiSupermarket.it, which aggregates offers from multiple Italian banks. Results reflect whatever offers are live on the site at the time of the call. There is no pagination — the full comparison list is returned in a single response.

Reliability & maintenanceVerified

The MutuiSupermarket API is a managed, monitored endpoint for mutuisupermarket.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mutuisupermarket.it changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official mutuisupermarket.it API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build an Italian mortgage comparison tool that displays TAN, TAEG, and monthly installment side-by-side across multiple banks
  • Alert users when a lower-rate offer appears for their loan profile by polling search_mortgage_quotes on a schedule
  • Pre-qualify applicants by filtering quotes by monthly_income and applicant_age to show only realistically accessible offers
  • Surface green-mortgage options by passing a specific energy_class value and highlighting any promo flags in results
  • Show province-specific rate variations by running parallel queries with different province codes for the same loan amount
  • Embed a mortgage calculator widget that maps loan_amount and duration_years inputs to live bank installment figures
  • Analyse fixed vs. variable rate spreads across the Italian market using the rate_type filter on identical loan profiles
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does MutuiSupermarket.it have an official developer API?+
MutuiSupermarket.it does not publish a public developer API or documented data feed. This Parse API is the structured way to access quote data from the site.
What does the search_adjusted flag mean, and how should I handle it?+
When search_adjusted is true, the site could not find quotes matching the exact criteria you submitted and relaxed one or more constraints. The warning field contains the human-readable explanation the site provides. You should surface this text to end-users so they understand results may not perfectly match their inputs. When search_adjusted is false, warning is null.
Can I retrieve historical mortgage rate data or track rate changes over time?+
The API returns the offers currently live on MutuiSupermarket.it at call time; there is no historical dataset or time-series endpoint. You can build a historical record by storing responses from repeated calls. If you need a dedicated historical-rate endpoint, you can fork this API on Parse and add storage logic for captured snapshots.
Does the API return individual bank branch contact details or full amortisation schedules?+
The API does not currently expose branch contacts or amortisation tables. Each quote does include a product_url linking to the full product sheet on MutuiSupermarket where that information may be found. You can fork this API on Parse and revise it to add an endpoint that fetches and parses a product sheet for the detailed schedule.
How many quotes does a single call return, and is there pagination?+
There is no pagination. A single search_mortgage_quotes call returns the full ranked list as the site produces it — typically 15–35 quote objects — along with a total integer confirming the count. All quotes are ordered by the site's default ranking, which sorts by monthly installment.
Page content last updated . Spec covers 1 endpoint from mutuisupermarket.it.
Related APIs in FinanceSee all →