Point Lookup

1 token per request

Query multiple data layers at a single geographic coordinate. Returns feature information, metadata, and optional geometry for each matched layer at the given point.

Try point lookup

Live demo against the production API. Defaults to Ames, Iowa — adjust latitude, longitude, and layers, then look up.

Layers

POST https://api.landmapmagic.com/v1/data/point?key=YOUR_API_KEYShow body ▾
{
  "lat": 42.0308,
  "lng": -93.4816,
  "layers": [
    "states",
    "counties",
    "townships",
    "sections",
    "clu",
    "ssurgo",
    "cdl:2025"
  ],
  "options": {
    "include_geometry": false,
    "include_metadata": false
  }
}
POSThttps://api.landmapmagic.com/v1/data/point
GEThttps://api.landmapmagic.com/v1/data/point?lat={lat}&lng={lng}&layers={layers}
A GET convenience endpoint is also available for simple lookups. Pass lat, lng, and layers (comma-separated) as query parameters. Example: GET /v1/data/point?lat=42.03&lng=-93.48&layers=states,counties&key=lmm_live_4f7k...z9Qp

Request Body (POST)

Parameters

NameTypeDescription
lat*numberLatitude of the point to query. Range: -90 to 90.
lng*numberLongitude of the point to query. Range: -180 to 180.
layers*string[]Array of layer names to query at the given point. See Available Layers below.
optionsobjectOptional configuration object for the query. See Options below.

Options

NameTypeDescription
include_geometrybooleanInclude the complete GeoJSON geometry of each matched feature. Boundaries are reconstructed server-side even when the feature spans multiple map tiles internally, so you always receive the whole polygon (e.g. the full CLU field boundary). Default: false. Increases response size significantly.
include_metadatabooleanInclude layer metadata such as source, update date, and zoom information. Default: true.

Available Layers

Supported Layers

AttributeTypeDescription
statespolygonU.S. state boundaries with FIPS codes and names. Optimal at zoom 4.
countiespolygonU.S. county boundaries with FIPS codes, names, and state references. Optimal at zoom 6.
townshipspolygonPLSS township boundaries. Includes township, range, and principal meridian. Optimal at zoom 10.
sectionspolygonPLSS section boundaries (640-acre subdivisions within townships). Optimal at zoom 14.
clupolygonCommon Land Unit (CLU) field boundaries from the USDA FSA. Optimal at zoom 14.
ssurgopolygonSSURGO soil map units at the queried coordinate. Optimal at zoom 14.
parcelspolygonProperty parcel at the queried coordinate, with ownership and assessment attributes where available. Feature id is the parcel robust_id. Optimal at zoom 16.
cdl:YYYYraster_valueUSDA Cropland Data Layer for a specific year (e.g. cdl:2023). Returns the crop code at the queried point. Optimal at zoom 12.
Pricing is 1 token per request regardless of how many layers you query. Query multiple layers in a single request to minimize costs.
Requesting a layer that is not listed above returns a 400 error with an invalid_layers list when no requested layer is servable. If a request mixes valid and invalid layers, valid layers are returned normally alongside top-level warnings and invalid_layers fields.

Response Fields

Top-Level Fields

AttributeTypeDescription
pointobjectThe queried coordinate as { lat, lng }.
layersobjectObject keyed by layer name, such as states, ssurgo, or cdl:2023.
summaryobjectOverall query summary with layers_queried, total_features_found, and processing_time_ms.
queryobjectEchoes lat, lng, requested_layers, normalized snake_case options, timestamp, and account_id.

Layer Object

AttributeTypeDescription
layers[layer].layerstringCanonical layer key for this result. For CDL this includes the year, such as cdl:2023.
layers[layer].typestringLayer result type. Vector layers return vector; CDL returns raster_value.
layers[layer].statusstringQuery status for this layer. ok means the layer was queried successfully.
layers[layer].feature_countnumberNumber of normalized features found at the queried point for this layer.
layers[layer].featuresarrayNormalized feature rows for the layer. Empty when no feature was found.
features[].idstringUnique identifier for the matched feature (e.g. FIPS code, or the field's stable id for CLU). Ids are stable per dataset version: the same feature keeps the same id until the underlying dataset is rebuilt (announced in the changelog). The same id is returned by AOI queries, so point and AOI results can be joined.
features[].namestringHuman-readable name for the matched feature.
features[].kindstringNormalized feature kind such as state, county, plss_section, field_boundary, soil_map_unit, or crop.
features[].propertiesobjectLayer-specific properties of the matched feature. Varies by layer type.
features[].geometryGeoJSON geometry | nullComplete Polygon or MultiPolygon for the whole feature when options.include_geometry is true (dissolved across tile boundaries server-side). Null otherwise.
features[].geometry_completebooleanPresent only when geometry is returned. True when the geometry represents the entire real-world feature; false in the rare case the feature could not be fully reconstructed.
layers[layer].zoom.optimalnumberRecommended zoom level for viewing this layer's data.
layers[layer].metadataobjectLayer metadata including source, last updated timestamp, and attribution. Only present when include_metadata is true.
Geometry precision: returned boundaries are reconstructed from the tiled dataset (zoom 14–15, quantized and simplified at build time). They are suitable for rendering, PDFs, and acreage/statistics work within roughly 1–2% tolerance, but they are not survey-grade source coordinates.

Code Examples

Basic Point Lookup

cURL
curl -X POST "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp" \
  -H "Content-Type: application/json" \
  -d '{
    "lat": 42.0308,
    "lng": -93.4816,
    "layers": ["states", "counties", "townships"]
  }'
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      lat: 42.0308,
      lng: -93.4816,
      layers: ["states", "counties", "townships"],
    }),
  }
);
const data = await response.json();
Object.entries(data.layers).forEach(([layer, result]) => {
  const feature = result.features[0];
  console.log(`${layer}: ${feature ? feature.name : "not found"}`);
});
Python
import requests

