Back to Bidders

JW Player

Features

Bidder Code jwplayer Prebid.org Member yes
Prebid.js Adapter yes Prebid Server Adapter no
Media Types video Multi Format Support check with bidder
TCF-EU Support yes IAB GVL ID 1046
GPP Support check with bidder DSA Support yes
USP/CCPA Support yes COPPA Support yes
Supply Chain Support yes Demand Chain Support check with bidder
Safeframes OK check with bidder Supports Deals yes
Floors Module Support yes First Party Data Support yes
User IDs all (with commercial activation) ORTB Blocking Support check with bidder
Privacy Sandbox check with bidder

Table of contents

Introduction

The JW Player Bid Adapter allows publishers to tap into JW Player’s Video Advertising Demand. Publishers are not required to use JW Player as a video player. Instream and outstream video ads are supported.

Modules to include in your build process

You will need to include the jwplayerBidAdapter in your build. If you are building the JS binary on your own from source code, follow the instructions in Prebid.js project README. We recommend including the jwplayerVideoProvider to connect Prebid.js to your JW Player instance via the Prebid Video Module. If you are not using the JW Player Video Provider, we suggest including the JW Player Real Time Data Provider jwplayerRtdProvider in order to include JW Player’s contextual ad targeting segments in your bid requests.

The following is an example build command that include these modules:
gulp build --modules=jwplayerBidAdapter,jwplayerVideoProvider
or
gulp build --modules=jwplayerBidAdapter,jwplayerRtdProvider

If you are using a JSON file to specify modules, add jwplayerBidAdapter, jwplayerVideoProvider and jwplayerRtdProvider to the modules array as follows:

[
    "jwplayerBidAdapter",
    "jwplayerVideoProvider"
]

or

[
    "jwplayerBidAdapter",
    "jwplayerRtdProvider"
]

Bid Params

We support all oRTB params and encourage populating as many as possible.

Required Bidder params

You must include the following parameters at the bidder level, in adUnit.bids[index].params.

Name Scope Type Description
siteId Required String Site-specific id that is provided by JW Player.
publisherId Required String Publisher-specific id that is provided by JW Player.
placementId Required String Placement-specific id that is provided by JW Player.

mediaTypes.video

We recommend populating as many params as possible in adUnit.mediaTypes.video. When using the jwplayerVideoProvider, these fields are populated automatically.

Name Scope Type Description
video.w Recommended Integer Populated automatically when using the jwplayerVideoProvider. The width of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters.
video.h Recommended Integer Populated automatically when using the jwplayerVideoProvider. The height of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters.
video.plcmt Recommended Integer The video’s placement type, where:
- 1 = Instream
- 2 = Accompanying Content
- 3 = Interstitial
- 4 = No Content/Standalone

First Party Data (FPD)

In release 4.30 and later, publishers who are not using the jwplayerVideoProvider or jwplayerRtdProvider can use the ortb2 method of setting First Party Data. The following fields are required:

Name Scope Type Description
site.content.url Required string Populated automatically when the jwplayerVideoProvider or jwplayerRtdProvider are included. This is the URL of the media being rendered in the video player, for buy-side contextualization or review. This needs to be accessible (w/o DRM, Geo-blocking etc.) and without parameters (Such as size, quality etc.)
site.page Required string URL of the page where the impression will be shown.

To supply data that is accessible to all bidders, use the [pbjs.setConfig()] object as illustrated below. Use the [setBidderConfig()] function to supply bidder-specific data. For more information about the standard or more detailed examples, see Prebid’s First Party Data Feature documentation.

pbjs.setConfig({
    ortb2: {
        site: {
                    ...
               },
        user: {
                    ...
               }
            }
});

Examples

With the JW Player Video Provider

const adUnit = {
    code: 'test-ad-unit',
    mediaTypes: {
      video: {} // automatically populated by the Video Provider
    },
    video: {
      divId: 'player', // required to indicate which player is being used to render this ad unit.
    },
    
    bids: [{
      bidder: 'jwplayer',
      params: {
        publisherId: 'test-publisher-id',
        siteId: 'test-site-id',
        placementId: 'test-placement-id'
      }
    }]
};

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

pbjs.que.push(function () {
    pbjs.setConfig({
      video: {
          providers: [{
              divId: 'player', // must match the divId in the adUnit
              vendorCode: 1, // JW Player vendorCode
              playerConfig: {
                  licenseKey: 'LICENSE_KEY_HERE',
                  params: {
                      vendorConfig: {
                          mediaid: 'XYXYXYXY',
                          file: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4',
                          title: 'Subaru Outback On Street And Dirt',
                          description: 'Smoking Tire takes the all-new Subaru Outback to the highest point we can find in hopes our customer-appreciation Balloon Launch will get some free T-shirts into the hands of our viewers.',
                          advertising: {client: 'googima'}
                      }
                  }
              }
          }],
      }
    });
});

pbjs.addAdUnits([adUnit]);

With the JW Player RTD Provider

const adUnit = {
    code: 'test-ad-unit',
    mediaTypes: {
      video: {
        pos: 0,
        w: 640,
        h: 480,
        mimes :  ['application/vnd.apple.mpegurl', 'video/mp4'],
        minduration : 0,
        maxduration: 60,
        protocols : [2,3,7,5,6,8],
        startdelay: 0,
        placement: 1,
        plcmt: 1,
        skip: 1,
        skipafter: 10,
        playbackmethod: [3],
        api: [2],
        linearity: 1
      }
    },
    bids: [{
      bidder: 'jwplayer',
      params: {
        publisherId: 'test-publisher-id',
        siteId: 'test-site-id',
        placementId: 'test-placement-id'
      }
    }]
};

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

pbjs.que.push(function() {
  pbjs.setConfig({
    realTimeData: {
      dataProviders: [{
        name: "jwplayer",
        waitForIt: true,
        params: {
          mediaIDs: ['test-media-id'],
          overrideContentUrl: 'always',
          overrideContentId: 'always',
          overrideContentTitle: 'always',
          overrideContentDescription: 'always'
        }
      }]
    },
    ortb2: {
      site: {
        content: {
          url: 'test.mp4' // Necessary only when bidding before the JW Player instance is instantiated. 
        }
      }
    }
  });
});

Without the JW Player additional modules

const adUnit = {
    code: 'test-ad-unit',
    mediaTypes: {
      video: {
        pos: 0,
        w: 640,
        h: 480,
        mimes :  ['application/vnd.apple.mpegurl', 'video/mp4'],
        minduration : 0,
        maxduration: 60,
        protocols : [2,3,7,5,6,8],
        startdelay: 0,
        placement: 1,
        plcmt: 1,
        skip: 1,
        skipafter: 10,
        playbackmethod: [3],
        api: [2],
        linearity: 1
      }
    },
    bids: [{
      bidder: 'jwplayer',
      params: {
        publisherId: 'test-publisher-id',
        siteId: 'test-site-id',
        placementId: 'test-placement-id'
      }
    }]
};

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

pbjs.que.push(function() {
  pbjs.setConfig({
    ortb2: {
      site: {
        content: {
          url: 'test.mp4'
        },
        page: 'your-page-url'
      }
    }
  });
});

"Send All Bids" Ad Server Keys

These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.
hb_pb_jwplayer hb_bidder_jwplayer hb_adid_jwplayer
hb_size_jwplayer hb_source_jwplayer hb_format_jwplayer
hb_cache_host_jwplay hb_cache_id_jwplayer hb_uuid_jwplayer
hb_cache_path_jwplay hb_deal_jwplayer

Back to Bidders