App list API for ad networks

At a glance: Ad networks can retrieve metadata of apps associated with their integrated partner account.

Get app list API

The following sections include information necessary for using the API.

Get app list basics

Category Item


Request HTTP method GET

Authorization header 




Return in a JSON

Request limit
  • 20 requests/minute
  • 100 requests/day
Record limit

1,000 records/request. If more than 1,000 records are to return, use follow on pagination requests, described in this article.

API request

The API request consists of the method, path, mandatory capabilities parameter, and optional pagination parameters. The token is contained in the authorization header. 


Get app list mandatory parameters

Query parameter


To get the list and number of apps to which you have permission/integration capabilities: set the capabilities parameter to one of the options listed. 

Option Type Description
protect_360 Report permission Get Protect360 raw data reports for ad networks
cost  Integration App is enabled to get cost data via InCost API

Example: List of apps for which you have Protect360 report API permission:capabilities=protect_360

Pagination mechanism

A pagination mechanism, always operational, is implemented. 

Pagination principles: 

  • Returns up to 1,000 records per request (page).
  • Response JSONs contain the following pagination related keys:
    • meta.total_items: The number of records to be returned by all pages combined. This represents the number of apps for which you have been granted the capabilities being queried.
    • Pagination links (depicted in the JSON that follows) have the following keys:
      • links.prev: If there was a previous request: the request used to generate the previous page.
      • links.self: The current request: the request used to generate the current JSON (page)
      • The request required to get the next page. If there is no next key, this is the last page. 

 Use one of the following pagination control methods:

  • [Best practice] Use the links in the JSON: If the key exists, use it to create a request to get the next page. Continue to do so until you receive a JSON without a key.
  • Programatically implement limit and offset parameters in conjunction with the total_items key.

Pagination links JSON example

  • The example that follows contains the result of the first request, consisting of the second request containing two records in the data section (not displayed). 
  • The total number of records to return is 6.
  • The key contains the request that returns the next page—records 5 and 6. 
    "data": {[...]},   
    "meta": {
        "total_items": 6
    "links": {
        "prev": "",
        "self": "",
        "next": ""
Pagination mechanism parameters (optional)

Query parameter


Number of records that return per call

  • Maximum: 1,000
  • If you don't sendlimit, it is automatically set to 1,000.
  • Example: limit=2
  • Mandatory: No

The first record to return in the call. Record numbers start with 0. 

  • If you don't send offset, it is automatically set to 0.
  • Example: offset=2
  • Mandatory: No

JSON response




App ID, for example: id123456789,


Always return app 


App name


iOS or Android


App-specific currency code as set by the advertiser


App-specific timezone as set by the advertiser


Number of apps to which the ad network has the requested capabilities option


Pagination mechanism (explained in the parameters section)

  • prev: the call used to generate the previous page
  • self: the call used to generate the current page
  • next: the call used to generate the next page

Get app list curl example and response

Curl request

This example includes a complete call, including optional pagination parameters. 

curl --location --request GET '' \
-H 'Authorization: Bearer {API V2.0 token available to the admin in the dashboard.}' \

JSON response

    "data": [
            "id": "com.appsflyer.xpend_qa1",
            "type": "app",
            "attributes": {
                "name": "com.appsflyer.xpend_qa1",
                "platform": "android",
                "currency": "USD",
                "time_zone": "UTC"
            "id": "",
            "type": "app",
            "attributes": {
                "name": "",
                "platform": "android",
                "currency": "USD",
                "time_zone": "UTC",
                "enable_retargetting": true
            "id": "",
            "type": "app",
            "attributes": {
                "name": "",
                "platform": "android",
                "currency": "JPY",
                "time_zone": "UTC"
    "meta": {
        "total_items": 3
    "links": {
        "self": ""

HTTP response codes

Response codes




200 OK

Valid data returned

200 OK

Symptom: No data returns

Action: Make sure the authentication token is in the bearer header.

400 Bad request
  • See the message contained in the JSON
  • Empty JSON: illegal capability specified
401 Unauthorized

Message: Authorization token is malformed

Make sure you have the correct token; token must have 700+ characters.

404 Not found
  • Handle any network or firewall-related problems. 
  • Make sure that AppsFlyer IP addresses are allowlisted
  • Make sure you use the most recently-issued token.
  • No data found: The permission/integration (capabilities) type requested is legal, but no apps with permission were found. 
429 Too many requests

Exceeded rate limitation

Was this article helpful?

Articles in this section