# Fuel prices

```bash
curl "https://api.cardog.app/v2/fuel/stations?lat=43.9421&lng=-79.3797&radius_km=5&fuel=regular" \
  -H "x-api-key: $CARDOG_API_KEY"
```

Fuel stations near a point, nearest first, each with its current pump
price for every fuel it sells. `/v2/fuel` answers from **our own daily
snapshot** of fuel stations and their posted prices across Canada, served
from our database rather than a live call to anyone's API. Every response
carries `asOf`, the snapshot date it was built from. One credit a request.

Prices are as posted, in **Canadian cents per litre**: `158.9` is $1.589
a litre.

## Stations near a point

`radius_km` defaults to 10 and caps at 100. `limit` defaults to 20 and
caps at 100. Each station carries `prices`: its current price for each
fuel it sells, by payment. `fuel` keeps only stations with a current price
for that fuel.

Every station has a `ref` and an `id`. The ref is the station's
[location](https://cardog.app/docs/locations) ref, `poi:dpz9cxmmw0`, the same one
`/v2/locations` serves for the place. The id is the ref without `poi:`,
and the tail of `links.self`. The ref is derived from where the station
stands, so it does not change when its name or brand does.

## One station

```bash
curl "https://api.cardog.app/v2/fuel/stations/dpz9cxmmw0" \
  -H "x-api-key: $CARDOG_API_KEY"
```

Name, brand, address, the fuels it sells, `amenities` (`c_store`,
`pay_at_pump`, `restrooms` and more), `openingHours`, and its current
prices. `lastSeen` is the newest daily snapshot the station was in. An id
that is not a geohash is a `404`.

## What "current" means

A price is current when it is the newest one posted for that fuel and
payment, and it was posted in the last 7 days. A station is listed when it
appeared in one of the last 7 daily snapshots.

> **Both windows run on today's date, not on `asOf`.** If a snapshot is
> ever late, prices age out rather than pass for today's. Each price carries
> its `postedAt`, so you can show "posted 3 hours ago" and decide for
> yourself how fresh is fresh enough.

`reportedBy` says who posted a price: `owner` is the station itself,
`member` and `visitor` are drivers. Most stations post one price per
fuel, paying by card (`payment: "credit"`). A few post a lower cash price
as well.

## The cheapest nearby

```bash
curl "https://api.cardog.app/v2/fuel/stations?lat=43.9421&lng=-79.3797&fuel=diesel&sort=price&limit=5" \
  -H "x-api-key: $CARDOG_API_KEY"
```

`sort=price` orders by the current card price for `fuel`, cheapest
first, and needs a `fuel`.

## The price in an area

```bash
curl "https://api.cardog.app/v2/fuel/prices?area=CA-ON&fuel=regular&days=30" \
  -H "x-api-key: $CARDOG_API_KEY"
```

One entry per day: the median, 10th and 90th percentile, and mean of the
current card price across every station in the area that day, and how many
stations that took. On 2026-10-25 the Ontario regular median was 168.9 ¢/L
across 2,803 stations. `area` is one of:

| area | example |
| --- | --- |
| Canada | `CA` |
| a province or territory | `CA-ON`, `CA-QC`, `CA-BC` |
| a forward sortation area: the first three characters of a postal code | `L3Y` |

An FSA with a handful of stations is a handful of prices. Read `stations`
before you lean on a median.

## Fuels

`regular`, `midgrade`, `premium`, `diesel`, `e85`, `propane`. Each
price also carries `fuelType`, the same fuel-type ref a vehicle's spec
sheet uses (`fuel-type:gasoline`, `fuel-type:diesel`), so a vehicle and
the price of what it burns join without a lookup table. For what to build
on that, see [Build with locations](https://cardog.app/docs/build-with-locations).

---

Previous: [Locations](https://cardog.app/docs/locations.md) (Locations)
Next: [Charging stations](https://cardog.app/docs/charging.md) (Locations)
