Data API

Open, read-only access to revenue data. No account, API key, or authentication is required.

Each row includes relevant reference data — the period, location, fund, and commodity labels are all available. The datasets are rebuilt after each monthly data load.

  • MethodGET
  • AuthNone
  • FormatsJSON · CSV

Base URL

https://data.onrr.gov

All paths below are relative to this base. The same datasets are also reachable at onrr.gov/data/<name>. GraphQL is not offered for these datasets — use REST; it's cached and simpler to support.

Endpoints

DatasetEndpointMeasure
Monthly disbursements/disbursementsamount (USD)
Revenue/revenueamount (USD)
Production/productionvolume
Federal sales/federal-salessales value (USD)
Federal revenue by company/federal-revenue-by-companyrevenue (USD)

Columns

Shared by disbursements, revenue, and production

ColumnTypeDescription
iduuidUnique row identifier.
period_datedateFirst day of the reporting month (YYYY-MM-DD).
calendar_yearintegerCalendar year of the period.
fiscal_yearintegerFederal fiscal year of the period.
month_longstringFull month name, e.g. "January".
period_typestringReporting period: Monthly, Calendar Year, or Fiscal Year.
statestringTwo-letter state code (blank for offshore).
state_namestringFull state name (blank for offshore).
countystringCounty, parish, or borough (blank for offshore).
land_categorystringOnshore or Offshore.
land_typestringLand ownership / jurisdiction detail.
commoditystringCommodity that generated the record.
productstringProduct detail within the commodity.
unitstringUnit for the measure (e.g. dollars, bbl, mcf).

/disbursements also adds

ColumnTypeDescription
fund_typestringType of recipient fund.
fund_recipientstringSpecific recipient of the disbursement.
fund_sourcestringSource fund of the disbursement.
disbursement_typestringCategory of disbursement (e.g. GOMESA, 8(g)).
revenue_typestringRevenue category behind the disbursement.
amountnumericAmount disbursed, USD (can be negative).

/revenue also adds

ColumnTypeDescription
fund_typestringType of fund the revenue was recorded against.
revenue_typestringRevenue category (e.g. Royalties, Rents, Bonuses).
fund_sourcestringSource fund of the revenue.
amountnumericRevenue amount, USD (can be negative).

/production also adds

ColumnTypeDescription
mineral_lease_typestringMineral lease type.
volumebigintProduction volume, in the row's unit.

/federal-sales (its own schema)

Federal sales is aggregated by calendar year and has a distinct set of columns — it does not share the columns above (no period_date, fiscal_year, or month).

ColumnTypeDescription
iduuidUnique row identifier.
calendar_yearintegerCalendar year of the sales.
commoditystringOil, Gas, NGL, or "Not Tied to a Commodity".
land_classstringLand ownership class (e.g. Federal).
land_categorystringOnshore or Offshore.
state_offshore_regionstringState name or offshore region.
revenue_typestringRevenue category.
sales_volumenumericSales volume.
gas_volumenumericGas volume.
sales_valuenumericSales value, USD.
royalty_value_prior_to_allowancenumericRoyalty value prior to allowances (RVPA), USD.
transportation_allowancenumericTransportation allowances (TA), USD.
processing_allowancenumericProcessing allowances (PA), USD.
royalty_value_less_allowancenumericRoyalty value less allowances (RVLA), USD.
effective_royalty_ratenumericEffective royalty rate.

Offshore rows have no state / county — check land_category / land_type instead.

/federal-revenue-by-company (its own schema)

Federal revenue by company is aggregated by calendar year and company, with its own flat set of columns (no period_date, fiscal_year, or month).

ColumnTypeDescription
iduuidUnique row identifier.
calendar_yearintegerCalendar year of the revenue.
corporate_namestringReporting company (corporate name).
revenue_agencystringAgency the revenue was reported to (e.g. Federal).
revenue_typestringRevenue category (e.g. Royalties, Rents, Bonus).
commoditystringCommodity that generated the revenue (Oil, Gas, NGL, Coal, …).
revenuenumericRevenue amount, USD (can be negative).

Querying

These endpoints accept the standard Directus REST query parameters:

ParameterPurposeExample
fieldsChoose which columns to return (default: all).fields=period_date,state_name,amount
filterFilter rows by column values.filter[state_name][_eq]=Colorado
sortOrder results; prefix - for descending.sort=-period_date
limit / offsetPage through results.limit=100&offset=200
metaInclude the total match count.meta=filter_count
aggregate / groupByServer-side rollups (sum, count, avg, min, max).aggregate[sum]=amount&groupBy[]=calendar_year
exportDownload the result as a file.export=csv

Common filter operators: _eq_neq_in_gte_lte_between_null_contains — combine them with _and / _or.

Examples

Each example is a live request against this environment — click Run to see the JSON.

Colorado disbursements in CY2024

Run ↗

Newest first, first 100 rows.

GET /disbursements?filter[state_name][_eq]=Colorado&filter[calendar_year][_eq]=2024&sort=-period_date&limit=100

Total disbursed by recipient, FY2024

Run ↗

Server-side sum grouped by recipient.

GET /disbursements?aggregate[sum]=amount&groupBy[]=fund_recipient&filter[fiscal_year][_eq]=2024

Oil production volume by state, CY2023

Run ↗

Sum of volume grouped by state.

GET /production?aggregate[sum]=volume&groupBy[]=state_name&filter[commodity][_eq]=Oil&filter[calendar_year][_eq]=2023

Row count for a filter

Run ↗

No rows returned — just the total count.

GET /revenue?filter[commodity][_eq]=Gas&limit=0&meta=filter_count

Federal oil sales value by year

Run ↗

Sum of sales value grouped by calendar year.

GET /federal-sales?aggregate[sum]=sales_value&groupBy[]=calendar_year&filter[commodity][_eq]=Oil

Revenue by company, CY2024

Run ↗

Sum of revenue grouped by company for one year.

GET /federal-revenue-by-company?aggregate[sum]=revenue&groupBy[]=corporate_name&filter[calendar_year][_eq]=2024

Bulk downloads

For a full dataset or a large slice, use export=csv (or json / xml) rather than deep JSON pagination.

The entire disbursements dataset as CSV.

Download ↗
GET /disbursements?export=csv

A filtered, column-limited CSV slice.

Download ↗
GET /disbursements?export=csv&filter[calendar_year][_eq]=2024&fields=period_date,state_name,fund_recipient,amount

Caching & rate limits

  • Responses are cached for about 30 minutes and refreshed automatically after each monthly data load. The X-Cache-Status response header shows HIT or MISS. Keeping query shapes consistent improves cache hit rates.
  • The API is rate-limited to protect the service. Prefer a single filtered/aggregated query or a CSV export over many small paginated requests. Sustained abusive traffic may be throttled at the edge.

Notes

  • Stability. This is a stable, versionless contract. Changes are additive — new columns or datasets may be added, and your existing requests keep working. Any breaking change (renaming or removing a column, changing a type) will be announced in advance with a deprecation window.
  • Data reflects the most recent monthly publication; period_date is the first of the reporting month. Recent months may be preliminary.
  • Amounts are in USD; production volume units are in the unit column (e.g. bbl, mcf). Values can be negative (adjustments).
  • Field definitions for each dataset are also on its page under Data dictionary, e.g. Monthly disbursements.

Questions or feedback?

Whether you're building an integration, hit an unexpected result, or spotted a discrepancy in the data, the ONRR data team is glad to help. Email us at data@onrr.gov.

To help us respond quickly, include the dataset and the full request URL.

Is this page helpful?

We'd love your feedback about this page.
Please do not include any personally identifiable information.