GeoEnrichment service

The GeoEnrichment service finds demographic information and other relevant characteristics for places around the world. You can submit a point or polygon and retrieve facts associated with the location and surrounding area. The service provides over 15,000 data fields with coverage for more than 130 countries and regions.

Demographic data obtained from the GeoEnrichment service

Key features

  • Demographic data enrichment for over 130 countries and regions.
  • Create study areas such as rings and drive times from point locations.
  • Choose from curated lists of demographic data fields for an area from preassembled data collections.
  • Specify a custom list of fields from one or more data collections.
  • Return geometry of study areas for display on a map.

How the GeoEnrichment service works

The GeoEnrichment service uses a sophisticated data apportionment methodology to aggregate demographic information for rings and other polygons. For example, in the U.S. and Canada, data apportionment relies mostly on census block points. Block points are centroids derived from census block boundaries, the most detailed level of census tabulation available. They contain attributes for the actual count of people and households living in the associated block. For most other countries and regions settlement points are used for data apportionment. Settlement points are modeled by Esri and provide an estimate of the likelihood of human settlement.

The main tasks are:

  • Enrich an area: Find demographic data for an area.

To use the service, you typically:

  1. Determine the country of interest.
  2. Determine the place or area e.g. buffered point, drivetime polygon, custom polygon to search.
  3. Determine the demographic data fields of interest.
  4. Query a study area with the fields of interest.

Service URL

The base URL for the GeoEnrichment service is:

 
https://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/Geoenrichment/

GeoEnrichment

To GeoEnrich a location, use the enrich operation.

This returns a JSON structure containing an array of features. Each feature includes a number of attributes which fall into three categories:

Area and geometry:
These attributes describe the geographic study area:

  • OBJECTID An integer used to uniquely identify features in the enrich response.
  • sourceCountry The country or region in which the feature is located.
  • areaType The type of buffer created around a point study area. Examples include: ring buffer and network service area.
  • bufferUnits The unit of measurement used when creating a buffer. Examples include Miles and Kilometers.
  • bufferRadii An integer which defines the distance of the buffer.

Demographic data:
These attributes include demographic data for each data field specified in the request.

If none were specified, the following default data fields are returned from the Key Global Facts data collection:

  • TOTPOP (Total Population)
  • TOTHH (Total Households)
  • AVGHHSZ (Average Household Size)
  • TOTMALES (Male Population)
  • TOTFEMALES (Female Population).

To request other data fields, see the analysisVariables and dataCollections parameters.

Apportionment details:
These properties provide further details about how demographic data was calculated for the geographic study area:

  • hasData A value of 1 means the area intersects human settlement. A value of 0 means the area does not intersect human settlement.
  • aggregationMethod The method used by GeoEnrichment to apportion demographic data to an area. The most detailed level of apportionment is Block Apportionment.
  • populationToPolygonSizeRating An area to population reliability score which is based on the size of a census geography unit and the number of people estimated to live in that polygon. The larger the area of a census tabulation area, the less likely the specific locations where people live can reliably be found.
  • apportionmentConfidence The overall reliability score which encompasses all aspects of reliability and includes the Area to population score.

URL Request

 
https://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/Geoenrichment/enrich?<params>

Key parameters

studyAreas

An array of input points, polygons, administrative boundaries, or addresses.

  • [{"geometry":{"x": -122.435, "y": 37.785}}]
  • [{"geometry":{"x": -122.435, "y": 37.785}},{"geometry":{"x": -122.433, "y": 37.734}},{"geometry":{"x": -122.746, "y": 49.986}}]
  • [{"address":{"text":"380 New York St. Redlands, CA 92373"}}]
  • [{"sourceCountry":"US","layer":"US.ZIP5","ids":["92373"]}]
studyAreasOptions

