CA CalGEM Oil & Gas & Geothermal Well Register avatar

CA CalGEM Oil & Gas & Geothermal Well Register

Pricing

from $0.03 / 1,000 well 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

from $0.03 / 1,000 well records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

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 of the newest records - a query pinned to a very old single year may return a partial slice of that year, not the whole of it. 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. operator has thousands of distinct values and the source truncates a grouped response at 5,000 - that combination is refused rather than answered with a short rollup; filter by county/field first, or group by one of the bounded dimensions
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.00005 per record, down to $0.00003 at Gold - billed only for the rows you use, and each record is metered individually.

The register is ~242,000 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, truncating a grouped response at 5,000 groups with no error. We sidestep both: year filtering runs as a bounded scan on our side, and a grouped request that fills that 5,000 ceiling is refused outright rather than returned as a silently short rollup. 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