Discover/TD API
live

TD APItd.com ↗

Retrieve TD Canada Trust posted and promotional mortgage rates for every product — fixed, variable, open, and high-ratio — via a single structured API endpoint.

Endpoint health
monitored
list_mortgage_rates
Checks pendingself-healing
Endpoints
1
Updated
3h ago

What is the TD API?

The TD Mortgage Rates API exposes 1 endpoint — list_mortgage_rates — that returns the full set of TD Canada Trust mortgage products, each carrying up to 12 structured fields including base rates, promotional special rates, APR, discount from base, and parallel rate objects for both standard and high-ratio mortgages. No inputs are required; a single call returns every current product sorted by product code.

This call costs2 credits / call— charged only on success
Try it

No input parameters required.

→ api.parse.bot/scraper/1e540165-5169-476d-b2a6-c7210cc37311/<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/1e540165-5169-476d-b2a6-c7210cc37311/list_mortgage_rates' \
  -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 td-com-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: TD Canada mortgage rates — fetch every product and inspect rates."""
from parse_apis.td_com_api import TdMortgages, ParseError

client = TdMortgages()

# List all mortgage products; limit= caps total items yielded.
for product in client.products.list(limit=5):
    promo = product.rates.promotional
    print(
        f"{product.product_key}  {product.rate_type} {product.term_months}mo  "
        f"open={product.is_open}  base={product.rates.base_rate}%  "
        f"special={promo.special_rate}%  apr={promo.apr}%"
    )

# Drill into one product's high-ratio rates via .first()
try:
    product = client.products.list(limit=1).first()
except ParseError as e:
    # Upstream markup changed — surface the stable wire code for triage.
    print(f"Parse failure ({e.code}): {e}")
    product = None

if product is not None:
    hr = product.high_ratio_rates
    print(
        f"\nHigh-ratio for {product.product_key}: "
        f"base={hr.base_rate}%  special={hr.promotional.special_rate}%  "
        f"discount={hr.promotional.discount_from_base}%  "
        f"posted_rate_enabled={hr.promotional.posted_rate_enabled}"
    )
    if product.name is not None:
        print(f"Listed as: {product.name}")

print("\nexercised: products.list")
All endpoints · 1 totalmissing one? ·

Returns every mortgage product in TD Canada's current rate feed, one row per product code, sorted by product code. Each row carries a `rates` object for a standard (non-high-ratio) mortgage and a `high_ratio_rates` object for a high-ratio mortgage; both have the same shape: `base_rate` is the posted rate in percent, and `promotional` holds the special (discounted) rate, the discount from the posted rate in percentage points (negative when the special rate is above the posted rate), the APR, and whether the site shows the posted rate for that product. `name` is the term label shown on the public mortgage-rates page and is null for feed products the page does not list (`listed_on_page` false). `rate_type`, `term_months` and `is_open` are decoded from the product code. Two upstream round trips per call (page plus rate feed); no pagination.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "total": "number of products returned",
    "products": "array of mortgage products, each with product_key, name, listed_on_page, rate_type (fixed|variable), term_months, is_open, rates and high_ratio_rates",
    "source_page": "public page the product names were read from",
    "products[].rates": "object: base_rate (posted rate, percent) and promotional {special_rate, discount_from_base, apr, posted_rate_enabled} for a standard mortgage",
    "products[].high_ratio_rates": "same shape as rates, for a high-ratio mortgage"
  },
  "sample": {
    "data": {
      "total": 20,
      "products": [
        {
          "name": "5 Year Fixed Closed",
          "rates": {
            "base_rate": 6.09,
            "promotional": {
              "apr": 5.161,
              "special_rate": 5.14,
              "discount_from_base": 0.95,
              "posted_rate_enabled": false
            }
          },
          "is_open": false,
          "rate_type": "fixed",
          "product_key": "MTGF060C",
          "term_months": 60,
          "listed_on_page": true,
          "high_ratio_rates": {
            "base_rate": 6.09,
            "promotional": {
              "apr": 5.161,
              "special_rate": 5.14,
              "discount_from_base": 0.95,
              "posted_rate_enabled": false
            }
          }
        },
        {
          "name": "5 Year Variable Open Mortgage",
          "rates": {
            "base_rate": 4.6,
            "promotional": {
              "apr": 7.771,
              "special_rate": 7.75,
              "discount_from_base": -3.15,
              "posted_rate_enabled": false
            }
          },
          "is_open": true,
          "rate_type": "variable",
          "product_key": "MTGV060O",
          "term_months": 60,
          "listed_on_page": true,
          "high_ratio_rates": {
            "base_rate": 4.6,
            "promotional": {
              "apr": 7.771,
              "special_rate": 7.75,
              "discount_from_base": -3.15,
              "posted_rate_enabled": false
            }
          }
        }
      ],
      "source_page": "https://www.td.com/ca/en/personal-banking/products/mortgages/mortgage-rates"
    },
    "status": "success"
  }
}

