Monthly OPEC production data from the Official OPEC Monthly Oil Market Report (MOMR).
Source: OPEC Monthly Oil Market Report Release: Around the 15th of each month Plan Required: Scale (see pricing)
Production volumes, not the basket price
This is the OPEC MOMR production dataset — monthly crude production volumes by OPEC member country, published in the OPEC Monthly Oil Market Report.
It is not the OPEC Reference Basket price. If you want the daily basket price, use the OPEC_BASKET_USD commodity code against /v1/prices/latest — see OPEC Basket (OPEC_BASKET_USD).
| You want | Use | Plan |
|---|
| Daily OPEC Reference Basket price | /v1/prices/latest?by_code=OPEC_BASKET_USD | Any paid plan |
| Monthly OPEC production volumes | /v1/ei/opec_productions/* (this page) | Scale |
| Method | Endpoint | Description |
|---|
| GET | /v1/ei/opec_productions | List paginated reports |
| GET | /v1/ei/opec_productions/latest | Latest report |
| GET | /v1/ei/opec_productions/total | OPEC total production trend |
| GET | /v1/ei/opec_productions/by_country | Filter by country |
| GET | /v1/ei/opec_productions/historical | Historical data |
| GET | /v1/ei/opec_productions/top_producers | Ranked producers list |
| GET | /v1/ei/opec_productions/:id | Specific report by ID |
GET /v1/ei/opec_productions
| Parameter | Type | Default | Description |
|---|
page | integer | 1 | Page number |
per_page | integer | 10 | Results per page (max 50) |
GET /v1/ei/opec_productions/latest
{
"data": {
"report_month": "2024-12",
"publication_month": "2024-12",
"production_month": "2024-11",
"opec_total_mbpd": 27.84,
"month_over_month": -0.15,
"headline": "OPEC production decreased by 150,000 b/d in December",
"countries": [
{
"country": "saudi_arabia",
"name": "Saudi Arabia",
"production_mbpd": 9.13,
"quota_mbpd": 9.0,
"compliance_pct": 98.6
}
]
}
}
Responses carry two period fields alongside report_month, because the MOMR publishes around the 15th of each month covering the prior month's production:
| Field | Meaning |
|---|
publication_month | The month the MOMR report was published (same value as report_month) |
production_month | The month the production figures actually describe — normally one month before publication_month. Where the observation month could not be established, the shape differs by response: /latest and the report list return it as null, while historical, total, by_country and the per-producer rows of top-producers omit the key entirely (those records are compacted before serialization; top-producers is mixed — its top-level period block keeps the null) — so test for presence, not for null |
Verified live 2026-09-11: the latest report returned "publication_month": "2026-07-01" with "production_month": "2026-06-01". Use production_month when aligning OPEC volumes with other monthly series; report_month/publication_month tell you which report the number came from, not which month it measures.
GET /v1/ei/opec_productions/total
| Parameter | Type | Default | Description |
|---|
months | integer | 12 | Months of history (max 60) |
{
"data": {
"latest": {
"report_month": "2024-12",
"production_mbpd": 27.84,
"month_over_month": -0.15
},
"history": [
{
"report_month": "2024-12",
"production_mbpd": 27.84
},
{
"report_month": "2024-11",
"production_mbpd": 27.99
}
],
"trend": {
"direction": "decreasing",
"change_mbpd": -0.65,
"change_pct": -2.3
}
}
}
GET /v1/ei/opec_productions/by_country
| Parameter | Type | Required | Description |
|---|
country | string | No | Country code (snake_case) |
month | string | No | Format: YYYY-MM |
| Code | Country |
|---|
algeria | Algeria |
angola | Angola |
congo | Congo |
equatorial_guinea | Equatorial Guinea |
gabon | Gabon |
iran | Iran |
iraq | Iraq |
kuwait | Kuwait |
libya | Libya |
nigeria | Nigeria |
saudi_arabia | Saudi Arabia |
uae | United Arab Emirates |
venezuela | Venezuela |
| Code | Country |
|---|
azerbaijan | Azerbaijan |
bahrain | Bahrain |
brunei | Brunei |
kazakhstan | Kazakhstan |
malaysia | Malaysia |
mexico | Mexico |
oman | Oman |
russia | Russia |
south_sudan | South Sudan |
sudan | Sudan |
{
"data": {
"report_month": "2024-12",
"country": "saudi_arabia",
"name": "Saudi Arabia",
"production_mbpd": 9.13,
"quota_mbpd": 9.0,
"compliance_pct": 98.6,
"spare_capacity_mbpd": 3.0,
"month_over_month": 0.05
}
}
GET /v1/ei/opec_productions/top_producers
| Parameter | Type | Default | Description |
|---|
limit | integer | 10 | Number of producers (max 20) |
month | string | latest | Format: YYYY-MM |
{
"data": {
"report_month": "2024-12",
"producers": [
{
"rank": 1,
"country": "saudi_arabia",
"name": "Saudi Arabia",
"production_mbpd": 9.13,
"month_over_month": 0.05,
"share_of_opec": 32.8
},
{
"rank": 2,
"country": "iraq",
"name": "Iraq",
"production_mbpd": 4.25,
"month_over_month": -0.1,
"share_of_opec": 15.3
}
],
"opec_total": 27.84
}
}
GET /v1/ei/opec_productions/historical
| Parameter | Type | Default | Description |
|---|
country | string | opec_total | Country code or opec_total |
months | integer | 24 | Months of data (max 120) |
{
"data": {
"country": "saudi_arabia",
"data_points": [
{
"report_month": "2024-12",
"production_mbpd": 9.13,
"quota_mbpd": 9.0
}
]
}
}
import requests
response = requests.get(
"https://api.oilpriceapi.com/v1/ei/opec_productions/latest",
headers={"Authorization": "Token YOUR_API_KEY"}
)
data = response.json()
print(f"OPEC Total: {data['data']['opec_total_mbpd']} mb/d")
for country in data['data']['countries']:
if country.get('compliance_pct'):
status = "OK" if country['compliance_pct'] >= 100 else "OVER"
print(f"{country['name']}: {country['compliance_pct']}% compliance [{status}]")
const response = await fetch(
"https://api.oilpriceapi.com/v1/ei/opec_productions/total?months=6",
{ headers: { Authorization: "Token YOUR_API_KEY" } },
);
const data = await response.json();
const trend = data.data.trend;
console.log(`OPEC Trend: ${trend.direction}`);
console.log(`Change: ${trend.change_mbpd} mb/d (${trend.change_pct}%)`);
- Supply Control: OPEC+ controls ~40% of global oil supply
- Quota Compliance: Actual vs target production affects prices
- Spare Capacity: Saudi spare capacity is market safety valve
- Geopolitics: Sanctions, conflicts affect production