Search

1 token per request

Search for states, counties, PLSS townships, PLSS sections, addresses, and parcels across the United States. Supports fuzzy matching, multi-type filtering, address geocoding, and parcel ID lookups with regional context.

GEThttps://api.landmapmagic.com/v1/data/search

Parameters

Parameters

NameTypeDescription
key*stringYour API key for authentication.
q*stringSearch query string. Minimum 2 characters. Supports place names, addresses, parcel IDs, and fuzzy matching.
limitnumberMaximum number of results to return. Range: 1-50. Default: 10.
typesstringComma-separated list of result types to filter by. Valid values: state, county, plss_township, plss_section, address, parcel. Omit to search all types.
regionstringState or region code (e.g. "IA", "Iowa") to narrow search scope. Required for parcel ID searches unless lat/lng, bbox, or center_lat/center_lng is provided.
latnumberLatitude for geographic biasing. Used to boost results near this location and as fallback region context for parcel ID searches.
lngnumberLongitude for geographic biasing. Must be provided together with lat.
bboxstringBounding box to constrain results. Format: min_lon,min_lat,max_lon,max_lat. Can span up to 5 states for multi-state searches.
center_latnumberFallback center latitude for region inference when lat/lng and bbox are not provided. Used primarily for parcel ID lookups.
center_lngnumberFallback center longitude for region inference. Must be provided together with center_lat.

Notes

Parcel ID search requires region context. When searching by parcel ID, the API must know which region to search. You can provide region context using any of these 4 methods: (1) explicit region parameter, (2) lat + lng coordinates, (3) bbox bounding box, or (4) center_lat + center_lng fallback coordinates.
Fuzzy matching is enabled by default. The search engine tolerates typos and partial matches, ranking results by relevance score (0-1). Multi-type searches return blended results across all matching entity types.
Address geocoding is performed automatically when the query appears to be a street address. Results include a centroid and suggested zoom level for map positioning.
Multi-state bbox search supports bounding boxes that span up to 5 states. Queries covering more than 5 states will return an error.

Response Fields

Top-Level Fields

AttributeTypeDescription
querystringThe original search query string.
resultsarrayArray of matching result objects.

Result Object Fields

AttributeTypeDescription
idstringUnique identifier for the result (e.g. FIPS code, PLSS ID, parcel ID).
typestringEntity type: state, county, plss_township, plss_section, address, or parcel.
namestringDisplay name of the result (e.g. "Story County, Iowa").
simpleNamestringSimplified short name without state qualifier (e.g. "Story County").
statestringTwo-letter state abbreviation (e.g. "IA").
centroid[number, number]Geographic center of the result as [longitude, latitude].
bbox[number, number, number, number]Bounding box as [min_lon, min_lat, max_lon, max_lat].
suggestedZoomnumberRecommended map zoom level for viewing this result.
scorenumberRelevance score from 0 to 1, where 1 is an exact match.
countyobjectCounty information (when applicable). Contains fips (string) and name (string).
parcelobjectParcel details (only for type=parcel). Contains parcelId, owner, acreage, marketValue, and landUseClass.
regionstringRegion or state context used for the search.

County Object

AttributeTypeDescription
fipsstring5-digit FIPS code for the county.
namestringCounty name.

Parcel Object

AttributeTypeDescription
parcelIdstringThe parcel identification number.
ownerstringRecorded owner name.
acreagenumberTotal parcel acreage.
marketValuenumberAssessed market value in USD.
landUseClassstringLand use classification (e.g. "Agricultural", "Residential").

Code Examples

Basic Search

cURL
curl "https://api.landmapmagic.com/v1/data/search?key=YOUR_API_KEY&q=iowa&limit=5"
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/search?" +
    new URLSearchParams({
      key: "YOUR_API_KEY",
      q: "iowa",
      limit: "5",
    })
);
const data = await response.json();
console.log(data.results);
Python
import requests

response = requests.get(
    "https://api.landmapmagic.com/v1/data/search",
    params={
        "key": "YOUR_API_KEY",
        "q": "iowa",
        "limit": 5,
    },
)
data = response.json()
print(data["results"])

Address Search

