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 end-of-month cut of the OGA049M permit file. Identical layout to the daily file; the difference is that it is a fixed, citable snapshot taken on the last day of the month rather than a moving target.

Use it when a number has to still be the same number next quarter — monthly permit counts, year-over-year comparisons, anything that goes in a report someone will check.

What you can do with it

Build a stable monthly permit time series, and reconcile against the Commission's own published counts, which are cut from this file.

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

Because it is a month-end cut, a permit issued on the 30th and amended on the 2nd appears in its pre-amendment state. The nightly file is the one that reflects today.

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 — End of Month 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

Same join as the nightly permit file: dashed API to dashed API, exact.

drilling-permits-monthly.api_number = full-wellbore-ascii.api_number

Drilling Permit Master and Trailer — End of Month 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 permit's P-5 operator number, resolved to the organization.

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

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 month (Monthly. Last day of the month.)
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.