{"article":{"id":360011999877,"url":"https://appsflyer.zendesk.com/api/v2/help_center/en-us/articles/360011999877.json","html_url":"https://support.appsflyer.com/hc/en-us/articles/360011999877-App-list-API-for-app-owners","author_id":6998065863185,"comments_disabled":true,"draft":false,"promoted":false,"position":4,"vote_sum":0,"vote_count":0,"upvote_count":0,"downvote_count":0,"section_id":6551015977105,"created_at":"2020-08-17T18:07:10Z","updated_at":"2026-10-13T00:44:56Z","name":"App list API for app owners","title":"App list API for app owners","source_locale":"en-us","locale":"en-us","outdated":false,"outdated_locales":[],"edited_at":"2026-05-05T06:57:58Z","user_segment_id":null,"permission_group_id":11065,"content_tag_ids":["01M0A1D9J4G66M4K4HKQ8Q4H95","01M1BKPRCNM7DC2H1G30BHYY5M","01M1BKPZ6YS0VWJMBV21G9XNY7"],"label_names":["Advertisers","Marketers","Loc Published"],"body":"<div id=\"af__articleDescription\"><p><strong>At a glance:</strong> Retrieve active and pending apps associated with your AppsFlyer account.</p></div><p class=\"image\"><img src=\"https://support.appsflyer.com/hc/article_attachments/24507752775313\" alt=\"mceclip0.png\"></p><p class=\"image\">If you are an ad network, use the <a href=\"https://support.appsflyer.com/hc/en-us/articles/360011700857\" target=\"_blank\" rel=\"noopener noreferrer\">app list for ad networks</a> API.</p><p class=\"image\"><strong>Further reading</strong>: <a href=\"https://support.appsflyer.com/hc/en-us/articles/360009122638\" target=\"_blank\" rel=\"noopener noreferrer\">API list for advertisers</a></p><h2 id=\"h_01KQS56KS2G7TD4VHZCHVP0W9S\" data-title=\"get-app-list-api\">Get app list API</h2><p>The following sections include information necessary for using the API. </p><p><span style=\"font-size: 1.2em;\"><strong>Get app list basics</strong></span></p><div class=\"accordion accordion--default\">\n<div class=\"accordion__item\">\n<h3 class=\"accordion__item-title\" id=\"h_01KQS56KS26TY81ACBN2XBK3W2\" data-title=\"get-api-list-basics\">Get API list basics</h3>\n<div class=\"accordion__item-content\"><figure class=\"wysiwyg-table wysiwyg-table-align-left\" style=\"width: 700px;\"><table class=\"unsortable table--hover table--striped table--color-header\">\n<thead><tr style=\"height: 18px;\">\n<th style=\"height: 18px; width: 209px;\">Category</th>\n<th style=\"height: 18px; width: 207.194px;\">Item</th>\n<th style=\"height: 18px; width: 464.806px;\"><span style=\"font-weight: 400;\">Description</span></th>\n</tr></thead>\n<tbody>\n<tr style=\"height: 22px;\">\n<td style=\"height: 22px; width: 209px;\" rowspan=\"3\">Request</td>\n<td style=\"height: 22px; width: 207.194px;\">HTTP method</td>\n<td style=\"height: 22px; width: 464.806px;\"><code>GET</code></td>\n</tr>\n<tr style=\"height: 18px;\">\n<td style=\"height: 18px; width: 207.194px;\">Path</td>\n<td style=\"height: 18px; width: 464.806px;\"><span style=\"font-weight: 400;\">https://hq1.appsflyer.com/api/mng/apps</span></td>\n</tr>\n<tr style=\"height: 1px;\">\n<td style=\"height: 1px; width: 207.194px;\">Authorization header </td>\n<td style=\"height: 1px; width: 464.806px;\"><ul>\n<li data-list-item-id=\"e1c82a35801dfee66bf72050c8c41be6d\">The mandatory authorization header contains a Bearer token. </li>\n<li data-list-item-id=\"e37b7fbe3c8c91b75ba9a47fbf938b0ce\">An admin user gets the token in the dashboard as follows: <a href=\"https://support.appsflyer.com/hc/en-us/articles/360004562377\" target=\"_blank\" rel=\"noopener noreferrer\">The Admin goes to email drop-down list &gt; API tokens to get the V2.0 token </a>\n</li>\n</ul></td>\n</tr>\n<tr style=\"height: 57px;\">\n<td style=\"height: 57px; width: 209px;\" rowspan=\"3\"> Response</td>\n<td style=\"height: 57px; width: 207.194px;\">Results</td>\n<td style=\"height: 57px; width: 464.806px;\">Return in a JSON</td>\n</tr>\n<tr style=\"height: 3px;\">\n<td style=\"height: 3px; width: 207.194px;\">Request limit</td>\n<td style=\"height: 3px; width: 464.806px;\"><ul>\n<li data-list-item-id=\"e58137c897bbbf183e263b8ba752cae56\">20 requests/minute</li>\n<li data-list-item-id=\"e24d600c7258cc780eb5ee81487417000\">100 requests/day</li>\n</ul></td>\n</tr>\n<tr style=\"height: 56.0834px;\">\n<td style=\"height: 56.0834px; width: 207.194px;\">Record limit</td>\n<td style=\"height: 56.0834px; width: 464.806px;\">1,000 records/request. If more than 1,000 records are to return, use follow-on pagination requests described in this article.</td>\n</tr>\n</tbody>\n</table></figure></div>\n</div>\n<div class=\"accordion__item\">\n<h3 class=\"accordion__item-title\" id=\"h_01KQS56KS27NETZ4C5RY28V804\" data-title=\"api-request\">API request</h3>\n<div class=\"accordion__item-content\">\n<p>The API request consists of the method, path, mandatory capabilities parameter, and optional pagination parameters. The token is contained in the authorization header. </p>\n<p><strong>Method</strong></p>\n<pre class=\"body-block language-json wysiwyg-code-block\"><code class=\"language-auto\">GET https://hq1.appsflyer.com/api/mng/apps</code></pre>\n<p>Get app list mandatory parameters:</p>\n<figure class=\"wysiwyg-table wysiwyg-table-align-left\" style=\"height: 137px; width: 677px;\"><table class=\"nonsortable table--hover table--striped table--color-header\">\n<thead><tr style=\"height: 70px;\">\n<th style=\"height: 70px; width: 83px;\">Query parameter</th>\n<th style=\"height: 70px; width: 587px;\">Description</th>\n</tr></thead>\n<tbody><tr style=\"height: 49.1094px;\">\n<td style=\"height: 49.1094px; width: 75px;\"> </td>\n<td style=\"height: 49.1094px; width: 579px;\"> There are no mandatory query parameters for this API</td>\n</tr></tbody>\n</table></figure><h4 id=\"h_01KQS56KS33VFVX099T1S2928G\" data-title=\"pagination-mechanism\">\n<br><strong>Pagination mechanism</strong>\n</h4>\n<p>A pagination mechanism, always operational, is implemented. </p>\n<p><strong>Pagination principles: </strong></p>\n<ul>\n<li data-list-item-id=\"eff05a15c512b2b75416ae3a85db8aef2\">Returns up to 1,000 records per request (page).</li>\n<li data-list-item-id=\"e48b6b6b251720dbcade0274891d1fffc\">Response JSONs contain the following pagination-related keys:<ul>\n<li data-list-item-id=\"ee7e1d0d021cef55d43a3e232b9df133a\">\n<strong>meta.total_items</strong>: The number of records to be returned by all pages combined. This represents the number of apps for which you have been granted the <em>capabilities </em>being queried.</li>\n<li data-list-item-id=\"e03b2187cf66ccdfc0497aeced4dfc37d\">Pagination links (depicted in the JSON that follows) have the following keys:<ul>\n<li data-list-item-id=\"ee1c56c0b421d3240aca3797099de78cd\">\n<strong>links.prev</strong>: If there was a previous request: the request used to generate the previous page.</li>\n<li data-list-item-id=\"e0a4be01937e8b0b8dad2e53b08aebd2e\">\n<strong>links.self</strong>: The current request: the request used to generate the current JSON (page)</li>\n<li data-list-item-id=\"eebb86d150a1e5949a541426d701edf17\">\n<strong>links.next</strong>: The request required to get the next page. If there is no <em>next </em>key, this is the last page. </li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong> Use one of the following pagination control methods:</strong></p>\n<ul>\n<li data-list-item-id=\"e760f8bdb34de71868a908e73ab211dfe\">[Best practice] Use the <em>links</em> in the JSON: If the <em>links.next</em> key exists, use it to create a request to get the next page. Continue to do so until you receive a JSON without a<em> links.next </em>key<em>.</em>\n</li>\n<li data-list-item-id=\"e18c9f2a2f300e5a7e24e307d77c739d6\">Programmatically implement <em>limit</em> and <em>offset </em>parameters in conjunction with the <em>total_items</em> key.</li>\n</ul>\n<p><strong>Pagination links JSON example</strong></p>\n<ul>\n<li data-list-item-id=\"eeeb55a5648a6b73a9b1aad719c3a7ac4\">The example that follows contains the result of the second request, consisting of two records in the data section (not displayed). </li>\n<li data-list-item-id=\"e09db984fea32ac5522aeac97efd48dc9\">The total number of records to return is 6.</li>\n<li data-list-item-id=\"e1e51c9e4e2d8730b10d0536fdb18efc8\">The <strong>links.next </strong>key contains the request that returns the second page—records 5 and 6. </li>\n</ul>\n<pre class=\"body-block language-json wysiwyg-code-block\"><code class=\"language-auto\">{                                                                                         \n    \"data\": {[...]},   \n    \"meta\": {\n        \"total_items\": 6\n    },\n    \"links\": {\n        \"prev\": \"https://hq1.appsflyer.com/api/mng/apps?offset=0&amp;limit=2\",\n        \"self\": \"https://hq1.appsflyer.com/api/mng/apps?offset=2&amp;limit=2\",\n        \"next\": \"https://hq1.appsflyer.com/api/mng/apps?offset=4&amp;limit=2\"\n    }\n}</code></pre>\n<p>Pagination mechanism parameters (optional):</p>\n<figure class=\"wysiwyg-table wysiwyg-table-align-left\" style=\"width: 723px;\"><table class=\"nonsortable table--hover table--striped table--color-header\">\n<thead><tr style=\"height: 70px;\">\n<th style=\"height: 70px; width: 10px;\">Query parameter</th>\n<th style=\"height: 70px; width: 1232.28px;\">Description</th>\n</tr></thead>\n<tbody>\n<tr style=\"height: 39.9132px;\">\n<td style=\"height: 39.9132px; width: 10px;\">limit</td>\n<td style=\"height: 39.9132px; width: 1232.28px;\">\n<p>Number of records that return per call</p>\n<ul>\n<li data-list-item-id=\"e4ac0fecddb6d3c95b35b84c4f4aed495\">Maximum: 1,000</li>\n<li data-list-item-id=\"e8943af8a68f40a3e241014d2867cab2e\">If you don't send<code>limit</code>, it is automatically set to 1,000.</li>\n<li data-list-item-id=\"e1e332834f284259c15a92b756d7d8d68\">Example: <code>limit=2</code>\n</li>\n<li data-list-item-id=\"ebfa9a04347dc99997926340e328330a2\">Mandatory: No</li>\n</ul>\n</td>\n</tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; width: 10px;\">offset</td>\n<td style=\"height: 24px; width: 1232.28px;\">\n<p>The first record to return in the call. Record numbers start with 0. </p>\n<ul>\n<li data-list-item-id=\"e698961a904d193e1c9652a1bdb0462e0\">If you don't send <code>offset</code>, it is automatically set to 0.</li>\n<li data-list-item-id=\"ec56546ce5d958776def394163f92698a\">Example: <code style=\"font-size: 14px;\">offset=2</code>\n</li>\n<li data-list-item-id=\"e97a8340ed02571a7b60c6b77290e920f\">Mandatory: No</li>\n</ul>\n</td>\n</tr>\n</tbody>\n</table></figure>\n</div>\n</div>\n<div class=\"accordion__item\">\n<h3 class=\"accordion__item-title\" id=\"h_01KQS56KS3Q5EEVSSC7G1FEFXR\" data-title=\"json-response\">JSON response</h3>\n<div class=\"accordion__item-content\"><figure class=\"wysiwyg-table wysiwyg-table-align-left\" style=\"width: 691px;\"><table class=\"table--hover table--striped table--color-header\">\n<thead><tr>\n<th><strong>Key</strong></th>\n<th><strong>Description</strong></th>\n</tr></thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>App ID, for example: <code><span style=\"font-weight: bolder;\">id123456789</span></code>, <code><span style=\"font-weight: bolder;\">com.myapp.com</span></code>\n</td>\n</tr>\n<tr>\n<td>type</td>\n<td>Always return <code><span style=\"font-weight: bolder;\">app</span></code> </td>\n</tr>\n<tr>\n<td>name</td>\n<td>App name</td>\n</tr>\n<tr>\n<td>platform</td>\n<td>iOS or Android</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>App-specific currency code </td>\n</tr>\n<tr>\n<td>time_zone</td>\n<td>App-specific timezone</td>\n</tr>\n<tr>\n<td>total_items</td>\n<td>Number of apps housed in the account</td>\n</tr>\n<tr>\n<td>links</td>\n<td>\n<p>Pagination mechanism (explained in the parameters section)</p>\n<ul>\n<li data-list-item-id=\"eaef99deedbf0d2239b66a5d57c136c9f\">prev: the call used to generate the previous page</li>\n<li data-list-item-id=\"e4d1b63df04877c8f54152f166a927944\">self: the call used to generate the current page</li>\n<li data-list-item-id=\"e1edd1e5e8f4dad5813f66aa0a8b96a06\">next: the call used to generate the next page</li>\n</ul>\n</td>\n</tr>\n</tbody>\n</table></figure></div>\n</div>\n<div class=\"accordion__item\">\n<h3 class=\"accordion__item-title\" id=\"h_01KQS56KS3EZCH1KBBQQKTXWYP\" data-title=\"get-app-list-curl-example-and-response\">Get app list cURL example and response</h3>\n<div class=\"accordion__item-content\">\n<p><strong>CURL request</strong></p>\n<p>This example includes a complete call, including optional pagination parameters. </p>\n<pre class=\"body-block language-json wysiwyg-code-block\"><code class=\"language-auto\">cURL --location --request GET 'https://hq1.appsflyer.com/api/mng/apps?limit=1000&amp;offset=0' \\\n-H 'Authorization: Bearer {API V2.0 token having more than 700 characters available to the admin in the dashboard.}' \\</code></pre>\n<p><strong>JSON response</strong></p>\n<pre class=\"body-block language-json wysiwyg-code-block\"><code class=\"language-auto\">{\n    \"data\": [\n        {\n            \"id\": \"com.appsflyer.xpend_qa1\",\n            \"type\": \"app\",\n            \"attributes\": {\n                \"name\": \"com.appsflyer.xpend_qa1\",\n                \"platform\": \"android\",\n                \"currency\": \"USD\",\n                \"time_zone\": \"UTC\"\n            }\n        },\n        {\n            \"id\": \"com.abc.app\",\n            \"type\": \"app\",\n            \"attributes\": {\n                \"name\": \"com.abc.app\",\n                \"platform\": \"android\",\n                \"currency\": \"USD\",\n                \"time_zone\": \"UTC\",\n                \"enable_retargetting\": true\n            }\n        },\n        {\n            \"id\": \"com.def.app\",\n            \"type\": \"app\",\n            \"attributes\": {\n                \"name\": \"com.def.app\",\n                \"platform\": \"android\",\n                \"currency\": \"JPY\",\n                \"time_zone\": \"UTC\"\n            }\n        }\n    ],\n    \"meta\": {\n        \"total_items\": 6\n    },\n    \"links\": {\n        \"self\": \"https://hq1.appsflyer.com/api/mng/apps?offset=0&amp;limit=1000\"\n           }\n}</code></pre>\n</div>\n</div>\n<div class=\"accordion__item\">\n<h3 class=\"accordion__item-title\" id=\"h_01KQS56KS3S04KDZ58J7XKQNCK\" data-title=\"http-response-codes\">HTTP response codes</h3>\n<div class=\"accordion__item-content\"><figure class=\"wysiwyg-table wysiwyg-table-align-left\" style=\"width: 621.212px;\"><table class=\"table--hover table--striped table--color-header\">\n<thead><tr>\n<th style=\"width: 59px;\">Code </th>\n<th style=\"width: 174px;\">Message</th>\n<th style=\"width: 353.212px;\">Remarks/troubleshooting</th>\n</tr></thead>\n<tbody>\n<tr>\n<td style=\"width: 59px;\">200</td>\n<td style=\"width: 174px;\">OK</td>\n<td style=\"width: 353.212px;\">Valid data returned</td>\n</tr>\n<tr>\n<td style=\"width: 59px;\">200</td>\n<td style=\"width: 174px;\">OK</td>\n<td style=\"width: 353.212px;\">\n<p><strong>Symptom</strong>: No data returns</p>\n<p><strong>Action</strong>: Make sure the authentication token is in the bearer header.</p>\n</td>\n</tr>\n<tr>\n<td style=\"width: 59px;\">400</td>\n<td style=\"width: 174px;\">Bad request</td>\n<td style=\"width: 353.212px;\">See the message contained in the JSON</td>\n</tr>\n<tr>\n<td style=\"width: 59px;\">401</td>\n<td style=\"width: 174px;\">Unauthorized</td>\n<td style=\"width: 353.212px;\">\n<p><strong>Message</strong>: Authorization token is malformed</p>\n<p>Make sure you have the correct token; token must have 700+ characters.</p>\n</td>\n</tr>\n<tr>\n<td style=\"width: 59px;\">404</td>\n<td style=\"width: 174px;\">Not found</td>\n<td style=\"width: 353.212px;\"><ul>\n<li data-list-item-id=\"eb76acd5e2bbbac7048f54d9f3f626d75\">Handle any network or firewall-related problems. </li>\n<li data-list-item-id=\"e33e59e8ba752a35cd5441cd32539ef41\">Make sure that AppsFlyer <a href=\"https://support.appsflyer.com/hc/en-us/articles/207447093-AppsFlyer-server-IP-address-ranges-allowlisting-\" target=\"_blank\" rel=\"noopener noreferrer\">IP addresses are allowlisted</a>\n</li>\n<li data-list-item-id=\"e481012da745a777cf24b100f83ca742e\">Make sure you use the most recently-issued token.</li>\n<li data-list-item-id=\"e2fc08641d0f3e07a66f4aa8c26fe68c6\">No data found: No apps found. </li>\n</ul></td>\n</tr>\n<tr>\n<td style=\"width: 59px;\">429</td>\n<td style=\"width: 174px;\">Too many requests</td>\n<td style=\"width: 353.212px;\">Exceeded rate limitation</td>\n</tr>\n</tbody>\n</table></figure></div>\n</div>\n</div>","user_segment_ids":[]}}