Introduction
Welcome to the ReportAll Overlay API! We offer parcel-based, tile-based, and ArcGIS style endpoints for use in any application you may have in mind.
Authentication
All of our endpoints require authentication. You can choose to use either the client key we provide to you, or a generated token by using our auth endpoint.
The client key is provided using:
...&client=[client_key]...
To provide a token use:
...&token=[token]...
Token-based Authentication
To retrieve a token, use this code:
curl "https://reportallusa.com/api/auth?client=ffffffffff×tamp=1524751569"
{
"status": "OK",
"token": "xPBn6y9wBBxxcK2527AHY0YJ2c17k8nU5FAsuvW1_9Qv09NZ4b6BaQZ7lNUHZyl1"
}
Make sure to replace
ffffffffff
and1524751569
with your real client key and desired timestamp.
Using our auth endpoint, you can supply your client key and an expiration timestamp and receive an encrypted token for use in all of our endpoints
HTTP Request
GET https://reportallusa.com/api/auth?
Auth parameters
Parameter | Description |
---|---|
client | Your ReportAll client key |
timestamp | A UNIX timestamp of when this token should expire |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK , or error |
token | Encrypted token for use in authentication in our API |
Account Information
curl "http://reportallusa.com/api/account?client=[client_key]"
{
"status": "OK",
"client": "[client_key]",
"expires_at": 1525177229,
"quotas": {
"/api/parcels.php" : {
"period": "hour",
"requests": 100,
"usage": 0,
"remaining": 100
},
"/dyn/tile.py": {
"period": "day",
"requests": 10000,
"usage": 0,
"remaining": 10000
}
}
}
If you're designing an application using our API, you may want to have a more automated way to keep on top of your quota usage. Using our accounts endpoint can give you that information.
HTTP Request
GET https://reportallusa.com/api/account?
Query Parameters
Parameter | Description |
---|---|
client | Your ReportAll client key. Note this endpoint does not take a token for security purposes. |
Result Fields
Field | Description |
---|---|
status | Status of the request, can be OK or error |
client | Your client key |
expires_at | When your account expires or renews. |
quotas | An associative array, keyed off of each resource name available to you. Resource IDs can be one of /dyn/tile.py or /api/parcels.php . See below for what each resource contains. |
Resource Fields
Field | Description |
---|---|
period | The renewal period for this resource. Can be one of alltime , month , day , hour . |
requests | The total number of requests you can make in a given period. |
usage | How many requests you have made during this current period. |
remaining | The difference between requests and usage. |
Parcel Attributes and Geometries
Address Queries
To supply the address and region as separate parameters:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4®ion=Geauga%20County,%20OH&address=100%20Short%20Court"
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4®ion=Parma,%20Ohio&address=4603%20Brookpark%20Rd"
To supply the address region in a single
q
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&q=100%20Short%20Court,%20geauga,%20oh"
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&q=1950%20Lucy%20Lane,%20Riverside%20County,%20California"
Note:
%20
is the url encoded value for a space character
{
"status": "OK",
"count": 1,
"page": 1,
"rpp": 1,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4®ion=Geauga%20County,%20OH&address=100%20Short%20Court"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
This endpoint allows you to specify a region and an address, either separately or as a query string. It will return an array of all matching records, their attributes, and the geometry in WKT format.
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 8. |
region | none | false | Geographic region to search in, can be County, State, or Zip code. |
county_id | none | false | County FIPS code, can be used in place of region |
address | none | false | Address to search for. |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
q | none | false | Full text address query. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Parcel ID Queries
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4®ion=Cuyahoga%20County,%20Ohio&parcel_id=44327012"
Multiple parcels can be specified by separating them with a semicolon:
curl "https://reportallusa.com/api/parcels?client=client_key]&v=4 \
®ion=Cuyahoga%20County,%20Ohio&parcel_id=44327012;44327010;44327013"
{
"status": "OK",
"count": 3,
"page": 1,
"rpp": 10,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4®ion=Cuyahoga%20County,%20Ohio&parcel_id=44327012;44327010;44327013"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
Parcel Id queries return the parcel record whose assessor-assigned Parcel Id (also known as Parcel Identification Number (PIN) or Assessor's Parcel Number (APN)) matches a given parameter.
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 5. |
region | none | true | Geographic region to search in, can be County, State, or Zip code. |
county_id | none | false | County FIPS code, can be used in place of region |
parcel_id | none | true | Semi-colon separated list of Parcel IDs |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Owner Name Queries
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4®ion=Cuyahoga%20County,%20Ohio&owner=Smith"
Multiple owners can be specified by separating them with a semicolon:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4®ion=Cuyahoga%20County,%20Ohio&owner=Smith;Jones"
{
"status": "OK",
"count": 5194,
"page": 1,
"rpp": 10,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4®ion=Cuyahoga%20County,%20Ohio&owner=Smith;Jones"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
Owner Name queries return the parcel record(s) whose owner name matches a given parameter. The owner name format is "Lastname Firstname". If a single word in given (e.g. "Smith"), an exact match search on last name (surname) is performed. If more than one word is given (e.g. "Smith J"), a prefix match is performed. To perform a prefix match on a single word, add a star to the end of the word (e.g. "Smit*").
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 5. |
region | none | true | Geographic region to search in, can be County, State, or Zip code. |
county_id | none | false | County FIPS code, can be used in place of region |
owner | none | true | Owner name in "Lastname Firstname" format (details above). Accepts a semicolon-separated list of multiple. |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Point Queries
In web mercator coordinates using a
spatial_intersect=POINT(x y)
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_intersect=POINT(-7804647.3396951%205055285.6724133)"
In WGS84 Lon/Lat coordinates using a
spatial_intersect=POINT(lon lat)&si_srid=4326
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_intersect=POINT(-70.110502%2041.2905919)&si_srid=4326"
{
"status": "OK",
"count": 1,
"page": 1,
"rpp": 10,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4&spatial_intersect=POINT(-7804647.3396951%205055285.6724133)"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
Point queries return the parcel record whose polygon contains the given query point. (In rare cases such as some condominium parcels, more than one record can be returned.) There are two point query formats, depending on whether you wish to supply a point in the web mercator coordinate system or the WGS84 Lon/Lat coordinate system.
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 8. |
spatial_intersect | none | true | A spatial intersect Point in either web mercator or WGS84 formats |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Nearest Parcel Queries
In web mercator coordinates using a
spatial_nearest=POINT(x y)
orspatial_nearest=POLYGON((...))
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_nearest=POINT(-7804647.3396951%205055285.6724133)"
In WGS84 Lon/Lat coordinates using a
spatial_nearest=POINT(x y)&sn_srid=4326
orspatial_nearest=POLYGON((...))&sn_srid=4326
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_nearest=POINT(-70.110502%2041.2905919)&sn_srid=4326"
{
"status": "OK",
"count": 10,
"page": 1,
"rpp": 10,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4&spatial_nearest=POINT(-7804647.3396951%205055285.6724133)"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
Near parcel queries return the parcel records closest to the given query point, in increasing order of distance. There are two nearest parcel query formats, depending on whether you wish to supply a geometry in the web mercator coordinate system or the WGS84 Lon/Lat coordinate system.
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 8. |
spatial_nearest | none | true | A spatial intersect Point or Polygon in either web mercator or WGS84 formats for which to find nearest parcels |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Polygon Queries
In web mercator coordinates using a
spatial_intersect=POLYGON((...))
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_intersect=POLYGON((-9663128.4741915%203962254.4093738,-9663128.4741915%203962386.9798447,-9663033.5250705%203962386.9798447,-9663033.5250705%203962254.4093738,-9663128.4741915%203962254.4093738))"
In WGS84 Lon/Lat coordinates using a
spatial_intersect=POLYGON((...))&si_srid=4326
parameter:
curl "https://reportallusa.com/api/parcels?client=[client_key] \
&v=4&spatial_intersect=POLYGON((-86.8053600077677%2033.5029528113281,-86.8053600077677%2033.5039458470498,-86.8045070653017%2033.5039458470498,-86.8045070653017%2033.5029528113281,-86.8053600077677%2033.5029528113281))&si_srid=4326"
{
"status": "OK",
"count": 8,
"page": 1,
"rpp": 10,
"results": [
{
"omitted for example"
},
],
"query": "client=[client_key]&v=4&spatial_intersect=POLYGON((-9663128.4741915%203962254.4093738,-9663128.4741915%203962386.9798447,-9663033.5250705%203962386.9798447,-9663033.5250705%203962254.4093738,-9663128.4741915%203962254.4093738))"
}
If you request building footprints, a new entry in results will be available for any records we have data for:
"results": [
{
...
"buildings_poly": [
{ "geom_as_wkt": ... }
]
}
]
There are two polygon query formats, depending on whether you wish to supply a polygon in the web mercator coordinate system or the WGS84 Lon/Lat coordinate system.
HTTP Request
GET https://reportallusa.com/api/parcels?
POST https://reportallusa.com/api/parcels
Query Parameters
Parameter | Default | Required | Description |
---|---|---|---|
client/token | none | true | Your client key or generated token. |
v | none | true | API version. Current version is 8. |
spatial_intersect | none | true | A spatial intersect Polygon in either web mercator or WGS84 formats. |
return_buildings | none | false | Set to true to receive building footprint polygons in your result records. Version 3+ feature only. |
rpp | 10 | false | Results per page. If you have more results than this parameter, the API will paginate. Also see note. |
page | 1 | false | Result page, if there are more results than specified in the rpp parameter. |
Result Fields
Field | Description |
---|---|
status | Status of your request, can be OK or error . |
count | Number of records returned by your search query. |
page | Current results page. |
rpp | Currently used results per page. |
results | An array containing rpp number of results. Can be paginated through by specifying the page query parameter. |
query | An echo of the query you issued. |
Available Filters
We offer a wide assortment of additional filters that you can use to narrow down your result set. Any of the filters in the table below can be applied to our Address, Owner Name, or Parcel ID endpoints. Either append them in to your GET query string, or add them to your JSON POST body.
Filters
Filter | Description |
---|---|
trans_date_min | Transfer date, minimum. In the form of MM-DD-YYYY. |
trans_date_max | Transfer date, maximum. In the form of MM-DD-YYYY. |
sale_price_min | Sale price, minimum. |
sale_price_max | Sale price, maximum. |
mkt_val_tot_min | Total market value, minimum. |
mkt_val_tot_max | Total market value, maximum. |
mkt_val_bldg_min | Building market value, minimum. |
mkt_val_bldg_max | Building market value, maximum. |
bldg_sqft_min | Building square footage, minimum. |
bldg_sqft_max | Building square footage, maximum. |
buildings_min | Number of buildings on property, minimum. |
buildings_max | Number of buildings on property, maximum. |
story_height_min | Number of stories, minimum. A value of 1 to 6. |
story_height_max | Number of stories, maximum. A value of 1 to 6. |
ngh_code | Neighborhood code. A numeric value, can be separated by semicolons. |
land_use_code | Land use code. Numeric value. |
land_use_class | Land use classification. Can be any of: Residential, Agricultural, Commercial, Industrial, Mineral, Tax Exempt (case sensitive) |
acreage_min | Deeded acreage, minimum. |
acreage_max | Deeded acreage, maximum. |
calc_acreage_min | Calculated acreage, minimum. |
calc_acreage_max | Calculated acreage, maximum. |
school_dist_id | School district ID. A numeric value. |
Parcel Boundary Map Tiles
Javascript API
Google Maps:
<!-- Notice: Set the key= parameter below to your own Google Maps API Key. -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[google_api_key]"></script>
<!-- Notice: Set the client= parameter below to your own Real Estate Portal USA Parcel Overlays client key. -->
<script type="text/javascript" src="https://reportallusa.com/overlay/js.php?v=4&map=Google&client=[client_key]"></script>
var mapOptions = {
center: new google.maps.LatLng(48.03, -122.4),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
REP.Layer.Google.Initialize(map, {'Return_Buildings': true});
Bing Maps:
<script type="text/javascript" src="http://www.bing.com/api/maps/mapcontrol?callback=repInitBingMap" async defer></script>
<!-- Notice: Set the client= parameter below to your own Real Estate Portal USA Parcel Overlays client key. -->
<script type="text/javascript" src="https://reportallusa.com/overlay/js.php?v=4&map=Bing&client=[client_key]"></script>
map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials: bingMapsKey, center: new Microsoft.Maps.Location(48.03, -122.4), zoom: 15, mapTypeId: "r"});
var tileSource = new Microsoft.Maps.TileSource({uriConstructor: REP.Layer.Bing.parcelsURIConstructor, minZoom: 15, maxZoom: 21});
var tileLayer = new Microsoft.Maps.TileLayer({mercator: tileSource, visible: true});
//map.entities.push(tileLayer);
map.layers.insert(tileLayer);
OpenLayers 3:
<script src="//openlayers.org/en/v3.4.0/build/ol.js"></script>
<script type="text/javascript" src="https://reportallusa.com/overlay/js.php?v=4&map=OpenLayers3&client=[client_key]"></script>
map = new ol.Map({
target: 'map',
controls: [new ol.control.Zoom()],
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
new ol.layer.Tile({
source: new ol.source.XYZ({
url: REP.Layer.OpenLayers3.parcelsPrefixedURL(REP.ClientKey)
}),
maxResolution: REP.Layer.OpenLayers3.parcelsMaxResolution(),
extent: REP.Layer.OpenLayers3.parcelsExtent()
})
],
view: new ol.View({
center: ol.proj.transform([-122.4, 48.03], 'EPSG:4326', 'EPSG:3857'),
zoom: 15
})
});
Using our parcel boundary tile Javascript API, you can overlay our data in your existing web map. To use it, simply include our Javascript library then add our tile layer to your map as shown on the right.
Library URL
https://reportallusa.com/overlay/js.php
Library Parameters
Parameter | Description |
---|---|
v | Version, 3 is the current version of our API |
map | Which mapping solution you're currently using. Available options are Google , Bing , OpenLayers2 , and OpenLayers3 |
client\token | Your ReportAll client key, or generated token |
REST API
curl "https://reportallusa.com/dyn/tile.py?map=siteroot/Base_Layers.map \
&layer=Parcels&mode=tile&tilemode=gmap&tile=X+Y+Z&client=[client_key]"
Boundary map raster tiles can be accessed directly from our server using a REST endpoint.
HTTP Request
GET https://reportallusa.com/dyn/tile.py?
Query Parameters
Parameter | Description |
---|---|
map | Must be siteroot/Base_Layers.map |
layer | Must be Parcels |
mode | Must be tile |
tilemode | Must be gmap |
tile | Requested tile in the form of X+Y+Z, where X is the tile's X coordinate, Y is the tile's Y coordinate, and Z is the tile's Z (zoom) coordinate, in the Google Maps coordinate system. |
palette_recolor | Optional, accepts a value in the form of r%20g%20b ("%20" is a urlencoded space) where r, g, and b are numbers between 0 and 255 (inclusive), indicating the amount of red, green, and blue in the desired color. |
client/token | Your client key or generated token |
ArcGIS
Javascript-based Maps
Add our tile layer to your ESRI map:
var tiled = new ArcGISTiledMapServiceLayer("https://reportallusa.com/api/rest_services/client=[client_key]/Parcels/MapServer");
map.addLayer(tiled);
Query our parcel attributes with a click:
var queryTask = new QueryTask("https://reportallusa.com/api/rest_services/client=[client_key]/Parcels/MapServer/0");
// Build query filter.
var query = new Query();
query.returnGeometry = true;
query.outSpatialReference = { "wkid": 102100 };
map.infoWindow.resize(275, 325);
var currentClick = null;
// Listen for map click event and launch point query task.
map.on("click", function (evt) {
map.graphics.clear()
map.infoWindow.hide();
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
query.geometry = evt.mapPoint;
currentClick = evt.mapPoint;
queryTask.execute(query);
});
// Listen for QueryTask complete event.
queryTask.on("complete", function (evt) {
var features = evt.featureSet.features;
var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleFillSymbol.STYLE_SOLID, new Color([200, 0, 0]), 2), new Color([144, 238, 144, 0.6]));
for (var i = 0; i < features.length; i++) {
var graphic = features[i];
graphic.setSymbol(symbol);
map.graphics.add(graphic);
}
if (features.length) {
var firstGraphic = evt.featureSet.features[0];
var attrs = firstGraphic.attributes;
map.infoWindow.setTitle("Parcel " + attrs.parcel_id + " in " + attrs.county_name + ", " + attrs.state_abbr);
var fieldAliases = evt.featureSet.fieldAliases;
var content = "";
for (var attr_name in attrs) {
if (attrs.hasOwnProperty(attr_name)) {
var fieldAlias = attr_name;
if (fieldAliases.hasOwnProperty(attr_name)) {
fieldAlias = fieldAliases[attr_name];
}
content += "<div><b>" + fieldAlias + ": </b>" + attrs[attr_name] + "</div>\n";
}
}
map.infoWindow.setContent(content);
var currentClickScreen = map.toScreen(currentClick);
map.infoWindow.show(currentClickScreen, map.getInfoWindowAnchor(currentClickScreen));
}
});
Using our ESRI compatible API, you can integrate our parcel geometry and attributes directly in your web application! Overlay our geometries directly on the map, and retrieve the attributes by clicking on any displayed parcels.
Tiled Map Service Layer Endpoint
https://reportallusa.com/api/rest_services/client=[client_key]/Parcels/MapServer
Query Task Endpoint
https://reportallusa.com/api/rest_services/client=[client_key]/Parcels/MapServer/0
ArcMap and ArcGIS Pro Software
Add our ArcGIS Server to ArcGIS Pro with the following url:
https://reportallusa.com/client=[client_key]/services
If you wish to query our parcels, make sure to add our sublayer to your scene as well. This sublayer can be found by expanding our 'Parcels' layer in the catalog view.
ArcGIS Online
To use our ArcGIS server in your ArcGIS Online map, please follow the steps below:
- Select ‘Add’ then ‘Add layer from web’
- With ‘An ArcGIS Server Web Service’ selected, enter ‘https://reportallusa.com/client=[client_key]/rest/services’, with your client key substituted, as the URL and click ‘Browse for more layers’
- When ‘Choose a layer’ comes up, reselect ‘Parcels’ from the dropdown box and select ‘Add layer’
You will now see our layer added to your map. It will be grayed out if you are zoomed out beyond our visibility settings. If you wish to click parcels to identify them, do the following:
- Expand the ‘Parcels’ layer in your contents tab
- Select the three dots at the end of the nested ‘Parcels’ layer
- Select ‘Enable Pop-up’
Vector Tiles
Map tiles can be accessed in MapBox Vector Tile (MVT) format using the below endpoint:
HTTP Request
GET https://reportallusa.com/api/rest_services/client=[client_id]/ParcelsVectorTile/MapBoxVectorTileServer/tile/{z}/{x}/{y}.mvt
A working example is available at our API MapBox Vector Tiles example page.
The vector tiles endpoint supports zoom levels ("z" parameter) 14 thru 17 inclusive.
Setting Feature Id to robust_id
MapBox Vector Tiles slice polygons which cross tile boundaries. To ensure your mapping framework properly reconstructs parcels which cross tile boundaries back into single polygons (rather than presenting multiple, sliced polygons), you need to instruct your mapping framework that the feature id of the tile data's 'parcels' layer is its 'robust_id' attribute. In MapBox GL JS you can accomplish this by setting the source's promoteId
attribute to {"parcels": "robust_id"}
. For an example of how to set this for the MapBox GL JS framework, visit our API MapBox Vector Tiles example page, view its source, and search for promoteId
.
Additional Attributes
Additional attributes can be requested to be included in the vector tiles. To include additional attributes in the output (besides the default of robust_id), after the /client=.../ path part, add an additional path part specifying a comma-separated list of fields like: /outFields=field1,field2,.../. For example to include both parcel_id and owner in the output, use:
GET https://reportallusa.com/api/rest_services/client=[client_id]/outFields=parcel_id,owner/ParcelsVectorTile/MapBoxVectorTileServer/tile/{z}/{x}/{y}.mvt
A complete list of available fields can be found at https://reportallusa.com/api/rest_services/client=DummyClientKey/Parcels/MapServer/0?f=pjson
If you need many attributes for a small number of (say, clicked or otherwise focused) parcels, instead of listing those attributes as outFields in the above, consider issuing (a) request(s) to the query endpoint instead. This may be more efficient from a quota perspective because a vector tile request specifying n
outFields attributes can use up to n+1
tile quota, whereas a query endpoint request for one record will use only one parcels (not tile) quota.
Such a query endpoint request for full parcel details (attributes) could look like:
GET https://reportallusa.com/api/rest_services/client=[client_id]/Parcels/MapServer/0/query?where=robust_id='[robust_id]'
See our API MapBox Vector Tiles example page (including "view source" on it) for a working example of this approach.
The response to the above is by default in ArcGIS Server (JSON) format, though you can request GeoJSON by adding an f=geojson parameter. (See ArcGIS and/or GeoJSON sections of this documentation for more details.)
Tile Quota Use
If no additional attributes are requested, vector tile requests use 1 tile quota per request. For each additional attribute requested, each vector tile request uses one additional tile quota, with the following exceptions:
- Attributes "robust_id", "county_id", "county_name", "state_abbr", "muni_name", "latitude", and "longitude" are free; I.e. they do not cost any tile quota to request. In fact, robust_id will always be included in the response.
- If no parcel centered in the tile has a nonempty value for an attribute, we do not charge any tile quota for that attribute. In other words, additional tile quota is only charged if one or more parcels centered in the tile return a nonempty value for that attribute. In this way, no additional tile quota is used when we return no data for that attribute in the tile.
GeoJSON
To receive responses in GeoJSON format, issue queries against our ArcGIS Query Task Endpoint (discussed in the previous section) by adding /query to its path, and among the query parameters, specify f=geojson to set the response output format to GeoJSON. Several example queries and their responses are shown in the sidebar.
Querying by point intersection and receiving result(s) in GeoJSON format. Note that the query string contains (at the end) the "f=geojson" parameter. Make sure to replace
[client_key]
with your real client key.
curl 'https://reportallusa.com/api/rest_services/client=[client_key]/Parcels/MapServer/0/query?returnGeometry=true&outFields=*&inSR=4326&geometry=-122.43198375920183,48.038068850673966&geometryType=esriGeometryPoint&spatialRel=esriSpatialRelIntersects&outSR=4326&f=geojson'
{
"type": "FeatureCollection",
"crs": {"type": "name", "properties": {"name": "EPSG:4326"}},
"features": [
{
"type": "Feature",
"id": 86279636,
"properties": {"county_id": 53029, "cty_row_id": 18739, "OBJECTID": 86279636, "parcel_id": "810131", "county_name": "Island", "muni_name": "South Whidbey Island", "state_abbr": "WA", "address": "", "census_zip": "98260", "owner": "SMITH CRAIG N", "mail_address3": "FREELAND WA 98249", "mail_placename": "FREELAND", "mail_statename": "WA", "mail_zipcode": "98249", "mkt_val_land": "135000.00", "mkt_val_bldg": "0.00", "mkt_val_tot": "135000.00", "buildings": 0, "school_district": "South Whidbey School District", "acreage_deeded": "9.9600", "acreage_calc": 9.93992903278705, "census_block": 3006, "census_blkgrp": 3, "census_tract": 971900, "latitude": 48.0377695843873, "longitude": -122.43203610114, "elevation": 239.095362464569, "robust_id": "AADPJWQPbKvSJr-V", "last_updated": "2020-Q2"},
"geometry": {"type": "MultiPolygon", "coordinates": [[[[-122.43070543, 48.03855177], [-122.43073815, 48.03674716], [-122.43209362, 48.03676516], [-122.43342692, 48.03678286], [-122.43339154, 48.03858766], [-122.43070543, 48.03855177]]]]}
}
]
}
Querying by county (FIPS code) & parcel number and receiving result(s) in GeoJSON format.
curl 'https://reportallusa.com/api/rest_services/client=[client_id]/Parcels/MapServer/0/query?returnGeometry=true&outSR=4326&outFields=*&where=county_id=39055%20AND%20parcel=%2701-000050%27&f=geojson'
{
"type": "FeatureCollection",
"crs": {"type": "name", "properties": {"name": "EPSG:4326"}},
"features": [
{
"type": "Feature",
"id": 176430794,
"properties": {"county_id": 39055, "cty_row_id": 9988, "OBJECTID": 176430794, "parcel_id": "01-000050", "county_name": "Geauga", "muni_name": "Auburn", "state_abbr": "OH", "address": "9809 WASHINGTON St", "addr_number": "9809", "addr_street_name": "WASHINGTON", "addr_street_type": "St", "addr_city": "CHAGRIN FALLS", "addr_zip": "44023", "addr_zipplusfour": "5485", "census_zip": "44023", "owner": "RYLYND PROPERTIES LLC", "mail_name": "RYLYND PROPERTIES LLC", "mail_address1": "9809 WASHINGTON ST", "mail_address3": "CHAGRIN FALLS OH 44023", "mail_addressnumber": "9809", "mail_streetname": "WASHINGTON", "mail_streetnameposttype": "ST", "mail_placename": "CHAGRIN FALLS", "mail_statename": "OH", "mail_zipcode": "44023", "owner_occupied": true, "usps_residential": "Residential", "trans_date": 951454800000, "sale_price": "210000.00", "mkt_val_land": "113300.00", "mkt_val_bldg": "119900.00", "mkt_val_tot": "233200.00", "buildings": 8, "ngh_code": "22000", "land_use_code": "521", "land_use_class": "Residential", "legal_desc1": "SEC 1 TR 2", "legal_desc2": "SEC 1 TR 2", "legal_desc3": "SEC 1 TR 2", "school_district": "Kenston Local School District", "acreage_deeded": "4.8200", "acreage_calc": 5.36077292800584, "census_block": 1024, "census_blkgrp": 1, "census_tract": 311900, "latitude": 41.3930465864256, "longitude": -81.2923664551329, "elevation": 1210.9329944472, "robust_id": "AACYj1rgziw5ShYr", "last_updated": "2020-Q2"},
"geometry": {"type": "MultiPolygon", "coordinates": [[[[-81.29241491, 41.39234767], [-81.29290291, 41.39253324], [-81.29338028, 41.39271477], [-81.29257265, 41.39391954], [-81.29196033, 41.39368677], [-81.29164937, 41.39356856], [-81.2916328, 41.39356221], [-81.2914244, 41.39348229], [-81.29143891, 41.39197652], [-81.29192691, 41.39216209], [-81.29241491, 41.39234767]]]]}
}
]
}
Errors
If an error occurs in processing your request, the REST API will return a JSON response of the form: {"status": "error", "message": "..."}
The ReportAll API uses the following HTTP error status codes:
Error Code | Meaning |
---|---|
404 | Not Found -- The specified endpoint could not be found. |
405 | Method Not Allowed -- You tried to access an endpoint with an invalid method. |
429 | Too Many Requests -- Your account has triggered our rate limiting code. |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
Release Notes
June 12, 2022
- Addition of 'acreage_adjacent_with_sameowner' attribute.