Web API

OGC web services (WMS, WFS, WMTS) for tile rendering and per-parcel attribute lookup.

The dataset is also made available to customers as OGC (WMS, WFS, etc) web services.

Fun fact: this is the same service that powers our data explorer! It is a MapLibre source configured like so:

yourAuthToken = ...;
map.current = new mapboxgl.Map({
    style: {
        version: 8,
        sources: {
            parcel_us: {
                type: 'raster',
                scheme: 'tms',
                tiles: ['https://api.landrecords.us/pro/gwc/service/tms/1.0.0/pro:parcel_us@EPSG:3857x2@pbf/{z}/{x}/{y}.pbf'],
                tileSize: 512
            }
        }
    },
    transformRequest: (url, resourceType) => {
        if (resourceType === 'Tile' && url.startsWith('https://api.landrecords')) {
            return {
                url: url,
                headers: { 'Authorization': 'Bearer ' + yourAuthToken }
            }
        }
    }
});

Parcel Coverage Map Service

We publish our coverage map as a web service for use in your applications. This is the same service that powers our public website at http://landrecords.us/products. It contains information about parcel coverage, as well as coverage for selected attributes.

  • County Coverages: https://api.landrecords.us/pro/gwc/service/tms/1.0.0/pro:county_coverage@EPSG:3857x2@pbf/{z}/{x}/{y}.pbf?token=<TOKEN>
  • State Coverages: https://api.landrecords.us/pro/gwc/service/tms/1.0.0/pro:state_coverage@EPSG:3857x2@pbf/{z}/{x}/{y}.pbf?token=<TOKEN>

QGIS: Configure in a WMS/WMTS Connection

You can easily load the Nationwide Parcel layer into QGIS.

First, Create a New WMS/WMTS Connection.

Then configure the new connection by pointing to the Landrecords API endpoint (api.landrecords.us), and setting the Authorization token provided after signup:

https://api.landrecords.us/pro/gwc/service/wmts

https://api.landrecords.us/pro/wms

Now you will see all the layers available to you in the Browser:

QGIS: Configure in an XYZ Tile Layer Connection

Create a new XYZ Connection:

Configure the connection with the Landrecords API endpoint.

Note the {-y} parameter. This is required for proper functionality in QGIS.

This example connects to the EPSG:3857 projection. You can use EPSG:4326 as well.

https://api.landrecords.us/pro/gwc/service/tms/1.0.0/pro:parcel_us@EPSG:3857x2@png8/{z}/{x}/{-y}.png8

https://api.landrecords.us/pro/gwc/service/tms/1.0.0/pro:parcel_us@EPSG:4326x2@png8/{z}/{x}/{-y}.png8

Set the Authorization header to include the API key that was provided to you after signing up for the hosted web service.

Click Save, and now you’re ready to add this layer to your project.

Parcel Detail Lookup

In addition to the tile services described above, the full WMS and WFS endpoints let you retrieve attribute details for an individual parcel. The two typical lookup patterns are by lon/lat (e.g. a click on a rendered map) and by lrid (a direct, attribute-based lookup). The parcel feature type is pro:parcel_us, served from:

  • WMS: https://api.landrecords.us/pro/wms
  • WFS: https://api.landrecords.us/pro/wfs

Both endpoints accept the same Bearer token used by the tile services. For brevity, the URL examples below use ?token=<TOKEN> so they can be pasted directly into a browser; programmatic clients should prefer the Authorization: Bearer <TOKEN> header instead.

Look up a parcel by lon/lat

WMS GetFeatureInfo identifies features at a pixel inside a GetMap-style request. Send a small bounding box around your point and query the center pixel. Note the axis order: WMS 1.3.0 with EPSG:4326 expects bbox as minLat,minLon,maxLat,maxLon (this is the most common source of bad results — flip the order and you’ll silently query the wrong place).

https://api.landrecords.us/pro/wms
  ?service=WMS
  &version=1.3.0
  &request=GetFeatureInfo
  &layers=pro:parcel_us
  &query_layers=pro:parcel_us
  &crs=EPSG:4326
  &bbox=36.8507,-76.2860,36.8509,-76.2858
  &width=101&height=101
  &i=50&j=50
  &info_format=application/json
  &feature_count=1
  &token=<TOKEN>

GetFeatureInfo with info_format=application/json will return a GeoJSON FeatureCollection.

WFS GetFeature with an INTERSECTS filter is the cleaner, more direct equivalent.

https://api.landrecords.us/pro/wfs
  ?service=WFS
  &version=2.0.0
  &request=GetFeature
  &typeNames=pro:parcel_us
  &cql_filter=INTERSECTS(geom, POINT(36.87886 -76.27836))
  &outputFormat=application/json
  &count=1
  &token=<TOKEN>

GetFeature will return a FeatureCollection:

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "id": "parcel_us.9272895",
            "geometry": {
                "type": "MultiPolygon",
                "coordinates": [ ... ],
            },
            "geometry_name": "geom",
            "properties": {
                "parcelid": "1438267944",
                ...
            }
        }
    ],
    "totalFeatures": 1,
    "numberMatched": 1,
    "numberReturned": 1,
    "crs": {
        "type": "name",
        "properties": {
            "name": "urn:ogc:def:crs:EPSG::4326"
        }
    }
}

The same call with curl and header-based auth:

curl -G 'https://api.landrecords.us/pro/wfs' \
  -H "Authorization: Bearer $LR_TOKEN" \
  --data-urlencode 'service=WFS' \
  --data-urlencode 'version=2.0.0' \
  --data-urlencode 'request=GetFeature' \
  --data-urlencode 'typeNames=pro:parcel_us' \
  --data-urlencode 'cql_filter=INTERSECTS(geom,POINT(-76.2859 36.8508))' \
  --data-urlencode 'outputFormat=application/json' \
  --data-urlencode 'count=1'

Look up a parcel by lrid

Direct ID lookups are a WFS task. Use a CQL_FILTER against the lrid attribute:

https://api.landrecords.us/pro/wfs
  ?service=WFS
  &version=2.0.0
  &request=GetFeature
  &typeNames=pro:parcel_us
  &cql_filter=lrid='ABC123456789'
  &outputFormat=application/json
  &token=<TOKEN>

curl with header auth:

curl -G 'https://api.landrecords.us/pro/wfs' \
  -H "Authorization: Bearer $LR_TOKEN" \
  --data-urlencode 'service=WFS' \
  --data-urlencode 'version=2.0.0' \
  --data-urlencode 'request=GetFeature' \
  --data-urlencode 'typeNames=pro:parcel_us' \
  --data-urlencode "cql_filter=lrid='ABC123456789'" \
  --data-urlencode 'outputFormat=application/json'

lrid-based lookup doesn’t have a natural WMS analogue (WMS is map-centric, not attribute-centric), but if you’d like to render the matching parcel as a tile — for example, to highlight it on a map — you can apply the same CQL_FILTER to a GetMap request:

https://api.landrecords.us/pro/wms
  ?service=WMS
  &version=1.3.0
  &request=GetMap
  &layers=pro:parcel_us
  &cql_filter=lrid='ABC123456789'
  &crs=EPSG:3857
  &bbox=<minX>,<minY>,<maxX>,<maxY>
  &width=512&height=512
  &format=image/png
  &transparent=true
  &token=<TOKEN>

Secure Parcel Layer Web Services

Visit https://landrecords.us/enterprise-web-service to learn more.

On this page