Thursday, August 7, 2025


**What's changing?**


As [announced](https://blog.google/around-the-globe/google-europe/political-advertising-in-eu/) last year, Google will stop serving political advertising in the European Union ahead of a new regulation taking effect in October 2025. On September 3, 2025, the [Google Ads API](https://developers.google.com/google-ads/api/docs/start) and [Google Ads scripts](https://developers.google.com/google-ads/scripts/docs/start.md.txt) will roll out enforcements related to this change. If you use either of these products to create or manage campaigns, you may need to update your application to handle these enforcements before **September 3, 2025.**


**API support for self-declaration of EU political ads**


Google Ads API and Google Ads scripts have added support for self-declaration as to whether a campaign has EU political ads. Learn how an EU political ad is defined [here](https://support.google.com/adspolicy/answer/6014595). Versions v19.2, v20.1, and v21 of the API contain a new field named `contains_eu_political_advertising `in the `Campaign` object`.` The possible values and their meaning are shown in the table below.

<br />

|---|---|
| **Value** | **Meaning** |
| `CONTAINS_EU_POLITICAL_ADVERTISING` | The campaign has EU political ads. |
| `DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING` | The campaign does not have EU political ads. |
| `UNSPECIFIED` | The campaign is missing self-declaration about EU political ads. |


You can retrieve the self-declaration status of a campaign in Google Ads API by running the following query using either the `Search` or `SearchStream` methods of the `GoogleAdsService`. For Google Ads Scripts, use the `AdsApp.search` or `AdsApp.report` methods.

```
select campaign.id, campaign.contains_eu_political_advertising from campaign
```


If you use the [Google Ads API client libraries](https://developers.google.com/google-ads/api/docs/client-libs.md.txt), you may need to download the latest library version to use this functionality in versions v19 and v20 of the API.


**API validation \& enforcement changes**


On **September 3, 2025**, Google Ads API and Google Ads scripts will start enforcing the following checks in versions v19 and v20 of the API.

- All new campaigns created either through Google Ads API or Google Ads scripts should set the `contains_eu_political_advertising` field. The API call to create a new campaign using `CampaignService.MutateCampaigns` will fail with a `FieldError.REQUIRED` error if this field is not set. Google Ads Scripts will enforce these checks when creating campaigns using `AdsApp.mutate` or `AdsApp.mutateAll` methods.
- All the existing campaigns should set the `contains_eu_political_advertising` field before attempting to change `proximity, location,` or` location_group `targeting either at the campaign or ad group levels. The API call to create or update these campaign criteria using `CampaignCriterionService.MutateCampaignCriteria` method for existing campaigns will fail with a `CriterionError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION `error if the campaign hasn't completed the self-declaration. The API call to create or update these ad group criteria using `AdGroupCriterionService.MutateAdGroupCriteria` will also fail in a similar manner if the campaign hasn't completed the self-declaration. Google Ads scripts will enforce these checks when attempting to change targeting using `AdsApp.mutate`, `AdsApp.mutateAll`, `AdsApp.Campaign.addProximity`, and `AdsApp.Campaign.addLocation` methods.
- These enforcements also apply to other mechanisms that you can use to make campaigns, such as running [Batch Jobs](https://developers.google.com/google-ads/api/reference/rpc/v20/BatchJobService#runbatchjob) and using `GoogleAdsService.Mutate` method to create and update entities.
- Attempting to schedule a new experiment using `ExperimentService.ScheduleExperiment` method will throw an `ExperimentError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION `error if the `contains_eu_political_advertising declaration` is missing on the treatment draft campaigns.
- If you use the [bulk upload feature](https://support.google.com/google-ads/answer/10702932) in Google Ads scripts, check the product documentation to learn more about the spreadsheet template changes required as part of this change.


These checks are already enforced in version v21 of the Google Ads API.


**How will this affect my campaign serving?**


Any campaign that has declared EU political ads by setting `contains_eu_political_advertising` to` true` will stop serving ads in the EU on **September 22, 2025`.`** Refer to our [Help Center](https://support.google.com/adspolicy/answer/6014595) to learn more.


Existing campaigns without a declaration will remain unaffected for now. We recommend updating the existing campaigns in your accounts with an appropriate declaration as soon as possible. You can retrieve campaigns without a declaration using the following GAQL query using either the `Search` or `SearchStream` methods of the `GoogleAdsService`.

```
select campaign.id, campaign.contains_eu_political_advertising
  from
    campaign
  where
    campaign.contains_eu_political_advertising NOT IN
    (
       'CONTAINS_EU_POLITICAL_ADVERTISING',
       'DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING'
    )
```


**What do I need to do?**


If your application uses either Google Ads API or Google Ads scripts to create or manage campaigns, make sure to update your application to handle these enforcements before **September 3, 2025.**


**How do I get help?**


Reach out to the [Google Ads API support](https://developers.google.com/google-ads/api/support.md.txt)or [Google Ads scripts support](https://developers.google.com/google-ads/scripts/docs/support/contact.md.txt) channels if you have more questions about this change.

[![Portrait of the author](https://developers.google.com/static/ads/blog/images/AD_cMMRmfdsXvZhyLvWsLuqqcScxtYI0ih7DPGCk8lTee140NzXH=s300.jpg)](https://g.dev/anash) - [Anash P. Oommen](https://g.dev/anash), Google Ads API Team

**Labels:**

[campaign](https://developers.google.com/ads/blog/feeds/labels/campaign.md.txt),

[google-ads-api](https://developers.google.com/ads/blog/feeds/labels/google-ads-api.md.txt),

[google-ads-scripts](https://developers.google.com/ads/blog/feeds/labels/google-ads-scripts.md.txt)