Well Production API Reference
All endpoints are under https://api.oilpriceapi.com/v1/well-production. Authentication is required. Prefer Authorization: Token YOUR_API_KEY; api_key query parameters are also accepted.
Well production is in beta. Treat /summary as the source of truth for live coverage before relying on a state-level or well-level query.
GET /v1/well-production
Alias for GET /v1/well-production/summary.
curl "https://api.oilpriceapi.com/v1/well-production" \
-H "Authorization: Token YOUR_API_KEY"
GET /v1/well-production/summary
Return national summary data, top state aggregates, source metadata, and current coverage.
curl "https://api.oilpriceapi.com/v1/well-production/summary" \
-H "Authorization: Token YOUR_API_KEY"
Response Shape
{
"status": "success",
"data": {
"national": null,
"top_states": [
{
"state": "TX",
"period": "2026-04",
"oil_bbl": 174743000,
"oil_bpd": 5824767,
"gas_mcf": 1164406000,
"boe": 368810667
}
],
"data_sources": {
"state_aggregates": "EIA API v2 (monthly)",
"well_level": "State regulatory agencies",
"well_level_states": ["TX", "AK", "NM", "ND"],
"national_rollup": "Derived from collected well-level state rows"
},
"coverage": {
"states_with_data": ["AK", "AR", "CA", "CO", "TX"],
"well_level_states_with_data": ["AK", "ND", "TX"],
"latest_period": "2026-04",
"total_records": 597499
}
}
}
Coverage Fields
| Field | Description |
|---|---|
states_with_data | States with state aggregate rows |
well_level_states_with_data | States with persisted well-level rows |
latest_period | Latest production month across production rows |
total_records | Total production rows across granularities |
GET /v1/well-production/states
Return latest state aggregate production rows. These are state-level totals, not well-level records.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | No | Production period in YYYY-MM format. Defaults to latest available state aggregate period. |
curl "https://api.oilpriceapi.com/v1/well-production/states?period=2026-04" \
-H "Authorization: Token YOUR_API_KEY"
Response Shape
{
"status": "success",
"data": {
"period": "2026-04",
"count": 28,
"states": [
{
"state": "TX",
"period": "2026-04",
"oil_bbl": 174743000,
"oil_bpd": 5824767,
"gas_mcf": 1164406000,
"boe": 368810667
}
]
}
}
GET /v1/well-production/states/{state_code}
Return state aggregate production history for one state.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
state_code | string | Yes | Two-letter state code in the path |
start_date | string | No | Start date, ISO YYYY-MM-DD |
end_date | string | No | End date, ISO YYYY-MM-DD |
curl "https://api.oilpriceapi.com/v1/well-production/states/TX?start_date=2025-06-01&end_date=2026-04-30" \
-H "Authorization: Token YOUR_API_KEY"
Returns DATA_NOT_AVAILABLE with HTTP 404 when the state has no aggregate rows for the requested period.
GET /v1/well-production/wells/{api_number}
Return well-level production history for one 14-digit API number.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
api_number | string | Yes | 14-digit API number in the path; non-digits are stripped before validation |
curl "https://api.oilpriceapi.com/v1/well-production/wells/42461410190000" \
-H "Authorization: Token YOUR_API_KEY"
Returns INVALID_PARAMETER with HTTP 400 for API numbers that are not 14 digits, and DATA_NOT_AVAILABLE with HTTP 404 when no well-level rows exist for that well.
GET /v1/well-production/top-producers
Return top producing wells for a state over a rolling month window.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
state_code | string | No | Two-letter state code. Defaults to TX. |
months | integer | No | Rolling lookback window. Defaults to 12 months. |
limit | integer | No | Number of wells to return, max 100. Defaults to 20. |
curl "https://api.oilpriceapi.com/v1/well-production/top-producers?state_code=ND&months=3&limit=10" \
-H "Authorization: Token YOUR_API_KEY"
Response Shape
{
"status": "success",
"data": {
"state": "ND",
"period": {
"start": "2026-04-01",
"end": "2026-07-04"
},
"count": 10,
"producers": [
{
"api_number": "33025012340000",
"operator": "Example Operator",
"well_name": "Example 1H",
"total_oil_bbl": 12345,
"total_gas_mcf": 67890,
"months_producing": 1
}
]
}
}
GET /v1/well-production/cycle-time
Analyze permit-to-production cycle time using joined permit and production data.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | No | Two-letter state filter |
start_date | string | No | Permit/production analysis start date |
end_date | string | No | Permit/production analysis end date |
operator | string | No | Operator filter |
formation | string | No | Formation filter |
lat | number | No | Latitude for geographic filter |
lng | number | No | Longitude for geographic filter |
radius_miles | number | No | Radius around lat/lng |
curl "https://api.oilpriceapi.com/v1/well-production/cycle-time?state=TX&start_date=2025-01-01" \
-H "Authorization: Token YOUR_API_KEY"
Returns DATA_NOT_AVAILABLE with HTTP 404 when the filters do not produce an analysis result.
GET /v1/well-production/cycle-time/cohorts
Compare permit-to-production cycle time across cohorts.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | No | Two-letter state filter |
start_date | string | No | Analysis start date |
end_date | string | No | Analysis end date |
lat | number | No | Latitude for geographic filter |
lng | number | No | Longitude for geographic filter |
radius_miles | number | No | Radius around lat/lng |
group_by | string | No | Cohort field. Defaults to quarter. |
curl "https://api.oilpriceapi.com/v1/well-production/cycle-time/cohorts?state=TX&group_by=quarter" \
-H "Authorization: Token YOUR_API_KEY"
Access and Coverage Notes
- Aggregate endpoints —
summary,states,states/{state_code},cycle-time,cycle-time/cohorts— are available on every plan, including free, subject to your plan's standard request limits. - Well-level endpoints —
wells/{api_number}andtop-producers— require drilling-intelligence access on the Scale plan. statesendpoints are state aggregates from EIA and may have broader coverage than well-level endpoints.wells/{api_number}andtop-producersonly return states that appear incoverage.well_level_states_with_data.- Registered scrapers can exist before a state has production-green rows. Do not infer coverage from the registered worker list alone.