You are here
Home > Uncategorized > Bay Area Summer Transit Adjustments

Bay Area Summer Transit Adjustments

Summer 2018 has brought multiple shakeups with Bay Area public transportation. Aside from the yearly fare hikes with Golden Gate, AC Transit also saw fare hikes from $2.25 to $2.35 for local rides for adults, and a price hike in adult monthly passes from $81 to $84.60; details here. Caltrain also hiked its fares for adult riders, with a base fare of $3.75 for one zone and an additional $2.25 for each additional zone traveled; see details here.

AC Transit

AC Transit transformed multiple loop lines operating around San Leandro, Castro Valley, Hayward, and Union City and became mostly straight lines. Among the lines that were changed include:

  • Eliminating eight lines, Lines 22, 32, 37, 48, 75, 85, 89, and 386
  • Creation of five new lines, including Lines 28, 34, 35, 41, and 56, with improved frequencies compared to the eliminated lines
  • Modified service on Line 93 to become a direct line rather than a loop
  • Service span and frequency increases on Lines 60, 83, and 86
  • Service extension for Line 60 (some long-time riders call it the resumption of the old Line 92)

#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table-wrapper {
padding: 20px 0;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table.style-top tr:first-child td,
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table.style-top tr:first-child td .paragraph,
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table tr:last-child td {
border-bottom: none;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table td:last-of-type {
border-right: none;
}
#element-3e43c7a4-365c-4d62-b89e-2e0415da3544 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Line
Direction
Status
22
Loop
  • Replaced by existing Lines 97 and 99
  • Replaced by expanded Lines 60, 83, and 86
28
North-South
  • ​NEW service operating between Hayward BART and San Leandro BART via Castro Valley BART, Bay Fair BART, Center Street, and Alvarado Street
  • Operates every 30 minutes from 6am to 11:15pm weekdays, every 60 minutes from 6am to 11pm weekends and holidays
32
Loop
  • Replaced by existing Line 10 and FLEX Castro Valley service
  • Replaced by expanded Lines 83 and 86
  • Replaced by adjusted Line 93
  • Replaced by new Line 28
34
North-South
  • NEW service operating between Hayward BART and Foothill Square in Oakland via Meekland Avenue, Washington Avenue, and San Leandro BART
  • Service operates in tandem with Line 35 between Foothill Square and West Gate and Williams in San Leandro every 15 minutes weekdays, every 30 minutes weekends and holidays
  • Operates every 30 minutes from 6am to 11pm weekdays, every 60 minutes from 6am to 11pm weekends and holidays
35
North-South
  • NEW service operating between Bay Fair BART and Foothill Square in Oakland via Lewelling Boulevard, San Leandro Marina, and San Leandro BART
  • Service operates in tandem with Line 34 between Foothill Square and West Gate and Williams in San Leandro every 15 minutes weekdays, every 30 minutes weekends and holidays
  • ​Operates every 30 minutes from 6am to 10:45pm weekdays, 60 minutes from 6:30am to 11:30pm weekends and holidays
  • Weekend and holiday service continues to/from Alameda County Juvenile Justice Center
37
Loop
  • Replaced by expanded Lines 83 and 86
  • Replaced by adjusted Line 93
  • Replaced by new Lines 41 and 56
41
North-South
  • NEW service operating between Hayward BART and Union Landing Transit Center in Union City via Whitman Street, South Hayward BART, and Huntwood Avenue
  • Service operates in tandem with Line 56, in which buses starting as Line 41 at either end will continue as Line 56 at the opposing end (e.g. southbound Line 41 continues as Line 56 northbound from Union Landing, northbound Line 41 continues as Line 56 southbound from Hayward BART)
  • Combined with Line 56, service operates every 20 minutes between Huntwood & Industrial and Union Landing weekdays, every 30 minutes weekends and holidays
  • Operates every 40 minutes from 6am to 10:40pm weekdays, every 60 minutes from 6:05am to 10:55pm weekends and holidays
48
North-South
  • Replaced by existing Lines 10 (daily service), NX4 (weekday peaks), NXC (weekday PM peak only), and FLEX Castro Valley service
  • Replaced by new Line 28
56
North-South
  • NEW service operating between Hayward BART and Union Landing Transit Center in Union City via Ruus Drive, Underwood Avenue, Alameda County Offices and Courthouse, and Hayward Amtrak
  • Service operates in tandem with Line 41, in which buses starting as Line 56 at either end will continue as Line 41 at the opposing end (e.g. southbound Line 56 continues as Line 41 northbound from Union Landing, northbound Line 56 continues as Line 41 southbound from Hayward BART)
  • Combined with Line 41, service operates every 20 minutes between Huntwood & Industrial and Union Landing weekdays, every 30 minutes weekends and holidays
  • Operates every 40 minutes from 6:20am to 11:05pm weekdays, every 60 minutes from 6:35am to 11:30pm weekends and holidays
60
East-West
  • Service extended west to Chabot College via Winton Avenue, Southland Mall, and Hesperian Avenue
  • Service span expanded to every 20 minutes from 6am to 12am weekdays, every 40 minutes from 6am to 12am weekends and holidays 
75
Loop
  • Replaced by existing Lines 1 (daily), 40 (daily), NX4 (weekday peaks), and NXC (weekday PM peak)
  • Replaced by new Lines 28, 34, and 35
83
North-South
  • Service span expanded to every 30 minutes from 6am to 10:45pm weekdays
85
North-South
  • Replaced by existing Lines 10 and 97
  • Replaced by adjusted Lines 60, 83, 86, and 93
  • Replaced by new Lines 34, 35, and 41
86
North-South
  • Service unified to operate between Hayward BART and South Hayward BART daily, with fewer trips ending at AC Transit Hayward Yard
  • Service span expanded to every 30 minutes from 4:15am to 12:20am weekdays, every 35 minutes from 5:55am to midnight weekends and holidays
89
Loop
  • Replaced by existing Line 40
  • Replaced by adjusted Line 93
  • Replaced by new Lines 28, 34, and 35
93
Loop
  • Line modified to become a linear service between Bay Fair BART and Castro Valley BART via Paseo Grande Boulevard, Bockman Road, A Street, Hayward BART, and Grove Way
  • Service modified to operate every 40 to 45 minutes from 5:40am to 11:15pm weekdays, every 60 minutes from 6am to 10:50pm weekends and holidays
386
East-West
  • Replaced by adjusted Lines 60 and 86

function setupElement135589503440942731() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6},{“rows_index”:7},{“rows_index”:8},{“rows_index”:9},{“rows_index”:10},{“rows_index”:11},{“rows_index”:12},{“rows_index”:13},{“rows_index”:14},{“rows_index”:15},{“rows_index”:16},{“rows_index”:17}],”columns”:3,”rows”:18,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[18,18,63]});
_Element.prototype.settings.page_element_id = “135589503440942731”;
_Element.prototype.element_id = “3e43c7a4-365c-4d62-b89e-2e0415da3544”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.3/assets/”;
new _Element({
el: ‘#element-3e43c7a4-365c-4d62-b89e-2e0415da3544’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement135589503440942731();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement135589503440942731, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement135589503440942731();
}
});
}


