CommoVision

See the future in real time

well_permits

One row per drilling permit, covering every permit on file (pending, approved, rejected, expired, cancelled, and drilled), so the table reads as the forward-looking activity pipeline. Amendments update the permit's row (last_amended_date marks them) rather than creating duplicates. Carries the permitted well's identity and proposed location (including bottom-hole for horizontals), the operator at filing and today, and proposed depth, formation, and purpose. well_id is NULL until a well exists.

Access tier: portal Portal. These rows are well-level or producing-unit-level data, or our modelled output at cohort or grid grain. They open with a Portal, Pro or Enterprise plan. The website shows aggregates built from them, never the rows.
Primary key: permit_id
Regions: Alberta, Alaska, Arkansas, British Columbia, California, Colorado, Kansas, Louisiana, Montana, North Dakota, New Mexico, Ohio, Oklahoma, Pennsylvania, Texas, Utah, West Virginia, Wyoming

Columns

ColumnTypeNullableDescription
permit_id string no Globally unique permit identifier (opaque string), this table's primary key. Stable across time; never parse substrings out of it.
well_id string yes Join key to the well register. NULL while no well exists in the register for this filing; set once one does.
permit_number string yes Agency-assigned permit identifier. TX: RRC district-sequence (08-123456). ND: NDIC permit number. Format varies by state. NULL where the source assigns no permit number (New Mexico, West Virginia).
country string no Country code (ISO 3166-1 alpha-2, upper-case, e.g. US, CA).
state_province string no Full name of the state or province the well sits in (e.g. 'Texas', 'Alberta').
state_province_code string no Jurisdiction code within the country (e.g. TX, AB); paired with country it forms a globally unique jurisdiction key.
well_name string yes Proposed well name from the permit application. May differ from the final name in the well register.
permit_type string yes What the permit authorizes: new_drill, recompletion, deepening, re_entry, sidetrack, plug, reclass, or other. Mapped from each state's own codes. NULL where our records hold no permit filing. Values: new_drill · recompletion · deepening · re_entry · sidetrack · plug · reclass · other.
status string yes Current permit status: pending, approved, expired, rejected, cancelled, or drilled. The full lifecycle including terminal states; drilled means this permit's authorization was used: the regulator's own record shows the hole, or the linked well shows drilling evidence (a spud, completion, first production or plugging date) and this permit's approval date (or, where none is recorded, its filed date) is on or before the earliest such evidence. A permit approved after that date, and not itself recorded as drilled, is a later authorization (a recompletion, deepening, re-entry or plug) and keeps its own stage. Evidence dated only to a reporting period is compared at that period, never at a day inside it. Where the source itself states the permit was never drilled and the only contrary date may be a proposal, the source's statement prevails. NULL where the source states no current status and no lifecycle date evidences one. Values: pending · approved · expired · rejected · cancelled · drilled.
filed_date date yes Date the permit application was submitted to the regulatory agency. For an amended application this is the date the latest approved amendment was received.
approved_date date yes Date the agency approved the permit. NULL when the permit is pending, was rejected, or was cancelled before approval. Also NULL when our source feed does not carry the approval date: the feed may start after the permit was issued, or record only related processing steps.
expiration_date date yes Scheduled permit validity end date, set at approval. The date the permit will (or did) expire if not drilled. Present on approved, expired, and drilled permits.
cancelled_date date yes Date the operator withdrew or the agency cancelled the permit. Some agencies record one without moving the permit status to cancelled; both are published as reported.
reported_date date yes Date the source agency first published this permit, useful for monitoring new activity. NULL where our record of the agency's publications does not date the permit: permits loaded from historical archives, permits published before that record begins or in a gap in it, permits that record does not list, and permits whose earliest listing in it carries another word than new.
last_amended_date date yes Effective date of the most recent amendment. NULL where the filing was never amended, or where the region's amendment record does not reach back far enough to say. When populated, the permit's characteristics (tvd, md, formation, and so on) reflect the amended version; only the latest state is carried.
record_origin string no How this permit row came to exist: reported = a source-published permit filing (regulator daily report or permit database); inferred = reconstructed from the well register for a well with no separate permit filing in our records (e.g. ND wells permitted before 2005). Inferred rows carry NULL filed/approved dates by construction, and this flag discloses why. Always populated. Filter record_origin = 'reported' for actual filings only. Values: reported · inferred.
operator string yes The company that holds this permit today, as a canonical company name with mergers and acquisitions applied as of today, so Occidental's permit book includes inherited Anadarko filings. Sourced from the filing where the permit names its operator; where the source publishes no operator on the permit itself, or where we follow the permit's holder through its well's changes of operator, we carry the well's operator of record instead. NULL when neither names one, or when the name resolves to a bucket, not a company.
operator_id string yes Stable company identifier for operator, the holder as of today. Join key to the organizations register. NULL when unresolved. Populated even where reported_operator_id is NULL: for permits whose filing names no operator, the holder comes from the well record rather than from correcting the filing.
reported_operator string yes The operator as the source's permit filing records it, normalized to a canonical display name but with NO merger succession applied: the faithful filing record. Where both are present, differs from operator exactly where our ownership graph corrected a stale operator-of-record. NULL where the permit filing itself names no operator (some regulators publish permits without one) or where the filed name resolves to a bucket, not a company; where the filing names no operator, operator carries the well's operator of record instead.
reported_operator_id string yes Stable company identifier for reported_operator (no merger succession). NULL when the raw filing name is not yet mapped to a registered organization.
reported_operator_entity string yes Raw filing entity name from the permit application: the legal entity as the permit filing itself names it, before any normalization. In Oklahoma the regulator's permit file carries one current name per operator number, so an old permit shows the name the company holds today under the filing's number. NULL where the filing names no real company (the regulator publishes permits without an operator field, or uses placeholder strings like "historic owner" or "not assigned", which we treat as no operator rather than publish as one), and where we cannot read the name from the filing itself; the name is never substituted from another register. Useful for audit and M&A analysis.
reported_operator_registration_id string yes The regulator-issued ID of the filing operator (TX P-5 number and each region's equivalent). Where the filing carries one, it is passed through raw as an opaque string. Where the regulator issues licence IDs but never prints them on permit filings (currently Kansas and West Virginia), it is our match of the filing operator's name to the state's licensee register, derived by us rather than filed. NULL otherwise.
trajectory string yes Planned well trajectory: horizontal, vertical, or directional. Same values as the well register. Mapped from state-specific flags or codes. Values: horizontal · vertical · directional.
primary_product string yes Oil or gas, the product the permit is for. Where the application states one product, that is the value. Where the application states both, states nothing, or lists fields that disagree, we resolve it with our calibrated estimate from the details the filing carries (the fields or formation it names where it lists them, its location, depth and era) and the wells drilled around it: the product of the play it targets, published only where it clears the region's measured agreement bar against what such permits' wells went on to produce. See primary_product_source for which. NULL where no signal clears the bar, and for permits whose purpose is not production (injection, disposal, storage, observation, service, stratigraphic test; see well_purpose) unless the filing states a product. Values: oil · gas.
primary_product_source string yes Which signal set primary_product on this permit: filing = the application states this product; inferred = the application stated both products, none, or fields that disagree, and this is our calibrated estimate from the details the filing carries, its location, depth, era and neighbouring wells, made only where it clears the region's measured agreement bar against what such permits' wells went on to produce (published on the methodology page). NULL exactly when primary_product is NULL. Values: filing · inferred.
well_purpose string yes Intended well purpose: producer, injector, disposal, storage, observation, service, stratigraphic_test, or other. Same values as the well register. From the permit application. Values: producer · injector · disposal · storage · observation · service · stratigraphic_test · other.
is_offshore boolean yes Whether the permitted location is offshore, as the source classifies it. Stable: a well doesn't move onshore.
tvd int32 yes Proposed true vertical depth (feet). From the permit application. In Texas and Wyoming the regulator files a single unqualified well depth; it behaves as a vertical depth and is published here, though a minority of filings carry the measured depth instead.
md int32 yes Proposed total measured depth (feet). From the permit application.
formation string yes Target formation as reported by the operator on the permit application. Not normalized (operator-reported); may differ from the well register's formation. In Oklahoma an application can list up to ten target formations; the deepest declared target is published. In Ohio the column is filled only where the application names a single target formation we can match, after removing a filed parenthetical condition clause; it is NULL where the application lists several targets or a range, joins names with a hyphen (which we do not split), or gives a name we cannot match. In some states a filed value that names no formation at all (for example MULTIPLE, or a bare number) is withheld, and a trailing condition clause such as (INJ) is removed with the target kept.
zone string yes Target landing zone where specified on the permit. Same formation/zone convention as the well register. NULL where not available.
latitude float64 yes Proposed surface hole location latitude (WGS84).
longitude float64 yes Proposed surface hole location longitude (WGS84).
bhl_latitude float64 yes Proposed bottom-hole latitude from the permit filing (WGS84). Vertical filings that state a bottom hole, typically coinciding with the surface location, are published as filed. NULL where the filing states no bottom hole we can source to it: many vertical wells state none, some regulators publish only a footage call, and some publish a coordinate we cannot distinguish from the as-drilled record. Also NULL where the filed point lies implausibly far from the surface location.
bhl_longitude float64 yes Proposed bottom-hole longitude from the permit filing (WGS84). Vertical filings that state a bottom hole, typically coinciding with the surface location, are published as filed. NULL where the filing states no bottom hole we can source to it: many vertical wells state none, some regulators publish only a footage call, and some publish a coordinate we cannot distinguish from the as-drilled record. Also NULL where the filed point lies implausibly far from the surface location.
basin string yes Basin assignment from spatial lookup on the proposed surface location. A filing with no stated location takes its well's basin, else the basin its county's wells consistently sit in. NULL where the location is outside every basin, or nothing answers.
sub_basin string yes Named sub-unit of the basin that the market prices separately (Midland Basin, Delaware Basin), never a play name. A filing with no stated location follows its well, else its county's consistent sub-unit. NULL where the permitted location is not inside a named sub-unit, or nothing answers.
field string yes Field the permit names, as filed with the regulator and in the regulator's own naming. NULL where the filing names no field: a wildcat, unknown or undefined designation is published as NULL, not as a field; and NULL where a filing names several fields without the source's completion record singling one out; applied as each region's permits rebuild under this contract, so a region not yet rebuilt may still show such a designation.

Region-specific columns

Extra columns a single region's source adds.

Alberta (6 columns)
ColumnTypeDescription
licence_number string
township string
range string
section string
meridian string
legal_subdivision string
Alaska (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
Arkansas (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
British Columbia (1 column)
ColumnTypeDescription
wa_number string
California (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
Colorado (5 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
perm_type string
prop_depth_ft int32
Kansas (7 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
township string
range string
section string
lease_name string
Louisiana (10 columns)
ColumnTypeDescription
la_permit_id string
la_well_serial string
district string
county string
county_unique string
county_fips string
township string
range string
section string
meridian string
Montana (5 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
mbogc_dor_id string
mbogc_slant string
North Dakota (4 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
file_no int64
New Mexico (5 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
ocd_district string
lease_type string
Ohio (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
Oklahoma (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
Pennsylvania (8 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
municipality string
lease_name string
unconventional boolean
dep_region string
authorization_id int64
Texas (7 columns)
ColumnTypeDescription
tx_permit_id string
tx_well_id string
district string
county string
county_unique string
county_fips string
lease_name string
Utah (3 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
West Virginia (6 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
api14 string
permit_action string
well_type_wv string
Wyoming (5 columns)
ColumnTypeDescription
county string
county_unique string
county_fips string
apd_number string
well_class_wy string

How these numbers are built is on methodology; the machine twin of this page is data-dictionary.json.