An array of values to control how input points are buffered. Supported area types include ring buffers and network service areas such as drive times and walk times. Multiple buffer radii can be requested. The unit of measurement requested can be miles or kilometers and in the case of service areas, minutes and hours are also supported.

  • {"areaType":"RingBuffer","bufferUnits":"Miles","bufferRadii":[1,3,5]}
  • {'areaType': 'NetworkServiceArea', 'bufferUnits': 'Minutes', 'bufferRadii': [5,10,15],'travel_mode': 'Driving'}
dataCollections

An array of data collection names to query for. The names contain pre-defined set of attributes to return for the world or different countries. For example:

  • ["KeyGlobalFacts"]
  • ["KeyUSFacts"]
  • ["Education"]
analysisVariables

An array of data attribute field names to search for. The field names are typically defined with a data collection name (global or country) and the field name. For example:

  • KeyGlobalFacts.TOTPOP
  • KeyUSFacts.POPGRW10CY
  • HousingTotalsAIS.CANHOUS
addDerivativeVariables

Optional parameter to specify a comma separated array of values that describe what derivative variables to include in the output. Valid values are:

  • percent
  • index
  • average
  • all
returnGeometry

An optional parameter to request an area's geometry for display on a map. When this parameter is set to true, the geometries of each feature will be included in the repsonse.

The default value is false.

Other parameters

There are many other parameters that can be used to improve and modify place search results.

Some commonly used parameters are:

  • useData Provide a performance hint when all study areas are contained wtithin the same country or region.
  • intersectingGeographies Return the adminitstrative boudnaries that each input study area intersects.
  • insr Define a spatial reference system for the input study areas.
  • outsr Request the geometries of output features in a specific spatial reference system.

Example

RequestResponse
    
curl https://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/Geoenrichment/enrich? \
-d "studyAreas=[{'geometry':{'x': -117.1956, 'y': 34.0572}}]"
-d "f=json"
-d "token=YOUR-API-KEY"
                                                                                                                                                  
{
  "results" : [ {
    "paramName" : "GeoEnrichmentResult",
    "dataType" : "GeoEnrichmentResult",
    "value" : {
      "version" : "2.0",
      "FeatureSet" : [ {
        "displayFieldName" : "",
        "fieldAliases" : {
          "ID" : "Id",
          "OBJECTID" : "Object ID",
          "sourceCountry" : "Country code",
          "areaType" : "Area type",
          "bufferUnits" : "Buffer units",
          "bufferUnitsAlias" : "Buffer units alias",
          "bufferRadii" : "Buffer radii",
          "aggregationMethod" : "Aggregation method",
          "populationToPolygonSizeRating" : "Population to polygon size rating for the country",
          "apportionmentConfidence" : "Apportionment confidence for the country",
          "HasData" : "Has data",
          "TOTPOP" : "Total Population",
          "TOTHH" : "Total Households",
          "AVGHHSZ" : "Average Household Size",
          "TOTMALES" : "Male Population",
          "TOTFEMALES" : "Female Population"
        },
        "spatialReference" : {
          "wkid" : 4326,
          "latestWkid" : 4326
        },
        "fields" : [ {
          "name" : "ID",
          "alias" : "Id",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "OBJECTID",
          "alias" : "Object ID",
          "type" : "esriFieldTypeOID"
        }, {
          "name" : "sourceCountry",
          "alias" : "Country code",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "areaType",
          "alias" : "Area type",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "bufferUnits",
          "alias" : "Buffer units",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "bufferUnitsAlias",
          "alias" : "Buffer units alias",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "bufferRadii",
          "alias" : "Buffer radii",
          "type" : "esriFieldTypeDouble"
        }, {
          "name" : "aggregationMethod",
          "alias" : "Aggregation method",
          "type" : "esriFieldTypeString",
          "length" : 256
        }, {
          "name" : "populationToPolygonSizeRating",
          "alias" : "Population to polygon size rating for the country",
          "type" : "esriFieldTypeDouble"
        }, {
          "name" : "apportionmentConfidence",
          "alias" : "Apportionment confidence for the country",
          "type" : "esriFieldTypeDouble"
        }, {
          "name" : "HasData",
          "alias" : "Has data",
          "type" : "esriFieldTypeInteger"
        }, {
          "name" : "TOTPOP",
          "alias" : "Total Population",
          "type" : "esriFieldTypeDouble",
          "fullName" : "KeyGlobalFacts.TOTPOP",
          "component" : "demographics",
          "decimals" : 0,
          "units" : "count"
        }, {
          "name" : "TOTHH",
          "alias" : "Total Households",
          "type" : "esriFieldTypeDouble",
          "fullName" : "KeyGlobalFacts.TOTHH",
          "component" : "demographics",
          "decimals" : 0,
          "units" : "count"
        }, {
          "name" : "AVGHHSZ",
          "alias" : "Average Household Size",
          "type" : "esriFieldTypeDouble",
          "fullName" : "KeyGlobalFacts.AVGHHSZ",
          "component" : "scripts",
          "decimals" : 2,
          "units" : "count"
        }, {
          "name" : "TOTMALES",
          "alias" : "Male Population",
          "type" : "esriFieldTypeDouble",
          "fullName" : "KeyGlobalFacts.TOTMALES",
          "component" : "demographics",
          "decimals" : 0,
          "units" : "count"
        }, {
          "name" : "TOTFEMALES",
          "alias" : "Female Population",
          "type" : "esriFieldTypeDouble",
          "fullName" : "KeyGlobalFacts.TOTFEMALES",
          "component" : "demographics",
          "decimals" : 0,
          "units" : "count"
        } ],
        "features" : [ {
          "attributes" : {
            "ID" : "0",
            "OBJECTID" : 1,
            "sourceCountry" : "US",
            "areaType" : "RingBuffer",
            "bufferUnits" : "esriMiles",
            "bufferUnitsAlias" : "Miles",
            "bufferRadii" : 1,
            "aggregationMethod" : "BlockApportionment:US.BlockGroups",
            "populationToPolygonSizeRating" : 2.191,
            "apportionmentConfidence" : 2.576,
            "HasData" : 1,
            "TOTPOP" : 12995,
            "TOTHH" : 5179,
            "AVGHHSZ" : 2.49,
            "TOTMALES" : 6271,
            "TOTFEMALES" : 6724
          }
        } ]
      } ]
    }
  } ],
  "messages" : [ ]
}

