Open Bidding Mediation Beta

This guide is intended to help you integrate Open Bidding mediation into your iOS app.


Doublecheck your AdMob App ID in your Info.plist

If you completed the prerequisites, you should already have your AdMob app ID in your Info.plist file:

Property List Editor

Load ads only after initialization completes

The quick start guide shows you how to initialize mobile ads. Open bidding adapters must complete initialization before they can participate in an ad request. It is important to wait for the initialization completionHandler to be invoked before you load ads in order to ensure full participation from every ad network on the first ad request. Sample code for how to do this is shown below:


import GoogleMobileAds

class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    let ads = GADMobileAds.sharedInstance()
    ads.start { status in
      // Optional: Log each adapter's initialization latency.
      let adapterStatuses = status.adapterStatusesByClassName
      for adapter in adapterStatuses {
        let adapterStatus = adapter.value
        NSLog("Adapter Name: %@, Description: %@, Latency: %f", adapter.key,
        adapterStatus.description, adapterStatus.latency)

      // Start loading ads here...

    return true



@import GoogleMobileAds;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  GADMobileAds *ads = [GADMobileAds sharedInstance];
  [ads startWithCompletionHandler:^(GADInitializationStatus *status) {
    // Optional: Log each adapter's initialization latency.
    NSDictionary *adapterStatuses = [status adapterStatusesByClassName];
    for (NSString *adapter in adapterStatuses) {
      GADAdapterStatus *adapterStatus = adapterStatuses[adapter];
      NSLog(@"Adapter Name: %@, Description: %@, Latency: %f", adapter,
            adapterStatus.description, adapterStatus.latency);

    // Start loading ads here...
  return YES;


If ads are loaded before an open bidding adapter has finished initializing, that adapter won't participate in the ad request.

The initialization completionHandler is called once all open bidding adapters have been initialized, or after a 10 second timeout, whichever is sooner. If your first ad request is time sensitive, you can always check the initializationStatus property on GADMobileAds at any time to see which adapters have been initialized.

Choose your open bidding networks

For each open bidding partner, you'll need to make changes in these places:

Third-party ad network UI
Sign up for the third-party ad network and create a placement in their UI.
AdMob UI
Update your ad unit's mediation settings to include the ad network.
App code
Update your app to include the third-party ad network's SDK, and an adapter library that communicates between Google and the third-party ad network to request and serve ads.

The ad network guides linked below walk you through each of these steps. Select an ad network below to get started.

Ad Network Banner Interstitial Rewarded Video Native Advanced


The presence of the a3p parameter in the ad request to Google indicates that at least one open bidding network is properly integrated into your app. If a3p isn't in the ad request, here are potential reasons why:

  • You did not initialize the mobile ads SDK using the new initialization method.
  • You loaded the ad before the third-party ad network's SDK was initialized. To ensure all open bidding partners can participate, we recommend waiting to load an ad until after your the completion handler you passed into startWithCompletionHandler: gets called.
  • Your AdMob ad unit doesn't target a mediation group that has an open bidding entry configured for that third-party ad network.
  • Your AdMob ad unit belongs to a different AdMob app than the one you initialized with. When initialization occurs, the Google Mobile Ads SDK only pulls down information about the ad units from the AdMob app ID you initialized.