CA CalGEM Oil & Gas & Geothermal Well Register avatar

CA CalGEM Oil & Gas & Geothermal Well Register

Pricing

$1.00 / 1,000 california oil/gas well registration records

Go to Apify Store
CA CalGEM Oil & Gas & Geothermal Well Register

CA CalGEM Oil & Gas & Geothermal Well Register

California oil & gas / geothermal well register (public CalGEM data, ~242k wells): status (active/idle/plugged), well type, operator, county, field, HPZ, location. Due-diligence for environmental & mineral-rights research. Filter by county, operator, status, API number.

Pricing

$1.00 / 1,000 california oil/gas well registration records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

CA CalGEM Oil & Gas & Geothermal Wells - California Well Register

California's Dept of Conservation / CalGEM publishes its well register (WellSTAR) as a free public map service - every oil, gas and geothermal well ever filed with the state. This actor turns it into a queryable, charged-per-record API - for environmental due-diligence, mineral-rights and land research, and oil & gas supply-chain vetting.

What it covers

~242.5k wells across California (layer 0 of CalGEM's WellSTAR service). Each record carries:

FieldWhat it is
apiNumberthe 10-digit API number - the stable per-well key
statusActive (53.9k) / Idle (30.3k) / Plugged (146.6k, sealed) / Canceled / New / PluggedOnly / Unknown
wellTypeOil & Gas / Waterflood / Cyclic Steam / Steamflood / Observation / Gas Storage / Water Disposal / Dry Gas ...
operatorNamewho operates the well (Chevron, Aera Energy, California Resources...)
county / districtlocation (Kern is the giant; offshore areas are suffixed 'Offshore')
fieldName / areaNameproducing field
leaseName / wellNumberlease and well-on-lease identity
section / township / range / baseMeridianPLSS survey location
spudDate / spudYearwhen the well was first drilled
inHPZverified high-pressure-zone wells
confidential / directionalflags
latitude / longitudecoordinates

Typical questions

  • "How many active wells does this operator run in Kern County?"
  • "Which wells are in a verified HPZ near this township/range?"
  • "Every plugged well on this lease - did the site get sealed?"
  • "Where are California's gas-storage wells (for storage-safety diligence)?"
  • "New wells spudded since 2020 in Kern County."

Honest limits

The register is a status snapshot, not a production ledger: it carries no depth, plug-report or bond columns, and no per-well "last updated" timestamp (CalGEM exposes those only through other systems). Spud date is a text column, so year filtering happens after a bounded scan. Don't build depth-history claims on this data.

Inputs

InputWhat it does
statusActive (default when no other filter is set) / Idle / Plugged / Canceled / PluggedOnly / New / Unknown / NotCalGEMJurisdiction. Leave empty to search all statuses (use with a county/operator/well-type filter for a full-status view)
county / operator / leaseName / wellNumbername substrings
wellTypecode or label (OG / 'Oil & Gas', WF / 'Waterflood', ...)
apiNumberexact 10-digit API - single well
inHPZ / confidential / directionalyes/no flags
spudYearFrom / spudYearTofirst-drilled year range (record runs; not combinable with aggregate)
latMin/latMax/lonMin/lonMaxbounding box
aggregate / groupByone row per group (county / status / wellType / operator / field / district) with a count
maxResultscap records (default 50)

Default run = up to 50 active wells - fast enough for the daily auto-test, and a live slice of California's operating wells.

Note: a run is capped at $5 of usage - a request large enough to reach it (roughly 5,000 records at the entry price) is cut off part-way, and the truncated run still reports success. For whole-corpus counts, use aggregate.

Example inputs

One well by API number - The 10-digit API number is the stable per-well key.

{"apiNumber": "0403703161", "maxResults": 5}

Active wells run by one operator in one county - operator and county are substring matches.

{"status": "Active", "operator": "Chevron", "county": "Kern", "maxResults": 25}

Verified high-pressure-zone wells in one county

{"inHPZ": "Verified HPZ", "county": "Los Angeles", "maxResults": 25}

Wells by status - aggregate=true returns one summary row per group with a count.

{"aggregate": true, "groupBy": "status"}

Low cost

From $0.001 per record - billed only for the rows you use, and each record is metered individually.

The register is 242,545 wells across California's oil, gas and geothermal fields. The source publishes its drill dates as strings, not dates - so a naive year filter would silently mis-sort records - and its aggregate endpoint ignores its own row-count limit. We sidestep both: year filtering runs as a bounded scan on our side, aggregate rows are re-sliced correctly on our side, and the source's quirky status values (a whitespace-less NotCalGEMJurisdiction, for one) are matched exactly rather than by sloppy substring. You query a clean well register by county / operator / status / API number; the data quirks stay on our side.

Example output

One well - apiNumber=0403703161 returns the single well:

{
"platform": "ca-wells",
"source": "calgem-wellstar",
"mode": "rows",
"apiNumber": "0403703161",
"leaseName": "Lease by Tidelands Oil Production Co.",
"wellNumber": "Z1 61",
"status": "Plugged",
"wellTypeCode": "OG",
"wellType": "Oil & Gas",
"operatorName": "Tidelands Oil Production Co.",
"fieldName": "Wilmington",
"areaName": "Fault Block V",
"district": "Southern",
"county": "Los Angeles",
"section": "11",
"township": "05S",
"range": "13W",
"baseMeridian": "SB",
"spudDate": "03/07/1962",
"spudYear": "1962",
"confidential": "N",
"directional": "Y",
"inHPZ": "Verified HPZ",
"latitude": "33.75258636",
"longitude": "-118.20665741",
"groupKey": "",
"groupCount": ""
}

aggregate=true, groupBy=status - wells by status:

Plugged 146.6k
Active 53.9k
Idle 30.3k

Source