Incremental Reports
Stay organized with collections
Save and categorize content based on your preferences.
The new Search Ads 360 Reporting API is now available. The new API provides
enhanced flexibility to build custom reports and integrate the data into your reporting applications
and processes. Learn more about migrating to and using the
new Search Ads 360 Reporting
API.
Instead of receiving a dump of all data every time you request a report, you can
periodically request only the data that has changed since your last report. These
incremental reports will likely be significantly smaller than a full report.
If you request incremental reports, you should be aware of the following:
- It's still a good idea to request a full report every once in a while, just in
case some incremental changes are lost. For example, if you request weekly incremental
reports during January, at the end of February you should request a full report for
January to make sure you get all of the January data.
- Since it isn't always possible to determine if some entities have changed, an
incremental report will contain an entity if Search Ads 360 even suspects that the entity
has changed. This means that incremental reports might contain data that hasn't
changed.
To request an incremental report, specify one of the following Reports.request.timeRange
properties:
changedMetricsSinceTimestamp=timestamp
Requests metrics that have changed since the specified timestamp. Because metrics are
stored at a daily granularity and might change for one day but not another, such
requests must be segmented by day (the date
column must be present). For
example, a keyword
report with the columns
clicks
, actions
, and date
, would
return a row for each keyword and date in which the recorded number of
clicks or actions has changed since the given timestamp.
The timestamp must be no earlier than 8 days before the time of request. To capture
all of the changing metrics, be sure to make a changedMetricsSinceTimestamp
request at least once every 7 days, and make a full report for each date
once the metrics have settled (it is safer to wait at least 7 days). An
example pattern is to create two reports every day: an incremental
report for metrics that have changed in the last 36 hours, and a full
report for metrics that occurred 8 days ago.
changedAttributesSinceTimestamp=timestamp
Requests attributes that have changed since the given timestamp. A
changedAttributesSinceTimestamp
request can only include
attribute columns (no metric or segment columns), and does not work for
raw event reports such as
conversion
reports. For example, a
campaign
report with the columns dailyBudget
and campaignStartDate
would return a row for each campaign
whose daily budget or start date has changed since the given timestamp.
Note that changes to parent attributes are not captured in
changedAttributesSinceTimestamp
reports. For example a
keyword may inherit its bid strategy from the parent ad group.
Even if the ad group is assigned a new bid strategy, this keyword
might not appear in the report. Attribute columns whose value depends
on parent entities (and therefore could change without getting picked
up by changedAttributesSinceTimestamp
reports) usually
have the prefix "effective", such as effectiveLabelIds
or
effectiveBidStartegy
.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
[null,null,["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe new Search Ads 360 Reporting API offers increased flexibility for creating custom reports and integrating data into your workflows.\u003c/p\u003e\n"],["\u003cp\u003eIncremental reports allow you to retrieve only the data that has changed since your last request, making reports smaller and more efficient.\u003c/p\u003e\n"],["\u003cp\u003eIt is recommended to periodically request full reports in addition to incremental reports to ensure all data is captured.\u003c/p\u003e\n"],["\u003cp\u003eIncremental reports can be requested based on either changed metrics or changed attributes using specific time range properties.\u003c/p\u003e\n"],["\u003cp\u003eWhile \u003ccode\u003echangedAttributesSinceTimestamp\u003c/code\u003e requests provide efficient updates for attributes, changes to parent attributes might not be reflected, necessitating awareness of potential data discrepancies.\u003c/p\u003e\n"]]],["The new Search Ads 360 Reporting API allows users to build custom reports and integrate data into their applications. It offers incremental reports, which retrieve only data that has changed since the last request, reducing report size. Users can request changes in metrics (`changedMetricsSinceTimestamp`) or attributes (`changedAttributesSinceTimestamp`). Full reports are still recommended periodically to ensure no data is missed. For `changedMetricsSinceTimestamp`, data must be segmented by day and should be requested every seven days. Changed attributes only report changes to the attribute itself, not inherited changes from parent.\n"],null,["# Incremental Reports\n\nThe new Search Ads 360 Reporting API is now available. The new API provides enhanced flexibility to build custom reports and integrate the data into your reporting applications and processes. Learn more about migrating to and using the [new Search Ads 360 Reporting\nAPI](https://developers.google.com/search-ads/reporting/overview).\nInstead of receiving a dump of all data every time you request a report, you can\nperiodically request only the data that has changed since your last report. These\nincremental reports will likely be significantly smaller than a full report.\n\nIf you request incremental reports, you should be aware of the following:\n\n- It's still a good idea to request a full report every once in a while, just in case some incremental changes are lost. For example, if you request weekly incremental reports during January, at the end of February you should request a full report for January to make sure you get all of the January data.\n- Since it isn't always possible to determine if some entities have changed, an incremental report will contain an entity if Search Ads 360 even *suspects* that the entity has changed. This means that incremental reports might contain data that hasn't changed.\n\n\nTo request an incremental report, specify one of the following ` `[Reports.request.timeRange](/search-ads/v2/reference/reports#request.timeRange)`\n` properties:\n\n`changedMetricsSinceTimestamp=`*timestamp*\n\n: Requests metrics that have changed since the specified timestamp. Because metrics are\n stored at a daily granularity and might change for one day but not another, such\n requests must be segmented by day (the `date` column must be present). For\n example, a `keyword` report with the columns\n `clicks`, `actions`, and `date`, would\n return a row for each keyword and date in which the recorded number of\n clicks or actions has changed since the given timestamp.\n\n\n The timestamp must be no earlier than 8 days before the time of request. To capture\n all of the changing metrics, be sure to make a `changedMetricsSinceTimestamp`\n request at least once every 7 days, and make a full report for each date\n once the metrics have settled (it is safer to wait at least 7 days). An\n example pattern is to create two reports every day: an incremental\n report for metrics that have changed in the last 36 hours, and a full\n report for metrics that occurred 8 days ago.\n\n`changedAttributesSinceTimestamp=`*timestamp*\n\n: Requests attributes that have changed since the given timestamp. A\n `changedAttributesSinceTimestamp` request can only include\n attribute columns (no metric or segment columns), and does not work for\n raw event reports such as\n [`conversion`](/search-ads/v2/report-types/conversion) reports. For example, a\n `campaign` report with the columns `dailyBudget`\n and `campaignStartDate` would return a row for each campaign\n whose daily budget or start date has changed since the given timestamp.\n\n\n Note that changes to parent attributes are not captured in `changedAttributesSinceTimestamp` reports. For example a keyword may inherit its bid strategy from the parent ad group. Even if the ad group is assigned a new bid strategy, this keyword might not appear in the report. Attribute columns whose value depends on parent entities (and therefore could change without getting picked up by `changedAttributesSinceTimestamp` reports) usually have the prefix \"effective\", such as `effectiveLabelIds` or `effectiveBidStartegy`.\n\n \u003cbr /\u003e"]]