NAV
Examples

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&timestamp=1524751569"
{
  "status": "OK",
  "token": "xPBn6y9wBBxxcK2527AHY0YJ2c17k8nU5FAsuvW1_9Qv09NZ4b6BaQZ7lNUHZyl1"
}

Make sure to replace ffffffffff and 1524751569 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&region=Geauga%20County,%20OH&address=100%20Short%20Court"

curl "https://reportallusa.com/api/parcels?client=[client_key] \
  &v=4&region=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&region=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&region=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 \
  &region=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&region=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&region=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&region=Cuyahoga%20County,%20Ohio&owner=Smith;Jones"
{
  "status": "OK",
  "count": 5194,
  "page": 1,
  "rpp": 10,
  "results": [
    {
      "omitted for example"
    },
  ],
  "query": "client=[client_key]&v=4&region=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) or spatial_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 or spatial_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:

  1. Select ‘Add’ then ‘Add layer from web’
  2. 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’
  3. 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:

  1. Expand the ‘Parcels’ layer in your contents tab
  2. Select the three dots at the end of the nested ‘Parcels’ layer
  3. 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:

  1. 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.
  2. 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.