List Google Ads asset performance
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.
Authorizations
Personal API key.
Path Parameters
ID of the app whose Google Ads reporting you want to read.
Response
One entry per serving asset, grouped by its role.
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.
"customers/1234567890/assetGroupAssets/2145881234~9988776655~HEADLINE"
The role the asset plays, for example HEADLINE, LONG_HEADLINE, DESCRIPTION, MARKETING_IMAGE, LOGO, or YOUTUBE_VIDEO.
"HEADLINE"
The asset's text. Empty for images, logos and videos.
"Handmade oak furniture"
Google Ads' own name for the asset. Usually the only label an image, logo or video has.
"spring-hero-1200x628"
Google Ads asset type, for example TEXT, IMAGE, or YOUTUBE_VIDEO.
"TEXT"
Hosted URL for an image or logo asset. Empty for text and video assets.
"https://tpc.googlesyndication.com/simgad/1234567890"
Name of the campaign the asset serves in.
"Spring sale - Performance Max"
ID of the asset group the asset belongs to. Empty for logos, which attach to the campaign instead.
"9988776655"
Name of that asset group. Empty for the same reason.
"Spring sale - Asset Group"
Google Ads' strength rating for the asset group: POOR, AVERAGE, GOOD, EXCELLENT, or PENDING. Empty for logos.
"GOOD"
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.
"ELIGIBLE"
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.
"LEARNING"
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.
"dQw4w9WgXcQ"
Why the asset is limited or disapproved. Empty when it serves normally.
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.
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.
18400
Clicks over the same 30 days, with the same null and absent cases.
612
Spend over the same 30 days in micros, with the same null and absent cases.
412500000