GISFinder

GISFinder API

The GISFinder directory as JSON: which government covers a place, which office handles each job, official links with their last check date, plain-language guides, and screening facts for a point. Free to use, no key needed to start.

API reference Changelog

What it gives you

Quickstart

Base URL https://api.gisfinder.com/v1. Every response is JSON with data, sources, as_of, request_id and notices.

Who handles what at a point (longitude and latitude in WGS84):

curl 'https://api.gisfinder.com/v1/jurisdictions/resolve?lat=44.9778&lon=-93.2650'

The same for an address, or for a place name and state:

curl 'https://api.gisfinder.com/v1/jurisdictions/resolve?address=350+S+5th+St,+Minneapolis,+MN'
curl 'https://api.gisfinder.com/v1/jurisdictions/resolve?place=Two+Harbors&state=MN'

Official resources for a topic, best first:

curl 'https://api.gisfinder.com/v1/resources?jurisdiction_id=county:27053&topic=parcel_map'

A place's full directory, the topic list, a guide with a state's rules, point screening and a name search:

curl 'https://api.gisfinder.com/v1/places/county:27053'
curl 'https://api.gisfinder.com/v1/topics'
curl 'https://api.gisfinder.com/v1/guides/assessor?state=IN'
curl 'https://api.gisfinder.com/v1/screening?lat=45.1&lon=-93.4'
curl 'https://api.gisfinder.com/v1/search?q=web+soil+survey'

The machine-readable description is openapi.json (OpenAPI 3.1), also at https://api.gisfinder.com/v1/openapi.json.

Keys

You can use the API without a key. A key raises your limits; it never changes results. Send it from your server:

curl -H 'Authorization: Bearer YOUR_KEY' 'https://api.gisfinder.com/v1/topics'

Keep keys off web pages. Browsers can call the API without a key from any site; the browser preflight does not allow the Authorization header.

Self-service keys are not open yet. Until then, the limits without a key apply to everyone.

Limits

CallerPer minutePer day
No key, per network address (an IPv6 /64 counts as one)301,000
Standard key12020,000
Partner key600200,000

Every response carries the IETF RateLimit-Policy and RateLimit headers, for example "minute";r=29;t=41: 29 requests left, reset in 41 seconds. Over a limit, the API answers 429 with Retry-After in seconds. Address lookups and screening also share a limit on new outside lookups.

Paging and caching

Errors

Errors are RFC 9457 application/problem+json with type, title, status, detail and request_id. The type is stable; match on it, not on the text.

TypeStatusMeaning
https://www.gisfinder.com/problems/bad-parameter400A query parameter is missing, has the wrong form, or is out of range.
https://www.gisfinder.com/problems/bad-point400lat and lon are missing, or are not WGS84 decimal degrees.
https://www.gisfinder.com/problems/bad-cursor400The cursor was not issued by this endpoint for the same other parameters.
https://www.gisfinder.com/problems/unknown-topic400, 404The topic is not in the vocabulary at /v1/topics.
https://www.gisfinder.com/problems/unknown-state400The state code is not a state, DC or territory GISFinder covers.
https://www.gisfinder.com/problems/invalid-key401The Authorization header is malformed, or the key is unknown or revoked.
https://www.gisfinder.com/problems/unknown-jurisdiction404No GISFinder place has this jurisdiction_id.
https://www.gisfinder.com/problems/outside-coverage404The point is not inside a state or territory GISFinder covers.
https://www.gisfinder.com/problems/address-not-found404No address matched.
https://www.gisfinder.com/problems/place-not-found404No county, city, town or township with that name in that state.
https://www.gisfinder.com/problems/not-found404There is no endpoint at this path.
https://www.gisfinder.com/problems/method-not-allowed405Only GET, HEAD and OPTIONS are answered.
https://www.gisfinder.com/problems/ambiguous409Several candidates match. The problem lists them in choices; ask again with one of them.
https://www.gisfinder.com/problems/rate-limited429A minute or day limit is used up. Wait the number of seconds in Retry-After.
https://www.gisfinder.com/problems/lookup-limit429The limit for new outside lookups (addresses and screening) is used up. Wait the number of seconds in Retry-After.
https://www.gisfinder.com/problems/internal-error500GISFinder could not finish the request.
https://www.gisfinder.com/problems/busy503The same lookup is already running, or GISFinder is busy. Retry after a few seconds.
https://www.gisfinder.com/problems/upstream-unavailable503An outside service GISFinder needs, such as the address geocoder, did not answer.

Using the data

Versions and deprecation

This is version 1, under /v1. GISFinder adds fields, topics and endpoints without notice, so ignore what you do not recognize. Nothing is removed or changed in meaning without at least 12 months' notice: the change is announced on the changelog, and the affected responses carry Deprecation and Sunset headers for the whole period. A breaking change gets a new version path.

Terms

The API Terms are being written. Until they are published, please follow the points under Using the data.

MCP server

AI assistants can use the directory through the GISFinder MCP server at https://api.gisfinder.com/mcp (Model Context Protocol over Streamable HTTP). It needs no sign-in and never calls a language model itself: every answer comes from the same directory as this API.

ToolWhat it answers
resolve_jurisdictionWhich state, county, town and city cover an address, point or place, and which office assesses, collects tax, records deeds, zones, issues permits and runs the GIS
find_official_resourceThe best official page for a topic at a place, with alternatives
get_place_directoryEverything listed for one place, grouped by topic
search_directoryPlaces and resources by name
get_guideA plain-language guide and the state's rules
screen_locationFlood, wetland, soil, elevation and radon screening at a point, with the office that decides
get_property_factsParcel facts from PublicGIS where it covers and has cleared the place; never owner names

Each network address can make 30 tool calls a minute and 1,000 a day. Every link carries verified_status and verified_at, and the office named has the final say.

For AI agents

A short description for language models is at /llms.txt.