{"page":"/blog/how-real-time-bidding-works","modified":"2026-11-10","license":"https://creativecommons.org/licenses/by/4.0/","columns":["Illustrative clock (ms)","Who acts","What happens","Where it shows in OpenRTB"],"rows":[["0","Browser or app","The page reaches an ad slot and asks for an ad; a header bidding wrapper may start a pre-auction","Not part of OpenRTB; Prebid.js bidderTimeout governs the wait"],["0 to 15","SSP","Reads consent, looks up the slot's settings and floors, builds the bid request","imp, site or app, device, user, regs"],["15","Exchange","Picks eligible DSPs, stamps the deadline, sends the request to each one at once","tmax, at, source.schain"],["15 to 45","Network","The request travels to each DSP's servers; this time counts against the deadline","Included in tmax"],["45 to 110","DSP","Parses the request, matches the user, checks targeting, budget and frequency, predicts value, shades the price","Internal to the DSP"],["By 135","DSP to exchange","The bid response arrives, or the DSP sends \"no bid\"; anything later is ignored","seatbid.bid.price, adm, dealid"],["135 to 145","Exchange","Drops bids below the floor or breaking blocks, ranks the rest, picks the winner","imp.bidfloor, bcat, badv"],["145 to 160","Publisher ad server","Compares the winner with direct campaigns and other demand, then chooses the ad","Outside OpenRTB"],["After 160","Browser, exchange, DSP","The creative loads; the exchange fires win and billing notices; losers may get a loss notice","nurl, burl, lurl"]],"sourceUrls":[[],[],[],[],[],[],[],[],[]]}