Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes)
Queryable Fixed-width Has coordinates
Every drilling permit application, refreshed nightly, with surface and bottomhole coordinates.
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 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.