How current the data is
How fresh each kind of price is, the freshness field, and fetching only what is new.
Every kind of price arrives on its own publisher's rhythm. This guide gives each rhythm, how the API tells you whether a series is on it, and how to poll without reading the same points twice. How current the data is explains the same for people, with the weekly release of the benchmark closes drawn day by day.
Each kind of data
| Data | Updates | Usual delay | Notes |
|---|---|---|---|
| Station prices | Minutes to daily, by country | 30 days (per station price) | A price unconfirmed for 30 days is stale and left out unless you send include_stale=true |
| Set prices | As announced | The country's own interval | Weekly, fortnightly or monthly |
| Daily series | Each publishing day | 10 days | Benchmarks, currency rates, daily pump prices |
| Weekly series | Weekly | 21 days | Weekly pump averages |
| Monthly series | Monthly | 75 days | Monthly pump prices and price build-ups |
| Supply and stocks | Monthly | 200 days | Countries report months late |
| Quarterly and yearly | Quarterly, yearly | 150 and 500 days | Quarterly currency rates, yearly figures |
Brent, WTI and the products
The daily closes are released once a week, on Wednesday, with every trading day up to the Tuesday before. The newest close is therefore 1 to 8 days old, and on a Monday it is normal for the last close to be the previous Tuesday's. No day is skipped: each release fills the days since the one before. Live exchange prices are licensed and cannot be passed on, so they are not in the API.
The freshness field
Every series answer, from List series, Series values and Pump prices, carries freshness:
| Field | Means |
|---|---|
status | on_schedule while the newest point is within its usual delay; past it, late, ended (no longer published) or waiting_on_country (the country reports on its own timetable) |
days_since_last | Days from the newest point to today, UTC |
usual_within_days | The usual delay for this series: its interval plus the publisher's normal lag |
"freshness": {"status": "on_schedule", "days_since_last": 6, "usual_within_days": 10}on_schedule is worked out on every call. Past the usual delay, the status comes from a check of every series run once a day.
Fetching only what is new
Keep the newest date you hold for each series and ask from the day after it. You get nothing back until the publisher has released more, and each call costs one of your daily calls whatever it returns, so poll on the publisher's rhythm: daily series once a day, the benchmark closes on Wednesdays, monthly series a few times a month.
curl -G "https://api.oilapi.net/v1/series/crude.brent.europe" \ -d from=2026-10-28 \ -H "X-API-Key: YOUR_API_KEY"
What to show your users
Show the date of the price next to it, not only the price. For the benchmarks, a line such as "close of Tue 27 Oct, next release Wed 4 Nov" sets the right expectation.