Attribution

This topic describes the attribution you are required to display in applications that use Esri technology.

Attribution requirements
Example of Esri and data attribution in a mapping application

Types of attribution

There are two types of attribution that apply to building applications with Esri technology:

  1. Esri attribution: The requirement to display Powered by Esri text when using ArcGIS APIs, SDKs, services, or data.
  2. Data attribution: The requirement to display all data source provider names in maps that use ArcGIS basemap and/or data services.

Learn more about the types of attribution and the display requirements below.

Esri attribution

Esri attribution is the requirement to display Powered by Esri text in all applications that use Esri technology. This includes applications that use any ArcGIS API, SDK, service, content, or data. The attribution is required for applications that either contain a map or do not contain a map.

You need to include Esri attribution if your application uses:

Display requirements

The Powered by Esri text must be clearly displayed in your application.

Requirements

  • The text must be clearly displayed on the map, application, or in a window that is accessible from a menu or button.
  • The text must not be covered or obstructed by other UI elements.
  • The text must be easily discoverable.

Recommendations

  • Position text at the bottom-right of the main application.
  • Include text with the data attribution.
  • Include text in all UI components that use Esri technology.
  • The word Esri should be linked to https://www.esri.com.
  • Use Esri's data attribution design:
    • Font family: "Avenir Next W00","Helvetica Neue", Helvetica,Arial,sans-serif;
    • Font color: #323232 (100% opacity)
    • Background color: #ffffff (65% opacity)
    • Font size: 12px or larger.

Examples with a map

The following are acceptable examples of displaying Esri attribution in applications that contain a map:

DefaultJoined
map map
In a controlIn a pop-up
map map

Examples without a map

The following are acceptable examples of displaying Esri attribution in applications that do not contain a map:

In a controlIn the app
map map
From a menuFrom a button
map map

Data attribution

Data attribution is the requirement to display the names of all data source providers for the data used in a map. This includes the data source providers for any ArcGIS content, data, or service such as ArcGIS Location Services, ArcGIS Enterprise services, and hosted data services. This also includes data source providers listed in content items such as hosted layers.

Data attribution is required regardless of the type of API you are using to access data. For example, it applies to the use of any ArcGIS Maps SDKs, open source library, or third-party API.

You need to include data attribution if your application displays a map with one or more of the following:

  • The ArcGIS Basemap Styles service or ArcGIS Static Basemap Tiles service (beta).
  • An ArcGIS data service such as a vector tile service, map tile service, or image service.
  • An ArcGIS hosted layer or content item.
  • An ArcGIS service in ArcGIS Online or ArcGIS Living Atlas.
  • An ArcGIS service in ArcGIS Enterprise

Display requirements

The names of all data source providers must be clearly displayed on the map in your application.

Requirements

  • Display names directly on the map where it is always visible.
  • Display names for all ArcGIS basemap layers and data layers in the map.
  • Display names for all ArcGIS services, items, and other sources accessed by the map.
  • Provide an expandable UI to display all names when they can not be displayed on small screens.
  • Do not obstruct names with other logo or visual elements.
  • Frequently verify names as data source providers can change.

Reocommendations

  • Position names at the bottom of the map.
  • Prefix names with Sources: Name A, Name B....
  • Display names dynamically as zoom levels change.
  • Use fonts and colors that meet accessibility guidelines.
  • Use Esri's data attribution design:
    • Font family: "Avenir Next W00","Helvetica Neue", Helvetica,Arial,sans-serif;
    • Font color: #323232 (100% opacity)
    • Background color: #ffffff (65% opacity)
    • Font size: 12px or larger.

Below is an example of a string with multiple data source names:

Sources: Esri, TomTom, Garmin, FAO, NOAA, USGS, © OpenStreetMap contributors, and the GIS User Community

Examples with a map

The following are acceptable examples of displaying data attribution on a map:

DefaultJoined
map map
CollapsedExpanded
map map
From a menuIn a popup
map map

Get attribution from a service

ArcGIS services return a data attribution text string with a list of the data source providers. Depending on the service, the string can be retrieved from the copyrightText or the attribution property (if it is available).

