Don't get pumped.
Australian fuel prices in your smart home dashboard
Where the data comes from: Petrolmate uses the official fuel price schemes run by Australian state and territory governments (NSW FuelCheck, QLD, SA, VIC, WA FuelWatch, NT, TAS). Prices can lag the pump, so check the price at the station before you fill up.
Petrolmate provides a free, public JSON API designed for Home Assistant and smart home integrations. No API key required.
GET https://petrolmate.com.au/api/v1/stations/area
| Parameter | Type | Default | Description |
|---|---|---|---|
lat | float | required | Latitude of your location |
lng | float | required | Longitude of your location |
radius | integer | 5000 | Search radius in metres (max 25,000) |
limit | integer | 30 | Max stations returned (max 50) |
curl "https://petrolmate.com.au/api/v1/stations/area?lat=-33.87&lng=151.21&radius=5000&limit=5"
{
"success": true, "count": 3, "api": "petrolmate", "version": "1.0", "coverage": "AU+NZ",
"stations": [
{
"id": 1234, "name": "Shell Woolloomooloo", "brand": "Shell",
"address": "61 Cowper Wharf Rd", "suburb": "Woolloomooloo",
"state": "NSW", "lat": -33.8696, "lng": 151.2213, "distance_m": 1115,
"fuels": [
{"type": "ULP", "name": "Unleaded 91", "price": 259.9, "updated": "2026-03-30T12:00:02"},
{"type": "E10", "name": "E10", "price": 257.9, "updated": "2026-03-30T12:00:02"},
{"type": "PULP95", "name": "Premium 95", "price": 277.4, "updated": "2026-03-30T12:00:02"},
{"type": "DIESEL", "name": "Diesel", "price": 289.9, "updated": "2026-03-30T12:00:02"}
]
}
]
}
60 requests per minute per IP. For Home Assistant, a scan_interval of 300 (5 min) or longer is recommended. The API is designed for periodic location-based lookups within 25km, not bulk data extraction. Max 50 stations per request.
| Code | Name | Coverage |
|---|---|---|
ULP | Unleaded 91 | All States + NZ |
E10 | E10 Ethanol | NSW, QLD, VIC, SA, ACT |
PULP95 | Premium 95 | All States + NZ |
PULP98 | Premium 98 | All States |
DIESEL | Diesel | All States + NZ |
PDIESEL | Premium Diesel | Most States |
LPG | LPG Autogas | NSW, VIC, QLD, SA |
Add this to your Home Assistant configuration.yaml. Replace the latitude and longitude with your home coordinates.
rest:
- resource: "https://petrolmate.com.au/api/v1/stations/area?lat=-33.87&lng=151.21&radius=5000&limit=10"
scan_interval: 300
sensor:
- name: "Cheapest ULP Nearby"
value_template: >
{% set ns = namespace(cheapest=none) %}
{% for station in value_json.stations %}
{% for fuel in station.fuels if fuel.type == 'ULP' %}
{% if ns.cheapest is none or fuel.price < ns.cheapest %}
{% set ns.cheapest = fuel.price %}
{% endif %}
{% endfor %}
{% endfor %}
{{ ns.cheapest }}
unit_of_measurement: "c/L"
rest:
- resource: "https://petrolmate.com.au/api/v1/stations/area?lat=-33.87&lng=151.21&radius=5000&limit=10"
scan_interval: 300
sensor:
- name: "Nearest Station"
value_template: "{{ value_json.stations[0].name }}"
- name: "Nearest ULP Price"
value_template: >
{{ value_json.stations[0].fuels | selectattr('type','eq','ULP')
| map(attribute='price') | first | default('N/A') }}
unit_of_measurement: "c/L"
- name: "Nearest Diesel Price"
value_template: >
{{ value_json.stations[0].fuels | selectattr('type','eq','DIESEL')
| map(attribute='price') | first | default('N/A') }}
unit_of_measurement: "c/L"
- name: "Stations in Range"
value_template: "{{ value_json.count }}"
automation:
- alias: "Fuel Price Alert"
trigger:
- platform: numeric_state
entity_id: sensor.cheapest_ulp_nearby
below: 250
action:
- service: notify.mobile_app
data:
title: "Cheap Fuel Alert"
message: "ULP dropped to {{ states('sensor.cheapest_ulp_nearby') }}c/L nearby!"
Petrolmate aggregates prices from the official fuel price schemes run by every Australian state and territory government.
| State | Source | Type |
|---|---|---|
| New South Wales | NSW FuelCheck | Official |
| Queensland | QLD Fair Fuel | Official |
| South Australia | SA Fuel Pricing | Official |
| Victoria | VIC Fair Fuel | Official |
| Western Australia | WA FuelWatch | Official |
| Tasmania | TAS FuelCheck | Official |
| Northern Territory | NT MyFuel | Official |
| ACT | NSW FuelCheck | Official |
Prices older than 7 days are never shown. New Zealand prices are paused until New Zealand has an official fuel price feed.
Prices sync from official government fuel price schemes multiple times daily. Most stations update every 6 to 12 hours. The API caches responses for 10 minutes.
Yes, free for personal and Home Assistant use. Rate limited to 60 req/min. Designed for periodic polling within 25km, not bulk extraction.
300 seconds (5 min) works well. Prices change a few times per day, so polling more often adds no benefit.
No. No registration, no key, no sign-up. Just call the endpoint with your coordinates.
The API is designed for location-based lookups within 25km. For broader trends visit petrolmate.com.au/price-trends.
Copy the REST sensor config above into your configuration.yaml and restart Home Assistant.