About the TD API

What the API returns

The list_mortgage_rates endpoint returns an array of mortgage products under the products key, alongside a total count and a source_page URL. Each product entry includes a product_key, human-readable name, rate_type (either fixed or variable), term_months, an is_open flag indicating whether the mortgage is open or closed, and a listed_on_page boolean.

Rate objects: standard vs. high-ratio

Every product carries two parallel rate objects. rates holds the standard (non-high-ratio) pricing and high_ratio_rates holds the high-ratio pricing. Both objects share the same shape: a base_rate field for the posted rate (expressed as a percentage), and a promotional object containing special_rate, discount_from_base, apr, and posted_rate_enabled. This lets you compare standard and high-ratio options for the same product in a single response row without any additional calls.

Filtering and coverage

The endpoint takes no query parameters — it always returns the complete current product list. Filtering by term, rate type, or mortgage type is done client-side against the term_months, rate_type, and is_open fields returned in the response. Coverage is limited to TD Canada Trust products listed on the Canadian personal banking mortgage rates page.

Reliability & maintenance

The TD API is a managed, monitored endpoint for td.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when td.com 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 td.com 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?+
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 a mortgage rate comparison dashboard that juxtaposes TD's posted base_rate against promotional special_rate for each term.
  • Alert users when TD's discount_from_base on a specific term_months product changes, signalling a rate promotion.
  • Populate a mortgage calculator with live apr values for fixed and variable products to give accurate cost-of-borrowing estimates.
  • Track whether high-ratio mortgage rates (high_ratio_rates.special_rate) differ from standard rates on a given product over time.
  • Feed a rate aggregator that monitors Canadian bank mortgage rates, using listed_on_page to surface only currently active products.
  • Generate a weekly rate-movement report comparing base_rate to special_rate across all term_months values for fixed-rate closed mortgages.
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 TD Bank have an official public developer API for mortgage rates?+
TD does not publish a public developer API for mortgage rate data. There is no documented REST or GraphQL interface available to third-party developers for retrieving TD Canada Trust mortgage rates.
What does the `rates` object contain, and how does it differ from `high_ratio_rates`?+
Both objects share identical structure: base_rate (the posted rate as a percentage), and a promotional sub-object with special_rate, discount_from_base, apr, and posted_rate_enabled. The difference is that rates reflects pricing for a standard mortgage where the borrower has at least 20% equity, while high_ratio_rates reflects pricing for mortgages with less than 20% down payment. Both are present on every product row in the same API call.
Does the API cover TD mortgage products outside Canada, such as TD Bank US rates?+
Not currently. The API covers TD Canada Trust personal banking mortgage products listed on the Canadian rates page. TD Bank US mortgage products are not included. You can fork this API on Parse and revise it to add an endpoint targeting the TD Bank US rates page.
Can I retrieve historical mortgage rate data or track rate changes over time?+
Not currently. The list_mortgage_rates endpoint returns the current product rates only; there is no historical series or changelog in the response. You can fork this API on Parse and revise it to store snapshots on each call and expose a history endpoint.
How should I identify a specific mortgage product across multiple calls?+
Use the product_key field, which is a stable identifier assigned per product. Combining product_key with term_months, rate_type, and is_open gives you enough context to uniquely identify and track any product across successive responses.
Page content last updated . Spec covers 1 endpoint from td.com.
Related APIs in FinanceSee all →
moneysupermarket.com API
Browse and compare live mortgage rates across multiple lenders on MoneySuperMarket. Search for mortgage products by property value, deposit, term, region, and product type to find competitive rates and detailed cost breakdowns.
moneyfactscompare.co.uk API
Find and compare mortgage products from Moneyfacts with detailed specifications including rates, terms, and eligibility requirements. Browse by category, search for specific mortgages, and access comprehensive product details to help you find the best mortgage option.
nerdwallet.com API
Access current mortgage rates, top-rated credit card recommendations, detailed card information, and expert financial articles — all sourced from NerdWallet. Compare lenders, explore card features, APRs, rewards programs, and stay up to date with mortgage guides and resources.
wellsfargo.com API
wellsfargo.com API
condos.ca API
Search and browse comprehensive condo listings across Canada while accessing detailed building information, neighbourhood statistics, and mortgage calculators to make informed real estate decisions. Get instant market data, compare properties, and estimate mortgage payments all from one integrated platform.
money.tmx.com API
Access data from money.tmx.com.
commonwealthbank.com.au API
Access Commonwealth Bank's loan product listings with real-time interest rates, comparison rates, and fees across home loans and personal loans. Includes current promotional offers, product variations, and LVR-based rate tiers.
comparis.ch API
Search and compare real estate listings, cars, and mortgage interest rates across the Swiss marketplace Comparis.ch with detailed filtering options and property/vehicle information. Get current mortgage rates and access comprehensive details on available properties and cars to make informed buying or financing decisions.