Real-Time Bidding (RTB)
From Concept to Specification

First, understand how RTB works in plain language. Then, dive deep into OpenRTB 2.6 โ€” from bid request objects to bid response structure, win notices, and the complete DSP decision pipeline.

bolt Part 1: What is Real-Time Bidding (RTB)?

Real-Time Bidding (RTB) is the automated auction process where ad impressions are bought and sold individually in milliseconds. According to the OpenRTB specification, RTB enables "bidding for individual impressions in real-time (i.e., while a consumer is waiting)."

Unlike traditional media buying where inventory is purchased in bulk at fixed prices, RTB evaluates each impression separately, allowing advertisers to bid exactly what an impression is worth to them โ€” based on the user, context, and real-time data. This impression-level optimization is what makes programmatic advertising so powerful and efficient.

โฑ๏ธ 150ms
Average auction time
๐Ÿ“Š 200B+
Daily bid requests
๐Ÿ’ฐ $600B+
Annual spend
๐Ÿ”— OpenRTB 2.6
Current specification
โฌ‡๏ธ The RTB Journey: 0ms โ†’ 150ms (Vertical Flow)
0-50ms

๐Ÿ“ User Lands on Website

Sarah opens a cooking blog on her iPhone. The page begins loading HTML, CSS, and JavaScript.
๐Ÿ”ง DNS resolution + TCP/TLS handshake + DOM construction begins
50-60ms

๐Ÿท๏ธ Ad Tag Fires โ†’ SSP Called

The publisher's ad tag executes, calling the SSP with slot dimensions, page context, floor price.
๐Ÿ“ฆ Data sent: tagid, page URL, category, bidfloor, user agent, IP
60-70ms

๐Ÿช Cookie Sync & Identity Resolution

SSP and DSPs match user IDs via cookie sync pixels.
๐Ÿ”‘ Identity signals: Universal ID (UID2), device ID, IP address
70-80ms

๐Ÿ“ก OpenRTB Bid Request

SSP sends structured bid request using OpenRTB protocol to Ad Exchanges.
Key fields: id, imp array, site/app, device, user, tmax, bidfloor
80-120ms

๐Ÿง  DSP Evaluation & Bid Calculation

Ad Exchange broadcasts to DSPs. Each DSP runs through a 4-stage decision pipeline.
๐Ÿ“Š Audience match โœ“ | pCTR 0.12% | pCVR 0.03% | bid $1.80 CPM
120-130ms

๐Ÿ† Auction & Winner Determination

Exchange collects bids, runs first-price auction, selects winner.
๐Ÿฅ‡ Nike: $1.80 | ๐Ÿฅˆ Adidas: $1.55 โ†’ Nike wins, pays $1.80 CPM
130-150ms

๐Ÿ–ผ๏ธ Creative Delivery & Rendering

Creative URL sent to SSP โ†’ returned to publisher page โ†’ ad loads.
โœ… Total: 150ms โ€” Win notice (nurl) and billing notice (burl) fired.
โฌ‡๏ธ PART 2: OPENRTB BID REQUEST โฌ‡๏ธ
๐Ÿ“„ OpenRTB 2.6: Bid Request Specification
The industry-standard protocol for real-time bidding communication
๐Ÿง  DSP Decision PipelineThe Brains of RTBexpand_more

When a DSP receives a bid request, it runs through a 4-stage decision pipeline in 40-80ms. Each stage uses machine learning models trained on billions of historical auctions to make optimal bidding decisions.

1

๐ŸŽฏ Audience Matching

Does this user match any active campaigns? The DSP checks retargeting lists, audience segments, frequency caps, and budget pacing.

โœ… Sarah matches Nike's "Reach active lifestyle audience" campaign
2

๐Ÿ“Š Value Prediction (pCTR & pCVR)

Machine learning models predict engagement likelihood: pCTR (click-through rate) and pCVR (conversion rate).

Predicted Value per Impression = pCTR ร— pCVR ร— AOV
= 0.0012 ร— 0.0003 ร— $120 = $0.0000432 โ†’ Value CPM = $0.0432
3

๐Ÿ’ฐ Bid Price Calculation with Bid Shading

In first-price auctions, DSPs use bid shading algorithms to avoid overpaying while maximizing win rate.

shaded_bid = value_cpm ร— margin ร— shading_factor = $0.044
final_bid = max(value_cpm, floor_price + margin) = $1.80 CPM
4

๐ŸŽจ Creative Selection (DCO)

Based on user data, the DSP selects the most relevant creative variant: women's running shoes, gray/white, Chicago inventory, morning ad copy.

๐ŸŽฏ Final Bid: $1.80 CPM | Win Probability: 78%
โšก Time Breakdown: Stage 1 (audience matching): 10-15ms, Stage 2 (value prediction): 15-25ms, Stage 3 (bid calculation): 10-20ms, Stage 4 (creative selection): 5-10ms. Total: 40-80ms.
BidRequestTop-Level Object ยท Requiredexpand_more
id
string
Unique ID of the bid request, provided by the exchange required
imp
object array
Array of Impression objects โ€” at least 1 per request required
site / app
object
Details about the publisher's website or mobile app
device
object
User's device details (UA, IP, make, model, OS)
user
object
Human user of the device; the advertising audience
at
integer
Auction type: 1 = First Price, 2 = Second Price (default 2)
tmax
integer
Maximum time in milliseconds for bids (avoids timeout)
regs
object
Regulatory conditions (GDPR, CCPA, COPPA flags)
Imp (Impression)Required ยท At least 1expand_more
id
string
Unique identifier for this impression required
banner/video/audio/native
object
Ad format specifications (width, height, etc.)
bidfloor
float
Minimum bid for this impression in CPM (default 0)
pmp
object
Private marketplace deals applicable to this impression
instl
integer
Interstitial or full-screen ad: 1 = yes, 0 = no
โฌ‡๏ธ PART 3: BID RESPONSE & POST-AUCTION โฌ‡๏ธ
๐Ÿ“ค OpenRTB 2.6: Bid Response & Post-Auction
The complete response structure โ€” from bid submission to win notification
BidResponseTop-Level Responseexpand_more
id
string
ID of the bid request being responded to required
seatbid
object array
Array of SeatBid objects containing one or more bids required
cur
string
Currency of the bid using ISO-4217 (default "USD")
SeatBid & BidNested Objectsexpand_more
bid[].id
string
Bidder-generated ID for this bid required
bid[].impid
string
ID of the impression being bid on required
bid[].price
float
Bid price in CPM required
bid[].nurl
string
Win notification URL โ€” called if bid wins
bid[].burl
string
Billing notice URL โ€” used for server-side impression counting
bid[].adm
string
Ad markup (HTML/JS or VAST XML for video)
bid[].adomain
string array
Advertiser domain (e.g., "nike.com")
๐Ÿ† Win Notice & Post-Auction FlowAfter the auctionexpand_more
// Win Notice HTTP GET Request GET https://dsp.com/win?auction_id=abc123&price=1.80 HTTP/1.1 Host: dsp.com
๐Ÿ“Š Post-Auction Sequence:
1. Auction completes โ€” Exchange selects highest bidder (Nike: $1.80)
2. Win Notice (nurl) โ€” Exchange calls DSP's win notification URL
3. Creative Delivery โ€” SSP returns winning creative to publisher's page
4. Impression Tracking โ€” Impression pixel fires, counting the served impression
5. Billing Notice (burl) โ€” Server-side billing notification, final spend recorded
๐Ÿ“ค Complete Bid Response ExampleNike's Winning Bidexpand_more
{ "id": "req_123", "seatbid": [{ "seat": "the_trade_desk", "bid": [{ "id": "nike_bid_001", "impid": "imp_1", "price": 1.80, "nurl": "https://dsp.com/win?auction_id=req_123&price=1.80", "adm": "<html><img src='https://nike.com/ad.jpg'></html>", "adomain": ["nike.com"] }] }], "cur": "USD" }
๐Ÿ“Œ Key Response Fields: id matches bid request, price is bid CPM, nurl is win notification endpoint, adm contains creative HTML.

timeline Complete RTB Request-Response Flow

๐Ÿ“ก 1. Bid Request (SSP โ†’ Exchange โ†’ DSPs)
{ "id": "req_123", "imp": [{ "bidfloor": 1.50 }], "device": { "ua": "iPhone" }, "user": { "id": "abc123" } }

๐Ÿ“ค 2. Bid Response (DSP โ†’ Exchange)
{ "id": "req_123", "seatbid": [{ "bid": [{ "price": 1.80, "nurl": "...", "adm": "..." }] }] }

๐Ÿ† 3. Win Notice (Exchange โ†’ DSP)
GET https://dsp.com/win?price=1.80