cURL
curl "https://api.landmapmagic.com/v1/data/search?key=YOUR_API_KEY&q=1600+Pennsylvania+Ave+Washington+DC&types=address&limit=1"
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/search?" +
    new URLSearchParams({
      key: "YOUR_API_KEY",
      q: "1600 Pennsylvania Ave Washington DC",
      types: "address",
      limit: "1",
    })
);
const data = await response.json();
const { centroid, suggestedZoom } = data.results[0];
console.log("Center:", centroid, "Zoom:", suggestedZoom);
Python
import requests

response = requests.get(
    "https://api.landmapmagic.com/v1/data/search",
    params={
        "key": "YOUR_API_KEY",
        "q": "1600 Pennsylvania Ave Washington DC",
        "types": "address",
        "limit": 1,
    },
)
data = response.json()
result = data["results"][0]
print(f"Center: {result['centroid']}, Zoom: {result['suggestedZoom']}")

Parcel Search with Region

cURL
curl "https://api.landmapmagic.com/v1/data/search?key=YOUR_API_KEY&q=12-34-567-890&types=parcel&region=IA"
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/search?" +
    new URLSearchParams({
      key: "YOUR_API_KEY",
      q: "12-34-567-890",
      types: "parcel",
      region: "IA",
    })
);
const data = await response.json();
const parcel = data.results[0]?.parcel;
console.log("Owner:", parcel?.owner, "Acres:", parcel?.acreage);
Python
import requests

response = requests.get(
    "https://api.landmapmagic.com/v1/data/search",
    params={
        "key": "YOUR_API_KEY",
        "q": "12-34-567-890",
        "types": "parcel",
        "region": "IA",
    },
)
data = response.json()
parcel = data["results"][0].get("parcel", {})
print(f"Owner: {parcel.get('owner')}, Acres: {parcel.get('acreage')}")

Parcel Search with Lat/Lng

cURL
curl "https://api.landmapmagic.com/v1/data/search?key=YOUR_API_KEY&q=12-34-567-890&types=parcel&lat=42.0308&lng=-93.4816"
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/data/search?" +
    new URLSearchParams({
      key: "YOUR_API_KEY",
      q: "12-34-567-890",
      types: "parcel",
      lat: "42.0308",
      lng: "-93.4816",
    })
);
const data = await response.json();
console.log(data.results);
Python
import requests

response = requests.get(
    "https://api.landmapmagic.com/v1/data/search",
    params={
        "key": "YOUR_API_KEY",
        "q": "12-34-567-890",
        "types": "parcel",
        "lat": 42.0308,
        "lng": -93.4816,
    },
)
data = response.json()
print(data["results"])

Response Examples

Basic Search — "iowa"

{
  "query": "iowa",
  "results": [
    {
      "id": "19",
      "type": "state",
      "name": "Iowa",
      "simpleName": "Iowa",
      "state": "IA",
      "centroid": [-93.4977, 42.0046],
      "bbox": [-96.6397, 40.3755, -90.1401, 43.5012],
      "suggestedZoom": 7,
      "score": 1.0,
      "county": null,
      "parcel": null,
      "region": "IA"
    },
    {
      "id": "19169",
      "type": "county",
      "name": "Story County, Iowa",
      "simpleName": "Story County",
      "state": "IA",
      "centroid": [-93.4816, 42.0308],
      "bbox": [-93.6985, 41.8631, -93.2314, 42.2091],
      "suggestedZoom": 10,
      "score": 0.62,
      "county": {
        "fips": "19169",
        "name": "Story County"
      },
      "parcel": null,
      "region": "IA"
    }
  ]
}

Parcel ID Search

{
  "query": "12-34-567-890",
  "results": [
    {
      "id": "parcel-19169-1234567890",
      "type": "parcel",
      "name": "Parcel 12-34-567-890, Story County, Iowa",
      "simpleName": "12-34-567-890",
      "state": "IA",
      "centroid": [-93.4621, 42.0142],
      "bbox": [-93.4688, 42.0098, -93.4554, 42.0186],
      "suggestedZoom": 16,
      "score": 0.98,
      "county": {
        "fips": "19169",
        "name": "Story County"
      },
      "parcel": {
        "parcelId": "12-34-567-890",
        "owner": "SMITH JOHN A",
        "acreage": 152.4,
        "marketValue": 1280000,
        "landUseClass": "Agricultural"
      },
      "region": "IA"
    }
  ]
}