OilPriceAPI Docs
Quick Start
API Reference
  • SDKs and languages
  • Tutorials
  • Articles
  • Documentation directory
  • Quick reference
  • API explorer
  • FAQ
  • Changelog
  • Status
  • Dashboard
GitHub
Quick Start
API Reference
  • SDKs and languages
  • Tutorials
  • Articles
  • Documentation directory
  • Quick reference
  • API explorer
  • FAQ
  • Changelog
  • Status
  • Dashboard
GitHub
  • Interactive Explorer

    • Interactive API Explorer
  • Price Data

    • API Reference
    • Get Latest Prices
    • Historical Prices
    • Batch Prices
    • Excel Latest Price Gateway
    • Price Widget Endpoints
    • Price Utility Endpoints
    • Demo API (No Authentication)
    • Natural Gas Intelligence
  • Commodities

    • List Commodities
    • Get Commodity Details
    • Data Publication & Collection Schedules
  • AI Agents (MCP)

    • Get Market Brief
    • Subscriptions / Watches
    • Agent Subscriptions with MCP
  • Marine Fuels

    • Marine Fuel API
    • List Marine Fuel Ports
    • Get Port Details with Prices
    • Bunker Fuels
    • Maritime Fuels
  • Fuel Surcharges

    • Fuel Surcharge API
  • Premium Endpoints

    • All Prices API - One Call, All Commodities
    • Cushing Oil Storage Intelligence API
    • Drilling Intelligence API
    • Marine Fuels API
    • ICE Brent Futures API
    • Benchmark Close
    • Aviation Fuel Pilot
  • Spreads & Margins

    • Spreads & Margins
    • Crack Spreads
    • European Gasoil Crack
    • Basis Spreads
    • Refining Margins
    • Curve Structure
    • Physical Premiums
  • Market Indicators

    • Market Indicators
    • Fuel Switching
    • Price Context
    • Storage Analytics
    • CFTC Positioning
    • Congressional Trades
    • Market Annotations
  • Futures

    • Futures API
    • ICE Brent Futures
    • ICE WTI Futures
    • Continuous Futures (Brent, WTI)
    • ICE Gas Oil Futures
    • NYMEX Natural Gas Futures
    • ICE EUA Carbon Futures
    • EU Carbon Futures
    • TTF Gas Futures
    • LNG JKM Futures
    • UK Carbon Futures
  • Dark Data (Premium)

    • Energy Intelligence API
    • Rig Counts
    • Well Permits
    • Well Production Beta
    • Drilling Intelligence (Public)
    • Oil Inventories
    • OPEC Production
    • Drilling Productivity
    • Forecasts (STEO)
  • Well Production (Beta)

    • Well Production Data
    • Well Production API Reference
  • Analytics

    • Analytics API
  • Webhooks API

    • Webhooks API Reference
    • Webhook Endpoint Reference
  • Alerts

    • Price Alerts API
  • Account & Billing

    • Account API
    • API Keys
    • Subscriptions
    • Organizations

Drilling Intelligence API

Overview

Comprehensive drilling activity data including rig counts, frac spreads, well permits, and DUC (Drilled but Uncompleted) wells. Essential intelligence for energy traders, E&P companies, and market analysts tracking North American oil & gas production trends.

Access Level: Premium (Scale plan only)

Available Endpoints

EndpointDescriptionUpdate Frequency
/v1/drilling-intelligence/latestAll drilling metrics summaryWeekly/Monthly
/v1/rig-counts/latestLatest rig count dataWeekly (Fridays)
/v1/drilling-intelligence/frac-spreadsActive frac spread countsMonthly
/v1/drilling-intelligence/well-permitsNew well permit dataMonthly
/v1/drilling-intelligence/duc-wellsDUC well inventoryMonthly
/v1/drilling-intelligence/completionsWells completed by basinMonthly
/v1/drilling-intelligence/wells-drilledWells drilled by basinMonthly

Authentication

All drilling intelligence endpoints require premium API access:

curl -X GET "https://api.oilpriceapi.com/v1/drilling-intelligence/latest" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Accept: application/json"

Rig Counts

Latest Rig Counts

GET /v1/rig-counts/latest

Response:

{
  "status": "success",
  "data": {
    "us": {
      "total": 625,
      "oil": 502,
      "gas": 119,
      "miscellaneous": 4,
      "week_change": -3,
      "year_ago": 734
    },
    "canada": {
      "total": 218,
      "oil": 142,
      "gas": 76,
      "week_change": 5,
      "year_ago": 195
    },
    "international": {
      "total": 843,
      "month_change": 12,
      "year_ago": 798
    },
    "metadata": {
      "source": "Baker Hughes",
      "release_date": "2025-09-20",
      "next_release": "2025-09-27"
    }
  }
}

Historical Rig Counts

