How to work with display campaigns

Display campaigns are ad campaigns where payment is based on Yandex.Direct impressions (not clicks). Ads are served in the Yandex Advertising Network on desktops and mobile devices. For more information, see Display campaigns in the Help for Yandex.Direct.

Campaign management

Restriction. To design creatives in the Ad Builder or upload creatives for display ads, you must use the web interface at this time.
  1. Create a campaign with the CPM_BANNER_CAMPAIGN type: pass the CpmBannerCampaign structure in the Campaigns.add method.

    For details about working with this type of campaign, see the section Campaign type.

    For information about available display strategies, see the section Display strategies.

    For information about other campaign parameters, see the section Campaign parameters.

  2. Create an ad group.

    You can add either a user profile target or keywords to an ad group. Depending on what impression criteria you plan to add, specify the group subtype:

    • To create a group with an audience target based on a user profile, use the AdGroups.add method to pass an empty CpmBannerUserProfileAdGroup structure.
      Note. Bid adjustments and negative keywords are not allowed in a group with an audience target based on a user profile.
    • To create a group with keywords, use the AdGroups.add method to pass an empty CpmBannerKeywordsAdGroup structure.
    You cannot change the group subtype in the future.
  3. Add impression criteria to the group.

    1. Get reference lists of Crypta segments based on demographic and behavioral characteristics, as well as lists of Crypta user interest segments: use the Dictionaries.get method and specify AudienceDemographicProfiles and AudienceInterests in the request.
    2. Create a user profile: use the RetargetingLists.add method.

      The user profile is implemented as a retargeting list of the AUDIENCE type. For more information about the profile, see the section Retargeting list (RetargetingList).

    3. Add a user profile to the ad group: the AudienceTargets.add method.

      If a manual display strategy is selected in the campaign, you can set a bid on the user profile immediately when adding the profile to an ad group or later using the AudienceTargets.setBids method.

  4. Add ads to the group:
    1. Design creatives in the Ad Builder or upload existing creatives in the Yandex.Direct web interface. See Create a display campaign in the Help for Yandex.Direct.
    2. Add one or more ads with the CPM_BANNER_AD type to the group by using the Ads.add method. Pass ad parameters in the CpmBannerAd structure.
  5. Submit ads for review: use the Ads.moderate method.

Getting statistics

To get statistics for campaigns with the “Display campaign” type, use the Reports service. The report can provide the average CPM, the average frequency of impressions per user, and the number of unique users who were shown a banner.

In the report request, specify:

  • In the Type parameter — the REACH_AND_FREQUENCY_PERFORMANCE_REPORT report type.
  • In the Filter structure — one or multiple IDs of display campaigns. A filter by campaign is required for this type of report.
  • In the FieldNames array, add the CampaignId, AvgCpm, AvgImpressionFrequency, and ImpressionReach values.

Request example

curl \
  -H 'Authorization: Bearer 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f' \
  -H 'Accept-Language: en' \
  -H 'Client-Login: agrom' \
  -H 'returnMoneyInMicros: false' \
  -d '{
    "params": {
      "SelectionCriteria": {
        "Filter": [{
          "Field": "CampaignId",
          "Operator": "IN",
          "Values": [ "10012", "10017" ]
      "FieldNames": [ "CampaignId", "Impressions", "Clicks", "Cost", "AvgCpm", "AvgImpressionFrequency", "ImpressionReach" ], 
      "OrderBy": [{
        "Field": "CampaignId"
      "ReportName": "Display campaigns",
      "DateRangeType": "LAST_WEEK",
      "Format": "TSV",
      "IncludeVAT": "YES",
      "IncludeDiscount": "YES"
  }' \