response = requests.post(
    "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp",
    json={
        "lat": 42.0308,
        "lng": -93.4816,
        "layers": ["states", "counties", "townships"],
    },
)
data = response.json()
for layer, result in data["layers"].items():
    feature = result["features"][0] if result["features"] else None
    name = feature["name"] if feature else "not found"
    print(f"{layer}: {name}")

With Geometry and CDL

cURL
curl -X POST "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp" \
  -H "Content-Type: application/json" \
  -d '{
    "lat": 41.8781,
    "lng": -93.0977,
    "layers": ["counties", "ssurgo", "clu", "cdl:2023"],
    "options": {
      "include_geometry": true,
      "include_metadata": true
    }
  }'
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      lat: 41.8781,
      lng: -93.0977,
      layers: ["counties", "ssurgo", "clu", "cdl:2023"],
      options: {
        include_geometry: true,
        include_metadata: true,
      },
    }),
  }
);
const data = await response.json();
console.log(data.layers);
Python
import requests

response = requests.post(
    "https://api.landmapmagic.com/v1/data/point?key=lmm_live_4f7k...z9Qp",
    json={
        "lat": 41.8781,
        "lng": -93.0977,
        "layers": ["counties", "ssurgo", "clu", "cdl:2023"],
        "options": {
            "include_geometry": True,
            "include_metadata": True,
        },
    },
)
data = response.json()
print(data["layers"])

Response Example

States + Counties + Townships Query

{
  "point": {
    "lat": 42.0308,
    "lng": -93.4816
  },
  "layers": {
    "states": {
      "layer": "states",
      "type": "vector",
      "status": "ok",
      "feature_count": 1,
      "features": [{
        "id": "19",
        "name": "Iowa",
        "kind": "state",
        "properties": {
          "fips": "19",
          "abbreviation": "IA",
          "area_sq_mi": 56272.81
        },
        "geometry": null
      }],
      "zoom": {
        "optimal": 4,
        "min": 0,
        "max": 6
      },
      "metadata": {
        "name": "US States",
        "description": "U.S. state boundaries",
        "category": "administrative"
      }
    },
    "counties": {
      "layer": "counties",
      "type": "vector",
      "status": "ok",
      "feature_count": 1,
      "features": [{
        "id": "19169",
        "name": "Story County",
        "kind": "county",
        "properties": {
          "fips": "19169",
          "state_fips": "19",
          "state_name": "Iowa",
          "area_sq_mi": 573.21,
          "population": 98537
        },
        "geometry": null
      }],
      "zoom": {
        "optimal": 6,
        "min": 0,
        "max": 8
      },
      "metadata": {
        "name": "US Counties",
        "description": "U.S. county boundaries",
        "category": "administrative"
      }
    },
    "townships": {
      "layer": "townships",
      "type": "vector",
      "status": "ok",
      "feature_count": 1,
      "features": [{
        "id": "IA050830N0220W0",
        "name": "T83N R22W",
        "kind": "plss_township",
        "properties": {
          "township": "83N",
          "range": "22W",
          "principal_meridian": "5th Principal Meridian",
          "state": "IA",
          "area_acres": 23040
        },
        "geometry": null
      }],
      "zoom": {
        "optimal": 10,
        "min": 8,
        "max": 12
      },
      "metadata": {
        "name": "PLSS Townships",
        "description": "PLSS township boundaries",
        "category": "land"
      }
    }
  },
  "summary": {
    "layers_queried": ["states", "counties", "townships"],
    "total_features_found": 3,
    "processing_time_ms": 86
  },
  "query": {
    "lat": 42.0308,
    "lng": -93.4816,
    "requested_layers": ["states", "counties", "townships"],
    "options": {
      "include_geometry": false,
      "include_metadata": true
    },
    "timestamp": "2026-05-03T23:22:00.000Z",
    "account_id": "acct_..."
  }
}