Well Permits
Real-time well permit data from state regulatory agencies. Track new drilling permits as they're filed across 26 US oil and gas producing states.
Sources: 26 state regulatory agencies including Texas RRC, Oklahoma OCC, New Mexico OCD, NDIC, CalGEM, PA DEP, and more Frequency: Daily for high-volume states, weekly for others (within 24-48 hours of state publication) Tier Required: Well Permits Add-on or Enterprise Total Coverage: 26 states representing 99%+ of US onshore drilling activity
For free public data and pSEO endpoints, see Drilling Intelligence (Public).
Pricing Tiers
| Tier | Coverage | Monthly |
|---|---|---|
| Starter | 1 state | $49 |
| Regional | TX, OK, NM (3 states) | $99 |
| US Complete | All 26 states | $349 |
State Coverage
We collect well permit data from 26 US states.
Update Schedule
Times shown in EST/CST (standard time). During Daylight Saving Time, add 1 hour.
Daily Updates
| State | Code | UTC | Eastern | Central |
|---|---|---|---|---|
| Kansas | KS | 6:00 AM | 1:00 AM | 12:00 AM |
| Tennessee | TN | 7:00 AM | 2:00 AM | 1:00 AM |
| Nebraska | NE | 8:00 AM | 3:00 AM | 2:00 AM |
| New York | NY | 8:00 AM | 3:00 AM | 2:00 AM |
| Alaska | AK | 10:00 AM | 5:00 AM | 4:00 AM |
| Mississippi | MS | 1:00 PM | 8:00 AM | 7:00 AM |
| Alabama | AL | 2:00 PM | 9:00 AM | 8:00 AM |
| Texas | TX | 8:00 PM | 3:00 PM | 2:00 PM |
| Oklahoma | OK | 9:00 PM | 4:00 PM | 3:00 PM |
| New Mexico | NM | 10:00 PM | 5:00 PM | 4:00 PM |
| California | CA | 11:00 PM | 6:00 PM | 5:00 PM |
| North Dakota | ND | 12:00 AM | 7:00 PM | 6:00 PM |
| Colorado | CO | 1:00 AM | 8:00 PM | 7:00 PM |
| Louisiana | LA | 2:00 AM | 9:00 PM | 8:00 PM |
Weekly Updates
| State | Code | Day | UTC | Eastern | Central |
|---|---|---|---|---|---|
| Pennsylvania | PA | Sun | 4:00 AM | 11:00 PM Sat | 10:00 PM Sat |
| West Virginia | WV | Mon | 7:00 AM | 2:00 AM | 1:00 AM |
| Arkansas | AR | Mon | 9:00 AM | 4:00 AM | 3:00 AM |
| Kentucky | KY | Mon | 10:00 AM | 5:00 AM | 4:00 AM |
| Illinois | IL | Mon | 3:00 PM | 10:00 AM | 9:00 AM |
| Virginia | VA | Mon | 4:00 PM | 11:00 AM | 10:00 AM |
| Florida | FL | Tue | 8:00 AM | 3:00 AM | 2:00 AM |
| Utah | UT | Tue | 11:00 AM | 6:00 AM | 5:00 AM |
| Wyoming | WY | Wed | 6:00 AM | 1:00 AM | 12:00 AM |
| Michigan | MI | Wed | 9:00 AM | 4:00 AM | 3:00 AM |
| Montana | MT | Wed | 12:00 PM | 7:00 AM | 6:00 AM |
| Indiana | IN | Thu | 10:00 AM | 5:00 AM | 4:00 AM |
| Ohio | OH | Sat | 5:00 AM | 12:00 AM | 11:00 PM Fri |
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/ei/well-permits | List paginated permits |
| GET | /v1/ei/well-permits/latest | Recent permits (default: 7 days) |
| GET | /v1/ei/well-permits/by-state | Filter by state |
| GET | /v1/ei/well-permits/by-operator | Filter by operator name |
| GET | /v1/ei/well-permits/by-formation | Filter by target formation |
| GET | /v1/ei/well-permits/search | Geographic/text search |
| GET | /v1/ei/well-permits/summary | Activity summary stats |
| GET | /v1/ei/well-permits/:api_number | Single permit by API number |
List Permits
GET /v1/ei/well-permits
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 25 | Results per page (max 100) |
states | string | all | Comma-separated: TX,OK,NM |
start_date | date | none | Filter from date |
end_date | date | none | Filter to date |
Response
{
"success": true,
"well_permits": [
{
"api_number": "42-003-12345-00-00",
"state_code": "TX",
"county": "Midland",
"permit_number": "849367",
"permit_type": "new_drill",
"permit_status": "approved",
"permit_date": "2025-12-30",
"operator": {
"name": "ConocoPhillips Company",
"name_normalized": "conocophillips",
"number": "123456"
},
"well": {
"name": "UNIVERSITY 42-3 #1H",
"number": "1H",
"type": "oil"
},
"location": {
"latitude": 31.9686,
"longitude": -102.0779
},
"target": {
"formation": "Wolfcamp",
"formation_normalized": "WOLFCAMP",
"total_depth_proposed": 12500
},
"provenance": {
"source": "texas_rrc",
"fetched_at": "2025-12-30T14:25:00Z"
}
}
],
"meta": {
"total_count": 1250,
"page": 1,
"per_page": 25,
"total_pages": 50
}
}
Latest Permits
Get the most recent permits across states.
GET /v1/ei/well-permits/latest
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
days | integer | 7 | Lookback period (1-90) |
states | string | all | Comma-separated: TX,OK,NM |
per_page | integer | 25 | Max results (1-100) |
Response
{
"success": true,
"well_permits": [...],
"meta": {
"days": 7,
"states": ["TX", "OK", "NM"],
"count": 25,
"as_of": "2025-12-31T12:00:00Z",
"data_quality": {
"TX": {
"date_coverage": "full",
"source": "Texas Railroad Commission"
},
"OK": {
"date_coverage": "full",
"source": "Oklahoma Corporation Commission"
},
"NM": {
"date_coverage": "partial",
"source": "New Mexico Oil Conservation Division",
"note": "Historical data before 2020 may have gaps"
}
}
}
}
Data Quality Tiers
The data_quality field provides transparency about data completeness per state:
| Coverage | Description |
|---|---|
full | 100% of permits have dates, high confidence |
partial | 50-99% date coverage, some gaps in historical data |
limited | <50% date coverage, source limitations |
By State
Filter permits by a specific state.
GET /v1/ei/well-permits/by-state
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | Yes | State code: TX, OK, or NM |
start_date | date | No | Filter from date |
end_date | date | No | Filter to date |
page | integer | No | Page number |
per_page | integer | No | Results per page (max 100) |
Response
{
"success": true,
"well_permits": [...],
"state": "TX",
"meta": {
"total_count": 850,
"page": 1,
"per_page": 25,
"total_pages": 34
}
}
By Operator
Search permits by operator name (fuzzy matching).
GET /v1/ei/well-permits/by-operator
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
operator | string | Yes | Operator name (partial match) |
states | string | No | Filter by states |
start_date | date | No | Filter from date |
end_date | date | No | Filter to date |
Example
GET /v1/ei/well-permits/by-operator?operator=ConocoPhillips
Response
{
"success": true,
"well_permits": [...],
"operator_query": "ConocoPhillips",
"meta": {
"total_count": 47,
"page": 1,
"per_page": 25,
"total_pages": 2
}
}
By Formation
Search permits by target formation.
GET /v1/ei/well-permits/by-formation
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
formation | string | Yes | Formation name (partial match) |
states | string | No | Filter by states |
start_date | date | No | Filter from date |
end_date | date | No | Filter to date |
Common Formations
| Basin | Formations |
|---|---|
| Permian | Wolfcamp, Bone Spring, Spraberry, Delaware |
| Anadarko | Woodford, Springer, Meramec, SCOOP, STACK |
| Eagle Ford | Eagle Ford, Austin Chalk |
| Bakken | Bakken, Three Forks |
Response
{
"success": true,
"well_permits": [...],
"formation_query": "Wolfcamp",
"meta": {
"total_count": 312,
"page": 1,
"per_page": 25,
"total_pages": 13
}
}
Geographic Search
Search permits by location and other criteria.
GET /v1/ei/well-permits/search
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude | float | No | Center latitude |
longitude | float | No | Center longitude |
radius_miles | float | No | Search radius (1-100, default: 10) |
county | string | No | County name (partial match) |
well_name | string | No | Well name (partial match) |
permit_type | string | No | Type: new_drill, recomplete, reenter |
well_type | string | No | Type: oil, gas, injection |
states | string | No | Filter by states |
Example: Permian Basin Search
GET /v1/ei/well-permits/search?latitude=31.97&longitude=-102.08&radius_miles=25
Response
{
"success": true,
"well_permits": [...],
"meta": {
"total_count": 89,
"page": 1,
"per_page": 25,
"total_pages": 4
}
}
Summary Statistics
Get aggregate permit activity stats.
GET /v1/ei/well-permits/summary
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
days | integer | 30 | Analysis period (1-365) |
Response
{
"success": true,
"period_days": 30,
"total_permits": 1847,
"by_state": {
"TX": 1102,
"OK": 423,
"NM": 322
},
"top_operators": [
{ "name": "conocophillips", "count": 89 },
{ "name": "eog resources", "count": 76 },
{ "name": "pioneer natural", "count": 68 }
],
"top_formations": [
{ "name": "WOLFCAMP", "count": 412 },
{ "name": "BONE_SPRING", "count": 287 },
{ "name": "SPRABERRY", "count": 198 }
],
"by_permit_type": {
"new_drill": 1623,
"recomplete": 156,
"reenter": 68
},
"weekly_trend": [
{ "week": "2025-12-02", "count": 387 },
{ "week": "2025-12-09", "count": 412 },
{ "week": "2025-12-16", "count": 398 },
{ "week": "2025-12-23", "count": 340 },
{ "week": "2025-12-30", "count": 310 }
],
"last_updated": "2025-12-31T06:00:00Z"
}
Single Permit
Get detailed information for a specific permit by API number.
GET /v1/ei/well-permits/:api_number
Response
{
"success": true,
"well_permit": {
"api_number": "42-003-12345-00-00",
"api_number_raw": "42003123450000",
"state_code": "TX",
"county": "Midland",
"permit_number": "849367",
"permit_type": "new_drill",
"permit_status": "approved",
"permit_date": "2025-12-30",
"approval_date": "2025-12-30",
"spud_date": null,
"operator": {
"name": "ConocoPhillips Company",
"name_normalized": "conocophillips",
"number": "123456"
},
"well": {
"name": "UNIVERSITY 42-3 #1H",
"number": "1H",
"type": "oil"
},
"location": {
"latitude": 31.9686,
"longitude": -102.0779
},
"legal_description": {
"section": "42",
"township": "3S",
"range": "37E",
"abstract": "A-1234",
"survey": "University Lands",
"block": "42"
},
"target": {
"formation": "Wolfcamp",
"formation_normalized": "WOLFCAMP",
"total_depth_proposed": 12500
},
"lease_name": "UNIVERSITY 42-3",
"uwi": null,
"validation": {
"status": "validated",
"errors": {}
},
"provenance": {
"source": "texas_rrc",
"source_url": "https://www.rrc.texas.gov/...",
"fetched_at": "2025-12-30T14:25:00Z",
"data_as_of": "2025-12-30"
},
"metadata": {},
"created_at": "2025-12-30T14:30:00Z",
"updated_at": "2025-12-30T14:30:00Z"
}
}
API Number Format
Well permits use standardized 14-digit API numbers:
SS-CCC-WWWWW-SS-EE
| Component | Description | Example |
|---|---|---|
| SS | FIPS state code | 42 (Texas) |
| CCC | FIPS county code | 003 (Andrews) |
| WWWWW | Well number | 12345 |
| SS | Sidetrack code | 00 |
| EE | Event sequence | 00 |
State Codes (FIPS):
| State | Code | State | Code |
|---|---|---|---|
| Texas | 42 | Pennsylvania | 42 |
| Oklahoma | 35 | Ohio | 39 |
| New Mexico | 30 | Wyoming | 56 |
| California | 06 | West Virginia | 54 |
| North Dakota | 38 | Montana | 30 |
| Colorado | 08 | Utah | 49 |
| Louisiana | 22 | Arkansas | 05 |
| Alaska | 02 | Kansas | 20 |
| Florida | 12 | Mississippi | 28 |
| Indiana | 18 | Nebraska | 31 |
| Kentucky | 21 | New York | 36 |
| Tennessee | 47 | Michigan | 26 |
| Virginia | 51 | Illinois | 17 |
| Alabama | 01 |
Webhooks
Subscribe to real-time permit notifications via webhooks.
Events
| Event | Description |
|---|---|
drilling.well_permit.new | New permit filed |
drilling.well_permits.batch | Batch of permits (daily) |
Webhook Payload
{
"id": "evt_abc123",
"event": "drilling.well_permit.new",
"created_at": "2025-12-31T14:30:00Z",
"data": {
"api_number": "42-003-12345-00-00",
"state_code": "TX",
"county": "Midland",
"permit_type": "new_drill",
"permit_status": "approved",
"permit_date": "2025-12-31",
"operator": {
"name": "ConocoPhillips Company",
"name_raw": "CONOCOPHILLIPS CO"
},
"well": {
"name": "UNIVERSITY 42-3 #1H",
"type": "oil"
},
"location": {
"latitude": 31.9686,
"longitude": -102.0779
},
"target": {
"formation": "Wolfcamp",
"total_depth_proposed": 12500
},
"provenance": {
"source": "texas_rrc",
"fetched_at": "2025-12-31T14:25:00Z"
}
}
}
See Webhooks for setup and signature verification.
Code Examples
Python
import requests
api_key = "YOUR_API_KEY"
headers = {"Authorization": f"Token {api_key}"}
base_url = "https://api.oilpriceapi.com/v1/ei"
# Get latest Texas permits
response = requests.get(
f"{base_url}/well-permits/latest",
headers=headers,
params={"states": "TX", "days": 7}
)
data = response.json()
for permit in data["well_permits"]:
print(f"{permit['api_number']}: {permit['operator']['name']} - {permit['well']['name']}")
JavaScript
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.oilpriceapi.com/v1/ei';
// Get Wolfcamp permits in the Permian
const response = await fetch(
`${BASE_URL}/well-permits/by-formation?formation=Wolfcamp&states=TX,NM`,
{ headers: { 'Authorization': `Token ${API_KEY}` } }
);
const data = await response.json();
console.log(`Found ${data.meta.total_count} Wolfcamp permits`);
data.well_permits.forEach(permit => {
console.log(`${permit.operator.name}: ${permit.well.name}`);
});
cURL
# Get summary statistics for past 30 days
curl -H "Authorization: Token YOUR_API_KEY" \
"https://api.oilpriceapi.com/v1/ei/well-permits/summary?days=30"
Data Quality
Normalization
- API Numbers: Standardized to 14-digit format
- Operator Names: Fuzzy-matched to parent companies
- Formations: Mapped to standard codes (e.g., "WOLF CAMP A" -> "WOLFCAMP")
Provenance
Every record includes:
source: State agency (texas_rrc, oklahoma_occ, new_mexico_ocd)source_url: Direct link to source documentfetched_at: When OilPriceAPI retrieved the datadata_as_of: State's publication date
Latency
| State | Source Type | Typical Latency |
|---|---|---|
| Texas | Bulk file | < 24 hours |
| Oklahoma | Excel export | < 24 hours |
| New Mexico | REST API | < 12 hours |
Why Well Permits Matter
- Leading Indicator: Permits precede drilling by 30-90 days
- Operator Activity: Track company capital deployment
- Basin Intelligence: Monitor formation and geographic trends
- M&A Signals: Identify hot spots before public announcements
Related
- Rig Counts - Baker Hughes weekly data
- Drilling Productivity - DUC wells and productivity
- Forecasts - EIA STEO production outlook