List Google Ads asset performance

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns every serving creative asset in the account's Performance Max campaigns, with its status, any policy limits, and its traffic over the trailing 30 days.

The 30-day window is fixed and does not follow a date parameter.

Google attributes Performance Max metrics per served asset, so these numbers do not add up to the asset group's or campaign's totals. Use them to rank creatives against each other, not to reconcile spend.

Three kinds of row arrive in one list. Assets inside an asset group carry the full shape. Logos attach to the campaign instead, so they have no asset group, no policy topics and no metrics at all. A campaign Google has not echoed back yet contributes rows built from the creative Base44 sent at launch, with a primary_status of GATHERING_DATA, an empty performance_label and no metrics.

<Note>Performance Max campaigns only. An account without one returns an empty list.</Note>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

get/api/apps/{app_id}/google-ads/analytics/asset-performance

Path parameters

app_idstring required

ID of the app whose Google Ads reporting you want to read.

ID of the app whose Google Ads reporting you want to read.

Response

One entry per serving asset, grouped by its role.

resource_namestring required

Google Ads resource name for the asset's link to its asset group or campaign. Empty on rows Base44 synthesized from the campaign's saved creative.

field_typestring required

The role the asset plays, for example HEADLINE, LONG_HEADLINE, DESCRIPTION, MARKETING_IMAGE, LOGO, or YOUTUBE_VIDEO.

textstring required

The asset's text. Empty for images, logos and videos.

asset_namestring required

Google Ads' own name for the asset. Usually the only label an image, logo or video has.

typestring required

Google Ads asset type, for example TEXT, IMAGE, or YOUTUBE_VIDEO.

image_urlstring required

Hosted URL for an image or logo asset. Empty for text and video assets.

video_idstring nullable

YouTube video ID for a YOUTUBE_VIDEO asset. Empty on other assets in an asset group, and absent entirely on logo rows and on rows Base44 synthesized from launch creative.

campaignstring required

Name of the campaign the asset serves in.

asset_group_idstring required

ID of the asset group the asset belongs to. Empty for logos, which attach to the campaign instead.

asset_group_namestring required

Name of that asset group. Empty for the same reason.

ad_strengthstring required

Google Ads' strength rating for the asset group: POOR, AVERAGE, GOOD, EXCELLENT, or PENDING. Empty for logos.

primary_statusstring required

Whether the asset can serve, for example ELIGIBLE, LIMITED, DISAPPROVED, or PENDING_REVIEW. GATHERING_DATA is Base44's own value, used on a row synthesized from launch creative that Google has not echoed back yet.

primary_status_reasonsstring[]

Why the asset is limited or disapproved. Empty when it serves normally.

policy_topicsstring[]

The Google Ads policy topics limiting the asset, without the generic status reasons primary_status_reasons also carries. Always empty for logos, which expose no policy detail, and absent on rows Base44 synthesized from launch creative.

performance_labelstring required

Base44's own band for the asset, since Google publishes no per-asset rating for Performance Max: LEARNING while the campaign is still in its launch window, then LOW, GOOD or EXCELLENT from the asset's click-through rate against a threshold for its field type. PENDING and DISAPPROVED pass the serving status through instead. Empty when the asset cannot be rated, which is permanent for logos and for rows Base44 synthesized from launch creative.

impressionsinteger nullable

Impressions over the trailing 30 days. null when Google reported no row for the asset in that window, and absent entirely on logos and on rows Base44 synthesized from saved creative.

clicksinteger nullable

Clicks over the same 30 days, with the same null and absent cases.

cost_microsinteger nullable

Spend over the same 30 days in micros, with the same null and absent cases.

Example response

[
  {
    "resource_name": "customers/1234567890/assetGroupAssets/2145881234~9988776655~HEADLINE",
    "field_type": "HEADLINE",
    "text": "Handmade oak furniture",
    "asset_name": "spring-hero-1200x628",
    "type": "TEXT",
    "image_url": "https://tpc.googlesyndication.com/simgad/1234567890",
    "video_id": "dQw4w9WgXcQ",
    "campaign": "Spring sale - Performance Max",
    "asset_group_id": "9988776655",
    "asset_group_name": "Spring sale - Asset Group",
    "ad_strength": "GOOD",
    "primary_status": "ELIGIBLE",
    "primary_status_reasons": [
      "TRADEMARKS_IN_AD_TEXT"
    ],
    "policy_topics": [
      "TRADEMARKS_IN_AD_TEXT"
    ],
    "performance_label": "LEARNING",
    "impressions": 18400,
    "clicks": 612,
    "cost_micros": 412500000
  }
]

Changes

Changed in 2 of the 11 revisions of this API.2