Full Wellbore Database (ASCII)
Queryable Fixed-width Has coordinates
Every well ever assigned an API number in Texas, with casing, tubing, perforations, formations, plugging and inactive-well tests.
Get the data
Free. You will be asked to confirm an email address before the files are built — that is the only gate, and it is there so we can tell you when a large export is ready.
What this is
The spine of the whole catalog. WBA091 is a hierarchical fixed-width file with twenty-eight record types: one root record per API number, then repeating records for completions, form dates, formations, casing strings, perforated intervals, tubing, remarks, plugging, drilling permit numbers, well identifiers and H-15 inactive-well tests.
EZRRC parses it into a parent table plus eleven child tables, each keyed on the API county and unique number, and publishes each child as a dataset of its own — because "every casing string in Texas" is a thing people want and today the only way to get it is to write a reader for a 247-byte record layout.
Exporting this dataset gives you the root records plus every child file alongside them.
What you can do with it
Answer the question every other dataset assumes you can answer: does this API number correspond to a real wellbore, when was it completed, how deep is it, and has it been plugged.
Map 1.2 million wells from the WGS84 coordinates the file carries, or reconstruct a wellbore's mechanical history from its casing, tubing and perforation records.
Find inactive wells by joining the H-15 test records, and find orphan candidates by combining the plugging flag with the 14(b)(2) status.
Gotchas
Texas writes the API number four different ways across these files and none of them says so. The permit and wellbore files write it dashed as 42-XXX-XXXXX; the completion file fuses it to eight digits (county then unique, no state prefix); the wellbore file also carries the two halves separately as api_county and api_unique; and the UIC file stores only the five-digit unique with the county in its own column. Normalise before you join anything.
The root record is one row per API number, but around 17% of wellbores have no WGS84 coordinate at all. Spatial exports drop those rows and report how many were dropped.
Sentinel dates are everywhere: 0000-00-00, 00000000 and 1900-01-01 all mean "not recorded". The upstream loader turns the unparseable ones into NULL, but a 1900 date that parsed cleanly is still a placeholder, not a fact.
An API number existing does not mean a well exists. The file includes cancelled assignments, dummy numbers and numbers that were re-pointed at another wellbore — read error_api_assign_code, dummy_api_number and refer_correct_api_nbr before treating a row as a hole in the ground.
Record layout
194 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.
wb_casings
17 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
casing_count
key
|
smallint | 3-5 | WB-CASING-COUNT |
Sequence of this casing string within the bore. | — |
| 4 |
cas_inch
|
integer | 6-7 | WB-CAS-INCH |
Casing diameter, whole inches. | — |
| 5 |
cas_frac_num
|
integer | 8-9 | WB-CAS-FRAC-NUM |
Numerator of the fractional part of the casing diameter. | — |
| 6 |
cas_frac_denom
|
integer | 10-11 | WB-CAS-FRAC-DENOM |
Denominator of the fractional part of the casing diameter. | — |
| 7 |
casing_depth_set
|
integer measured in ft | 20-24 | WB-CASING-DEPTH-SET |
Depth the string was set to, feet. | — |
| 8 |
mlti_stg_tool_dpth
|
integer measured in ft | 25-29 | WB-MLTI-STG-TOOL-DPTH |
Multi-stage cementing tool depth, feet. | — |
| 9 |
amount_of_cement
|
integer | 30-34 | WB-AMOUNT-OF-CEMENT |
Amount of cement pumped; the unit is in the cement measurement column. | — |
| 10 |
cement_measurement
|
text | 35 | WB-CEMENT-MEASUREMENT |
Unit the cement amount is in: sacks, cubic yards or feet. | Cement quantity unit |
| 11 |
hole_inch
|
integer | 36-37 | WB-HOLE-INCH |
Hole diameter, whole inches. | — |
| 12 |
hole_frac_num
|
integer | 38-39 | WB-HOLE-FRAC-NUM |
Numerator of the fractional part of the hole diameter. | — |
| 13 |
hole_frac_denom
|
integer | 40-41 | WB-HOLE-FRAC-DENOM |
Denominator of the fractional part of the hole diameter. | — |
| 14 |
top_of_cement_casing
|
text | 43-49 | WB-TOP-OF-CEMENT-CASING |
Reported top of cement behind this string. | — |
| 15 |
amount_casing_left
|
integer measured in ft | 50-54 | WB-AMOUNT-CASING-LEFT |
Casing left in the hole, feet. | — |
| 16 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
| 17 |
cas_wt_table
|
text measured in lb/ft | 12-19 | WB-CAS-WT-TABLE |
Casing weight in pounds per foot (the layout allows two entries). | — |
wb_completions
19 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
row_no
key
|
smallint | — | — | Sequence number of this row within its parent record. Part of the key. | — |
| 4 |
oil_code
|
text | 3 | WB-OIL-CODE |
'O' when the completion sits on the oil proration schedule. | Oil or gas schedule |
| 5 |
oil_district
|
text | 4-5 | WB-OIL-DISTRICT |
District of the oil lease. | — |
| 6 |
oil_lse_nbr
join
|
text | 6-10 | WB-OIL-LSE-NBR |
Oil lease number. | — |
| 7 |
oil_well_nbr
|
text | 11-16 | WB-OIL-WELL-NBR |
Well number on the oil lease. | — |
| 8 |
gas_dist
|
text | 17-18 | WB-GAS-DIST |
District of the gas well ID. | — |
| 9 |
gas_well_no
join
|
text | 19-24 | WB-GAS-WELL-NO |
Gas well ID number. | — |
| 10 |
multi_well_rec_nbr
|
text | 25 | WB-MULTI-WELL-REC-NBR |
Multi-well record number, for wells with several completions. | — |
| 11 |
api_suffix
|
text | 26-27 | WB-API-SUFFIX |
Two-digit API suffix identifying a sidetrack. | — |
| 12 |
active_inactive_code
|
text | 46 | WB-ACTIVE-INACTIVE-CODE |
Whether this completion is currently active. | — |
| 13 |
created_from_pi_flag
|
text | 122 | WB-CREATED-FROM-PI-FLAG |
Y when the record was created from the old P-I tape rather than a filing. | — |
| 14 |
rule_37_nbr
|
text | 123-129 | WB-RULE-37-NBR |
Statewide Rule 37 (spacing exception) case number, if any. | — |
| 15 |
p15_flag
|
text | 156 | WB-P15-FLAG |
Y when a Form P-15 productivity statement is on file. | — |
| 16 |
p12_flag
|
text | 157 | WB-P12-FLAG |
Y when a Form P-12 pooling authority is on file. | — |
| 17 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
| 18 |
dwn_hole_commingle_code
|
text | 87 | WB-DWN-HOLE-COMMINGLE-CODE |
Downhole commingling authority code. | — |
| 19 |
plug_date_pointer
|
text | 158-165 | WB-PLUG-DATE-POINTER |
CCYYMMDD pointer to the plugging record for this completion. | — |
wb_dates
24 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
file_key
key
|
text | 3-10 | WB-FILE-KEY |
Key of the technical-data form set this row describes. | — |
| 4 |
file_date
|
date | 11-18 | WB-FILE-DATE |
Date the completion build was filed, CCYYMMDD. | — |
| 5 |
except_rule_11
|
text | 27 | WB-EXCEPT-RULE-11 |
Y when an exception to Statewide Rule 11 was granted. | — |
| 6 |
cement_affidavit
|
text | 28 | WB-CEMENT-AFFIDAVIT |
Cement affidavit status: N, Y, B, A or R. | — |
| 7 |
g5_flag
|
text | 29 | WB-G5-FLAG |
Y when a Form G-5 gas well classification is on file. | — |
| 8 |
w12_flag
|
text | 30 | WB-W12-FLAG |
Y when a Form W-12 inclination report is on file. | — |
| 9 |
dir_survey
|
text | 31 | WB-DIR-SURVEY |
Y when a directional survey is on file. | — |
| 10 |
w2_g1_date
|
date | 32-39 | WB-W2-G1-DATE |
Date the W-2 or G-1 completion report was filed, CCYYMMDD. | — |
| 11 |
compl_date
|
date | 40-47 | WB-COMPL-DATE |
Completion date, CCYYMMDD. | — |
| 12 |
drl_compl_date
|
date | 48-55 | WB-DRL-COMPL-DATE |
Date drilling was completed, CCYYMMDD. | — |
| 13 |
plugb_depth1
|
integer measured in ft | 56-60 | WB-PLUGB-DEPTH1 |
First plug-back depth, feet. | — |
| 14 |
plugb_depth2
|
integer measured in ft | 61-65 | WB-PLUGB-DEPTH2 |
Second plug-back depth, feet. | — |
| 15 |
water_injection_nbr
|
text | 66-71 | WB-WATER-INJECTION-NBR |
Water injection permit number. | — |
| 16 |
salt_wtr_nbr
|
text | 72-76 | WB-SALT-WTR-NBR |
Saltwater disposal permit number. | — |
| 17 |
remarks_ind
|
text | 85 | WB-REMARKS-IND |
Y when remark records exist for this bore. | — |
| 18 |
elevation
|
integer measured in ft | 86-89 | WB-ELEVATION |
Ground or derrick elevation, feet. | — |
| 19 |
elevation_code
|
text | 90-91 | WB-ELEVATION-CODE |
Which point the elevation was measured from. Depths are relative to it. | Elevation reference point |
| 20 |
docket_nbr
|
text | 100-109 | WB-DOCKET-NBR |
Docket number associated with the completion, if any. | — |
| 21 |
psa_well_flag
|
text | 110 | WB-PSA-WELL-FLAG |
Y when the horizontal well is covered by a production sharing agreement. | — |
| 22 |
allocation_well_flag
|
text | 111 | WB-ALLOCATION-WELL-FLAG |
Y when the well is an allocation well. | — |
| 23 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
| 24 |
log_file_rba
|
text | 92-99 | WB-LOG-FILE-RBA |
Pointer into RRC's separate wellbore log file. | — |
wb_drilling_permits
4 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
permit_number
key
join
|
text | 3-8 | WB-PERMIT-NUMBER |
A drilling permit number associated with this bore. One bore can carry many: an original drill permit plus every amendment and re-entry. | — |
| 4 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_formations
6 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
formation_cntr
key
|
smallint | 3-5 | WB-FORMATION-CNTR |
Sequence of this formation top within the bore. | — |
| 4 |
formation_name
|
text | 6-37 | WB-FORMATION-NAME |
Formation name as the operator wrote it. Spelling is not standardised. | — |
| 5 |
formation_depth
|
integer measured in ft | 38-42 | WB-FORMATION-DEPTH |
Depth to the top of the formation, feet. | — |
| 6 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_h15_reports
17 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
h15_date_key
key
|
text | 3-10 | WB-H15-DATE-KEY |
Key of the H-15 filing, CCYYMMDD. | — |
| 4 |
h15_status
|
text | 11 | WB-H15-STATUS |
Where the bore stands against its H-15 test requirement. | H-15 inactive well test status |
| 5 |
h15_operator
join
|
text | 12-17 | WB-H15-OPERATOR |
Operator number that filed the H-15. | — |
| 6 |
h15_next_test_ccyy
|
text | 18-21 | WB-H15-NEXT-TEST-CCYY |
Year the next H-15 test is due. | — |
| 7 |
h15_next_test_mm
|
text | 22-23 | WB-H15-NEXT-TEST-MM |
Month the next H-15 test is due. | — |
| 8 |
h15_district
|
text | 24-25 | WB-H15-DISTRICT |
District the bore is in. | — |
| 9 |
h15_field
join
|
text | 26-33 | WB-H15-FIELD |
Field the bore is in. | — |
| 10 |
h15_oil_gas_code
|
text | 44 | WB-H15-OIL-GAS-CODE |
'O' or 'G' — which schedule the tested completion sits on. | Oil or gas schedule |
| 11 |
h15_lease_nbr
|
text | 45-49 | WB-H15-LEASE-NBR |
Lease number of the tested completion. | — |
| 12 |
h15_well_nbr
|
text | 50-55 | WB-H15-WELL-NBR |
Well number of the tested completion. | — |
| 13 |
h15_test_date
|
date | — | — | Date of the H-15 test. | — |
| 14 |
h15_base_usable_water
|
integer measured in ft | 70-75 | WB-H15-BASE-USABLE-WATER |
Depth to the base of usable-quality water, feet. | — |
| 15 |
h15_type_test_flag
|
text | 76 | WB-H15-TYPE-TEST-FLAG |
F for a fluid-level test, M for a mechanical-integrity test. | — |
| 16 |
h15_status_date
|
date | — | — | Date the current H-15 status was assigned. | — |
| 17 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_perforations
7 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
perf_count
key
|
smallint | 3-5 | WB-PERF-COUNT |
Sequence of this perforated interval within the bore. | — |
| 4 |
from_perf
|
integer measured in ft | 6-10 | WB-FROM-PERF |
Top of the perforated interval, feet. | — |
| 5 |
to_perf
|
integer measured in ft | 11-15 | WB-TO-PERF |
Bottom of the perforated interval, feet. | — |
| 6 |
open_hole_code
|
text | 16-17 | WB-OPEN-HOLE-CODE |
'OH' when the interval is open hole rather than perforated casing. | Open hole indicator |
| 7 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_plugging
32 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
date_w3_filed
key
|
date | 3-10 | WB-DATE-W3-FILED |
Date the Form W-3 plugging report was filed, CCYYMMDD. | — |
| 4 |
date_well_bore_plugged
|
date | 11-18 | WB-DATE-WELL-BORE-PLUGGED |
Date the bore was plugged, CCYYMMDD. | — |
| 5 |
plug_total_depth
|
integer measured in ft | 19-23 | WB-PLUG-TOTAL-DEPTH |
Total depth at plugging, feet. | — |
| 6 |
plug_cement_comp
|
text | 24-55 | WB-PLUG-CEMENT-COMP |
Cement company that performed the plugging. | — |
| 7 |
plug_mud_filled
|
text | 56 | WB-PLUG-MUD-FILLED |
Y when the hole was mud filled. | — |
| 8 |
plug_dril_perm_date
|
date | 76-83 | WB-PLUG-DRIL-PERM-DATE |
Date of the drilling permit under which the bore was drilled. | — |
| 9 |
plug_dril_perm_no
|
text | 84-89 | WB-PLUG-DRIL-PERM-NO |
Drilling permit number the bore was drilled under. | — |
| 10 |
plug_dril_comp_date
|
date | 90-97 | WB-PLUG-DRIL-COMP-DATE |
Date drilling was completed. | — |
| 11 |
plug_log_attached
|
text | 98 | WB-PLUG-LOG-ATTACHED |
Y when a log was attached to the plugging report. | — |
| 12 |
plug_type_log
|
text | 131 | WB-PLUG-TYPE-LOG |
Type of log: D, E, R, A or a combination. | — |
| 13 |
plug_fresh_water_depth
|
integer measured in ft | 132-136 | WB-PLUG-FRESH-WATER-DEPTH |
Base of usable-quality water, feet. | — |
| 14 |
plug_type_well
|
text | 200 | WB-PLUG-TYPE-WELL |
Type of well plugged: O oil, G gas, D dry, S service. | — |
| 15 |
plug_multi_compl_flag
|
text | 201 | WB-PLUG-MULTI-COMPL-FLAG |
Y when the bore had multiple completions. | — |
| 16 |
plug_log_released_date
|
date | 204-211 | WB-PLUG-LOG-RELEASED-DATE |
Date the log was released. | — |
| 17 |
state_funded_plug_number
|
text | 220-226 | WB-STATE-FUNDED-PLUG-NUMBER |
State-funded plugging job number, when Texas paid to plug the well. | — |
| 18 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
| 19 |
plug_log_released_to
|
text | 99-130 | WB-PLUG-LOG-RELEASED-TO |
Who the log was released to. | — |
| 20 |
plug_log_file_rba
|
text | 212-219 | WB-PLUG-LOG-FILE-RBA |
Pointer into RRC's separate log file. | — |
| 21 |
plug_cem_aff
|
text | 202 | WB-PLUG-CEM-AFF |
Y when a cement affidavit accompanied the plugging report. | — |
| 22 |
plug_mud_applied
|
text | 57-68 | WB-PLUG-MUD-APPLIED |
Description of the mud applied. | — |
| 23 |
plug_mud_weight
|
integer measured in lb/gal | 69-71 | WB-PLUG-MUD-WEIGHT |
Mud weight, pounds per gallon. | — |
| 24 |
plug_material_left
|
text | 177 | WB-PLUG-MATERIAL-LEFT |
Y when material was left in the hole. | — |
| 25 |
plug_uwqp
|
text | 137-176 | WB-PLUG-UWQP |
Usable-quality water protection intervals, four from/to pairs packed into one field. | — |
| 26 |
plug_13a
|
text | 203 | WB-PLUG-13A |
Y when a Statewide Rule 13(a) exception applied. | — |
| 27 |
plug_oil_code
|
text | 178 | WB-PLUG-OIL-CODE |
'O' when the plugged completion sat on the oil schedule. | — |
| 28 |
plug_oil_dist
|
text | 179-180 | WB-PLUG-OIL-DIST |
District of the plugged oil lease. | — |
| 29 |
plug_oil_lse_nbr
|
text | 181-185 | WB-PLUG-OIL-LSE-NBR |
Oil lease number of the plugged completion. | — |
| 30 |
plug_oil_well_nbr
|
text | 186-191 | WB-PLUG-OIL-WELL-NBR |
Well number of the plugged completion. | — |
| 31 |
plug_gas_dist
|
text | 192-193 | WB-PLUG-GAS-DIST |
District of the plugged gas well ID. | — |
| 32 |
plug_gas_well_no
|
text | 194-199 | WB-PLUG-GAS-WELL-NO |
Gas well ID of the plugged completion. | — |
wb_remarks
6 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
rmk_lne_cnt
key
|
smallint | 3-5 | WB-RMK-LNE-CNT |
Line number of this remark. Remarks are 70 characters per line and wrap. | — |
| 4 |
rmk_type_code
|
text | 6 | WB-RMK-TYPE-CODE |
Remark type code. | — |
| 5 |
remarks
|
text | 7-76 | WB-REMARKS |
One 70-character line of free text. Order by line number to rebuild the paragraph. | — |
| 6 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_tubing
9 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
segment_counter
key
|
smallint | 3-5 | WB-SEGMENT-COUNTER |
Sequence of this tubing string within the bore. | — |
| 4 |
tubing_inches
|
integer | 6-7 | WB-TUBING-INCHES |
Tubing diameter, whole inches. | — |
| 5 |
tubing_frac_num
|
integer | 8-9 | WB-TUBING-FRAC-NUM |
Numerator of the fractional part of the tubing diameter. | — |
| 6 |
tubing_frac_denom
|
integer | 10-11 | WB-TUBING-FRAC-DENOM |
Denominator of the fractional part of the tubing diameter. | — |
| 7 |
depth_set
|
integer measured in ft | 12-16 | WB-DEPTH-SET |
Depth the tubing was set to, feet. | — |
| 8 |
packer_set
|
integer measured in ft | 17-21 | WB-PACKER-SET |
Depth the packer was set to, feet. | — |
| 9 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wb_well_ids
8 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | — | — | The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. | — |
| 2 |
api_unique
key
join
|
text | — | — | The five-digit well component of the API number. Unique only in combination with the county code. | — |
| 3 |
row_no
key
|
smallint | — | — | Sequence number of this row within its parent record. Part of the key. | — |
| 4 |
oil_code
|
text | 3 | WB-OIL-CODE |
'O' when the identifier is an oil lease identifier. | Oil or gas schedule |
| 5 |
oil_district
|
text | 4-5 | WB-OIL-DISTRICT |
District of the oil lease. | — |
| 6 |
oil_lse_number
join
|
text | 6-10 | WB-OIL-LSE-NUMBER |
Oil lease number. | — |
| 7 |
oil_well_number
|
text | 11-16 | WB-OIL-WELL-NUMBER |
Well number on the oil lease. | — |
| 8 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
wellbore
45 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
api_county
key
join
|
text | 3-5 | WB-API-COUNTY |
The three-digit county component of the API number. For offshore wells this is the nearest onshore county, not the well's actual location. e.g. 001 | Texas county code |
| 2 |
api_unique
key
join
|
text | 6-10 | WB-API-UNIQUE |
The five-digit well component of the API number. Unique only in combination with the county code. e.g. 31170 | — |
| 3 |
api_number
join
|
text | — | — | The API well number. Texas is state 42, so a full 10-digit API is 42 + county + unique. This is the single most useful join key in the whole catalog. e.g. 42-001-31170 | — |
| 4 |
field_district
|
text | 15-16 | WB-FIELD-DISTRICT |
District of the field the bore is assigned to. | — |
| 5 |
res_cnty_code
|
text | 17-19 | WB-RES-CNTY-CODE |
Reservoir county code, where it differs from the API county. | — |
| 6 |
total_depth
|
integer measured in ft | 29-33 | WB-TOTAL-DEPTH |
Maximum depth of well bore. | — |
| 7 |
valid_fluid_level
|
integer measured in ft | 34-38 | WB-VALID-FLUID-LEVEL |
In H-15 testing, a valid distance in feet determined by the commission between the bottom of usable water in the area and top of fluid in wellbore if that distance is different than the standard 250'. | — |
| 8 |
orig_compl_date
|
date | — | — | Original completion date, assembled from the century, year, month and day fields WBA091 stores separately. | — |
| 9 |
cert_revoked_date
|
date | — | — | Date the bore's certification was revoked. | — |
| 10 |
cert_denial_date
|
date | — | — | Date certification was denied. | — |
| 11 |
denial_reason_flag
|
text | 55 | WB-DENIAL-REASON-FLAG |
This flag will be set to 'a' if it was automatically denied certification for house bill 1975. This flag will be set to 'm' if it was manually (online) denied certification for house bill 1975. This flag will be set to zero or space if it has not been denied certification for house bill 1975. | — |
| 12 |
error_api_assign_code
|
text | 56 | WB-ERROR-API-ASSIGN-CODE |
Indicates that API previously assigned has changed. | — |
| 13 |
refer_correct_api_nbr
|
text | 57-64 | WB-REFER-CORRECT-API-NBR |
Indicates most recent resolution of API or correct assignment. | — |
| 14 |
dummy_api_number
|
text | 65-72 | WB-DUMMY-API-NUMBER |
80,000-Range numbers assigned to bores without API numbers as of december 1983 and to bores which are identified later as having been drilled before 1966 and having no API. | — |
| 15 |
previous_api_nbr
|
text | 92-99 | WB-PREVIOUS-API-NBR |
Indicates the API number previously assigned to the bore, which was later found to be an incorrect assignment. | — |
| 16 |
newest_drl_pmt_nbr
join
|
text | 81-86 | WB-NEWEST-DRL-PMT-NBR |
Indicates date of permit to drill issued most recently in a particular bore. | — |
| 17 |
cancel_expire_code
|
text | 87 | WB-CANCEL-EXPIRE-CODE |
Indicates whether newest drilling permit was cancelled or expired, as opposed to having been used. | — |
| 18 |
except_13a
|
text | 89 | WB-EXCEPT-13A |
Y when a Statewide Rule 13(a) exception applies to the bore. | — |
| 19 |
fresh_water_flag
|
text | 90 | WB-FRESH-WATER-FLAG |
Indicates whether or not well has been converted to a fresh water well. | — |
| 20 |
plug_flag
|
text | 91 | WB-PLUG-FLAG |
Indicates whether or not well bore has been plugged. | — |
| 21 |
completion_data_ind
|
text | 100 | WB-COMPLETION-DATA-IND |
Indicates whether or not well bore completion information is on file for a particular well. | — |
| 22 |
designation_hb1975_flag
|
text | 105 | WB-DESIGNATION-HB1975-FLAG |
How the HB1975 designation was made: A automatically, M manually. | — |
| 23 |
water_land_code
|
text | 132 | WB-WATER-LAND-CODE |
This data item holds a 1 byte code detailing the water or land location of the wellbore. Offshore - 'o' bay/estuary - 'b' inland waterway - 'i' land - 'l' | Water or land location |
| 24 |
subj_to_14b2_flag
|
text | 158 | WB-SUBJ-TO-14B2-FLAG |
This data item is set when all the wells in the wellbore have been SHUT-IN for one year and one well is subject to rule 14b2. | — |
| 25 |
orphan_well_hold_flag
|
text | 160 | WB-ORPHAN-WELL-HOLD-FLAG |
Y when the bore is on an orphan-well hold. | — |
| 26 |
total_bonded_depth
|
integer measured in ft | 133-138 | WB-TOTAL-BONDED-DEPTH |
Depth used to compute the operator's plugging bond for this bore, feet. | — |
| 27 |
override_est_plug_cost
|
integer measured in USD | 139-145 | WB-OVERRIDE-EST-PLUG-COST |
This data item holds the amount that is required to plug a wellbore. This amount takes precedence over any of the computed depth amounts. This data is used in the 14b2 system as the amount required for an individual well bond when a well has been inactive for more than 36 months. | — |
| 28 |
shut_in_date
|
text | 146-151 | WB-SHUT-IN-DATE |
Month the bore was shut in, as YYYYMM. | — |
| 29 |
override_bonded_depth
|
integer measured in ft | 152-157 | WB-OVERRIDE-BONDED-DEPTH |
This data item is used to compute the required bond amount for plugging the wellbore. This data item when present is used instead of the total depth or total bonded depth. | — |
| 30 |
ex14b2_count
|
integer | 103-104 | WB-EX14B2-COUNT |
Number of Statewide Rule 14(b)(2) extensions on file for the bore. | — |
| 31 |
designation_effec_date
|
text | — | — | Effective date of the HB1975 designation. | — |
| 32 |
designation_revised_date
|
text | — | — | Date the HB1975 designation was revised. | — |
| 33 |
certification_effec_date
|
text | — | — | Effective date of the certification. | — |
| 34 |
loc_county
|
text | 3-5 | WB-LOC-COUNTY |
County of the surveyed location record (record type 13). | — |
| 35 |
abstract
|
text | 6-11 | WB-ABSTRACT |
Survey abstract number of the surface location. | — |
| 36 |
survey
|
text | 12-66 | WB-SURVEY |
Name of the original land survey the location falls in. | — |
| 37 |
block_number
|
text | 67-76 | WB-BLOCK-NUMBER |
Survey block number. | — |
| 38 |
section
|
text | 77-84 | WB-SECTION |
Survey section. | — |
| 39 |
wgs84_latitude
|
numeric measured in deg | 133-142 | WB-WGS84-LATITUDE |
Surface latitude in WGS84 decimal degrees, from the WBNEWLOC record. About a sixth of wellbores have no coordinate at all. e.g. 31.6226248 | — |
| 40 |
wgs84_longitude
|
numeric measured in deg | 143-152 | WB-WGS84-LONGITUDE |
Surface longitude in WGS84 decimal degrees, from the WBNEWLOC record. e.g. -95.4713956 | — |
| 41 |
plane_zone
|
text | 158-159 | WB-PLANE-ZONE |
Texas State Plane zone the plane coordinates are in. | — |
| 42 |
plane_coordinate_east
|
numeric | 160-169 | WB-PLANE-COORDINATE-EAST |
State Plane easting. | — |
| 43 |
plane_coordinate_north
|
numeric | 170-179 | WB-PLANE-COORDINATE-NORTH |
State Plane northing. | — |
| 44 |
verification_flag
|
text | 178 | WB-VERIFICATION-FLAG |
Whether the location has been verified: Y verified, N not, C changed. | — |
| 45 |
ingested_at
|
timestamptz | — | — | When the upstream pipeline last wrote this row. Not an RRC field — it is EZRRC's provenance stamp, and it is what the freshness badge is measured against. | — |
Code lookups used here
Every coded column in this dataset resolves to a real lookup table, so
a well code of G can be read as what it actually means.
Cement quantity unit 3 values
Read by cement_measurement
The unit the casing record's cement amount is expressed in.
| Code | Means |
|---|---|
S |
Sacks |
Y |
Cubic yards |
F |
Feet |
Source: RRC manual WBA091, WBCASE record, WB-CEMENT-MEASUREMENT
Texas county code 277 values
Read by api_county
The three-digit county code RRC uses, which is also the county's FIPS code. `canonical_value` carries the full five-digit state plus county FIPS, so a county joins straight to Census geography. There are 254 Texas counties and 277 codes; the extras are offshore areas and administrative entries.
Source: Generated from texas.pdq_gp_county
Elevation reference point 5 values
Read by elevation_code
The point the elevation was measured from. Depths in the same record are measured from this datum, so two wells are not comparable until you know which one each used.
| Code | Means |
|---|---|
GL |
Ground level |
DF |
Derrick floor |
KB |
Kelly bushing |
RT |
Rotary table |
GR |
Ground |
Source: RRC manual WBA091, COBOL 88-level values on WB-ELEVATION-CODE
H-15 inactive well test status 9 values
Read by h15_status
Where a 25-year-plus inactive wellbore stands against its H-15 fluid-level or mechanical-integrity test requirement.
| Code | Means |
|---|---|
A |
Approved H-15 filed was approved. |
C |
Compliant Wellbore status has changed and the bore is now compliant. |
D |
Delinquent H-15 is delinquent. |
N |
Filed, not approved H-15 was filed but not approved. |
P |
Pending H-15 approval is pending. |
W |
W-3A extension A W-3A plugging extension was filed for the wellbore. |
U |
UIC H-5 violation UIC H-5 violation. |
E |
No-test project extension H-15 no test project extension. |
X |
W-1X denied Denied W-1X application due to an invalid H-5 test. |
Source: RRC manual WBA091, data-item note 'Valid conditions for WB-H15-STATUS'
Oil or gas schedule 2 values
Read by oil_code, h15_oil_gas_code, oil_code
Which schedule a lease is carried on. This is not decoration: an oil lease number and a gas lease number can be the same digits and mean different leases, so a lease key is only unique with this code and the district in it.
| Code | Means |
|---|---|
O |
Oil Carried on the oil proration schedule; lease numbers are oil lease numbers. |
G |
Gas Carried on the gas proration schedule; lease numbers are gas well IDs. |
Source: PDQ Dump user manual; values confirmed as the complete distinct set in texas.pdq_og_lease_cycle.oil_gas_code
Open hole indicator 1 value
Read by open_hole_code
Marks a producing interval that is open hole rather than perforated casing.
| Code | Means |
|---|---|
OH |
Open hole The interval is completed open hole. |
Source: RRC manual WBA091, WBPERF record, WB-OPEN-HOLE-CODE
Water or land location 4 values
Read by water_land_code
Whether the wellbore sits on land, in a bay, in an inland waterway, or offshore.
| Code | Means |
|---|---|
L |
Land |
B |
Bay / estuary |
I |
Inland waterway |
O |
Offshore |
Source: RRC manual WBA091, data-item note on WB-WATER-LAND-CODE
What this joins to
The Railroad Commission never states these keys anywhere in the files. They are the reason the data is hard to use, so here they are with the exact columns on both sides.
Full Wellbore Database (ASCII) joins to Wellbore Completion Records on API county and API unique — one row here matches many rows there.
the lease and well identifiers it is completed under
One row per completion identifier on the wellbore. A well with an oil completion and a gas completion has two. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-completions.api_county AND full-wellbore-ascii.api_unique = wellbore-completions.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Form Dates on API county and API unique — one row here matches many rows there.
its form filing dates
The W-2/G-1, drilling completion and plug-back dates recorded against the wellbore, one row per form key. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-form-dates.api_county AND full-wellbore-ascii.api_unique = wellbore-form-dates.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Formation Records on API county and API unique — one row here matches many rows there.
the formations it penetrated
One row per formation top, with the depth it was encountered at. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-formations.api_county AND full-wellbore-ascii.api_unique = wellbore-formations.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Casing Records on API county and API unique — one row here matches many rows there.
its casing strings
One row per casing string set in the hole, with size, depth and cement. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-casing.api_county AND full-wellbore-ascii.api_unique = wellbore-casing.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Perforation Records on API county and API unique — one row here matches many rows there.
its perforated intervals
One row per perforated or open-hole interval the well produces through. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-perforations.api_county AND full-wellbore-ascii.api_unique = wellbore-perforations.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Tubing Records on API county and API unique — one row here matches many rows there.
its tubing strings
One row per tubing string, with the packer depth. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-tubing.api_county AND full-wellbore-ascii.api_unique = wellbore-tubing.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Remarks on API county and API unique — one row here matches many rows there.
the remarks recorded against it
Line-wrapped free text from the district office. Order by the line counter to read a remark whole. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-remarks.api_county AND full-wellbore-ascii.api_unique = wellbore-remarks.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Plugging Records on API county and API unique — one row here matches many rows there.
its plugging record
The W-3 plugging report. Present only for wells that have been plugged. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-plugging.api_county AND full-wellbore-ascii.api_unique = wellbore-plugging.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Drilling Permit Numbers on API county and API unique — one row here matches many rows there.
every drilling permit issued against it
A wellbore usually has several. The root record's newest_drl_pmt_nbr is only the most recent. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-drilling-permit-numbers.api_county AND full-wellbore-ascii.api_unique = wellbore-drilling-permit-numbers.api_unique
Full Wellbore Database (ASCII) joins to Wellbore Well Identifiers on API county and API unique — one row here matches many rows there.
its oil-schedule lease and well numbers
How the wellbore is identified on the oil proration schedule. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-well-ids.api_county AND full-wellbore-ascii.api_unique = wellbore-well-ids.api_unique
Full Wellbore Database (ASCII) joins to Wellbore H-15 Inactive Well Tests on API county and API unique — one row here matches many rows there.
its H-15 inactive well tests
Present where the well has been inactive long enough to require testing. Keyed on the API county and unique number, which is how every record type in WBA091 hangs off its root record.
full-wellbore-ascii.api_county = wellbore-h15-reports.api_county AND full-wellbore-ascii.api_unique = wellbore-h15-reports.api_unique
Full Wellbore Database (ASCII) joins to Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) on Newest drl pmt number = Permit number — many rows here share a single row there.
was last permitted by
The wellbore root record carries only its most recent permit number. 4,822 of 5,000 sampled permits are somebody's newest permit. For the full permit history use the wellbore's drilling permit numbers instead.
full-wellbore-ascii.newest_drl_pmt_nbr = drilling-permits-daily.permit_no
Full Wellbore Database (ASCII) joins to Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) on API number — one row here matches many rows there.
permitted this wellbore
The join everyone needs and nobody is told about. Both files write the API number dashed as 42-XXX-XXXXX, so they match directly — 5,000 of 5,000 sampled permits found their wellbore. A wellbore can have many permits over its life, so the same API appears on more than one permit.
drilling-permits-daily.api_number = full-wellbore-ascii.api_number
Full Wellbore Database (ASCII) joins to UIC Database (ASCII) on API county = County number and API unique = API number — one row here matches many rows there.
injects into the wellbore
The UIC file stores only the five-digit unique component of the API number, with the county in a separate column — exactly the two halves the wellbore database keys on. Joining them as a pair matches 748 of 866 permits; the rest carry a placeholder API. This is what puts a disposal well on a map with its depth, casing and plugging status.
uic-database-ascii.cnty_no = full-wellbore-ascii.api_county AND uic-database-ascii.api_no = full-wellbore-ascii.api_unique
Full Wellbore Database (ASCII) joins to Completion Information in Data Format on Newest drl pmt number = Dp number — one row here matches many rows there.
completed the wellbore last permitted as
The completion filing and the wellbore database cannot be joined on the API number without reformatting it — the completion file fuses it to eight digits and the wellbore file splits it in two. The drilling permit number joins them directly instead: 4,625 of 5,000 sampled completions land on a wellbore this way. For the remainder, concatenate the wellbore's api_county and api_unique and match it against the completion's api_no.
completion-information-data-format.dp_no = full-wellbore-ascii.newest_drl_pmt_nbr
Full Wellbore Database (ASCII) joins to PDQ Well Completion Directory on API county = API county code and API unique = API unique number — one row here matches many rows there.
is the wellbore
Both files split the API number the same way, so this is an exact two-column join — 5,000 of 5,000 sampled rows. It is the bridge from lease-based production to the API-numbered wellbore world.
pdq-well-completion.api_county_code = full-wellbore-ascii.api_county AND pdq-well-completion.api_unique_no = full-wellbore-ascii.api_unique
Full Wellbore Database (ASCII) joins to Drilling Permit Master and Trailer — End of Month File (with latitudes and longitudes) on API number — one row here matches many rows there.
permitted this wellbore
Same join as the nightly permit file: dashed API to dashed API, exact.
drilling-permits-monthly.api_number = full-wellbore-ascii.api_number
Where this comes from
- Published by
- Texas Railroad Commission — the original page
- Original format
- Fixed-width Columns are byte ranges with no separators, described only in a scanned record layout.
- Update cadence
- Updated once a week (Weekly. Available by the following Monday.)
- RRC download link
- GoAnywhere MFT
- Record layout manual
- Our table
texas.wellbore
EZRRC is an independent mirror of public-domain data published by the Texas Railroad Commission. It is not affiliated with or endorsed by the RRC. For any legal or regulatory purpose, verify against the official RRC release.