In October 2025, Google [stopped serving political advertising in the European
Union](https://blog.google/company-news/inside-google/around-the-globe/google-europe/political-advertising-in-eu/) ahead of a new political ads regulation. This guide summarizes
the support for the EU Political Ads Regulation in the Google Ads API.

## Support for self-declaration of EU political ads

Google Ads API supports self-declaring a campaign for [EU political ads](https://support.google.com/adspolicy/answer/6014595) using
the [`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_eu_political_advertising) field. The possible values and
their meaning are shown in the following table.

| 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`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService#search) or
[`SearchStream`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService#searchstream) methods of the `GoogleAdsService`.

    select campaign.id, campaign.contains_eu_political_advertising from campaign

## Campaign-level API validation and enforcement

All new campaigns created through the Google Ads API should set the
[`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_eu_political_advertising) field. The API call to create a
new campaign using [`CampaignService.MutateCampaigns`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignService#mutatecampaigns) fails with a
[`FieldError.REQUIRED`](https://developers.google.com/google-ads/api/reference/rpc/v26/FieldErrorEnum.FieldError#required) error if this field is not set.

> [!NOTE]
> **Note:** Starting in **`v26`** , `contains_eu_political_advertising` is optional for campaigns that don't positively target the European Union (contain no positive EU location, proximity, or location group criteria and at least one positive location criterion outside the EU). In earlier API versions, this field is required for all new campaigns.

All existing campaigns should set the
[`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_eu_political_advertising) field before attempting to change
[`proximity`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignCriterion#proximity), [`location`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignCriterion#location), or [`location_group`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignCriterion#location_group)
targeting either at the campaign or ad group levels. The API call to create or
update these campaign criteria using the
[`CampaignCriterionService.MutateCampaignCriteria`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignCriterionService#mutatecampaigncriteria) method for existing
campaigns fails with a
[`CriterionError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/CriterionErrorEnum.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 the
[`AdGroupCriterionService.MutateAdGroupCriteria`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdGroupCriterionService#mutateadgroupcriteria) method also fails
in a similar manner if the campaign hasn't completed the self-declaration.

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/v26/BatchJobService#runbatchjob) and using the
[`GoogleAdsService.Mutate`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService#mutate) method to create and update entities.
Attempting to schedule a new experiment using the
[`ExperimentService.ScheduleExperiment`](https://developers.google.com/google-ads/api/reference/rpc/v26/ExperimentService#scheduleexperiment) method throws an
[`ExperimentError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/ExperimentErrorEnum.ExperimentError#missing_eu_political_advertising_self_declaration)
error if the `contains_eu_political_advertising` declaration is missing on the
treatment draft campaigns.

## Account-level API validation and enforcement changes

Starting on **April 1, 2026** , if a Google Ads account has one or more undeclared
campaigns, the Google Ads API fails all mutate calls related to campaign management
with a [`MutateError.EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED`](https://developers.google.com/google-ads/api/reference/rpc/v26/MutateErrorEnum.MutateError#eu_political_advertising_declaration_required)
error. All other calls---such as reporting, account management, or keyword
planner---continue to work unaffected. See the [full list of
methods](https://developers.google.com/google-ads/api/docs/api-policy/eu-par#list-of-methods).

## How to declare existing undeclared campaigns

To declare existing undeclared campaigns, retrieve the list of eligible
campaigns, and set their [`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_eu_political_advertising)
declaration using the [`CampaignService.MutateCampaigns`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignService#mutatecampaigns) method, the
[GoogleAdsService.Mutate](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService/Mutate) method, or
the [BatchJobService](https://developers.google.com/google-ads/api/docs/batch-processing/overview). These methods
won't fail with a
[`MutateError.EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED`](https://developers.google.com/google-ads/api/reference/rpc/v26/MutateErrorEnum.MutateError#eu_political_advertising_declaration_required)
error as long as you only update the campaign's
`contains_eu_political_advertising` field.

You can retrieve the list of undeclared campaigns by running the following
Google Ads Query Language query using either the [`Search`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService#search) or [`SearchStream`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService#searchstream)
methods of the `GoogleAdsService`.

    select campaign.id
      from
        campaign
      where
        campaign.missing_eu_political_advertising_declaration = true

You can also declare undeclared campaigns on the Google Ads account level using the
Google Ads UI. The account level declaration status can be retrieved using the
[`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Customer#contains_eu_political_advertising) field of the `Customer` object.

## Effect on campaign serving

Any campaign that has declared EU political ads by setting
[`contains_eu_political_advertising`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#contains_eu_political_advertising) to `true` will stop serving ads in
the EU. [Learn more](https://support.google.com/adspolicy/answer/6014595).

Existing campaigns without a declaration will remain unaffected for now.

## List of enforced methods

All methods that are used for Google Ads campaign management are affected by the
[account-level validation and enforcement](https://developers.google.com/google-ads/api/docs/api-policy/eu-par#account-validation). A full list of
methods is listed in the following table.

| Service | Method |
|---|---|
| `AdGroupAdLabelService` | `MutateAdGroupAdLabels` |
| `AdGroupAdService` | `MutateAdGroupAds` |
| `AdGroupAdService` | `RemoveAutomaticallyCreatedAssets` |
| `AdGroupAssetService` | `MutateAdGroupAssets` |
| `AdGroupAssetSetService` | `MutateAdGroupAssetSets` |
| `AdGroupBidModifierService` | `MutateAdGroupBidModifiers` |
| `AdGroupCriterionCustomizerService` | `MutateAdGroupCriterionCustomizers` |
| `AdGroupCriterionLabelService` | `MutateAdGroupCriterionLabels` |
| `AdGroupCriterionService` | `MutateAdGroupCriteria` |
| `AdGroupCustomizerService` | `MutateAdGroupCustomizers` |
| `AdGroupLabelService` | `MutateAdGroupLabels` |
| `AdGroupService` | `MutateAdGroups` |
| `AdParameterService` | `MutateAdParameters` |
| `AdService` | `MutateAds` |
| `AssetGroupAssetService` | `MutateAssetGroupAssets` |
| `AssetGroupListingGroupFilterService` | `MutateAssetGroupListingGroupFilters` |
| `AssetGroupService` | `MutateAssetGroups` |
| `AssetGroupSignalService` | `MutateAssetGroupSignals` |
| `AssetService` | `MutateAssets` |
| `AssetSetAssetService` | `MutateAssetSetAssets` |
| `AssetSetService` | `MutateAssetSets` |
| `AudienceService` | `MutateAudiences` |
| `AutomaticallyCreatedAssetRemovalService` | `RemoveCampaignAutomaticallyCreatedAsset` |
| `BiddingDataExclusionService` | `MutateBiddingDataExclusions` |
| `BiddingSeasonalityAdjustmentService` | `MutateBiddingSeasonalityAdjustments` |
| `BiddingStrategyService` | `MutateBiddingStrategies` |
| `CampaignAssetService` | `MutateCampaignAssets` |
| `CampaignAssetSetService` | `MutateCampaignAssetSets` |
| `CampaignBidModifierService` | `MutateCampaignBidModifiers` |
| `CampaignBudgetService` | `MutateCampaignBudgets` |
| `CampaignConversionGoalService` | `MutateCampaignConversionGoals` |
| `CampaignCriterionService` | `MutateCampaignCriteria` |
| `CampaignCustomizerService` | `MutateCampaignCustomizers` |
| `CampaignDraftService` | `ListCampaignDraftAsyncErrors` |
| `CampaignDraftService` | `MutateCampaignDrafts` |
| `CampaignDraftService` | `PromoteCampaignDraft` |
| `CampaignGoalConfigService` | `MutateCampaignGoalConfigs` |
| `CampaignGroupService` | `MutateCampaignGroups` |
| `CampaignLabelService` | `MutateCampaignLabels` |
| `CampaignLifecycleGoalService` | `ConfigureCampaignLifecycleGoals` |
| `CampaignService` | `EnablePMaxBrandGuidelines` |
| `CampaignService` | `MutateCampaigns` |
| `CampaignSharedSetService` | `MutateCampaignSharedSets` |
| `ConversionActionService` | `MutateConversionActions` |
| `ConversionAdjustmentUploadService` | `UploadConversionAdjustments` |
| `ConversionCustomVariableService` | `MutateConversionCustomVariables` |
| `ConversionGoalCampaignConfigService` | `MutateConversionGoalCampaignConfigs` |
| `ConversionValueRuleService` | `MutateConversionValueRules` |
| `ConversionValueRuleSetService` | `MutateConversionValueRuleSets` |
| `CustomAudienceService` | `MutateCustomAudiences` |
| `CustomConversionGoalService` | `MutateCustomConversionGoals` |
| `CustomInterestService` | `MutateCustomInterests` |
| `CustomerAssetService` | `MutateCustomerAssets` |
| `CustomerAssetSetService` | `MutateCustomerAssetSets` |
| `CustomerConversionGoalService` | `MutateCustomerConversionGoals` |
| `CustomerCustomizerService` | `MutateCustomerCustomizers` |
| `CustomerLabelService` | `MutateCustomerLabels` |
| `CustomerLifecycleGoalService` | `ConfigureCustomerLifecycleGoals` |
| `CustomerNegativeCriterionService` | `MutateCustomerNegativeCriteria` |
| `CustomerSkAdNetworkConversionValueSchemaService` | `MutateCustomerSkAdNetworkConversionValueSchema` |
| `CustomizerAttributeService` | `MutateCustomizerAttributes` |
| `ExperimentArmService` | `MutateExperimentArms` |
| `ExperimentService` | `EndExperiment` |
| `ExperimentService` | `GraduateExperiment` |
| `ExperimentService` | `ListExperimentAsyncErrors` |
| `ExperimentService` | `MutateExperiments` |
| `ExperimentService` | `PromoteExperiment` |
| `ExperimentService` | `ScheduleExperiment` |
| `FeedService` | `MutateFeeds` |
| `GoalService` | `MutateGoals` |
| `LabelService` | `MutateLabels` |
| `LocalServicesLeadService` | `AppendLeadConversation` |
| `LocalServicesLeadService` | `ProvideLeadFeedback` |
| `OfflineUserDataJobService` | `AddOfflineUserDataJobOperations` |
| `OfflineUserDataJobService` | `CreateOfflineUserDataJob` |
| `OfflineUserDataJobService` | `RunOfflineUserDataJob` |
| `RecommendationService` | `ApplyRecommendation` |
| `RecommendationService` | `DismissRecommendation` |
| `RecommendationSubscriptionService` | `MutateRecommendationSubscription` |
| `RemarketingActionService` | `MutateRemarketingActions` |
| `SharedCriterionService` | `MutateSharedCriteria` |
| `SharedSetService` | `MutateSharedSets` |
| `SmartCampaignSettingService` | `MutateSmartCampaignSettings` |
| `UserListCustomerTypeService` | `MutateUserListCustomerTypes` |
| `UserDataService` | `UploadUserData` |
| `UserListService` | `MutateUserLists` |