Florida Well Data Lookup
Pricing
from $40.00 / 1,000 well records
Florida Well Data Lookup
Look up Florida well depth, casing and initial water level records by coordinates, address, ZIP code (ZCTA area) or county. Answers from a bundled data snapshot. Blank depth means not reported.
Pricing
from $40.00 / 1,000 well records
Rating
0.0
(0)
Developer
Caleb Waymeyer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Security
Limited permissionsShare
Look up Florida well records near any point, street address, ZIP code or county. Each record gives the well's reported total depth, casing depth and diameter, static water level at construction, well use, permit ID, district and map coordinates. Use it as a Florida well depth lookup before buying land, planning a new well, pricing a drilling job, or checking what nearby wells reached. Every run also tells you the typical water-supply well depth across all matching records.
Coverage: North and Central Florida. 52 of Florida's 67 counties have 2,000 or more records each. South Florida (Miami-Dade, Broward, Palm Beach, Lee, Collier and nearby counties) has only partial coverage: a few hundred to about 2,000 records per county, mostly USGS observation wells, and no county well permits; see Coverage by county. Searches with no results are not charged.
Answers come from a snapshot of about 1.47 million well records from Florida's five water management districts and U.S. Geological Survey (USGS) groundwater sites, bundled inside the Actor, so runs take a few seconds and don't depend on any outside map server. Only address search makes a network call, to the U.S. Census Bureau Geocoder.
What you can search
| Search by | Input | Returns |
|---|---|---|
| Latitude / longitude | latitude, longitude, radiusMiles (0.1 to 25, default 3) | Nearest records within the radius, closest first, with distanceMiles |
| Street address | address (a Florida address) | Same as above, around the geocoded point |
| ZIP code | zip (5 digits) | Records inside that ZIP code (ZCTA area) |
| County | county (any of the 67 Florida counties) | Records in that county |
Optional filters: wellUse (domestic, irrigation, public_supply, agricultural, livestock,
monitoring, injection, other or unknown). The form is prefilled with the water-supply uses
(domestic, irrigation, public_supply, agricultural and livestock). Leaving wellUse empty
returns every use, including USGS sites, which have use unknown and dominate South Florida.
sources (one or more water management districts; USGS sites count in the district they lie in),
onlyWithDepth (on by default, so records with no reported depth are skipped), and maxResults
(1 to 1000, default 25). The Store form opens on Orlando (28.5383, -81.3792), radius 3 miles, 25 records.
Example inputs
Well data by coordinates:
{ "queryType": "point", "latitude": 28.5383, "longitude": -81.3792, "radiusMiles": 3, "maxResults": 25 }
Well data by address:
{ "queryType": "address", "address": "number street, city, FL ZIP", "radiusMiles": 1 }
Well data by ZIP code or county. The ZIP example leaves wellUse empty (every use, including USGS
sites) and turns onlyWithDepth off. The county example keeps domestic wells only:
{ "queryType": "zip", "zip": "32801", "wellUse": [], "onlyWithDepth": false, "maxResults": 100 }{ "queryType": "county", "county": "Alachua", "wellUse": ["domestic"], "maxResults": 200 }
Output
One dataset row per well record. Every row is a billed result. Keys are flat, so the dataset exports cleanly to CSV, Excel or JSON.
| Field | Meaning |
|---|---|
recordId | Record identifier within this data snapshot |
distanceMiles | Distance from your search point (null for ZIP and county searches) |
latitude, longitude | Map point as published by the district, to 6 decimal places |
county, zcta | County and ZIP code (ZCTA area) |
wmd, sourceId, sourceName, permitId, flUniqueWellId | District code, source layer id, readable source name, permit ID, Florida unique well ID (only when the district gave one in the official ABC1234 format). sourceName is derived from sourceId: USGS, FDEP, St. Johns River WMD, Southwest Florida WMD, Northwest Florida WMD, Suwannee River WMD, or South Florida WMD. An unrecognized id is left unchanged, and a missing id is null. For USGS sites, wmd is the district the site lies in, permitId is null, and recordId ends in the USGS site ID |
wellUse | Well use category |
totalDepthFt | Total depth in feet. Null means not reported, never zero. |
depthKind | well_depth, proposed_well_depth, permit_depth (SFWMD), or hole_depth (USGS drilled hole depth, when the well depth is not reported) |
casingDepthFt, casingDiameterIn | Casing depth (feet) and diameter (inches) |
staticWaterLevelFt | Water level below land surface reported at construction, not today. Negative = above ground (flowing well) |
vintage, vintageNote | Record date. Null when there is no date (all SJRWMD, NWFWMD, SRWMD and USGS records, and some SWFWMD records); vintageNote then says why |
locationConfidence | How the map point was located, for example gps, address_match or digitized. For USGS sites, the stated accuracy: usgs_within_1_second (about 100 ft), usgs_within_5_seconds, usgs_within_10_seconds or usgs_within_1_minute (about 1 mile) |
dataBuild | Date of the data snapshot |
Sample record
{"recordId": "wmd-sjrwmd-well-completions:stn:000225","distanceMiles": 0.1923,"latitude": 28.535627,"longitude": -81.378316,"county": "Orange","zcta": "32803","wmd": "SJRWMD","sourceId": "wmd-sjrwmd-well-completions","sourceName": "St. Johns River WMD","permitId": "000225","flUniqueWellId": null,"wellUse": "domestic","totalDepthFt": 168,"depthKind": "well_depth","casingDepthFt": 54,"casingDiameterIn": null,"staticWaterLevelFt": null,"vintage": null,"vintageNote": "district_layer_publishes_no_date","locationConfidence": "gps","dataBuild": "2026-10-23"}
(Sample values are made up; the format matches real records.)
Typical depth in the area
The status message gives the typical depth of water-supply wells (domestic, irrigation, public supply, agricultural and livestock) across every matching record, not just the ones returned. For example:
Returned 25 well records within 5 mi (9,865 matched). Typical water-supply well depth 110 ft (middle half 90-145 ft, from 5,071 records).
Monitoring wells are left out of this figure on purpose. They are usually shallow test holes (10 to 40 ft), and
in cities they make up most of the records, so including them would understate how deep a drinking or
irrigation well needs to go. USGS sites have no well use in the source, so they count as unknown and are left
out of the water-supply figure too. The form is prefilled with water-supply uses, so a South Florida run from
that form often returns nothing: USGS sites (use unknown) dominate there. Leave wellUse empty to return
every use, including those sites. areaStats.allMatching then gives their depth range. The run summary has the full numbers (median, middle half, minimum and maximum) for
total depth, casing depth and static water level, both for water-supply wells (areaStats.waterSupplyWells)
and for all matches (areaStats.allMatching). These stats are free: they are in the summary, not in billed
dataset rows.
Run summary
Each run also writes a RUN_SUMMARY record to the key-value store (turn off with includeSummary: false). It
holds totalWithinRadius (or the area total), returned, charged, why results were capped, the area depth
stats above, the geocode match type for address searches, the data snapshot date, and the disclaimers below. The summary is not a
dataset row and is never charged. If a run fails (invalid input, or the geocoder not responding), the summary
still records the status and the reason, with zero records returned.
Pricing and limits
- Pay per result: one
well-recordevent per returned record ($0.04 per record). Nothing else is charged per record, and the run summary is free. - If your maximum cost per run allows fewer records than you asked for, the Actor returns as many as fit and stops cleanly.
- Free Apify plan: at most 100 records per run. The status message tells you when this limit applied.
- Address searches that can't be matched, invalid input, and searches with no results return no records, so no records are charged.
Coverage by county
Records per county in the current snapshot:
| Records | Counties |
|---|---|
| 10,000 or more | Alachua, Bay, Brevard, Charlotte, Citrus, Clay, DeSoto, Duval, Escambia, Flagler, Hardee, Hernando, Highlands, Hillsborough, Indian River, Jackson, Lake, Leon, Levy, Manatee, Marion, Nassau, Okaloosa, Orange, Pasco, Pinellas, Polk, Putnam, Santa Rosa, Sarasota, Seminole, St. Johns, Sumter, Volusia, Walton |
| 2,000 to 9,999 | Baker, Bradford, Calhoun, Columbia, Dixie, Gadsden, Gilchrist, Gulf, Hamilton, Holmes, Jefferson, Madison, Osceola, Suwannee, Taylor, Wakulla, Washington |
| 500 to 1,999 | Franklin, Lafayette, Liberty, Union; and in South Florida (mostly USGS sites) Broward, Collier, Lee, Miami-Dade, Palm Beach |
| Fewer than 500 (sparse) | Glades, Hendry, Martin, Monroe, Okeechobee, St. Lucie |
Field completeness also varies by source. Total depth is reported for about 90% of district records and for every USGS site (sites without a depth are not included). Static water level at construction is reported for about 52-69% of records in every district except SFWMD, and never for USGS sites (64% overall). Only SWFWMD records (Tampa Bay and Southwest Florida) carry a date.
Coverage and limitations (please read)
- Not an official record or survey. Records are map points published by Florida's water management districts (SJRWMD, SWFWMD, NWFWMD, SRWMD and SFWMD) and USGS groundwater sites. No agency endorses this Actor.
- Not every well in Florida is included. Wells built before permitting began and unreported domestic wells are missing.
- South Florida is only partly covered. It has about 6,500 USGS groundwater sites (mostly observation wells, use unknown) and fewer than 1,000 SFWMD permit records. Well permits from the South Florida counties with delegated well permitting are missing. This is the most common reason for few or no results.
- USGS sites have no well use, casing, water level or date in this Actor. Sites 3,000 ft or deeper (oil and gas test holes) are left out.
- Blank means not reported. A null depth, casing or water level was not reported. It is never zero. Records
without a depth are skipped by default (
onlyWithDepthis on). SetonlyWithDepthto false to include them. - SFWMD depths are permit depths, not measured depths.
- The static water level was measured at construction, not today.
- A record is not a unique well. One well can appear in several permits or districts, or as both a district record and a USGS site. Only exact duplicates (same source, permit, coordinates, depth and casing) were removed. Records are not merged across sources.
- Depths are stored to the nearest 0.25 ft. Coordinates are rounded to 6 decimal places (about 10 cm).
- The data is a fixed snapshot (see
dataBuild) with no freshness guarantee. - Verify with the water management district or a licensed well driller before relying on this data for drilling, design or a sale.
ZIP codes
ZIP search uses Census ZIP Code Tabulation Areas (ZCTA). A ZCTA is close to the USPS ZIP code area but not identical, so a few records near a ZIP boundary may be assigned to a neighboring ZIP.
FAQ
How deep are wells near me? Run an address search with a radius of 1 to 5 miles. The status message gives the typical water-supply well depth around that point, and the returned records show individual wells.
Why are there no results near me? Coverage is incomplete, especially in South Florida (see
Coverage by county), and some areas simply have few permitted wells. The form is
prefilled with water-supply uses. Leaving wellUse empty returns every use, including USGS sites (use
unknown), which dominate South Florida. You can also try a larger radius or a county search.
Why is there no typical depth for my South Florida search? Most South Florida records are USGS sites,
whose well use is unknown, so they aren't counted as water-supply wells. Leave wellUse empty to include
them. The run summary's areaStats.allMatching then gives the depth range of every match.
Why is totalDepthFt null? The district record didn't report a depth. We never fill in a guess or a zero.
The default search skips those records. Set onlyWithDepth to false to include them.
Can I get well depth by address? Yes. Use queryType: "address". Your address is used only for geocoding and
is not stored in the output.
Is this the same as a well completion report? No. These are summary map records. For the full report, ask the water management district.
Address geocoding attribution
Address geocoding uses the U.S. Census Bureau Geocoder. This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau.