Geospatial facts API · REST + JSON · every US coordinate

Every public fact
about a place.
One call.

Send a coordinate or a US address. Get back flood zones, terrain, soils, the power grid, hazards, air quality, sun and wind, towers and people: 351 typed, cited fields from 95 public sources.

MCP Works in Claude, ChatGPT, Cursor and VS Code →
351
fields
95
public sources
15
presets
100
locations / batch
POST /v1/fetch · example, abbreviated
$ curl https://api.isopleth.dev/v1/fetch \
  -H "Authorization: Bearer $ISOPLETH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lat": 30.2672, "lng": -97.7431,
       "fields": ["elevation", "slope_degrees", "nearest_substation_distance_m"]}'

{
  "lat": 30.2672, "lng": -97.7431, "fetched_at": "2026-10-28T17:02:11Z",
  "resolved_location": {"lat": 30.2672, "lng": -97.7431, "source": "coordinate"},
  "fields": {
    "elevation": {"value": 151.2, "unit": "meters", "status": "ok", "confidence": "high",
                  "source": "USGS_3DEP", "dataset_vintage": "3DEP 1/3 arc-second",
                  "license": "US federal public domain", "attribution": "U.S. Geological Survey",
                  "fetched_at": "2026-10-28T17:02:11Z", "ttl_seconds": 31536000, "notes": null},
    "slope_degrees": {"value": 2.4, "unit": "degrees", "status": "ok", "...": "..."},
    "nearest_substation_distance_m": {"value": 1840.0, "unit": "meters", "status": "ok", "...": "..."}
  },
  "partial_failures": [],
  "attributions": [
    {"source": "EIA_POWER", "license": "US federal public domain",
     "attribution": "U.S. Energy Information Administration", "fields": ["nearest_substation_distance_m"]},
    {"source": "USGS_3DEP", "license": "US federal public domain",
     "attribution": "U.S. Geological Survey", "fields": ["elevation", "slope_degrees"]}
  ]
}
reads from
BLM_SMABLM_SOLAR_PEIS_2024BLS_QCEWBTS_PORTSBTS_RAILCALFIRE_FHSZCALFIRE_FRAPCARB_AIR_DISTRICTSCENSUS_ACSCENSUS_BPSCENSUS_GEOCODINGCENSUS_PEPCENSUS_TIGERWEBCENSUS_TIGER_URBANCENSUS_TRACT_WORKFORCEEIA_860MEIA_ATLASEIA_ELEC_SALES_REVENUE_PRICEEIA_GAS_INFRASTRUCTUREEIA_NATURAL_GAS_PRICESEIA_PIPELINESEIA_POWEREIA_SHALE_PLAYSEPA_ACRESEPA_AQS_DESIGN_VALUESEPA_CLASS_I_AREASEPA_CWNSEPA_CWS_SERVICE_AREASEPA_EGRIDEPA_FRS_RMPEPA_GREEN_BOOKEPA_RCRA_TSDEPA_REPOWERINGEPA_SDWISEPA_SEMSEPA_SEWERSHEDSEPA_UST_FINDER_FACILITIESEPA_UST_FINDER_RELEASESFAA_NASRFAA_SUAFCC_ASRFCC_BDC_FIXEDFCC_BDC_MOBILEFEMA_NFHLFEMA_NRIFHFA_HPIFHWA_NBIHIFLD_GAS_TRANSMISSION_PIPELINESHIFLD_ISO_RTOHUD_OPPORTUNITY_ZONESJRC_GSWLBNL_QUEUED_UPNATURAL_EARTH_OCEANNOAA_ASCE_WIND_VECTORSNOAA_CUSPNOAA_MARINECADASTRENOAA_NCEI_NCLIMGRID_DAILYNOAA_NCEI_NORMALS_GRIDDEDNREL_NSRDB_GOES_TMY_V4NREL_PVWATTS_V8NREL_REV_LANDBASED_WIND_SC_2024NREL_SOLAR_RESOURCE_V1NREL_WIND_TOOLKITNSIDC_MODIS_SNOW_COVER_DURATIONOPENINFRAMAP_OSMOVERTURE_BUILDINGSOVERTURE_PLACESOVERTURE_TRANSPORTATIONPAD_USPELLETIER_DTBSENTINEL2_NDVIUSACE_NIDUSDA_CDLUSDA_SSURGOUSDM_CURRENTUSFS_LCMSUSFS_NLCD_TCCUSFWS_CRITHABUSFWS_GOEA_RNDUSFWS_NWIUSGS_3DEPUSGS_DESIGNMAPS_ASCE7USGS_IWAA_WATER_BUDGETUSGS_KARSTUSGS_LANDSLIDE_SUSCEPTIBILITYUSGS_NHDPLUS_HRUSGS_NSHMUSGS_NWIS_OGCUSGS_ORPHANED_WELLSUSGS_SEDIMENTARY_BASINSUSGS_SELF_SUPPLIED_HOUSEHOLDSUSGS_THERMOELECTRIC_WATER_USEUSGS_WBDUSPVDBUSWTDBBLM_SMABLM_SOLAR_PEIS_2024BLS_QCEWBTS_PORTSBTS_RAILCALFIRE_FHSZCALFIRE_FRAPCARB_AIR_DISTRICTSCENSUS_ACSCENSUS_BPSCENSUS_GEOCODINGCENSUS_PEPCENSUS_TIGERWEBCENSUS_TIGER_URBANCENSUS_TRACT_WORKFORCEEIA_860MEIA_ATLASEIA_ELEC_SALES_REVENUE_PRICEEIA_GAS_INFRASTRUCTUREEIA_NATURAL_GAS_PRICESEIA_PIPELINESEIA_POWEREIA_SHALE_PLAYSEPA_ACRESEPA_AQS_DESIGN_VALUESEPA_CLASS_I_AREASEPA_CWNSEPA_CWS_SERVICE_AREASEPA_EGRIDEPA_FRS_RMPEPA_GREEN_BOOKEPA_RCRA_TSDEPA_REPOWERINGEPA_SDWISEPA_SEMSEPA_SEWERSHEDSEPA_UST_FINDER_FACILITIESEPA_UST_FINDER_RELEASESFAA_NASRFAA_SUAFCC_ASRFCC_BDC_FIXEDFCC_BDC_MOBILEFEMA_NFHLFEMA_NRIFHFA_HPIFHWA_NBIHIFLD_GAS_TRANSMISSION_PIPELINESHIFLD_ISO_RTOHUD_OPPORTUNITY_ZONESJRC_GSWLBNL_QUEUED_UPNATURAL_EARTH_OCEANNOAA_ASCE_WIND_VECTORSNOAA_CUSPNOAA_MARINECADASTRENOAA_NCEI_NCLIMGRID_DAILYNOAA_NCEI_NORMALS_GRIDDEDNREL_NSRDB_GOES_TMY_V4NREL_PVWATTS_V8NREL_REV_LANDBASED_WIND_SC_2024NREL_SOLAR_RESOURCE_V1NREL_WIND_TOOLKITNSIDC_MODIS_SNOW_COVER_DURATIONOPENINFRAMAP_OSMOVERTURE_BUILDINGSOVERTURE_PLACESOVERTURE_TRANSPORTATIONPAD_USPELLETIER_DTBSENTINEL2_NDVIUSACE_NIDUSDA_CDLUSDA_SSURGOUSDM_CURRENTUSFS_LCMSUSFS_NLCD_TCCUSFWS_CRITHABUSFWS_GOEA_RNDUSFWS_NWIUSGS_3DEPUSGS_DESIGNMAPS_ASCE7USGS_IWAA_WATER_BUDGETUSGS_KARSTUSGS_LANDSLIDE_SUSCEPTIBILITYUSGS_NHDPLUS_HRUSGS_NSHMUSGS_NWIS_OGCUSGS_ORPHANED_WELLSUSGS_SEDIMENTARY_BASINSUSGS_SELF_SUPPLIED_HOUSEHOLDSUSGS_THERMOELECTRIC_WATER_USEUSGS_WBDUSPVDBUSWTDB
01 — Coverage

The physical world, stacked at one point.

Each request drops a pin through every layer we hold. Hover a layer to see what it carries.

  • Water & flood44
  • Grid & energy87
  • Sun, wind & climate35
  • Hazards & environment65
  • Land, soil & cover34
  • Terrain & geology9
  • People, places & access70
  • Derived siting scores7
DERIVED SITING SCORESPEOPLE, PLACES & ACCESSTERRAIN & GEOLOGYLAND, SOIL & COVERHAZARDS & ENVIRONMENTSUN, WIND & CLIMATEGRID & ENERGYWATER & FLOOD30.2672, -97.7431
02 — One schema

Every field carries its receipts.

All 351 fields share one shape. Hover a line.

"elevation": {
  "value": 151.2,
  "unit": "meters",
  "status": "ok",
  "confidence": "high",
  "source": "USGS_3DEP",
  "dataset_vintage": "3DEP 1/3 arc-second",
  "license": "US federal public domain",
  "attribution": "U.S. Geological Survey",
  "fetched_at": "2026-10-28T17:02:11Z",
  "ttl_seconds": 31536000,
  "notes": null
}
  • Typed value, explicit unitNumbers come back as numbers with the unit named beside them. Nothing to parse out of a string, no guessing whether it is feet or meters.
  • Honest statusok, absent or failed. “Nothing here” and “couldn't read the source” are never the same silent null.
  • Confidence and vintageHow sure the value is, and which edition of the dataset it came from.
  • Provenance you can citeSource, license and the exact attribution line to show, on every single field.
  • FreshnessWhen it was read and how long it stays fresh, so you know what to cache.
  • NotesCaveats, and for derived fields the public inputs they were computed from.
03 — Presets

Pick a job. Get the whole bundle.

15 presets name the fields a job needs, so you don't list them one by one. Choose one to see exactly what comes back and what it costs.

POST /v1/fetch

Run this on your own coordinates.1,000 free lookups every month · no card
Get a free API key →
Run this on your own coordinates.Signed in · loading lookups ·
Go to dashboard →
04 — Field explorer

Search all 351 fields.

Full catalog with sources and licenses →

Every one of these 351 fields, on any plan.1,000 free lookups every month · no card
Get a free API key →
Every one of these 351 fields, on any plan.Signed in · loading lookups ·
Go to dashboard →
05 — MCP for AI agents

Out past the pavement, ask in plain English.

Rural land rarely has a clean street address. Drop a pin on a quarter section, a well site or a ridge line and ask your assistant what's there: slope and soils, the flood zone, how far to the nearest transmission line and substation, wildfire history. Isopleth's MCP server hands it the cited public facts, so the answer names its sources instead of guessing.

ChatGPT and Claude.ai connect with your Isopleth sign-in. Coding tools can use the same sign-in or an API key. Either way, lookups come out of your plan with the same limits as the REST API.

assistant · isopleth MCP

Here's a pin on 80 acres I'm looking at: 38.71, -98.92. Could I build a shop and drill a well there, and how far is the nearest substation?

fetch_location land read: terrain, soils, land cover1 lookup

fetch_location power read: lines, substations, utility1 lookup

fetch_location hazards read: flood, wetlands, fire1 lookup

Answers in plain language, with a table of each value and the agency it came from. Templates keep the checks the same every time.

Connect in one click

Server URL https://api.isopleth.dev/mcp. Sign in with Isopleth, no key to paste.

Claude.ai, Claude Desktop and the Claude mobile apps. Sign in with Isopleth; no key to paste.

  1. Click Add to Claude. The Add custom connector dialog opens with the name and URL filled in; select Add. (Team and Enterprise: an owner adds it once, then everyone connects their own account.)
  2. Select Connect, sign in to Isopleth with your email, then Allow access.
  3. Desktop and mobile pick it up automatically. Pro, Max, Team and Enterprise plans.
Connector URL
https://api.isopleth.dev/mcp

ChatGPT on the web (Pro, Business, Enterprise and Edu). Sign in with Isopleth; no key to paste.

  1. Open Plugins, select +, then Add custom MCP server (older layouts: Settings → Apps → Create, with developer mode on).
  2. Paste the URL, name it Isopleth, choose OAuth and leave the client ID and secret blank.
  3. Sign in to Isopleth when asked, choose Allow access, then type @Isopleth in a chat.
Server URL
https://api.isopleth.dev/mcp

One command, then /mcp inside Claude Code to sign in in your browser.

Terminal
claude mcp add --transport http isopleth https://api.isopleth.dev/mcp
With an API key instead
claude mcp add --transport http isopleth https://api.isopleth.dev/mcp --header "Authorization: Bearer $ISOPLETH_KEY"

One click opens Cursor's install prompt. Cursor signs you in to Isopleth the first time a tool runs.

Nothing opened? The app may not be installed or may block links from the browser; use the copy option below.

Or paste into ~/.cursor/mcp.json
{
  "mcpServers": {
    "isopleth": {
      "url": "https://api.isopleth.dev/mcp"
    }
  }
}

One click opens VS Code's MCP install page (Copilot agent mode). VS Code offers to sign in to Isopleth.

Nothing opened? The app may not be installed or may block links from the browser; use the copy option below.

Or from a terminal
code --add-mcp '{"name":"isopleth","type":"http","url":"https://api.isopleth.dev/mcp"}'
Or .vscode/mcp.json
{
  "servers": {
    "isopleth": {
      "type": "http",
      "url": "https://api.isopleth.dev/mcp"
    }
  }
}

One command. Codex sees that Isopleth supports sign-in and opens your browser.

Terminal
codex mcp add isopleth --url https://api.isopleth.dev/mcp
With an API key instead
codex mcp add isopleth --url https://api.isopleth.dev/mcp --bearer-token-env-var ISOPLETH_KEY

Use Add to Claude on the Claude tab: connectors added on claude.ai appear in Claude Desktop. To use an API key instead, add this to claude_desktop_config.json (Settings → Developer → Edit Config; needs Node.js 18+).

claude_desktop_config.json
{
  "mcpServers": {
    "isopleth": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.isopleth.dev/mcp",
        "--header",
        "Authorization:${ISOPLETH_AUTH}"
      ],
      "env": {
        "ISOPLETH_AUTH": "Bearer YOUR_ISOPLETH_KEY"
      }
    }
  }
}

Paste into ~/.codeium/windsurf/mcp_config.json (Cascade → MCP → open config). Windsurf uses serverUrl, not url.

mcp_config.json
{
  "mcpServers": {
    "isopleth": {
      "serverUrl": "https://api.isopleth.dev/mcp"
    }
  }
}

Any client that speaks Streamable HTTP: the URL, then the client's OAuth sign-in or the header Authorization: Bearer <your key>. Stdio-only clients can use the mcp-remote bridge shown under Claude Desktop.

Server URL
https://api.isopleth.dev/mcp
Header (API key)
Authorization: Bearer $ISOPLETH_KEY
01Land ReadTerrain, soil and land-cover facts for one site, every value tied to its public source.One location or a short list · 1 lookup per location (12 fields)Open template →02Power ReadGrid and utility context for one site: nearest transmission line and voltage, substation, power plant, gas pipeline, utility territory and water and sewer service.One location or a short list · 1 lookup per location (17 fields)Open template →03Hazards ReadFlood, wetland, wildfire and severe-weather exposure for one site, cited to FEMA, USFWS, USGS, NOAA and state fire-agency sources.One location or a short list · 1 lookup per location (23 fields)Open template →04Insurance Book MonitoringRe-screen a list of insured properties for flood, wildfire and severe-weather exposure in batches, and route anything that crosses a threshold to manual review.A list of locations (batch) · 1 lookup per property (13 fields)Open template →05CRM Address CleanupTurn a messy list of CRM or lead addresses into normalized records with coordinates, and an explicit review queue for anything that did not match.A list of addresses · 1 lookup per address that resolvesOpen template →06Parcel DiscoverySearch public property records for parcels that match a brief (state and county, acreage, land use, assessed value, last sale) and return a shortlist with acreage, value, location and the owner of record where the source publishes it.An area and a set of criteria · 25 lookups per page of up to 100 parcels; empty pages and parcel_coverage are freeOpen template →07Parcel EnrichThe full public record for one parcel (owner, mailing address, land use, zoning, values, last sale, legal description, acreage) plus flood, terrain, wetland, utility and road facts at it.One parcel, or a list · 6 lookups per matched parcel (5 for the parcel, 1 for the 11 point fields); nothing when no parcel matchesOpen template →08Land Deal ScreenerScreen a land deal in one call: the parcel record and price history against flood, wetland, protected-area, habitat, slope, soil, access and utility red flags.One parcel, or a list of deals · 6 lookups per parcel (5 for the parcel, 1 for the 16 point fields)Open template →09Solar/Wind Site ProspectingFind large rural parcels and rank them for utility-scale solar or wind: resource, distance and voltage to the grid, slope, flood, wetlands and protected land.An area to prospect, or a list of parcels · 25 lookups per search page with results, then 6 per parcel screened (5 for the parcel, 1 for the 13 point fields)Open template →10Absentee-Owned ParcelsUse public property records to find parcels whose owner of record has a tax-mailing address in another state or city: market research on out-of-area and investor ownership, land assembly and property-related business contact, within the source's terms.A county or area · 25 lookups per page of up to 100 parcels; empty pages and parcel_coverage are freeOpen template →

All templates and their prompts →   MCP setup →

06 — Use cases

Built for land, rural and real-world work.

Point data covers every US coordinate. Parcel records (owner, acreage, value, last sale) cover 35 states plus DC, 88,423,792 parcels. Each use case comes with a prompt you can open in your assistant.

All use cases with prompts and fields →

Built with Isopleth

Check the Land

A $29 land report for buyers. Pick a point and it screens flood zone, slope, soils, wetlands, roads, power and wildfire, then explains the results in plain English with the source and date next to every value. Every value comes from the Isopleth API.

See it in action → Sample report

Cover page of a Check the Land sample report for Story County, Iowa

Open source: Site Scout puts the API on a map. Tap any U.S. point for grid, wind, solar, flood and hazard facts with sources, then see the exact API call. Fork it and deploy your own on Cloudflare's free tier.

07 — Built for production

The boring parts, done properly.

01

Partial failures stay partial

One slow source never sinks the call. partial_failures names what failed; everything else comes back.

02

No data, no charge

Locations that return nothing and requests that fail are not billed.

03

Safe retries

Send an Idempotency-Key with a batch and a repeat returns the stored result, uncharged.

04

Limits you can read

X-RateLimit-*, X-Lookups-Remaining and Retry-After on every response.

05

Address in, facts out

Send a US street address straight to /v1/fetch, or geocode it on its own.

06

Attribution, pre-grouped

attributions lists each source once with its fields, ready for your credits screen.

07

OpenAPI 3

A full machine-readable spec. Generate a typed client in any language in a minute.

08

Free catalog endpoint

GET /v1/meta/fields returns every field, preset and license at no cost.

08 — Pricing

Start free. No card.

Free

$0 / month
1,000 lookups per month
  • 10 requests / minute
  • Batches up to 10 locations
  • Up to 1 API key
  • No card needed
Start free

Starter

$19 / month
20,000 lookups per month
  • 60 requests / minute
  • Batches up to 100 locations
  • Up to 5 API keys
  • For a product or internal tool
Choose Starter

Pro

$79 / month
120,000 lookups per month
  • 300 requests / minute
  • Batches up to 100 locations
  • Up to 20 API keys
  • For production workloads
Choose Pro

Top-up

$10 one-time
5,000 extra lookups
  • Works on any plan
  • Valid 365 days
  • Used after your monthly allowance
Buy from your account

A lookup is one location with up to 50 fields; larger requests count one lookup per started block of 50 fields. Parcel records are 5 lookups per matched parcel and 25 lookups per search page of up to 100 parcels. Geocoding is free. Requests that return no data are not charged. Prices exclude any applicable sales tax, which is shown at checkout. Monthly plans renew until you cancel in the billing portal. How lookups and billing work.

Ask the ground a question.

Isopleth reads from U.S. federal and state agencies (USGS, FEMA, EPA, EIA, NOAA, USDA, Census, FCC, FAA and others) and open-data projects such as OpenStreetMap and Overture Maps. Every response names its sources and licenses. See sources and licenses.

Isopleth is a screening tool. Public data can be incomplete or out of date, and results are not a survey, title search, appraisal, engineering study or legal advice.