TriMet Arrival Times via Text Message

I’ve set up an interface to provide TriMet arrival times via text message. Usage of our cell phone web browser interface (the Transit Surfer) has been relatively light, and I’m wondering if web browsing is just too inconvenient on cell phones for this to take off (although I have hope for my iPhone).

So would texting be easier or more useful?

I’m using a general purpose SMS gateway service called To get arrival times send a text message to 415-676-8397 or with the following message text:

trimet <stop #>


trimet 2719

(a stop on SE Holgate) returns at this moment: 17 Holgate to Portland: 23 min

This is still very much a prototype and I’m interest in opinion on how terse I can make the messages to get multiple lines into a message for stops with lots of buses serving them.

Here’s a set of possibilities based on the above example:

17 Holgate to Portland: 23 min
17 Holgate: 23 min
17: 23 min

How much information is really necessary, given that the person asking is probably already standing at the stop?

You’ll find the stop number at most TriMet stops, either on the schedule or on a stick on one of the signs.

Disclaimer: text message usage costs are the user’s responsibility! That’s between you and your carrier. Portland Transport and 411sync don’t charge for this (although I suspect that 411sync gets a cut from the carrier).

34 responses to “TriMet Arrival Times via Text Message”

  1. Chris –

    What is the current working URL for the transit surfer? When I Google “transit surfer” I get some older PortlandTransport articles with links which are no longer operating — you might want to update those older articles since that’s what Google is finding.

    – Bob R.

  2. Personally I’d vote:

    “17 to Portland”

    The Holgate is kind of redundant even when are talking about a bus number that does have two names (17 Holgate or NW 21st Ave/St Helens) they don’t serve the same stops… If you could abbreviate it: “17H” or “17NW” that might be useful…

    The destination is important thought, there are a fair number of buses that don’t go all the way to the end of the line. Compare, “17 to Sauvie Island” to “17 to Montgomery Park”. They both serve the same stops (in downtown) and are both on the “17 NW 21st Ave/St Helens” line, but one of them goes a lot further out than the other one…

    Now, the problem with that is that I only have 160 characters in a text message, so on a lot of stops, the message may get cut off before the bus that I want would be listed… If you cut out the “to ” would that be confusing?

  3. The 411sync service will actually send up to two text messages, so we can get about 295 characters (they add some of their own text to the first message), but I’d need to be careful about splitting the text on the boundary between the two messages.

  4. I vote for the shortest stop info:

    17: 23 min

    I’m not trying to think of it from someone else’s perspective, though. Just for me. I want short texts, just the bus number and time, and no other extraneous info. If I need more details I know where to get them (phone or website or bus driver or printed schedules or etc.) YMMV.

    Also, THANK YOU for this! I’m surprised that TriMet doesn’t already offer this. I use their phone service all the freakin’ time.

  5. Don’t forget that Trimet has a TransitTracker site available for wireless browsers (including text-only browsers on older models of wireless phones) at

    This site is accessible from my cell phone browser and I’ve relied upon it quite extensively over the last couple of years. I’m not aware of a text messaging service such as what you offer, but the only thing wrong with the Trimet TransitTracker WAP site is the lack of exposure – people simply don’t know it exists.

  6. WAP is on it’s way out. I’ve also used but I think the download is just too heavy (logo graphics, etc.).

    The other major reason I created transit surfer ( which is XHTML-based, is that I could throw in other navigation features that TriMet doesn’t like a one click link to the previous or next stop, and links to nearby lines. I use it all the time to literally ‘surf’ the system, finding the next vehicle going mostly in my direction (since I don’t mind some walking in my trips).

  7. Sorry, but the transit surfer hasn’t worked in months and months. I went back to using trimet’s tracking site long ago. I suspect that your usage is so low because few people can get it to work.

  8. You’ve got to be kidding! This will be great. I’m going to try it as soon as I get off work – and if it does, I’m telling all my friends. :)

  9. Ali –

    I just tried the Transit Surfer in a few different browsers today, and for me it doesn’t work at all in Internet Explorer 7 under Windows XP (I’ve already sent Chris the details)… but it works fine in FireFox on Windows and Safari on Mac.

    Can you report what browser you are using and perhaps try an alternative? It may help Chris diagnose the problem. I agree that if Internet Explorer can’t display the page, it would explain the low traffic.

    – Bob R.

  10. TriMet seems to be responsive to feedback on these types of technical services…

    As my initial endeavor into developing automated telephone IVR system I wrote an app that scraped their next arrival page and, via synthesized voice, read the times over the phone. At one point a bug caused it to constantly fetch a page for the stop near my house and they emailed me (my address was in the browser id string) to ask what the deal was, not complaining, just wondering. When I explained what it was they offered to open up their SOAP interface to developers like us. Another year later they deployed a near equivalent automated over the phone service.

    I think that open SOAP/XML interface might be one of the big reasons they’re the first on the google transit service.

  11. First of all, I congratulate you on setting this up. Also:

    *I’d vote for “17 to Portland”. You could also do “17:PDX”/”17:SI”/”17:MP”/”17:136″/etc

    *What is the general cost difference between text messages and web use? I thought that text messages were generally priced per message (both out and in) vs. a small extra fee for web browsing.

    *Is there a non-PDA formatted version of the Transit Surfer? Also, it lists internal routes like “Holiday Shuttle”. And the problem with it and IE7 may be because the web server sends a Content-Type of “application/xhtml+xml”, so IE thinks its a program that needs to be downloaded and not a web page.

    *When I had web access on my phone, I regularly used TriMet’s interface on it.

  12. Hi,

    Thanks for creating this mashup with 411Sync. Many people have done services for mass transit.

    Regarding a few questions that you ask.
    1) We don’t charge or get a cut from the carrier. We are too small to get any cut. We have another business model for revenue.

    2) We have a WAP site(mobile web) and you can use the same keyword from the wap site. Our WAP site is light and so is the response. Try it and give us your feedback.

    3) Look for a few changes in the next few weeks, where you can save your favorite keywords and access them without typing. So store your favorite stops and you don’t have to type!

    If you have other questions, please email us at


  13. TriMet seems to be responsive to feedback on these types of technical services…

    TriMet is wonderful. We’ve been using their SOAP interface and they’re about to announce a REST interface and be much more public.

    And the problem with it and IE7 may be because the web server sends a Content-Type of “application/xhtml+xml”

    Bingo – we found that a few hours ago, and it’s now fixed.

  14. What is the general cost difference between text messages and web use?

    With the two carriers I’ve been with you typically pay a flat fee for web access ($20/mo when I was with T-mobile). For txt messages you get a certain number in your plan (with ATT I now get 200), and after that you get charged a few cents per message (or you can ‘buy’ an extra number per month for a few dollars added to your plan).

  15. i don’t need a SMS interface; if i’ve got my phone, i can dial 238-7433 and get the transit tracker via voice response.

    however, having used transit tracker from bus stops, i can vouch that it’s not too accurate. i suspect it’s giving me the scheduled arrival times, which is useful … but that’s already available at most stops anyway using an ancient French technology: “signage”.

    when the actual arrival times vary from the schedule, tri-met transit tracker seems to have no clue. what is up with that? it might only be a few minutes off, but when it tells me that my bus will arrive in a minute, when actually it left a minute ago, that’s basically as wrong as a piece of information can be.

    i don’t see the point of investing in new technologies to deliver inaccurate information. i love the idea of the transit tracker, but the idea only works if the tracker knows where the transit is.

  16. i suspect it’s giving me the scheduled arrival times

    Actually, it relies upon Trimet’s GPS tracking system to calculate when the bus is likely to arrive. It utilizes a rather sophisticated formula and in more than two years that I’ve been using the service I’ve NEVER had any problem with its accuracy, except when bridges are up or trains are stuck in the tunnel, etc. In cases where the system does not know where the bus/train is at that time it will offer the next scheduled arrival time as a fail-over measure.

  17. I use our Transit Surfer all the time (based on the TriMet GPS data) all the time, and find it’s very good, but not perfect. If you think about the problem, it’s actually pretty challenging. When I bus gets caught in traffic congestion, the system has to start revising its predictions based on the slowing rate of progress, but if the bus suddenly clears the congested area, then it has to ‘speed up’ the expected rate of progress again. If it gets the answer right +/- 1 minute, I think it’s doing pretty well. I think you just have to have reasonable expectations and allow some margin for error and it has great utility.

  18. How about this:

    Parse the text message for a route # and stop #. (I think all stop nums are 3 digits or greater, route numbers are under 100). Ignore everything else.

    If there’s just a stop number, return the upcoming schedule for that stop (just like here, but without the navigation or menus) – if there’s also a route, only show that route.

    If there’s just a route, show ETA’s for various major stops along that route.

  19. i can dial 238-7433 and get the transit tracker via voice response

    Thank you Chris, for making this available! I’m deaf, and the 238-7433 number is completely useless. I just tested this out at 9th and Powell, it does not distinguish the difference between the #9 that goes to Gresham, or the ones that stop short at 98th. I think that it’s the users responsibility to know which end-points are which using 238-ride or the schedule, and leave the text messing for simply arrival times at a certain stop.

    There’s no need to put 17H, 9P, because there isn’t a 9P and a 9B at the same stop. Same goes for the 19G and 19W.

    To prevent confusion, it might help to not have a space between the countdown, and the “min” to distinguish between route # and minute #. The following is an example.

    9: 8min
    17: 12min
    19: 9min

    Thanks again.

  20. There’s no need to put 17H, 9P, because there isn’t a 9P and a 9B at the same stop. Same goes for the 19G and 19W.

    Well I can’t be too sure about that, correct me if I got that wrong. I’m under the impression that a stop number reflects a certain side of the street with buses going in a certain direction. So I can’t think of any place that would have both a “19G” and “19W” or some other route at the same stop location.

    Is there one?

  21. Before I begin, I should mention that I don’t have a cell phone and when I did, I never used text messaging (or even know if my plan had it). So, my comments are more from a general standpoint.

    The only place it might get confusing is downtown, where 19-Woodstock becomes 19-Glisan, and sometimes the operators will change the sign early.

    Additionally, the 9 is sort of a confusing route right now – not only do you have 9-Powell to either SE 98th or Gresham TC, there’s also 9-Broadway and now 9-Union Station (technically stops a few blocks away from the station). So, that’s 4 different number 9’s that would all say “9.”

    I think all stop nums are 3 digits or greater, route numbers are under 100.
    Actually, there are some public 3-digit numbers – 152-Milwaukie, 154-Willamette, 155-Sunnyside, 156-Mather Rd., and 157-Happy Valley. I think the highest number TriMet ever publicly used was 201-Airport Way (now part of 87-Airport Way/181st Ave.). Additionally, if you look closely on TriMet’s website – numbers in the 100s differentiate the different routes w/ the same number (i.e., 12-Barbur and [1]12-Sandy); temporary shuttles are designated with some number above that (IIRC, Milwaukie Ave. Shuttle was 219 and Sunderland shuttle was 210 – these weren’t numbers that were marketed to the general public.)

  22. joseph says:

    … I’ve NEVER had any problem with its accuracy, except when bridges are up or trains are stuck in the tunnel, etc.

    well, if the bus takes the same route every time (of course) through the same GPS interference, then we can infer that there are certain bus stops — immediately downstream from those points-of-interference — where transit tracker is *never* accurate. perhaps that is the case with the #9 stop at Williams & Weidler, where I never seemed to get accurate data in a month of trying.

    not that there’s any tunnels or other radio obstructions between downtown and there. unless bridges jam the system … or downtown does in general …

    i’d be curious to know what tri-met thinks the accuracy rate is. what percentage of their expected GPS data is lost due to this kind of malfunction.

    realistically, i’d like it if TT would tell me what they think the accuracy of the data they’re giving me is. like, “we haven’t seen your bus in 10 minutes” vs. “we’re looking right at it and it’s 300 feet away.” a simple “give-or-take-n-minutes” tacked onto the data would help. it really does mean the difference between catching the bus and missing it, sometimes.

    i’ll probably keep using TT, since, y’know, if i’m waiting at the bus stop with my phone i’m probably bored anyway. but i don’t know when i’m going to actually depend on it.

  23. “I think all stop nums are 3 digits or greater”

    I know of a stop ID of “40”. (True, there isn’t #40 bus right, (it has been renamed to #44,) but there was 6 months ago, and that stop has been around for longer than that…)

  24. So I can’t think of any place that would have both a “19G” and “19W” or some other route at the same stop location.

    Is there one?

    There are four stops on line 67 (Merlo/158th) where the busses in opposite directions (to Beaverton TC and to PCC Rock Creek) serve the exact same stop – 3870 (Merlo Garage), 10126 (Merlo Road/Merlo MAX station eastbound), 9922(Merlo Road/Merlo MAX station westbound), and 8234 (158th & Jenkins northbound). This is due to the 67 turning (outbound) left on Merlo, left into the Merlo Garage, making a U-Turn within the garage, and then north on Merlo becoming 158th headed towards Cornell, in order to serve the bus garage and the MAX stop.

  25. On the question about accuracy, I suspect it’s more about uneven progress in traffic than it is about GPS failures. I’m actually trying to construct a study for Portland Streetcar that would create a large enough data set from NextBus to analyze the accuracy statistically.

    As to the discussion about codes and what not for the txt messages, I think it’s going to be important to include a direction indicator, and stop #s and line #s definitely overlap.

  26. WAP is on it’s way out.
    Do you mean as a widely-used technology in general or at Tri-Met specifically? I agree that the PDA version is a whole lot more trouble than its worth. WAP isn’t sexy, but it’s spectacular on my BlackBerry… Just enter a stop ID, save it as a bookmark if I use that stop a lot, and I’m a couple of simple clicks away from seeing arrivals. Again, not high-tech, but it works, its fast, and it’s simple.

  27. I mean that WAP has been pretty much abandoned by cell phone makers. The new technology is xHTML-based, sometimes labeled WAP 2.0.

    This is what we have shifted Transit Surfer to. The major drawback with WAP and its markup language, WML is that it has no pulldown menu tag, making it very difficult to select routes or stops.

  28. When I tried using the text message transit times, I the first text message response I get is cut off and I get a second one with the last few words of text. Not too great…

    The messages need to be shortened. I have T-Mobile.

  29. Just a few details about TransitTracker that seem to have been cause for discussion.

    Stop ID numbers can have anywhere from 1 to 5 digits, although the lowest number is “2”. And someone has already pointed out that route numbers can be above 100.

    The accuracy of bus arrival predictions in TransitTracker is very good, something we can verify by measuring predictions against actual arrivals. When the accuracy suffers, it’s generally either a problem with the GPS (which doesn’t need a tunnel or tall buildings to cause problems, but can get off-track in a number of areas around town) or because the vehicle hasn’t actually left the end of the route and has not accumulated enough travel information to make a reliable prediction.

    And, of course, traffic can suddenly intrude, as can problems boarding at a bus stop upstream of your stop.

    And there are definitely stops downtown where both ends of a two-ended route are listed at the stop, so it’s helpful to include some indication that the route is the 19W or the 19G.

Leave a Reply

Your email address will not be published. Required fields are marked *