# Australian Bank Rates - Mortgages, Term Deposits, Savings (`crawlplant/au-bank-rates`) Actor

Every interest rate from 248 Australian banks and lenders, ~28,500 rates: term deposits by term and amount, home loans by LVR, purpose and repayment, savings, personal loans, cards. Best rate per bank, ranked, and a daily rate-change feed. Consumer Data Right data, refreshed nightly.

- **URL**: https://apify.com/crawlplant/au-bank-rates.md
- **Developed by:** [Piotr Zimniak](https://apify.com/crawlplant) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 rate rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Australian Bank Rates - Mortgages, Term Deposits, Savings

*Independent tool, not affiliated with any bank, the ACCC or the Treasury. It reads only the public product data that Australian
banks and lenders publish under the Consumer Data Right.*

Every interest rate published by **248 Australian banks and non-bank lenders**: about **28,500 rates on 4,800 products**, from
term deposits and savings accounts to home loans, personal and business loans and credit cards. One clean table, refreshed every
night, with a **best-rate ranking per bank** and a **daily rate-change feed**. Ask "what is the best 12-month term deposit
today?" or "which lenders moved variable home loan rates this week?" and get the answer in about 3 seconds.

### Why this one

- **The whole market in one run.** The big four, regional and mutual banks, credit unions, neobanks and 130+ non-bank lenders:
  every brand that publishes Consumer Data Right product data, 248 of them.
- **One row per rate, ready to compare.** Term in months, LVR band, loan amount or balance band, owner-occupied or investment,
  principal-and-interest or interest-only, comparison rate and the conditions, in the same fields for every bank.
- **Best rates, ranked.** Mode `best` returns the top rate per bank for your filters: deposits highest first, loans lowest
  comparison rate first.
- **Rate changes, every day.** Who moved, when, and by how many basis points, since we started tracking on 27 September 2026.
  Schedule it with `"changedSince": "last-run"` and get only what changed.
- **Fast and reliable.** Runs are answered from our nightly snapshot of all 248 brands in about 3 seconds. See [Reliability](#reliability).
- **The only Apify Actor with Australian Consumer Data Right bank rates** (September 2026).
- **See it live.** Tonight's best rates and the term deposit curve across all lenders: [crawlplant.com/au-bank-rates](https://crawlplant.com/au-bank-rates/).

### What can you use it for?

- **Rate comparison sites and mortgage brokers**: a daily feed of every home loan, deposit and card rate, one API call.
- **Journalists and analysts**: which banks passed on the latest RBA decision, how fast and by how much.
- **Fintech products**: savings "rate chaser" alerts, refinancing prompts, rate benchmarks.
- **Treasury and SMEs**: the best business term deposit or business loan rates today.
- **AI agents**: "find me the best 6-month term deposit for $50,000" (see [Use with AI agents](#use-with-ai-agents)).

### Quick start

1. Click **Try for free** (or **Start**) with the default input: the best **term deposit** rate at every bank, ranked.
   It finishes in about 3 seconds and costs about $0.13 on the Free plan.
2. Set **Terms (months)** to `[12]` for the best 12-month term deposit, or switch **Product categories** to home loans.
3. Download JSON, CSV or Excel, or save the input as a **task** to reuse or schedule it.

#### Copy to your AI assistant

Paste this into ChatGPT, Claude or any agent so it knows how to use the Actor:

```
crawlplant/au-bank-rates on Apify: every interest rate published by 248 Australian banks and non-bank lenders (Consumer Data
Right product data, refreshed nightly). Modes (field "mode"): best (default: top rate per bank, ranked; deposits highest first,
loans lowest comparison rate first; topPerBrand, default 1), rates (every matching rate row), changes (rate changes since
changedSince: a date or "last-run"; empty = last 7 days), products (one row per product with fees and min/max rate), brands
(the banks and lenders covered). Filters: categories (TERM_DEPOSITS default, TRANS_AND_SAVINGS_ACCOUNTS, RESIDENTIAL_MORTGAGES,
PERS_LOANS, BUSINESS_LOANS, CRED_AND_CHRG_CARDS, OVERDRAFTS, ...; empty = all), brands (a word of the bank's name, e.g. "ing",
"commbank", or a brandId), industries (banking, non-bank-lending), termMonths (e.g. [12]; day ranges match when the term falls
inside), rateTypes (FIXED, VARIABLE, BONUS, INTRODUCTORY, PURCHASE, ...; best compares headline rates only), loanPurpose
(OWNER_OCCUPIED, INVESTMENT), repaymentType (PRINCIPAL_AND_INTEREST, INTEREST_ONLY), lvr (80 or 0.8), amount (AUD).
Each rate row: brandName, industry, productName, category, rateType, rate (decimal) and ratePercent, comparisonRate,
termMinMonths/termMaxMonths, interestPaidEvery (ISO duration), loanPurpose, repaymentType, lvrMin/lvrMax, amountMin/amountMax,
conditions, fees, applicationUri, firstSeenAt, scrapedAt, source, rank. rateHistoryDays attaches recent changes.
maxItems default 500. Cost: $1.50 per 1,000 rows (Free plan) down to $1.00; change rows +$3.00 per 1,000; $0.00005 per run.
Runs take ~3 s, so the synchronous run-sync-get-dataset-items endpoint works. Tracking since 2026-09-27.
```

### Modes

| Mode | What you get |
|---|---|
| `best` (default) | The best matching rate per bank (`topPerBrand`), ranked: deposits highest first, loans lowest comparison rate first |
| `rates` | Every matching rate row, for full exports and your own analysis |
| `changes` | Rate changes since a date or since your last run: old rate, new rate, change in basis points |
| `products` | One row per product: description, fees, lowest and highest rate, links |
| `brands` | The banks and lenders covered, with logo and ABN |

### Ready-to-use examples

**1. Best 12-month term deposit at every bank**

```json
{ "mode": "best", "categories": ["TERM_DEPOSITS"], "termMonths": [12] }
```

**2. Best 3, 6 and 12-month term deposits for $50,000, top 3 per bank**

```json
{ "mode": "best", "categories": ["TERM_DEPOSITS"], "termMonths": [3, 6, 12], "amount": 50000, "topPerBrand": 3 }
```

**3. Cheapest owner-occupier home loans at 80% LVR (principal and interest, $600k)**

```json
{ "mode": "best", "categories": ["RESIDENTIAL_MORTGAGES"], "loanPurpose": "OWNER_OCCUPIED", "repaymentType": "PRINCIPAL_AND_INTEREST", "lvr": 80, "amount": 600000 }
```

**4. Best 2-year fixed investor home loan rates**

```json
{ "mode": "best", "categories": ["RESIDENTIAL_MORTGAGES"], "loanPurpose": "INVESTMENT", "rateTypes": ["FIXED"], "termMonths": [24] }
```

**5. Every home loan rate from the big four**

```json
{ "mode": "rates", "categories": ["RESIDENTIAL_MORTGAGES"], "brands": ["commbank", "westpac", "anz", "nab"], "maxItems": 5000 }
```

**6. Best savings account base rates**

```json
{ "mode": "best", "categories": ["TRANS_AND_SAVINGS_ACCOUNTS"] }
```

**7. Savings bonus rates and their conditions**

```json
{ "mode": "rates", "categories": ["TRANS_AND_SAVINGS_ACCOUNTS"], "rateTypes": ["BONUS"], "maxItems": 1000 }
```

**8. Lowest credit card purchase rates**

```json
{ "mode": "best", "categories": ["CRED_AND_CHRG_CARDS"], "rateTypes": ["PURCHASE"] }
```

**9. Home loan rate changes since a date**

```json
{ "mode": "changes", "categories": ["RESIDENTIAL_MORTGAGES"], "changedSince": "2026-09-27" }
```

**10. Every rate change since my previous run (schedule it daily)**

```json
{ "mode": "changes", "categories": [], "changedSince": "last-run" }
```

**11. Non-bank lenders' personal loan rates**

```json
{ "mode": "best", "categories": ["PERS_LOANS"], "industries": ["non-bank-lending"], "topPerBrand": 2 }
```

**12. Term deposits with their rate history over 90 days**

```json
{ "mode": "best", "categories": ["TERM_DEPOSITS"], "termMonths": [6], "rateHistoryDays": 90 }
```

**13. All products of one bank**

```json
{ "mode": "products", "categories": [], "brands": ["macquarie"] }
```

**14. The list of banks and lenders covered**

```json
{ "mode": "brands", "maxItems": 1000 }
```

### How to…

#### Find the best term deposit rates in Australia

Mode `best`, category `TERM_DEPOSITS`, and `termMonths` for the terms you want (example 1). `amount` keeps only rates whose
balance band covers your deposit. `interestPaidEvery` says whether interest is paid monthly (`P1M`), yearly (`P1Y`) or at maturity (empty).

#### Compare home loan rates by LVR

Set `loanPurpose`, `repaymentType`, `lvr` and `amount` (example 3). Ranking uses the **comparison rate** when the lender
publishes one, else the rate. Special-purpose products (green loans, professional or veteran packages) are published rates too
and can top the list, so check `productName` and `conditions`.

#### Track bank rate changes after an RBA decision

Mode `changes` with `changedSince` set to the decision day (example 9): one row per changed rate with `oldRate`, `newRate` and
`changeBps`, per bank and product.

#### Get daily rate-change alerts

Schedule example 10 (for example every morning at 9 am) and add an email, Slack or webhook integration on "run succeeded".
Each run returns only what changed since the previous run with the same input.

#### Find the best savings account rates

Mode `best` on `TRANS_AND_SAVINGS_ACCOUNTS` ranks base rates (example 6). Bonus rates, which come on top of the base rate when
you meet conditions such as a monthly deposit, are listed with those conditions by example 7.

#### Export every mortgage rate in Australia

Mode `rates`, category `RESIDENTIAL_MORTGAGES`, `maxItems` 20000: about 15,800 rows, one per rate, in about 20 seconds.
Leave `categories` empty for the whole market (~28,500 rows).

### Input options

| Option | Default | Description |
|---|---|---|
| `mode` | `best` | `best`, `rates`, `changes`, `products`, `brands` |
| `categories` | `["TERM_DEPOSITS"]` | Consumer Data Right product categories; empty = all |
| `brands` | `[]` | Bank names (a word of the name: "ing", "commbank") or brand ids from mode `brands` |
| `industries` | `[]` | `banking` (banks) and/or `non-bank-lending` |
| `termMonths` | `[]` | Terms in months; rows without a term are left out when set |
| `rateTypes` | `[]` | `FIXED`, `VARIABLE`, `BONUS`, `INTRODUCTORY`, `PURCHASE`, `DISCOUNT`, … Empty: `best` compares headline rates only |
| `loanPurpose` | - | `OWNER_OCCUPIED` or `INVESTMENT` |
| `repaymentType` | - | `PRINCIPAL_AND_INTEREST` or `INTEREST_ONLY` |
| `lvr` | - | Loan-to-value ratio: `80` or `0.8` |
| `amount` | - | Deposit or loan amount in AUD |
| `sortBy` | `auto` | `auto`, `rate_desc`, `rate_asc`, `comparison_asc`, `brand` |
| `topPerBrand` | `1` | Rates kept per bank in `best` mode; `0` = all, ranked |
| `maxItems` | `500` | Maximum rows |
| `changedSince` | - | For `changes`: a date or `last-run`; empty = last 7 days |
| `rateHistoryDays` | `0` | Attach each rate's changes from the last N days |
| `maxAgeHours` | `36` | Data older than this still comes back, with a note in the run summary |
| `includeRaw` | `false` | Add the product's original Consumer Data Right JSON |

Headline rates in `best` mode are fixed, variable, market-linked and card purchase rates. Bonus rates are a margin on top of a
base rate and discounts or penalties adjust one, so ask for them with `rateTypes` to see them on their own.

### Example output

```json
{
  "type": "rate",
  "brandId": "bf7df75a-52bf-eb11-a823-000d3a884a20",
  "brandName": "Unity Bank",
  "industry": "banking",
  "productId": "I30_ALL_TERMS",
  "productName": "Term Deposit",
  "category": "TERM_DEPOSITS",
  "kind": "deposit",
  "rateType": "FIXED",
  "rate": 0.0555,
  "ratePercent": 5.55,
  "comparisonRate": null,
  "termMinMonths": 24,
  "termMaxMonths": 24,
  "interestPaidEvery": "P12M",
  "amountMin": 1000,
  "amountMax": 9999999,
  "conditions": "These rates only apply to retail deposits…",
  "isTailored": false,
  "firstSeenAt": "2026-09-27T11:32:51.000Z",
  "scrapedAt": "2026-09-27T11:33:02.000Z",
  "source": "cache",
  "rank": 1
}
```

### Output fields

| Field | Description |
|---|---|
| `type` | `rate`, `change`, `product` or `brand` |
| `brandId`, `brandName`, `industry` | The bank or lender and whether it is a bank or a non-bank lender |
| `productId`, `productName`, `category` | The product and its category |
| `kind` | `deposit`, `lending`, or `none` (product priced individually) |
| `rateType` | e.g. `FIXED`, `VARIABLE`, `BONUS`, `INTRODUCTORY`, `PURCHASE` |
| `rate`, `ratePercent` | The rate as a decimal (0.0555) and in percent (5.55) |
| `comparisonRate`, `comparisonRatePercent` | Comparison rate, when published |
| `termMinMonths`, `termMaxMonths` | Term in months; equal for a fixed term, a range for day-range terms |
| `interestPaidEvery` | How often interest is paid (ISO duration, e.g. `P1M`); empty = at maturity |
| `loanPurpose`, `repaymentType` | Owner-occupied / investment; principal and interest / interest only |
| `lvrMin`, `lvrMax` | LVR band (0.8 = 80%) |
| `amountMin`, `amountMax` | Balance or loan-amount band in AUD |
| `conditions` | Conditions and notes, as published (e.g. bonus-rate criteria) |
| `rateBasis` | What a loan rate stands for: `published`, `minimum` (a "from" rate, priced by credit profile), `maximum`, or `credit_band`. Best mode ranks only `published` rates unless `includeRiskBasedRates` is on |
| `hasPublishedRates`, `isTailored` | Products priced individually have no public rate |
| `fees` | Up to 5 fees: type, name, amount or rate |
| `applicationUri`, `overviewUri` | Links to the product |
| `firstSeenAt` | When we first saw this rate |
| `detailFetchedAt`, `scrapedAt` | When the product was last downloaded, and when the bank's list was last checked (nightly) |
| `source` | `cache` (our nightly snapshot) or `live` (read from the bank during the run) |
| `rank` | Position in `best` mode |
| `rateHistory` | With `rateHistoryDays`: `[{ rate, observedAt }]` |
| `event`, `oldRate`, `newRate`, `changeBps`, `observedAt` | Change rows (`changes` mode) |

### Run it through the API

JavaScript:

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('crawlplant/au-bank-rates').call({ mode: 'best', categories: ['TERM_DEPOSITS'], termMonths: [12] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => `${r.rank}. ${r.brandName}: ${r.ratePercent}%`));
```

Python:

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawlplant/au-bank-rates").call(run_input={"mode": "best", "categories": ["RESIDENTIAL_MORTGAGES"], "lvr": 80})
for r in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(r["brandName"], r["ratePercent"], r["comparisonRatePercent"])
```

### Use with AI agents

The Actor works as a tool in the [Apify MCP server](https://mcp.apify.com): Claude, ChatGPT, Cursor, VS Code, LangChain and others.
Answers come back in seconds and every field is described. Server URL with only this tool:

```
https://mcp.apify.com?tools=crawlplant/au-bank-rates
```

Try *"what is the best 12-month term deposit in Australia today?"*, *"which lenders changed home loan rates this week?"* or
*"compare owner-occupier variable rates at 80% LVR"*.

### Pricing

Pay per result: platform usage is included.

| Event | Free plan | Starter | Scale | Business and up |
|---|---|---|---|---|
| Rate, product or bank row (per 1,000) | $1.50 | $1.25 | $1.10 | $1.00 |
| Rate change row (per 1,000, `changes` mode, on top of the row price) | $3.00 | $3.00 | $3.00 | $3.00 |
| Actor start (per run) | $0.00005 | $0.00005 | $0.00005 | $0.00005 |

| Example on the Free plan | Rows | Cost |
|---|---|---|
| Default run: best term deposit per bank | ~85 | ~$0.13 |
| Best 12-month term deposit, top 3 per bank | ~200 | ~$0.30 |
| Best owner-occupier home loan per bank at 80% LVR | ~130 | ~$0.19 |
| Every home loan rate | ~15,800 | ~$24 |
| The whole market | ~28,500 | ~$43 |
| Daily watch with `changedSince: "last-run"` | only the changes | often $0.00 |

Set a **maximum cost per run** in the run options to stop a large run at your budget.

### Reliability

- Every run is answered from our nightly snapshot of all 248 brands, so it doesn't depend on 248 bank APIs answering at that
  moment: results in about 3 seconds.
- If the snapshot can't be reached, runs with `brands` are answered live from those banks' own Consumer Data Right endpoints.
- Automated checks test the Actor, the data and its freshness every 3 hours, around the clock.

### Data freshness

We read every bank's product list every night (Australian time) and re-download a product when it changed, and at least weekly.
`scrapedAt` is when the bank's list was last checked. Rate history is kept since 27 September 2026.

### Troubleshooting

- **Fewer rows than expected**: `termMonths`, `lvr` and `amount` keep only rates whose band covers your value, and `best` returns
  one row per bank unless you raise `topPerBrand`.
- **A bank isn't in the results**: run mode `brands` to see the brands covered, then use one of its names in `brands`.
- **A rate looks unusual**: check `rateType` and `conditions`. Bonus and introductory rates are separate rows, and some
  products are priced individually (`isTailored: true`).

### FAQ

#### What is the best term deposit rate in Australia today?

Run example 1: every bank's best term deposit for your term, ranked, from last night's data.

#### How much does it cost?

$1.50 per 1,000 rows on the Free plan, down to $1.00 on higher plans, plus $0.00005 per run. The default run costs about
$0.13 and every home loan rate about $24. See [Pricing](#pricing).

#### Where does the data come from?

From the public product data every Australian bank and non-bank lender must publish under the Consumer Data Right.
No logins, no personal data.

#### How often are rates updated?

Every night. Banks usually change rates on business days, so the next morning's run has them.

#### How far back does the rate history go?

To 27 September 2026, when tracking started; every change since is kept.

#### Is this financial advice?

No. It is published product data, normalised. Always check the provider's terms before deciding.

### Privacy

Only public product data is collected. Each run sends the developer anonymous feature-usage statistics (the mode and which
options were used, never their values); your Apify account id is replaced by a one-way hash on arrival.

# Actor input Schema

## `mode` (type: `string`):

best = the best rate per bank for your filters (ranked); rates = every matching rate row; changes = rate changes since a date or your last run; products = one row per product with its rate range; brands = the list of banks and lenders we cover.

## `categories` (type: `array`):

Which products to look at. Leave empty for all categories.

## `brands` (type: `array`):

Only these brands: part of the name ("commbank", "ing", "macquarie") or a brand id from mode "brands". Leave empty for all 240+.

## `industries` (type: `array`):

Limit to banks (ADIs) or non-bank lenders. Empty = both.

## `termMonths` (type: `array`):

Term deposit or fixed-rate terms to keep, in months, e.g. \[12] or \[3, 6, 12]. Ranges like 286-315 days match when the term falls inside. Rows without a term (variable rates) are dropped when this is set.

## `rateTypes` (type: `array`):

E.g. FIXED, VARIABLE, BONUS, INTRODUCTORY, PURCHASE. Empty: "best" compares headline rates (fixed, variable, market-linked, card purchase); "rates" returns every type.

## `loanPurpose` (type: `string`):

Home loans: owner-occupied or investment.

## `repaymentType` (type: `string`):

Home loans: principal and interest, or interest only.

## `lvr` (type: `number`):

Keep rates whose LVR band covers this value: 80 or 0.8 both mean 80%.

## `amount` (type: `number`):

Deposit or loan amount: keeps rates whose balance/loan band covers it.

## `sortBy` (type: `string`):

auto: deposits highest rate first, loans lowest comparison rate first (best mode). rates mode keeps the natural order unless you pick one.

## `topPerBrand` (type: `integer`):

How many rates to keep per bank in "best" mode. 0 = all matching rates, ranked.

## `includeRiskBasedRates` (type: `boolean`):

Loans priced by credit profile often publish only a minimum ("from") rate, a maximum rate or one rate per credit band. Best mode leaves them out, because few applicants get the minimum. Turn on to rank them too. Every row says what its rate stands for in rateBasis.

## `maxItems` (type: `integer`):

Stop after this many rows. Every home loan rate is ~15,800 rows, the whole market ~28,500.

## `changedSince` (type: `string`):

Mode "changes": a date (2026-09-01) or "last-run" for everything since your previous run with the same input. Empty = last 7 days.

## `rateHistoryDays` (type: `integer`):

Attach each rate's changes from the last N days (rateHistory). 0 = off.

## `maxAgeHours` (type: `integer`):

We refresh every product daily. Older data is still served, with a warning in the run summary.

## `includeRaw` (type: `boolean`):

Add the product's original CDR JSON (large).

## Actor input object example

```json
{
  "mode": "best",
  "categories": [
    "TERM_DEPOSITS"
  ],
  "brands": [],
  "industries": [],
  "termMonths": [
    12
  ],
  "rateTypes": [],
  "sortBy": "auto",
  "topPerBrand": 1,
  "includeRiskBasedRates": false,
  "maxItems": 500,
  "rateHistoryDays": 0,
  "maxAgeHours": 36,
  "includeRaw": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "termMonths": [
        12
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlplant/au-bank-rates").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 = { "termMonths": [12] }

# Run the Actor and wait for it to finish
run = client.actor("crawlplant/au-bank-rates").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "termMonths": [
    12
  ]
}' |
apify call crawlplant/au-bank-rates --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlplant/au-bank-rates"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lvNFbtTs3F6ofdcW4/builds/kg5pshheiLU0AfmiA/openapi.json
