Using Pull API raw-data

At a glance: Use URIs to get raw data reports in CSV files.


 Are you looking for Pull API aggregate data?

Pull API aggregate data

Pull API raw data characteristics

  • Descriptions of raw data report contents
  • Reports return as CSV files.
  • Data freshness rates are the same as the equivalent report on the Export Data page.
  • The filter by options are the same as in the Export Data page being: Media source, date range, in-app event name. 
  • Additional capabilities in Pull API are:
    • Selectable timezone 
    • The currency of raw data reports is selectable
  • Pull API is suited to use by team members and BI developers;

Example URI template


Raw data reports
Category Description Organic


User acquisition Installs 
In-app events 
Non-organic uninstalls  -
Ad revenue* Ad revenue user-level
Retargeting -
Protect360 Blocked installs  -
Blocked in-app events -
Post-attribution installs -
Post-attribution in-app events -
Retargeting Retargeting conversions
Retargeting in-app events
Validation rules Invalid installs -
* Data freshness rate: Ad revenue

 Related reading:


Term Description
Pull API 

Solution for downloading CSV reports using URIs.

API call or call 

Sending the URI to AppsFlyer by pasting it in the browser address bar or by using scripts.

  • Uniform resource identifier sometimes similar to a web address (URL) containing the report specification.
  • Template URIs are available on the API page in the Dashboard.

Guide for team members

About URI templates

  • URI templates available in the dashboard are populated with the app ID and report type.
  • They have place holders for the API token and from/to dates which you need to edit.
  • The portion of the URI to the right of the question mark (?) contains parameters. Each parameter begins with an ampersand (&). Parameters are used to set filters, specify additional fields to be included, currency, and timezone. For example, in raw data reports to limit (filter by) a specific media source, use the media_source parameter: &media_source=facebook
  • To get a better understanding of Pull API, complete the tutorial that follows.

Getting your first Pull API report tutorial

Before you begin:
  • Ask the admin to provide you with the Pull API token available in the dashboard.

To download a report from the dashboard: 

  1. Go to Integration > API access.
    The API access page opens. rawdatareports_en-us.jpg
  2. Select a report type. For example, Raw data reportsRetargeting conversions. 
    The URI template displays. 
  3. Copy the URI by clicking on it.
  4. Open a new tab in your browser, paste the URI.
  5. Edit the URI:
    1. Replace the token placeholder with the Pull API token provided by the admin.
      Example. Replace the token placeholder so that &api_token=12345678-1234-1234-1234-123456789012. Note! There are no spaces or other punctuation. 
    2. Replace the from/to placeholders with dates.
      Example: &from=2020-01-20&to=2020-01-31 Note! There are no spaces. Don't delete the &. 
  6. Click <Enter> to send the API call. 
    The report downloads.

Raw data Pull API parameters

URI parameters raw data

Parameter Description
api_token API Authorization token. In example calls, this is shown as: <API TOKEN HERE>. 
  • The date range consists of a fromand to parameters. The dates relate to the activity date.
  • Format: yyyy-mm-ddyyyy-mm-dd hh:mm, or yyyy-mm-dd hh:mm:ss Note!: The space needs to be encoded as shown here from=2020-04-01%2001:00 - In general browsers will encode the space. 
  • Example: 2010-01-01 or 2010-01-01 20:15 (Hours and minutes parameters available for raw data reports). 
to End date. As for from
Raw data optional parameters
Parameter Description


media_source: To limit (filter) the call to a specific media source. Set both the media_source and category parameters as follows:

  • For Facebook set category and media source to facebook
  • For Twitter set category and media source to twitter
  • For all other media sources set category to standard and media source to the name of the media source.
  • Examples
    • media_source=facebook&category=facebook
    • media_source=abc_example&category=standard

Maximum number of rows returned by a single API call.

  • [Default] if no value is sent, up to 200K rows
  • 200000 : Up to 200K rows return
  • 1000000: Up to 1M rows return
  • Example: maximum_rows=1000000 enables up to 1M rows. 

Filter in-app events by specified events. Select multiple events by using a comma-separated list.



Set retargeting attribution data.

  • [Default] If false, user acquisition data (UA) campaigns returns.
  • If true, retargeting attribution data returns.
  • Example:reattr=true

To get additional fields in addition to the default fields. 

Example: additional_fields=device_donwload_time,deeplink_url


Currency of the revenue and cost

  • [Default] If the parameter is not sent, data returns as USD. Meaning, do nothing and results return in USD.
  • If you send, currency=preferredthe app-specific currency is used. Meaning the currency set in the app settings.

Example: If the app-specific currency is EUR, by sending currency=preferred the values return in EUR.


[Default] Data returns using UTC.

  • To get data in the app-specific timezone, add timezone as shown in this section to the call: 
  •  timezone=[Numerical value] 
  • Example: For time zone UTC+10:00 usetimezone=+10:00 Note!: The +,-, and : need to be encoded. Example: +10:00 encodes to %2B10%3A00

Time range by date and time