๐Ÿ–ผ๏ธ 4. Creative Served โ†’ User sees ad in 150ms
โ˜• The Coffee Shop Story: Understanding RTB in Plain Language
A simple real-world example that explains Bid Requests, DSP Decisioning, Auctions, and Win Notices
โšก THE COFFEE SHOP AUCTION STORY โšก
โ˜•
Coffee Shop
(Publisher)
โ†’
๐Ÿ“ข
Announcer
(SSP)
โ†’
๐Ÿ›๏ธ
Town Square
(Ad Exchange)
โ†’
๐Ÿ“‹
Bulletin Board
(DSP)
โ†’
๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘
Customers
(Users)
1
Maria's Coffee Shop has empty wall space โ€” that's the ad slot. A customer walks in, ready to order (user visits website).
๐Ÿ“บ Digital: User lands on a webpage with an ad placement.
2
Maria tells the Town Announcer (SSP): "I have wall space available. Who wants to put up a poster?"
๐Ÿท๏ธ Digital: Publisher's SSP prepares to send a bid request.
3
The Announcer writes a "Bid Request" notice: "Coffee shop wall space, 5 feet wide, near entrance. Minimum offer: $5."
๐Ÿ“ก Digital: SSP sends OpenRTB Bid Request to Ad Exchange.
4
The notice is posted on the Town Square Bulletin Board (Ad Exchange). All businesses can see it.
๐ŸŒ Digital: Ad Exchange broadcasts bid request to all connected DSPs.
5
Each business owner decides quickly (40-80ms): Bakery (Nike) bids $15, Bookstore (Adidas) bids $12.
๐Ÿง  Digital: DSP Decision Pipeline โ€” Audience Matching, Value Prediction, Bid Calculation, Creative Selection.
6
Business owners submit sealed bids to the Town Square official.
๐Ÿ’ฐ Digital: DSPs send BidResponse with price, creative URL, win notice URL.
7
The official runs the auction: "Highest bid is $15 from Bakery. Bakery pays $15." (First-price auction)
๐Ÿ† Digital: Exchange runs first-price auction, selects winner.
8
WIN NOTICE! The official calls Bakery: "You won! Please deliver your poster."
โœ… Digital: Exchange sends Win Notice (nurl) to winning DSP.
9
Bakery's poster is delivered to the Coffee Shop wall. The customer sees it while waiting for coffee.
๐Ÿ–ผ๏ธ Digital: Creative delivered, user sees ad. Impression pixel fires.
10
Total time: the blink of an eye โ€” 150ms. The customer never knew an auction happened.
โšก Digital: Complete RTB auction in 150ms โ€” user sees ad without delay.
๐Ÿ” How the Coffee Shop Story Maps to RTB:
Wall Space โ†’ Ad Impression
Announcer โ†’ SSP
Town Square โ†’ Ad Exchange
Bulletin Board โ†’ OpenRTB Protocol
Bid Request Notice โ†’ BidRequest JSON
Business Owners' Decisions โ†’ DSP Decision Pipeline
Sealed Bids โ†’ BidResponse
Highest Bid Wins โ†’ First-Price Auction
Win Notice Call โ†’ nurl (Win Notification)
Poster Delivery โ†’ Creative Serving
๐Ÿ’ก The Big Idea: RTB is like a lightning-fast auction for wall space. The Coffee Shop (Publisher) tells the Announcer (SSP) about available space. The Announcer posts a notice (Bid Request) at the Town Square (Ad Exchange). Businesses (Advertisers) through their representatives (DSPs) evaluate the opportunity, calculate a fair price using their own intelligence (DSP Decision Pipeline), and submit sealed bids (BidResponse). The Town Square official (Exchange) runs the auction, declares a winner, and calls them (Win Notice). The winner's poster (Creative) goes up immediately โ€” all before the customer finishes ordering their coffee! โ˜•

๐Ÿ“Œ Key Takeaways

  • RTB (Real-Time Bidding) is the automated auction process where ad impressions are bought and sold individually in under 150 milliseconds.
  • The OpenRTB protocol standardizes communication between SSPs, Ad Exchanges, and DSPs, enabling interoperability across thousands of platforms.
  • A Bid Request contains impression details (size, format, floor price), user context (device, location, user ID), and page context (URL, category).
  • The DSP Decision Pipeline has 4 stages: Audience Matching, Value Prediction (pCTR/pCVR), Bid Calculation (with bid shading), and Creative Selection (DCO).
  • A Bid Response includes the bid price, creative URL (adm), win notification URL (nurl), and billing notice URL (burl).
  • Most exchanges use first-price auctions where the winner pays exactly what they bid. DSPs use bid shading to optimize.
  • The Win Notice (nurl) is an HTTP GET request from the exchange to the winning DSP confirming the auction outcome.
  • Over 200 billion bid requests are processed daily across programmatic exchanges, representing over $600 billion in annual ad spend.