Don't get pumped.
Real-time Australian and New Zealand fuel prices in your smart home dashboard
Why Petrolmate? Unlike scraped community sources, Petrolmate aggregates data from official Australian government APIs (NSW FuelCheck, QLD, SA, VIC, WA FuelWatch, NT, TAS) plus community sources. If your existing fuel price integration stopped working, Petrolmate is a reliable alternative backed by official data.
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 official government APIs across every Australian state plus community data.
| 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 + Broader | Community data | Community |
| New Zealand | Community data | Community |
Official government sources are prioritised. Fresh official data (under 48 hours) takes precedence over community data.
Prices sync from government APIs and community sources multiple times daily. Most stations update every 6 to 12 hours. The API caches responses for 2 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.
Yes. Petrolmate covers all Australian states plus NZ with 15,149+ stations backed by official government APIs.
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.