Marin Transit

In the North Bay, Marin Transit introduced a pilot service, Marin Transit Connect, that shuttles commuters within a defined service area in north San Rafael weekdays from 7am to 7pm. Operated by Whistlestop, Marin Transit Connect offers riders the flexibility of traveling between homes, businesses, county offices, and local attractions in Terra Linda, Marin Civic Center, Smith Ranch, and a small portion of Marinwood. Fares are as follows:

#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table-wrapper {
padding: 20px 0;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 50%;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table.style-top tr:first-child td,
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table.style-top tr:first-child td .paragraph,
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table tr:last-child td {
border-bottom: none;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table td:last-of-type {
border-right: none;
}
#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Fare Type
Cost
Regular Fare
$4
Marin Access Riders (e.g. seniors, RTC card holders, disabled placard holders)
$2
Service to or from a transit stop
$2
Unlimited Rides (monthly)
$40

function setupElement651159616715142804() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4}],”columns”:2,”rows”:5,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[84,15]});
_Element.prototype.settings.page_element_id = “651159616715142804”;
_Element.prototype.element_id = “627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.3/assets/”;
new _Element({
el: ‘#element-627ba5e2-0f4a-4d51-b58a-eda6ed80cfc6’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement651159616715142804();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement651159616715142804, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement651159616715142804();
}
});
}

In addition, Marin Transit adjusted its services, including trip eliminations on select lines (especially Route 29), and a handover of one route (Route 49) from MV Transportation to Marin Airporter. The handover of Route 49 to Marin Airporter also entails the handover of the five Gillig BRT Hybrid 40′ buses (1505 to 1509) from MV Transportation, resulting in Marin Airporter managing all of the eleven Gillig BRT Hybrid buses.

SamTrans

In the Peninsula, SamTrans introduced two new routes:

  • ECR Rapid, operating daily between Daly City BART and Redwood City Transit Center (click here for more details)
  • Route SFO, operating daily between Millbrae BART/Caltrain Station and SFO Airport

ECR Rapid operates as a rapid version of Route ECR, in which it makes a total of 11 stops in 10 cities, saving commuters up to 40 minutes compared to the local version. However, riders boarding from or heading to Mission & Sickles (or Mission & Wellington) and points south of Redwood City Transit Center need to switch to the local ECR along the way. Service operates:

  • Weekdays: every 20 minutes from 6am to 11am, then from 3:30pm to 8pm
  • Weekends and holidays: every 30 minutes from 10am to 8pm (first departure from Daly City is 11am) 

