Moneyfactscompare APImoneyfactscompare.co.uk ↗
Access UK mortgage product data from moneyfactscompare.co.uk. Browse by category, search by loan amount and LTV, and retrieve rates, fees, and lender details.
What is the Moneyfactscompare API?
The Moneyfactscompare API exposes 4 endpoints for querying UK mortgage products, covering remortgage, first-time buyer, moving home, and buy-to-let categories. The get_mortgage_products endpoint returns full product listings per category including interest rates, lender names, product fees, and term details. Search filtering via search_mortgages accepts loan amount, property value, mortgage term, and buyer type as parameters.
curl -X GET 'https://api.parse.bot/scraper/618de6a9-7f5a-4f71-a274-f53a3e54d9d9/get_mortgage_products?category=remortgage' \ -H 'X-API-Key: $PARSE_API_KEY'
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 moneyfactscompare-co-uk-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: Moneyfacts Mortgages SDK — browse categories, search products, drill into details."""
from parse_apis.moneyfacts_mortgages_api import Moneyfacts, Category, BuyerType, ProductNotFound
client = Moneyfacts()
# List available mortgage categories
for cat in client.mortgagecategories.list(limit=4):
print(cat.slug)
# Browse remortgage products — capped to 5 for demo
for product in client.mortgageproducts.list(category=Category.REMORTGAGE, limit=5):
print(product.lender_name, product.rate, product.rate_type)
# Search by buyer type and loan criteria
result = client.mortgageproducts.search(
buyer_type=BuyerType.FIRST_TIME_BUYER,
amount="180000",
value="300000",
term="25",
limit=1,
).first()
if result:
print(result.lender_name, result.rate, result.max_ltv, result.product_fee)
# Drill into a specific product's details via .get()
if result:
try:
detail = client.mortgageproducts.get(
product_id=result.id,
category=Category.FIRST_TIME_BUYER,
)
print(detail.lender_name, detail.rate, detail.description)
except ProductNotFound as exc:
print(f"Product gone: {exc.product_id}")
# Navigate via constructible category → sub-resource products
for p in client.mortgagecategory("buy-to-let").products.list(limit=3):
print(p.lender_name, p.rate, p.monthly_payment)
print("exercised: categories.list / products.list / products.search / products.get / category.products.list")
Retrieve all mortgage products for a given category. Returns the full listing page worth of products (typically 2000+) with rate, fee, LTV, and term details for each. Categories map to distinct product sets: remortgage, moving-home, first-time-buyer, buy-to-let. Each product carries an id usable with get_mortgage_product_details.
| Param | Type | Description |
|---|---|---|
| category | string | The mortgage category to fetch products for. |
{
"type": "object",
"fields": {
"category": "string — the category that was queried",
"products": "array of MortgageProduct objects with rate, lender, fee, and term details",
"total_products": "integer — count of products returned"
}
}About the Moneyfactscompare API
What the API Covers
This API surfaces mortgage product data from moneyfactscompare.co.uk across four categories: remortgage, moving-home, first-time-buyer, and buy-to-let. Each product object includes the lender name, initial interest rate, rate type (Fixed or Variable), product/arrangement fee, maximum LTV ratio, and a full product description. The get_mortgage_categories endpoint returns the current list of supported categories so you can enumerate them programmatically without hardcoding values.
Browsing and Searching Products
get_mortgage_products accepts a category string and returns the full product listing for that category along with a total_products count. search_mortgages narrows results by accepting four optional parameters: amount (GBP borrow amount), value (property value in GBP), term (years as a numeric string), and buyer_type (e.g. First Time Buyer, Buy To Let). The response includes a search_params object echoing the criteria used, which is useful for logging or UI display.
Retrieving Individual Product Details
get_mortgage_product_details takes a product_id — obtained from the id field in get_mortgage_products or search_mortgages results — alongside a category and returns structured fields: rate, max_ltv, rate_type, description, lender_name, and product_fee. The product_fee and max_ltv fields may return null where the source data does not specify a value, so null-handling is required in consuming code.
Data Shape and Limitations
All monetary inputs to search_mortgages are passed as numeric strings (e.g. "250000"), not integers. The max_ltv field is a number (e.g. 75, 90) rather than a percentage string. Rate data reflects the initial interest rate only — reversion rates or overall cost for comparison (APRC) are not currently returned as discrete fields.
The Moneyfactscompare API is a managed, monitored endpoint for moneyfactscompare.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when moneyfactscompare.co.uk 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 moneyfactscompare.co.uk 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a mortgage comparison table filtered by buyer type and LTV using
search_mortgages - Aggregate lender product counts across all four categories using
get_mortgage_products - Track changes in initial interest rates for fixed-rate remortgage products over time
- Identify the lowest product fees for a given loan-to-value band in the buy-to-let category
- Populate a mortgage eligibility tool by querying products for a given borrow amount and property value
- Alert users when new fixed-rate products appear in the first-time-buyer category
- Build a lender-focused dashboard grouping all available products by
lender_nameacross categories
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Moneyfactscompare have an official developer API?+
What does `get_mortgage_product_details` return beyond what the listing endpoint includes?+
get_mortgage_product_details returns the full description field — a plain-text product description — alongside structured fields like rate, rate_type, max_ltv, product_fee, and lender_name. The listing endpoint get_mortgage_products returns a similar field set but may truncate or omit the full description. Use the detail endpoint when you need the complete product narrative.Are APRC, reversion rates, or monthly repayment figures available?+
Does the search endpoint support pagination or return all matching results at once?+
search_mortgages endpoint returns all matching products in a single response along with a total count. There are no page or offset parameters currently supported. For large result sets, filtering by buyer_type, amount, and value together is the primary way to reduce the returned set. You can fork the API on Parse and revise it to add pagination parameters if needed.Can I filter products by rate type (Fixed vs Variable) within a category?+
rate_type field is returned per product in both get_mortgage_products and get_mortgage_product_details responses, but it is not currently an input filter parameter for either endpoint. Filtering by rate type must be done client-side after receiving the full product array. You can fork the API on Parse and revise it to add a rate_type filter parameter.