If the results exceed the maximum, split the report using hours and minutes. Apply the following:

  • from/to: yyyy-mm-dd hh:mm 
  • from: 
    • Date only = from the beginning (00:00) of the chosen date
    • Date and time = from and including 00:00
  • Parameter to: 
    • Date only = up to the end (24:00) of the chosen day
    • Date and time = up to, but not including, the shown time

Example: An app owner has 1300K daily installs from all sources. To overcome the 1M row limit, the app owner splits the day into two 12-hour URI calls. See the following table for options. 

API call From  To 
First API call 



  • from=2019-12-29
  • Begins on this date at the beginning of the day at 00:00

to=yyyy-mm-dd 12:00


  • to=2019-12-29 12:00
  • Continues up to 11:59:59, not 12:00 

Option A: Second API call 



&from=2019-12-29 12:00&to=2019-12-29

  • Starts noon 29 Dec 2019
  • Ends midnight 29 Dec 2019

from=yyyy-mm-dd 12:00


  • from=2019-12-29 12:00
  • Starts from and includes 12:00




  • to=2019-12-29
  • Ends at midnight


Option B: Second API call

from=yyyy-mm-dd 12:00


  • from=2019-12-29 12:00
  • Starts from and includes 12:00

to=yyyy-mm-dd+1 00:00

+1 = next day at 00:00


  • to=2019-12-30 00:00
  • Meaning before any time has elapsed on 30 Dec.

Note! Use option A or B as they have the same results. 

Additional fields

Report fields are not added to the default list of fields so that new fields don't impact your import and ingestion processes. Use the additional_fields parameter to get non-default fields.

  • List a field only once.
  • See the list of available fields.
  • Some URI examples include additional fields. If necessary, add more fields. 
  • Example: additional_fields=device_download_time,deeplink_url
  • Results are always returned for the fields listed in the table below.


URI call example with additional fields:<APP ID HERE>/installs_report/v5?
        api_token=<API TOKEN HERE>&from=yyyy-mm-dd&to=yyyy-mm-dd
Default Pull API fields
Attributed Touch Time
Install Time
Event Time
Event Name
Event Value
Event Revenue
Event Revenue Currency
Event Revenue USD
Event Source
Is Receipt Validated
Media Source
Campaign ID
Adset ID
Ad Type
Site ID
Sub Site ID
Sub Param 1
Sub Param 2
Sub Param 3
Sub Param 4
Sub Param 5
Cost Model
Cost Value
Cost Currency
Contributor 1 Partner
Contributor 1 Media Source
Contributor 1 Campaign
Contributor 1 Touch Type
Contributor 1 Touch Time
Contributor 2 Partner
Contributor 2 Media Source
Contributor 2 Campaign
Contributor 2 Touch Type
Contributor 2 Touch Time
Contributor 3 Partner
Contributor 3 Media Source
Contributor 3 Campaign
Contributor 3 Touch Type
Contributor 3 Touch Time
Country Code
Postal Code
AppsFlyer ID
Advertising ID
Android ID
Customer User ID
Device Type
OS Version
App Version
SDK Version
App ID
App Name
Bundle ID
Is Retargeting
Retargeting Conversion Type
Attribution Lookback
Reengagement Window
Is Primary Attribution
User Agent
HTTP Referrer
Original URL

Pull API for developers

To implement Pull API raw-data using scripts consult the Pull API aggregate data article. 

Additional information

Differences between Pull API V4 and V5. 

Raw data: API V4 is still available for use. No changes are made to file formats and headers.

Traits and limitations

Trait Status Comments 
Ad network access  -  
Agency access  
Agency transparency  
App-specific currency  
App-specific timezone  
Data freshness -
  • Supports real-time updates.
  • Equivalent to the availability of the data in the dashboard.
  • Reports updated with a lag of a few hours:
    • Organic in-app events
  • Reports updated Daily:
    • Uninstalls
    • Post-attribution in-app events
    • Ad revenue
Historical data  
Non-organic data  
Organic data  
Rate limitation

API limitations for raw data

Size limitations Yes
  • API calls return a max. of 200K/1M rows.
  • If a report has exactly 200K/1M rows, then assume rows are missing.
  • Use the maximum_rows parameter to select the maximum number of rows.
  • Make multiple API calls, using from/to parameters that include the time of day.  
Team member access

Only the admin can get a Pull API token.

API error codes and troubleshooting

Error codes and solutions
Status Code Symtom/message Solution
OK 200 Empty CSV file

addtional_fieldsappears more than once in the URI



Empty CSV file

Ensure that both from and to dates have the format yyyy-mm-dd

Bad request


Raw Reports historical lookback is limited to 90 days.

Use to and from to limit the date range to 3 months or less.

Bad request


Your API calls limit has been reached for report type



Supplied API token is invalid 

Ask the admin for the current token


Account may be suspended.

Log in to the dashboard and check the account status. 

Not found



The token doesn't match the app. Ask the admin to give you the current token. 

Was this article helpful?