Route SFO, on the other hand, complements BART service between Millbrae Transit Center and SFO Airport, with an approximate travel time between 7 and 12 minutes between either end. Three of the new Gillig BRT 40′ buses (601, 602, and 603) have dedicated “Caltrain SFO Connection” bus wraps and luggage racks on board to securely store luggage. This service is meant to be used when BART does not provide direct train service between Millbrae and SFO Airport stations; however, due to its competitive fare ($2.25 for Route SFO versus $4 for BART) and door-to-door opportunities, this service can get decent ridership. This route is timed to meet most trains serving Millbrae Caltrain; details below:

Weekdays:

#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table-wrapper {
padding: 20px 0;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table.style-top tr:first-child td,
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table.style-top tr:first-child td .paragraph,
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table tr:last-child td {
border-bottom: none;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table td:last-of-type {
border-right: none;
}
#element-9429fb88-a812-438c-a85b-7eebe5c04047 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Direction
First Arrival
First Departure
Last Arrival
Last Departure
To SFO Airport
NB: 5:36am
SB: 5:18am
5:46am
NB: 11:38pm
SB: 11:06pm
11:43pm
To Caltrain
6:04am
NB: 6:11am
SB: 6:22am
12:01am
SB: 12:29am

function setupElement942691693807322713() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:5,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “942691693807322713”;
_Element.prototype.element_id = “9429fb88-a812-438c-a85b-7eebe5c04047”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.3/assets/”;
new _Element({
el: ‘#element-9429fb88-a812-438c-a85b-7eebe5c04047’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement942691693807322713();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement942691693807322713, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement942691693807322713();
}
});
}

Saturdays:

  • ​For some trips that have tight connections between Caltrain and Route SFO, ask the operator or conductor to provide additional transfer time. Alternatively, call SamTrans and Caltrain Customer Service at 1-800-660-4287 for assistance.

#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table-wrapper {
padding: 20px 0;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table.style-top tr:first-child td,
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table.style-top tr:first-child td .paragraph,
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table tr:last-child td {
border-bottom: none;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table td:last-of-type {
border-right: none;
}
#element-ceb37b84-35a4-4061-945c-5cae34d7d43b .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Direction
First Arrival
First Departure
Last Arrival
Last Departure
To SFO Airport
NB: 8:09am
SB: 8:34am
8:18am
​8:42am
NB: 11:43pm
SB: 11:18pm
11:57pm
To Caltrain
8:36am
NB: 10:09am
SB: 8:34am, 10:04am
12:15am
SB: 12:29am

function setupElement664844584513958909() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:5,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “664844584513958909”;
_Element.prototype.element_id = “ceb37b84-35a4-4061-945c-5cae34d7d43b”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.3/assets/”;
new _Element({
el: ‘#element-ceb37b84-35a4-4061-945c-5cae34d7d43b’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement664844584513958909();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement664844584513958909, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement664844584513958909();
}
});
}

​Sundays and Holidays:

  • ​For some trips that have tight connections between Caltrain and Route SFO, ask the operator or conductor to provide additional transfer time. Alternatively, call SamTrans and Caltrain Customer Service at 1-800-660-4287 for assistance.
  • To meet the last SB Caltrain service leaving at 10:04pm, board Route SFO between 9:26pm (at Courtyard A) and 9:32pm (at Courtyard G).
  • Last Route SFO bus leaving Millbrae BART/Caltrain at 11:33pm does not return to the train station upon arrival at SFO Airport; last stop is Courtyard G.

#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table-wrapper {
padding: 20px 0;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table.style-top tr:first-child td,
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table.style-top tr:first-child td .paragraph,
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table tr:last-child td {
border-bottom: none;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table td:last-of-type {
border-right: none;
}
#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Direction
First Arrival
First Departure
Last Arrival
Last Departure
To SFO Airport
NB: 9:53am
SB: 10:04am
10:03am
NB: 11:23pm
11:33pm
To Caltrain
10:21am
NB: 10:39am
SB: 11:34am
11:09pm*
NB: 11:23pm

function setupElement275064909412041732() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:5,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “275064909412041732”;
_Element.prototype.element_id = “7675e98c-5154-48ff-864f-1d8bbeeeaffd”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.3/assets/”;
new _Element({
el: ‘#element-7675e98c-5154-48ff-864f-1d8bbeeeaffd’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement275064909412041732();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement275064909412041732, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement275064909412041732();
}
});
}

Finally, as a result of canceling the pilot Route 399 due to low patronage, SamTrans opted to expand Route ECR‘s service span to operate 24/7, with round-the-clock service available between Mission & Wellington (connects with Muni’s 14-Mission) and El Camino Real & San Bruno Avenue. Owl service on Route ECR will ultimately serve SFO Airport (connects with Route 397 to San Francisco and Palo Alto Transit Center) and will skip Daly City BART, Colma BART, and San Bruno BART stations (access to them is available through a short walk from El Camino Real and Mission Street, depending on the location). As a compromise to the elimination of Route 399, an additional trip on Route 120 leaving daily from Brunswick & Templeton at 4:06am will serve SFO Airport directly, with the last stop at Courtyard G.

Sources

Leave a Reply

Top