Methodology

How PetrolBud sources, syncs, verifies and presents fuel prices across eight Asia-Pacific countries. This page is the authoritative reference โ€” everything shown in the app is derived from the pipelines described below.

1. Source of truth: official government feeds

For markets where regulators publish real-time retail fuel prices, we treat those feeds as the source of truth. Retailers file prices with the regulator on a defined cadence (often within 30 minutes of changing a sign); the regulator exposes a public API; we import from the API. No scraping of retailer websites, no screen-parsing of forecourt signage.

๐Ÿ‡ฆ๐Ÿ‡บ NSW FuelCheck

API v3 ยท authorised access ยท hourly sync

New South Wales retailers are required by law to report price changes within 30 minutes. We authenticate against the FuelCheck API v3 and pull the full state snapshot every hour. Station-level coverage is effectively complete for NSW forecourts.

๐Ÿ‡ฆ๐Ÿ‡บ WA FuelWatch

RSS feed ยท daily publication ยท 24-hour sync

Western Australia's FuelWatch scheme requires retailers to submit prices by 2pm the day before. Prices are locked for the next day, which means WA data is uniquely predictable: tomorrow's price at every WA station is known today. We sync the published feed once per day plus again after WA's lock-in window.

๐Ÿ‡ฆ๐Ÿ‡บ SA Fuel Pricing

Geo-queried JSON API ยท geoRegionLevel 3 ยท hourly sync

South Australia publishes prices via a geo-segmented API. We query at geoRegionLevel=3 (postcode resolution) and aggregate into the station-level view. Sync runs hourly.

๐Ÿ‡ฆ๐Ÿ‡บ QLD Open Data

Open Data portal ยท CSV export ยท hourly sync

Queensland's Fuel Price Reporting scheme publishes a public CSV updated continuously as retailers submit. We pull the snapshot and diff against the previous import hourly.

๐Ÿ‡ต๐Ÿ‡ญ DOE Philippines Retail Price Advisory

Weekly publication ยท photo-confirmed ยท Tuesday releases

The Philippines Department of Energy publishes a nationwide retail price advisory every Tuesday covering every major brand. We import within 24 hours of publication. Between weekly cycles, community pump-price reports supplement the official dataset so drivers see real movement rather than stale advisories.

Other markets

In markets without a public regulator feed (Indonesia, Singapore, Vietnam, Thailand, Malaysia, Cambodia) we rely on the community verification layer described below, plus retailer list-price announcements where they are reliably published. Coverage in these markets is intentionally lighter and freshness indicators reflect that honestly.

2. Sync cadence

Imports run on scheduled Cloud Functions. Every import job is idempotent โ€” re-running it with the same inputs produces the same output โ€” so we can retry without corrupting state.

3. Freshness indicators

Every station and every fuel row on the map displays a colour-coded freshness tag so drivers always know how current the number is:

Internally we track two timestamps per price: lastUpdated (last time the number changed) and lastVerifiedAt (last time we confirmed the current number is still right, even if the API returned the same value). The freshness indicator is based on lastVerifiedAt โ€” a station whose price hasn't moved for a week is still green if we've pulled the feed today and nothing is flagged as out of stock.

4. Out-of-stock detection

When a fuel disappears from a station's feed โ€” either because the retailer removed the grade or because they've genuinely run out โ€” the pipeline marks that fuel outOfStock=true rather than deleting it. The map pin shows an EMPTY badge, the info card shows "Out of Stock" in red, and the flag clears automatically the next time the fuel reappears in the feed.

This matters because prices don't just vanish in the real world โ€” a station losing E10 mid-week is useful information for drivers who were counting on it being there. Drivers can also manually flag out-of-stock via "Update Price" at the pump.

5. Community verification layer

Drivers at the pump can report real prices in two taps โ€” station pin, "Update Price", fuel and price in, submit. Reports go live instantly and earn community leaderboard points. There's no account requirement for reading or submitting, but signed-in users get persistent contribution stats.

Community data is especially valuable:

Every community report is attributed (if signed in), timestamped, and visible on the station's info card. Obviously bogus reports are filtered by a basic sanity check at write time (price must fall inside a realistic range for the fuel + region) and can be flagged by any user for review.

6. Station data provenance

Station locations, brands and amenities come from a combination of:

We do not scrape retailer websites for station listings. Where data conflicts, we prefer HERE for commercial forecourts, OSM for remote and regional, and the government feed for anything it says is authoritative.

7. Known limitations

8. Corrections

If you see a price you know is wrong, tap the station, tap "Update Price", and submit the real number. That's the fastest path โ€” community reports go live instantly and immediately start correcting the displayed data. For structural issues (wrong station location, missing station, wrong brand), email support@petrolbud.com and we'll fix it in the next metadata refresh.