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
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
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
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
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
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.
- Australian state feeds: hourly, staggered so no two feeds run in the same five-minute window.
- DOE Philippines weekly advisory: imported within 24 hours of the Tuesday release.
- Community pump reports: written directly to the live dataset. No batching, no delay.
- Station metadata refresh (location, brand, amenities): monthly.
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:
- Green โ updated within 6 hours. Treat as live.
- Amber โ between 6 and 24 hours old. Usually still accurate, especially in NSW/QLD where prices move on a daily rhythm. Worth checking the pump sign on arrival.
- Red โ older than 24 hours. Treat as indicative only. Common in low-feed markets and in regional areas where government reporting is patchy.
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:
- Between DOE weekly cycles in the Philippines, where an official advisory from Tuesday may not reflect Friday's actual pump price.
- In low-feed markets (Indonesia, Singapore, Vietnam, Thailand) where drivers are the primary source of current pricing.
- For rural and regional stations anywhere, where government feeds occasionally miss submissions.
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:
- HERE Places API โ primary source. Authorised commercial access.
- OpenStreetMap (via the Overpass API) โ secondary source. Used to fill geographic gaps where HERE coverage is incomplete, especially in Indonesia, Philippines and Vietnam.
- Government feeds themselves โ where the feed ships station metadata alongside prices (NSW FuelCheck does), we use it to cross-check and enrich.
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
- Prices are indicative. Actual pump prices may vary from what we show, especially after a retailer changes their sign but before the feed publishes. Always double-check the board before filling. This is not optional: it's in our terms.
- Feed publication lag. A retailer may change their sign at 08:00 but the feed we consume may not reflect it until 08:30. During that window, a community pump report would be ahead of our API data.
- Low-feed markets. Indonesia, Singapore, Vietnam, Thailand, Malaysia and Cambodia rely primarily on community reports. Coverage is sparser than AU/PH and freshness is lower on average.
- EV pricing. EV charging networks publish less consistently than fuel retailers. We show the most recently confirmed $/kWh per connector type, with a conservative staleness threshold.
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.