P-5 Organization (ASCII)
Queryable Fixed-width
Every organization with an RRC operator number: name, status, type and address.
Get the data
Pre-filtered: Operator number is 33290. Adding this gets you that slice, not the whole dataset — change or clear it at the options step.
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
ORA001. The operator directory — 71,796 organizations with their P-5 number, organization name, P-5 status, organization type, mailing address, phone, the date the organization was created and the date it went inactive.
That six-digit operator number is the join key that turns an anonymous permit, lease or completion into a company with a name and an address.
What you can do with it
Turn an operator number into a company, an address and a regulatory status — the join that makes every other dataset in the catalog readable.
Find every organization whose P-5 has lapsed, count operators by organisation type, and map the industry by mailing address.
Combine with the production data to rank companies, or with the permit data to see who is drilling.
Gotchas
The P-5 status is a single letter and it matters: A is active, I inactive, D delinquent. Most of the 71,796 organizations on file are inactive — the file is a historical register, not a list of operating companies.
The operator number is the join key, not the name. Names change, get re-registered and are reused; the number does not.
An organization being on file does not mean it operates wells. Purchasers, transporters and service companies all carry P-5 numbers.
Record layout
13 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.
operators
13 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
id
key
join
|
integer | 3-8 | OROR-ORG-OPERATOR-NUMBER |
The RRC P-5 operator number. This is the join key that turns an anonymous permit, lease or completion into a named company. e.g. 166150 | — |
| 2 |
name
|
text | 9-40 | OROR-ORG-ORGANIZATION-NAME |
Organization name exactly as filed on Form P-5, 32 characters. | — |
| 3 |
p5_status
|
char | 42 | OROR-P-5-STATUS |
Whether the organization's P-5 is active, inactive, delinquent or annotated. e.g. A | P-5 organization status |
| 4 |
org_type
|
char | 45 | OROR-ORGANIZATION-CODE |
Legal form of the organization: corporation, partnership, trust and so on. e.g. A | Organization type |
| 5 |
address1
|
text | 71-101 | OROR-ORG-ADDR-LINE1 |
First line of the P-5 master mailing address. | — |
| 6 |
address2
|
text | 102-132 | OROR-ORG-ADDR-LINE2 |
Second line of the P-5 master mailing address. | — |
| 7 |
city
|
text | 133-145 | OROR-ORG-ADDR-CITY |
City of the P-5 master mailing address. | — |
| 8 |
state
|
char | 146-147 | OROR-ORG-ADDR-STATE |
State of the P-5 master mailing address. | — |
| 9 |
zip
|
text | 148-152 | OROR-ORG-ADDR-ZIP |
ZIP code, with the four-digit suffix appended when RRC supplies one. | — |
| 10 |
phone
|
text | 259-268 | — | Contact phone number from the P-5. Null when RRC carries all zeros. | — |
| 11 |
date_built
|
date | 243-250 | — | Date the organization record was created, CCYYMMDD. | — |
| 12 |
date_inactive
|
date | 251-258 | — | Date the organization went inactive. Null while it is active. | — |
| 13 |
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.
Organization type 7 values
Read by org_type
The legal form the operator filed under. Codes 'H' and 'I' also appear in the warehouse but are not among the seven 88-level values ORA001 documents, so they are left unlabelled rather than guessed.
| Code | Means |
|---|---|
A |
Corporation |
B |
Limited partnership |
C |
Sole proprietor |
D |
Partnership |
E |
Trust |
F |
Joint venture |
G |
Other See the organization comment field for the description. |
Source: RRC manual ORA001, COBOL 88-level values on OROR-ORGANIZATION-CODE
P-5 organization status 4 values
Read by p5_status
Whether an operator's Form P-5 organization report is current. An operator has to hold an active P-5 to be the operator of record on anything. The warehouse also contains 'H', 'R' and 'X' in this column. Those are not among the four 88-level values ORA001 documents for OROR-P-5-STATUS, so EZRRC does not guess at labels for them.
| Code | Means |
|---|---|
A |
Active The P-5 is current. |
I |
Inactive The organization is inactive. |
D |
Delinquent The P-5 was not refiled by the notice month. |
S |
See remarks Not required to file; see remarks. |
Source: RRC manual ORA001, COBOL 88-level values on OROR-P-5-STATUS
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.
P-5 Organization (ASCII) joins to Drilling Permit Master and Trailer — Daily File (with latitudes and longitudes) on ID = Operator number — one row here matches many rows 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
P-5 Organization (ASCII) joins to Drilling Permit Master and Trailer — End of Month File (with latitudes and longitudes) on ID = Operator number — one row here matches many rows there.
permitted by
The permit's P-5 operator number, resolved to the organization.
drilling-permits-monthly.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Drilling Permit Master on ID = Operator number — one row here matches many rows there.
was permitted to
The P-5 organization number RRC approved on the permit, resolved to the operator directory for the company's name, address and current P-5 status. Both sides are integers here — unusually for this catalogue — so the comparison runs as printed. All 20,000 sampled permits resolve. The directory is a snapshot of today, so it gives you the operator's status now and not its status when the permit was issued.
drilling-permit-master.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Completion Information in Data Format on ID = Operator number — one row here matches many rows there.
completed by
The completing operator's P-5 number. 4,504 of 5,000 sampled completions resolve; the rest name organizations that predate the current directory. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
completion-information-data-format.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Drilling Permits Pending Approval (with latitudes and longitudes) on ID = Operator number — one row here matches many rows there.
was filed by
The operator on a pending application, resolved to the P-5 directory — which is how you find out whether the company doing the filing is in good standing, before the permit is granted. All 258 rows across the fifteen extracts held resolve. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
drilling-permits-pending.operator_number = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Gas Well Status (26 Month G-10) on ID = Operator number — one row here matches many rows there.
was filed by
The six-digit P-5 number of the company that filed the G-10, resolved to the operator directory. All 5,000 sampled tests resolve; the column is never null and never non-numeric on the current tape. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
gas-well-status-g10.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Drilling Permit Master and Trailer on ID = Operator number — one row here matches many rows there.
was applied for by
The P-5 number as the OPERATOR wrote it on the W-1, resolved to the operator directory. Both sides are integers. 19,997 of 20,000 sampled applications resolve. Three fewer than the permit segment's 20,000, and the difference is the point: the root holds what was filed and the permit segment holds what RRC approved, so a P-5 number the Commission corrected survives here.
drilling-permit-master-and-trailer.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Horizontal Drilling Permits on ID = Operator number — one row here matches many rows there.
was permitted to
The permit's operator, resolved to the P-5 directory. Measured over the whole table: all 173,511 rows resolve. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
horizontal-drilling-permits.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to High Cost Gas on ID = Operator number — one row here matches many rows there.
certified for
The operator holding the certification. 4,236 of 5,000 sampled rows resolve against the current P-5 register; older certifications name organizations that have since been removed. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
high-cost-gas.operator_number = p5-organization-ascii.id
P-5 Organization (ASCII) joins to UIC Database (ASCII) on ID = Operator — one row here matches many rows there.
permitted to
The P-5 number of the organization authorised to inject, resolved to the operator directory. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
uic-database-ascii.operator = p5-organization-ascii.id
P-5 Organization (ASCII) joins to ST-1 Application Report on ID = Operator P5 — one row here matches many rows there.
applied for by
The P-5 number on the ST-1 application, resolved to the organization. 2,932 of 5,000 sampled applications match the current register. Note that the ST-1 file writes its district the way RRC prints it (7C, 8A) while the production data uses the internal number, so ST-1 does NOT join to the PDQ lease directory on district — it looks like it does and the matches are wrong. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
st1-application-report.operator_p5 = p5-organization-ascii.id
P-5 Organization (ASCII) joins to PDQ Lease Production by Cycle on ID = Operator number — one row here matches many rows there.
reported by the organization
The same operator number against the authoritative P-5 register, which carries the organisation type, address and status that the production system's copy does not. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
pdq-lease-cycle.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to RRC Oil / ICE Inspections and Violations on ID = P5 operator number — one row here matches many rows there.
cited the operator
The P-5 number of the operator cited in the violation, resolved to the operator directory. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
rrc-oil-ice-inspections.p5_operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to PDQ Operator Production by Cycle on ID = Operator number — one row here matches many rows there.
totals the organization
The same operator number against the authoritative P-5 register. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.
pdq-operator-cycle.operator_no = p5-organization-ascii.id
P-5 Organization (ASCII) joins to Oil and Gas Docket Parties on Name — rows can match many rows in both directions.
is the organization named
The docket file names parties as free text and does not carry the P-5 number, so this is a name match against the operator directory. 4,079 of 5,000 sampled party names match exactly; the remainder differ by punctuation, a suffix or an abbreviation. Treat a miss as 'not matched', never as 'not an operator'.
oil-and-gas-docket-parties.name = p5-organization-ascii.name
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.
- RRC publishes
- Updated once a month (Monthly. Available by the 25th.)
- EZRRC re-ingests
- Weekly
- Record layout manual
- Our table
texas.operators
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.