Skip to main content
More coffee per square foot than Seattle


Whether you prefer blended, hot or iced coffee, we’ve got you covered with the locations below.
Insider Tip: Get your order faster through the Starbuck's mobile app or using the Peet’s Coffee self-ordering kiosks.

Specialty Coffee

Dunkin' (Terminal A)

Terminal A, Gate 7

Hours & Details

Dunkin' (Terminal B Baggage Claim)

Terminal B Baggage Claim (Pre-Security)

Hours & Details

Einstein Bros. Bagels

Terminal A, Gate 11

Hours & Details

Jamba

Terminal B, Gate 23

Hours & Details

Peet's Coffee

Terminal B, Gate 25

Hours & Details

Starbucks Coffee (Gate 13)

Terminal A, Gate 13

Hours & Details

Starbucks Coffee (Gate 22)

Terminal B, Gate 22

Hours & Details

The Great American Bagel Bakery

Terminal B, Gate 28

Hours & Details

Drip Coffee

Chick-fil-A

Terminal B, Gate 25

Hours & Details

Gordon Biersch Brewery Restaurant

Terminal A, Gate 11

Hours & Details

Island Brews

Terminal B Gate 32

Hours & Details

Jim Stump's Taproom + Kitchen

Terminal B, Gate 24

Hours & Details

San José Beer Union

Terminal A, Gate 7

Hours & Details

San José Mac + Cheese Kitchen

Terminal B, Gate 19

Hours & Details

Tap & Pour

Terminal B, Gate 27

Hours & Details

Trader Vic's Outpost

Terminal B, Gate 22

Hours & Details

Trader Vic's Restaurant

Terminal B, Gate 22

Hours & Details

document.addEventListener('DOMContentLoaded', function () { const acceptButton = document.querySelector('.cm-btn-success')[0]; const declineButton = document.querySelector('.cm-btn-danger')[0]; acceptButton.addEventListener('click', function () { // Handle accept action loadChatbot(); // Load chatbot immediately on accept }); declineButton.addEventListener('click', function () { loadChatbot(); // Load chatbot immediately on decline }); function loadChatbot() { (function (d, m) { var defaultSettings = { "defaultBotIds": ["sjc-oj2ht"], "defaultAssignee": "sjc-oj2ht", "skipRouting": true, }; var kommunicateSettings = { "appId": "115795fb883b8512e78ed54540345f318", "popupWidget": true, "automaticChatOpenOnNavigation": true, "talkToHuman": true, "primaryCTA": "TALK_TO_HUMAN", "onInit": function () { /* Hide Kommunicate branding */ var css = ".mck-running-on {display:none !important;}"; Kommunicate.customizeWidgetCss(css); // Disable input - before widget loads document.addEventListener("DOMContentLoaded", function () { const attempt = setInterval(() => { const iframeDoc = window.KommunicateGlobal?.document; if (!iframeDoc) return; const box = iframeDoc.querySelector(".mck-box-form.mck-row"); if (box) { box.style.pointerEvents = "none"; box.style.opacity = "0.5"; clearInterval(attempt); // stop polling } }, 50); }); // Main logic - Run after widget loaded setTimeout(() => { const kmDoc = window.KommunicateGlobal?.document; if (!kmDoc) return; let consentGiven = false; function disableInput() { const box = kmDoc.querySelector(".mck-box-form.mck-row"); if (box) { box.style.pointerEvents = "none"; box.style.opacity = "0.5"; } } function enableInput() { const box = kmDoc.querySelector(".mck-box-form.mck-row"); if (box) { box.style.pointerEvents = "auto"; box.style.opacity = "1"; } } /* Disable input again (persistent) */ disableInput(); /* Detect clicking the “I Agree” button */ Kommunicate.subscribeToEvents({ onRichMessageButtonClick: function (resp) { if (resp.eventLabel === "I Agree") { consentGiven = true; } } }); /* Keep enforcing the rule even after re-renders */ const observer = new MutationObserver(() => { if (consentGiven) enableInput(); else disableInput(); }); const target = kmDoc.querySelector("#mck-sidebox-content") || kmDoc.body; observer.observe(target, { childList: true, subtree: true }); }, 1200); // widget render delay Kommunicate.updateSettings(defaultSettings); } }; /* Default Kommunicate loader */ kommunicateSettings.restartConversationByUser = true; var s = document.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = "https://widget.kommunicate.io/v2/kommunicate.app"; var h = document.getElementsByTagName("head")[0]; h.appendChild(s); window.kommunicate = m; m._globals = kommunicateSettings; })(document, window.kommunicate || {}); } });