The collection is data. Station fields live under attributes, and attributes.price.products maps product IDs to cents per litre. JSON object keys are strings: use products["1"], not a property named unleaded.
The following response is illustrative. Its fixed dates and prices are not a live quote.
Example response
{"jsonapi":{"version":"1.1"},"meta":{"source":"fuelwatch.wa.gov.au","sourceDate":"2026-09-29","fetchedAt":"2026-09-29T16:00:00.000+08:00","validFrom":"2026-09-29T06:00:00.000+08:00","validUntil":"2026-09-30T06:00:00.000+08:00","publicationStatus":"available","copyright":"Copyright 2025 Department of Local Government, Industry Regulation and Safety (source data); Copyright 2026 Bradley Hodges (api). All rights reserved.","documentation":"https://docs.fuelwatch.oss.bhodges.me","issues":"https://github.com/bradleyhodges/fuelwatch-api/issues","product":1,"version":"4.30.1"},"data":[{"type":"serviceStation","id":"2026-09-29:238232d151f5f92bbce32951b828cb7fe4887fdc1ac868628c7ab33d4eda4e3b","attributes":{"name":"Example Station","tradingName":"Example Station","brand":5,"price":{"asAt":"2026-09-29T06:00:00.000+08:00","products":{"1":185.9}},"address":{"street":"1 Test Road","suburb":"PERTH","state":"WA","postcode":null},"is24Hours":null,"phone":null,"latitude":-31.95,"longitude":115.86,"siteFeatures":[1,4],"restrictions":null}}]}
Check meta.sourceDate, validFrom, validUntil and publicationStatus before treating prices as currently effective. A successful request can have an empty data array.
This JavaScript example uses the built-in fetch API. It handles HTTP failures and excludes stations without the requested product before sorting locally.
Important
Brand, feature and restriction values are numeric codes by default. Use expansion if your application needs labels.
Persist the last valid snapshot and its ETag if the application must survive network outages. A failure must not turn an old quote into a newly fetched one. See conditional requests and error handling.