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.
Read GeoParquet with DuckDB
Query Land Records .parquet exports with DuckDB's spatial extension — including row-group pruning, columnar projection, and direct reads from object storage.
Bulk File Usage Recommendations
The per-county datasets range in size from very small (a few MB) to large (several GB) based on the size of the county and the number of attributes available. L…