The steps to get data attribution text are:

  1. Make a request to the ArcGIS service endpoint or metadata.
  2. Retrieve the text from the copyrightText or attribution property.
  3. Display the retrieved attribution text on your map.

The method of retrieving data attribution text depends on the type of service and the structure of the metdata returned. For example, you can use either the copyrightText or attribution property from the basemap styles service. Most services only support copyrightText however.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "glyphs": "https://basemaps-api.arcgis.com/arcgis/rest/services/World_Basemap_v2/VectorTileServer/resources/fonts/{fontstack}/{range}.pbf?token=...",
  "layers": [...],
  "sources": {
    "esri": {
      "attribution": "Sources: Esri, TomTom, Garmin, FAO, NOAA, USGS, © OpenStreetMap contributors, and the GIS User Community",
      "copyrightText": "Sources: Esri, TomTom, Garmin, FAO, NOAA, USGS, © OpenStreetMap contributors, and the GIS User Community",
      "maxzoom": 16,
      "minzoom": 0,
      ...
    }
  },
  "sprite": "https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/../sprites/sprite",
  "version": 8
}

Below are examples of how to get the data attribution from different ArcGIS services:

Vector tile service includes the basemap styles service, custom basemap styles created with the ArcGIS Vector Tile Style Editor, and any other vector tile layers owned by Esri.

Basemap styles service:

cURLcURLHTTP
Use dark colors for code blocksCopy
1
curl -X GET "https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/arcgis/streets?token=<ACCESS_TOKEN>"

Get attribution from an item

If attribution is not available from a service, you can get the attribution text from the item page in ArcGIS.

The steps to get the text are:

  1. Go to the ArcGIS portal that contains the service, e.g. ArcGIS Online.
  2. Use Search to find the item in the portal. Hint: Filter by layer type to refine your search.
  3. In the item page, get the text from the Credits (Attribution) section.
  4. Display the appropriate data attribution text in your application. See Code examples.

Below is an example of where to get the data attribution text from the USA Census States item:

https://www.arcgis.com/home/item.html?id=774019f31f8549c39b5c72f149bbe74e

usa-census-states-item

Code examples

The following examples show how to correctly display both Esri attribution and data attribution. The steps required depend on the API you are using.

Display attribution in a map that uses basemap services

ArcGIS Maps SDK for JavaScript

ArcGIS Maps SDK for JavaScript displays Esri and data attribution text automatically. No additional attribution work is required.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    const map = new Map({
      basemap: "arcgis/navigation"
    });

ArcGIS Maps SDKs for Native Apps

ArcGIS Maps SDK for Native Apps displays Esri and data attribution text automatically. No additional attribution work is required.

Example of basemap attribution in mobile devices
ArcGIS Maps SDK for .NETArcGIS Maps SDK for .NETArcGIS Maps SDK for KotlinArcGIS Maps SDK for SwiftArcGIS Maps SDK for JavaArcGIS Maps SDK for Qt
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        MainMapView.Map = new Map(BasemapStyle.ArcGISNavigation);

Esri Leaflet

EsriLeaflet displays Esri and data attribution text automatically. No additional attribution work is required.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
      L.esri.Vector.vectorBasemapLayer(basemapEnum, {
        token: accessToken
      }).addTo(map);

MapLibre GL JS

MapLibre GL JS displays data attribution text automatically but you need to add the Esri attribution manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
      map._controls[0].options.customAttribution += " | Powered by Esri "
      map._controls[0]._updateAttributions()

OpenLayers

OpenLayers displays data attribution text automatically but you need to add the Esri attribution manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
      source.setAttributions("Powered by Esri | ")

CesiumJS

CesiumJS displays data attribution text automatically but you need to add the Esri attribution manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
      const poweredByEsri = new Cesium.Credit("Powered by Esri", true)
      viewer.creditDisplay.addStaticCredit(poweredByEsri);

Display attribution in a map that uses basemap and data services

Applications that contain basemap services and data service require that data attribution is provided for all layers and data sources in the map.