GET /v1/rig-counts/historical?period=52w
GET /v1/rig-counts/historical?period=15y
GET /v1/rig-counts/historical?by_period=2020-01-01,2026-08-01

period is a relative window using d, w, m, or y and may span up to 15 years (for example 16w, 52w, 5y, 15y). by_period takes an explicit YYYY-MM-DD,YYYY-MM-DD range with the same 15-year ceiling. Do not combine the two. Longer windows are rejected with HTTP 422:

{
  "status": "fail",
  "data": {
    "error": "Unsupported period. Use a relative period up to 15 years (for example 16w, 52w, 5y, or 15y)."
  }
}

Results are paginated at up to 100 observations per page; pagination (page, per_page, total, total_pages) and Link headers (rel="first", "next", "last") traverse larger windows. The period object distinguishes the requested window from what is actually held:

{
  "period": {
    "from": "2011-08-30",
    "to": "2026-08-30",
    "relative": "15y",
    "coverage_from": "2013-01-04",
    "coverage_to": "2026-08-28",
    "earliest_available": "2013-01-04",
    "observations": 713,
    "complete": false
  }
}
FieldDescription
from / toThe requested window
coverage_from / coverage_toFirst and last observation dates actually returned for the window
earliest_availableOldest weekly observation held for the series
observationsNumber of observations in the window
completefalse when the requested window starts before earliest_available

Frac Spreads

Active hydraulic fracturing crew counts by major basin:

GET /v1/drilling-intelligence/frac-spreads

Response:

{
  "status": "success",
  "data": {
    "total_us": 265,
    "by_basin": {
      "permian": 145,
      "eagle_ford": 35,
      "bakken": 28,
      "haynesville": 22,
      "marcellus": 18,
      "other": 17
    },
    "month_change": -8,
    "year_ago": 290,
    "metadata": {
      "data_date": "2025-09-01",
      "source": "Primary Vision"
    }
  }
}

Well Permits

New drilling permits issued by state:

GET /v1/drilling-intelligence/well-permits

Response:

{
  "status": "success",
  "data": {
    "total_permits": 4250,
    "by_state": {
      "texas": 1850,
      "new_mexico": 620,
      "north_dakota": 380,
      "oklahoma": 425,
      "colorado": 290,
      "wyoming": 185,
      "other": 500
    },
    "month_over_month": {
      "absolute": 125,
      "percentage": 3.0
    },
    "oil_vs_gas": {
      "oil_permits": 3200,
      "gas_permits": 1050
    },
    "metadata": {
      "period": "2025-08",
      "source": "State Regulatory Agencies"
    }
  }
}

DUC Wells (Drilled but Uncompleted)

Inventory of wells drilled but awaiting completion:

GET /v1/drilling-intelligence/duc-wells

Response:

{
  "status": "success",
  "data": {
    "total_duc_wells": 4435,
    "by_basin": {
      "permian": {
        "count": 893,
        "month_change": -45,
        "months_inventory": 3.2
      },
      "eagle_ford": {
        "count": 345,
        "month_change": -12,
        "months_inventory": 4.1
      },
      "bakken": {
        "count": 328,
        "month_change": -8,
        "months_inventory": 5.5
      },
      "niobrara": {
        "count": 287,
        "month_change": 5,
        "months_inventory": 4.8
      }
    },
    "trends": {
      "three_month": "declining",
      "six_month": "declining",
      "completion_rate": "accelerating"
    },
    "metadata": {
      "data_date": "2025-08-31",
      "source": "EIA Drilling Productivity Report",
      "next_release": "2025-09-15"
    }
  }
}

Wells Completed

Latest EIA wells-completed series by basin. Requires the Scale plan. No query parameters — the endpoint always returns the most recent complete EIA report month, per basin plus a REST_LOWER48 remainder.

GET /v1/drilling-intelligence/completions

Response:

{
  "status": "success",
  "data": {
    "completions": [
      {
        "code": "PERMIAN_WELLS_COMPLETED",
        "name": "Permian Wells Completed",
        "value": 484,
        "unit": "wells completed",
        "source": "eia_dpr",
        "created_at": "2026-08-11T16:15:20.784Z",
        "collected_at": "2026-08-11T16:15:20.784Z",
        "observed_at": "2026-07-01T12:00:00.000Z",
        "source_date": "2026-07-01",
        "formatted_date": "2026-07-01 12:00:00 UTC"
      }
    ],
    "summary": {
      "total": 1066,
      "by_basin": {
        "APPALACHIA": 90,
        "BAKKEN": 69,
        "EAGLEFORD": 117,
        "HAYNESVILLE": 66,
        "PERMIAN": 484,
        "REST_LOWER48": 240
      },
      "period_type": "monthly",
      "last_updated": "2026-08-11T16:15:20.850Z",
      "source": "eia_dpr",
      "source_date": "2026-07-01",
      "status": "complete",
      "quarter": {
        "available": true,
        "status": "complete",
        "period": "2026-Q2",
        "source_start_date": "2026-04-01",
        "source_end_date": "2026-06-01",
        "collected_at": "2026-08-11T16:15:23.795Z",
        "total": 3069,
        "by_basin": {
          "APPALACHIA": 283,
          "BAKKEN": 220,
          "EAGLEFORD": 323,
          "HAYNESVILLE": 186,
          "PERMIAN": 1397,
          "REST_LOWER48": 660
        }
      }
    }
  }
}

