Every Australian electricity and gas plan, for any postcode.
Tariffs, supply charges, time-of-use bands, solar feed-in and discounts from 42 retailers, read from the plan data they publish under the Consumer Data Right. With an estimated annual bill for every plan, refreshed nightly.
Independent tool. Reads only the public plan data retailers publish under the Consumer Data Right.
Tonight's energy market.
Price a household, compare solar feed-in by city, and see every plan that changed since yesterday. Your run returns the same plans.
Last harvest
Cheapest plans for your home
| # | retailer · plan | est. annual bill | supply | usage | feed-in |
|---|---|---|---|---|---|
Estimate = daily supply × 365 + usage rate × kWh (both incl. GST) − feed-in tariff × exported kWh, from the plan's published rates for the capital-city postcode. The Actor prices time-of-use and seasonal plans for any postcode.
Best solar feed-in tariffs
- c · · median c
Cheapest plan in each capital
- median · saves a year
Plan changes
| date | retailer · plan | change | detail | state |
|---|---|---|---|---|
No changes of this type in this period.
One record per plan, every tariff unpacked.
Supply charges, every rate band, controlled load, feed-in, discounts and incentives, as typed fields with an estimated annual bill already worked out.
{
"brandName": "Amber Electric",
"displayName": "Battery + Solar: Variable Wholesale Prices (estimate)",
"fuelType": "ELECTRICITY",
"planType": "MARKET",
"customerType": "RESIDENTIAL",
"pricingModel": "SINGLE_RATE",
"postcodes": ["2000"],
"distributors": ["Ausgrid"],
"estimatedAnnualCost": {
"total": 1196.34, "supply": 426.34,
"usage": 770, "solarCredit": 0, "incGst": true
},
"dailySupplyCharge": 1.061856,
"rates": {
"single": 0.175, "peak": null,
"shoulder": null, "offPeak": null
},
"solarFeedInTariff": 0.1226,
"hasDemandCharges": false,
"pricesIncludeGst": false,
"scrapedAt": "2026-09-27T12:51:36.366Z",
"rank": 1
}
Plan
brandNamedisplayNamefuelTypeelectricity · gas · dualcustomerTyperesidential · businesspostcodes
Tariff
dailySupplyChargeratessingle · peak · shoulder · off-peakcontrolledLoadRatehasDemandCharges
Solar and green
solarFeedInTariffgreenPower
Offer terms
discountsincentivesisFixedfixed-price contracteffectiveFrom/effectiveTo
Worked out for you
estimatedAnnualCosttotal · supply · usage · solar creditrank
Built for people who price energy.
Full-market plan search
Every published plan for a postcode, with tariffs unpacked and a bill estimate, ready to rank.
Quotes that hold up
Real feed-in tariffs and time-of-use bands for the customer's postcode, so payback maths uses today's plans.
Cheaper sites, every quarter
Price every site's postcode in one run, then act on the ones paying too much.
Tracking the default market offer reset
See which retailers moved, by how much, and how their market offers compare after each annual reset.
Answers for any address
"What's the cheapest plan in 3000 for 4,000 kWh a year?" The agent gets priced plans, not a list of links.
From postcode to priced plans in three steps.
- 01
Open it on Apify
Sign in with a free Apify account. No card needed to try.
- 02
Set postcode and usage
Pick fuel and customer type, add annual kWh and solar export for bill estimates.
- 03
Get your results
Download JSON, CSV or Excel, call the API, schedule it nightly, or hand it to an AI agent.
Run it every night
Add a schedule on Apify, for example daily at 06:00, and send the results where you work.
curl -X POST \
"https://api.apify.com/v2/acts/crawlplant~au-energy-plans/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "mode": "cheapest", "postcodes": ["3000"], "annualKwh": 4000, "solarExportKwh": 1500 }'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawlplant/au-energy-plans').call({
mode: 'cheapest',
postcodes: ['3000'],
annualKwh: 4000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const cheapest = items.slice(0, 5); // already ranked by estimated annual bill
console.table(cheapest.map(({ rank, brandName, displayName, estimatedAnnualCost }) => ({ rank, brandName, displayName, bill: estimatedAnnualCost?.total })));
# 1. Add this MCP server to your agent
https://mcp.apify.com?tools=crawlplant/au-energy-plans
# 2. Ask in plain language
What's the cheapest electricity plan in 3000 for 4,000 kWh a year?
I export about 1,500 kWh of solar. Show the top 3 with their feed-in tariffs.
Runs that don't break.
The same factory promises as every CrawlPlant Actor. How the factory works
Nightly snapshot
Every retailer's published plans, harvested every night.
Answers in ~3 s
Runs read the cached harvest, so a postcode comes back while you wait.
Partial, never failed
If one retailer's feed is down, you still get every other plan.
Checked every 3 hours
Canary runs catch feed changes before they reach you.
Every change on record
Price changes, new and withdrawn plans, each with observedAt.
Pricing
$2.00 per 1,000 on Apify's Free plan. Plan-change rows add $3.00 per 1,000. Exact tiers are on the Store page.
- Full tariff detail and bill estimate in every plan record
- Pay only for the plans you receive
- No subscription. The free plan is enough to try it
Where does the data come from?
From the public plan data energy retailers publish under Australia's Consumer Data Right. It's generic plan information: no customer accounts, no logins, no meter data.
How is the estimated annual bill worked out?
From the plan's own published rates and the usage you give us: daily supply for a year plus your usage, priced across time-of-use bands, seasons and stepped rates, plus GST, minus feed-in credit for any solar export. It's an estimate for comparing plans, not a quote.
Which postcodes are covered?
Every postcode in the national electricity and gas markets: NSW, ACT, VIC, QLD, SA and TAS. Ask for several postcodes in one run; each plan lists which of them it's sold in, in postcodes.
Does it include gas and business plans?
Yes. Every record has fuelType (electricity, gas or dual fuel) and customerType (residential or business). Plans with demand charges are flagged with hasDemandCharges.
Can I get only what changed?
Yes. "mode": "changes" with "changedSince": "last-run" returns only the plans whose prices changed, plus new and withdrawn plans, since your previous run, with old and new supply charge and rates.
Is this affiliated with any retailer?
No. CrawlPlant is an independent tool that reads published plan data. It isn't affiliated with any retailer and doesn't give financial advice.