Historical fuel prices in Türkiye: what diesel cost on any past date
Today’s pump price is on a public page; the archive is not. How to get the petrol or diesel price in force in any Turkish province on any date back to 2009.
Fleet reconciliation, expense audits, freight surcharge clauses and cost forecasts all ask the same question: what did diesel cost in this province on this date? Distributors publish today's price on a web page and quietly overwrite it tomorrow. The number you need is the one nobody keeps.
Why "just scrape it daily" is harder than it looks
- Prices change on irregular days. There is no weekly schedule — a change lands when the distributor decides. A dataset with one row per day and no change flag hides when the move happened.
- Price is per province, sometimes per district. İstanbul alone is split into European and Anatolian sides with different prices on the same day.
- A missing day is not a missing price. If no change was published, yesterday's price is still in force. Interpolating between observations invents numbers; carrying the last value forward is the only correct rule.
- An audit will ask where the number came from. A bare number in your database is worthless three years later if you cannot show the page it was read from.
The price in force on a past date
curl "https://api.temsor.com/v1/tr/fuel/prices?province=Ankara&product=motorin&asOf=2018-03-12"
{
"province": { "plate": 6, "name": "Ankara" },
"asOf": "2018-03-12",
"currency": "TRY",
"prices": [{
"product": "motorin",
"label": "Diesel",
"price": 5.17,
"unit": "TRY/L",
"effectiveFrom": "2018-02-24",
"observedAt": "2018-03-09",
"carriedForward": true,
"source": {
"url": "https://www.tppd.com.tr/gecmis-akaryakit-fiyatlari?id=6&county=...",
"contentHash": "181cc956feadf0a897308331b08a86bb..."
}
}]
}
Three fields carry the honesty of the answer:
effectiveFrom— when this price came into force. Older than your date, always, unless the price changed that very day.carriedForward: true— there was no observation on the exact date you asked about, so the last known price applies. Nothing was invented.source— the URL the figure was read from and a hash of that page's content. This is what turns a number into evidence.
Changes in a window, with the percentage move
curl "https://api.temsor.com/v1/tr/fuel/prices?province=34&product=benzin&from=2026-01-01&to=2026-06-30"
{
"changes": [
{ "product": "benzin", "at": "2026-05-11", "price": 65.60, "changePct": 0.12 },
{ "product": "benzin", "at": "2026-05-22", "price": 66.84, "changePct": 1.80 },
{ "product": "benzin", "at": "2026-06-02", "price": 64.71, "changePct": -3.19 }
]
}
Only actual changes are returned — days where the price stayed flat are omitted rather than repeated. That is what you want for a chart of moves, a surcharge trigger, or a "how many hikes this quarter" count.
Coverage
- All 81 provinces, referenced to the province centre; districts that the distributor lists
differently are available with
includeDistricts=true. - Products: petrol (95), diesel, premium diesel, kerosene, heating oil, fuel oil — whichever the distributor publishes for that province.
- History back to 2009 for the price-change events, plus a daily observation going forward.
- Prices are the reference prices of Türkiye Petrolleri (TP), the state distributor with the largest network. Individual stations may price slightly differently; this is a reference series, not a station-level feed.
Fuel cost of a trip, at the time it happened
import Client from 'temsor-api';
const api = new Client();
async function tripCost({ province, litres, date }) {
const r = await api.trFuelPrices({ province, product: 'motorin', asOf: date });
const p = r.prices[0];
if (!p?.price) throw new Error('no price on record for that date');
return {
cost: +(p.price * litres).toFixed(2),
pricePerLitre: p.price,
inForceSince: p.effectiveFrom, // put this on the expense line
evidence: p.source.url, // and this in the audit trail
};
}
Leave the province out to see what is stored
curl "https://api.temsor.com/v1/tr/fuel/prices"
Returns the coverage table: every province, how many products are tracked and the first and last date on record. Check it before assuming a date is available — an archive that starts after your date is a different answer from a price that did not change.
Frequently asked
How far back does the fuel price history go?
Price-change events go back to 2009, and a daily observation is recorded going forward. Ask with an empty province to see the exact first and last date on record for each province.
What happens if there was no price change on the date I ask for?
The last price in force is returned, flagged with carriedForward: true and an effectiveFrom date. No value is interpolated or invented.
Are these station prices or reference prices?
Reference prices published by the distributor per province (and per district where it differs). Individual stations may deviate slightly.
Can I use this for an audit?
Every stored point carries the source URL and a hash of the page content it was read from, so a figure can be traced back to what the source published on that date.