The quarter object rolls the last three complete report months into a calendar-quarter total. When no complete EIA well-activity report month is available, the endpoint returns HTTP 503 rather than partial data.

Wells Drilled

Latest EIA wells-drilled series by basin. Requires the Scale plan. Same response shape as completions, with the data array keyed wells_drilled and units of wells drilled.

GET /v1/drilling-intelligence/wells-drilled

Response (abbreviated):

{
  "status": "success",
  "data": {
    "wells_drilled": [
      {
        "code": "PERMIAN_WELLS_DRILLED",
        "name": "Permian Wells Drilled",
        "value": 484,
        "unit": "wells drilled",
        "source": "eia_dpr",
        "observed_at": "2026-07-01T12:00:00.000Z",
        "source_date": "2026-07-01"
      }
    ],
    "summary": {
      "total": 1024,
      "by_basin": {
        "APPALACHIA": 67,
        "BAKKEN": 58,
        "EAGLEFORD": 121,
        "HAYNESVILLE": 56,
        "PERMIAN": 484,
        "REST_LOWER48": 238
      },
      "period_type": "monthly",
      "source": "eia_dpr",
      "status": "complete"
    }
  }
}

Both endpoints return HTTP 401 without a valid API key, HTTP 403 on plans below Scale, and HTTP 503 when no complete authoritative EIA report month is available.

Summary Endpoint

Get all drilling intelligence metrics in one call:

GET /v1/drilling-intelligence/summary

Market Impact Analysis

Leading Indicators

MetricIncreasingDecreasing
Rig CountHigher future productionLower future production
Frac SpreadsNear-term production boostProduction slowdown
Well PermitsFuture drilling activity upFuture drilling down
DUC WellsPotential for quick productionCompletions outpacing drilling

Typical Lead Times

  • Rig Count → Production: 4-6 months
  • Frac Spreads → Production: 1-3 months
  • Permits → Drilling: 6-12 months
  • DUC Completions → Production: 2-4 weeks

Rate Limits

  • Requests: 60 requests per rolling 60-second window per API key on all plans
  • Cache: 5 minutes for real-time, 1 hour for historical

Example Usage

Python - Production Forecast

import requests

def analyze_production_outlook():
    headers = {'Authorization': 'Token YOUR_API_KEY'}

    # Get drilling intelligence
    response = requests.get(
        'https://api.oilpriceapi.com/v1/drilling-intelligence/summary',
        headers=headers
    )
    data = response.json()

    # Simple production outlook
    rig_trend = data['rig_counts']['us']['week_change']
    duc_trend = data['duc_wells']['total_change']

    if rig_trend > 0 and duc_trend < 0:
        return "Bullish: Rigs up, DUCs being completed"
    elif rig_trend < 0 and duc_trend > 0:
        return "Bearish: Rigs down, DUCs building"
    else:
        return "Neutral: Mixed signals"

JavaScript - Basin Comparison

async function compareBasins() {
  const response = await fetch(
    "https://api.oilpriceapi.com/v1/drilling-intelligence/completions",
    {
      headers: {
        Authorization: "Token YOUR_API_KEY",
      },
    },
  );
  const { data } = await response.json();

  // Find the basin completing the most wells this report month
  const mostActive = Object.entries(data.summary.by_basin).sort(
    (a, b) => b[1] - a[1],
  )[0];

  console.log(
    `Most active basin: ${mostActive[0]} with ${mostActive[1]} wells completed`,
  );
}

Error Codes

CodeDescription
401Invalid or missing API key
403Premium access required
404Data not found
429Rate limit exceeded
503Data temporarily unavailable

Data Sources

  • Rig Counts: Baker Hughes (weekly, Fridays at noon CST)
  • Frac Spreads: Primary Vision (monthly)
  • Well Permits: State regulatory agencies (monthly)
  • DUC Wells: EIA Drilling Productivity Report (monthly)

Related Endpoints

  • /v1/prices/latest?code=WTI_USD - WTI crude oil price
  • /v1/prices/latest?code=NATURAL_GAS_USD - Natural gas price
  • /v1/storage/cushing - Cushing oil storage levels
Last Updated: 9/5/26, 8:35 PM
Prev
Cushing Oil Storage Intelligence API
Next
Marine Fuels API