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.

Preview the first 100 rows

What this is

The permit file most people actually want. It is the OGA049M layout: the permit master and its trailers, plus the '14' surface-location and '15' bottomhole-location GPS records that carry latitude and longitude in decimal degrees.

A drilling permit — Form W-1 — is the first public trace of a well. It names the operator, the lease, the field, the intended total depth and the two ends of the hole. EZRRC parses the whole thing into one row per permit with both coordinate pairs on it, so a permit is a point (or a line) without any further work.

What you can do with it

Count permits by operator, county or field for any month since the file begins, and watch the leading indicator everyone in the industry watches — a permit today is a rig in weeks and a completion in months.

Map permitted surface and bottomhole locations, measure lateral length from the two coordinate pairs, and separate horizontal from vertical activity.

Join to the P-5 organization directory on the operator number to see whether the permitting company's own status is active, and to the wellbore database on the API number to find out whether the hole was ever actually drilled.

Gotchas

county_code holds the county NAME, not a numeric code. RRC's own layout calls the field a code and the file contains 'Midland'. This is the single most common way a permit query silently returns nothing.

application_type, application_well_code and horizontal_well_flag are decoded on the way into the warehouse, so they hold RRC's words rather than RRC's codes. 'OIL ' keeps a trailing space from the fixed-width original.

Roughly 3% of permits have no surface coordinate at all. A spatial export silently cannot carry those rows, so EZRRC reports how many were dropped — Midland County is 9,548 permits but only 9,187 points.

A permit is an application, not a well. Many are never drilled, and one wellbore accumulates several over its life.

Record layout

29 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.

permits 29 columns

# Column Type Bytes RRC name Meaning Lookup
1 source_file text The RRC file this row was parsed from, as directory/filename. The monthly files overlap, so this tells you which one last wrote the row.
2 received_date date 122-129 Date RRC received the application.
3 amended_date date 138-145 Date the permit was amended, if it ever was.
4 issue_date date 130-137 Date RRC issued the permit. This is the date the industry counts.
5 status_no key integer 3-9 RRC's status (permit application) number. With sequence_no it is the primary key of this table.
6 sequence_no key integer 10-11 Sequence within the status number, for amended and re-issued permits.
7 county_code join text 12-14 County name, despite the column name. The pipeline resolves the three-digit code against national.us_county on load and stores the resolved name, so filter on 'MIDLAND', not on '329'. e.g. Reeves
8 api_number join text 503-510 API number formatted 42-CCC-NNNNN. Blank on permits that never got one — an application withdrawn before drilling has no API. e.g. 42-389-36336
9 permit_no join integer 3-9 The permit number, with leading zeros stripped. e.g. 862449
10 operator_no join integer 60-65 The operator's six-digit RRC P-5 organization number. Join to the P-5 Organization dataset for the company's name, address and P-5 status. e.g. 166150
11 operator_name text 67-98 Operator name as carried in this file. Names drift between filings — join on the operator number, never on the name.
12 operator_add1 text 60-65 Operator address line 1, copied in from the P-5 file at load time.
13 operator_add2 text 60-65 Operator address line 2, copied in from the P-5 file at load time.
14 operator_city text 60-65 Operator city, copied in from the P-5 file at load time.
15 operator_state text 60-65 Operator state, copied in from the P-5 file at load time.
16 operator_zip text 60-65 Operator ZIP, copied in from the P-5 file at load time.
17 operator_phone text 60-65 Operator phone, copied in from the P-5 file at load time.
18 lease_name text 15-46 Lease name as filed.
19 well_no text 49-54 Well number within the lease, as the operator designates it.
20 horizontal_well_flag text 494 'Horizontal' or 'Vertical'. Derived from a one-byte Y/N flag on the permit master: only 'Y' means horizontal. e.g. Horizontal
21 application_type text 66-67 What the operator asked to do — drill, deepen, plug back, re-enter and so on. Stored decoded; the RRC codes behind it are in the drilling permit application type code set. e.g. DRILL
22 application_well_code text 11 What the well is for. Stored decoded; the RRC codes behind it are in the permit well code set. Note that oil wells carry a trailing space. e.g. OIL
23 surface_latitude numeric measured in deg Surface hole latitude, WGS84 decimal degrees, from the '14' GPS trailer record. Null on permits filed before the trailer existed. e.g. 31.4021874
24 surface_longitude numeric measured in deg Surface hole longitude, WGS84 decimal degrees, from the '14' trailer record. e.g. -103.5112090
25 bottom_latitude numeric measured in deg Bottomhole latitude, WGS84 decimal degrees, from the '15' GPS trailer record. Only populated for directional and horizontal permits.
26 bottom_longitude numeric measured in deg Bottomhole longitude, WGS84 decimal degrees, from the '15' trailer record.
27 total_depth bigint measured in ft 55-59 Total depth the permit authorises, in feet. e.g. 11000
28 field_no join integer 3-10 The eight-digit RRC field number. The field's name is not in most files; join to the field directory to get it. e.g. 41911500
29 field_name text 3-10 Field name.

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.

Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) joins to Full Wellbore Database (ASCII) on API number — many rows here share a single row 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

Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) joins to P-5 Organization (ASCII) on Operator number = ID — many rows here share a single row there.

permitted by

The six-digit P-5 number on the permit is the operator directory's primary key. Exact on all 5,000 sampled permits. This is what turns an anonymous permit into a company with a status and an address.

drilling-permits-daily.operator_no = p5-organization-ascii.id

Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) joins to Wellbore Drilling Permit Numbers on Permit number — one row here matches many rows there.

appears on the wellbore as

The wellbore database keeps every permit number issued against a hole. Joining here finds the wellbore even when the API number on the permit is blank or wrong — 4,180 of 5,000 sampled permits are recorded against a wellbore this way.

drilling-permits-daily.permit_no = wellbore-drilling-permit-numbers.permit_number

Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) joins to Completion Information in Data Format on Permit number = Dp number — one row here matches many rows there.

was filed under drilling permit

The permit the completion reports as its authority. The permit file only goes back as far as upstream has loaded it, so older completions will not find their permit here.

completion-information-data-format.dp_no = drilling-permits-daily.permit_no

Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) joins to Full Wellbore Database (ASCII) on Permit number = Newest drl pmt number — one row here matches many rows 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

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 every night (Nightly.)
RRC download link
GoAnywhere MFT
Record layout manuals
Our table
texas.permits

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.