ArcGIS Maps SDK for JavaScript

ArcGIS Maps SDK for JavaScript displays Esri and data attribution for both the basemap and feature layer automatically. No additional work is required.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
      const layer = new FeatureLayer({
        portalItem: {
          id: "774019f31f8549c39b5c72f149bbe74e"
        }
      });
      map.add(layer);

ArcGIS Maps SDKs for Native Apps

ArcGIS Maps SDK for Native Apps displays Esri and data attribution for both the basemap and feature layer automatically. No additional work is required.

Example of attribution in mobile devices
ArcGIS Maps SDK for .NETArcGIS Maps SDK for .NETArcGIS Maps SDK for KotlinArcGIS Maps SDK for SwiftArcGIS Maps SDK for Qt
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
    PortalItem portalItem = await PortalItem.CreateAsync(portal, "774019f31f8549c39b5c72f149bbe74e");
    FeatureLayer layer = new FeatureLayer(portalItem, 0);
    Map.OperationalLayers.Add(layer);

Esri Leaflet

EsriLeaflet displays Esri and data attribution for the basemap automatically. You need to add the data attribution text from the layer's item page manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
        L.esri.featureLayer({
            url: "https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_Census_States/FeatureServer/0",
            style: function(feature) {
                return {
                    fillColor: 'rgba(255, 211, 127, 0.6)',
                    color: 'rgba(110, 110, 110, 0.6)',
                    weight: 1,
                    fillOpacity: 0.6
                };
            }
Expand

MapLibre GL JS

MapLibre GL JS displays data attribution for the basemap. You need to add the Esri and data attribution text from the layer's item page manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
            map.addSource("parcels", {
                type: "geojson",
                data: `https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_Census_States/FeatureServer/0/query?f=pgeojson&where=1=1&outFields=*&&returnGeometry=true`,
                attribution: 'Esri; U.S. Department of Commerce, Census Bureau; U.S. Department of Commerce (DOC), National Oceanic and Atmospheric Administration (NOAA), National Ocean Service (NOS), National Geodetic Survey (NGS) | Powered by Esri'
                // retrieved from https://www.arcgis.com/home/item.html?id=774019f31f8549c39b5c72f149bbe74e
            });
Expand

OpenLayers

OpenLayers displays data attribution for the basemap. You need to add the Esri and data attribution text from the layer's item page manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
                source: new ol.source.Vector({
                    format: new ol.format.GeoJSON(),
                    url: `https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_Census_States/FeatureServer/0/query?f=pgeojson&where=1=1&outFields=*&&returnGeometry=true`,
                    attributions: ['Esri; U.S. Department of Commerce, Census Bureau; U.S. Department of Commerce (DOC), National Oceanic and Atmospheric Administration (NOAA), National Ocean Service (NOS), National Geodetic Survey (NGS) | Powered by Esri']
                    // retrieved from https://www.arcgis.com/home/item.html?id=774019f31f8549c39b5c72f149bbe74e
                }),
Expand

CesiumJS

CesiumJS displays data attribution for the basemap. You need to add the Esri and data attribution text from the layer's item page manually.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
        const data = Cesium.GeoJsonDataSource.load(response,{
            clampToGround:true,
            credit: new Cesium.Credit('Esri; U.S. Department of Commerce, Census Bureau; U.S. Department of Commerce (DOC), National Oceanic and Atmospheric Administration (NOAA), National Ocean Service (NOS), National Geodetic Survey (NGS)', false) // retrieved from https://www.arcgis.com/home/item.html?id=774019f31f8549c39b5c72f149bbe74e
        })
Expand

Display attribution when not using a map

ArcGIS REST JS

This example uses the autosuggest feature from arcgisRest.suggest(). To provide Esri attribution, you can the Results powered by Esri text manually to the control.

Autosuggest results with "Results powered by Esri" text.

Autosuggest results with "Results powered by Esri" text.

Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
            const div = document.createElement('div')
            div.textContent = "Results powered by Esri"
            div.className = "esri-attribution"
            suggestionsList.appendChild(div)
Expand

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.