3.4M well headers, 20M+ production records, 240K completions, and 450K violations across 15 US producing states. API-first, agent-ready, no sales calls.
Four normalized datasets, all queryable via API or downloadable as bulk files.
3.4M wells across 15 states — operator, location, formation, status, depths. Normalized from TX RRC, OK OCC, KS KGS, CA CalGEM, OH ODNR, PA DEP, WY WOGCC, NM OCD, CO ECMC, WV DEP, ND DMR, MT BOGC, UT OGM, AK AOGCC, and more.
20M+ monthly oil, gas, and water volumes across 12 states. Ready for decline curve analysis, portfolio monitoring, and basin benchmarking.
240K completion records across 14 states — lateral length, proppant, fluid, stage count. Sourced from FracFocus chemical disclosures and OK OCC completion reports.
450K+ enforcement actions across 6 states (PA, TX, OK, ND, CO, NM) — violation type, severity, resolution, fines. For ESG screening, due diligence, and regulatory monitoring.
Live record counts from the database. Updates as new data is ingested.
| State | Wells | Production Records | Completions | Violations |
|---|---|---|---|---|
| Loading coverage data... | ||||
Start exploring well data in 30 seconds. No credit card required.
curl -H "Authorization: Bearer YOUR_KEY" https://wells.fyi/api/v1/wells?state=TX&per_page=5
wells.fyi is designed to be used by AI agents as a tool. OpenAPI 3.1 spec at /api/v1/openapi.json, consistent pagination, rich filtering, and structured errors.
MCP Server — Add wells.fyi as a native tool in Claude Desktop or Claude Code:
{
"mcpServers": {
"wells-fyi": {
"url": "https://wells.fyi/mcp",
"headers": { "Authorization": "Bearer wf_your_key_here" }
}
}
}
Schema Discovery — Agents can self-discover available data:
# What data is available?
GET /api/v1/coverage
# What fields and enums exist?
GET /api/v1/schema
# Full OpenAPI spec
GET /api/v1/openapi.json
Load well data into pandas in 3 lines.
import requests
import pandas as pd
# Search wells
resp = requests.get("https://wells.fyi/api/v1/wells", params={
"state": "TX", "formation": "Wolfcamp", "per_page": 100
}, headers={"Authorization": "Bearer wf_your_key"})
wells = pd.DataFrame(resp.json()["results"])
# Bulk export (Builder+ tier)
resp = requests.get("https://wells.fyi/api/v1/export/production", params={
"state": "TX", "format": "csv"
}, headers={"Authorization": "Bearer wf_your_key"})
production = pd.read_csv(io.StringIO(resp.text))