Authentication

This service requires authentication using either:

  • API key: Allows access to location services using a permanent token that can be restricted to specific services and included in public applications.
  • ArcGIS Identity (OAuth 2.0): Uses OAuth 2.0 protocol to authenticate app users with their ArcGIS Online or Enterprise Identity. The resulting token is used to access the service.

API support

GeoEnrichment
ArcGIS API for JavaScriptAccess via ArcGIS REST JS or use a task
ArcGIS API for AndroidAccess via HTTP request
ArcGIS API for iOSAccess via HTTP request
ArcGIS API for .NetAccess via HTTP request
ArcGIS API for QtAccess via HTTP request
ArcGIS API for JavaAccess via HTTP request
ArcGIS API for PythonFully supported
Esri LeafletAccess via ArcGIS REST JS
MapBox GL JSAccess via ArcGIS REST JS
OpenLayersAccess via ArcGIS REST JS
ArcGIS REST JSDirect access and authentication
Full supportPartial support (see notes)Not supported

Service data

Source

The main sources of data may be different depending on the country or region and can be explored in the interactive map below. For the U.S. Esri's team of demographers model independent small-area demographic and socioeconomic estimates and forecasts. Additional sources include the U.S. Census Bureau, the Bureau of Labor Statistics and American Community Survey (ACS). For most other countries and regions the main source of standard demographics is Michael Bauer Research (MBR).

Quality

Esri is an industry leader in reviewing and processing census information as well as understanding and accurately updating demographic trends. Leveraging nearly forty years of experience, Esri has developed and refined its models and methods to improve data quality and precision. In addition to the wealth of public source data, particularly from the Census Bureau, source data from carefully chosen partnerships with private vendors are integrated into the modelling process.

Click on the map below to explore data sources for each country and region.