What is the best (cheapest) way to get from San Diego to Los Angeles by public transport? I don't want to take Greyhound because I've had bad experiences with them and their locations are inconvenient. Are there any other bus/shuttle services? Amtrak is too much. Preferably under $15.
You can go by train for a bit less money than Amtrak by using the commuter services: take the Coaster from San Diego to Oceanside, and then take a Metrolink Orange County Line train from Oceanside to Los Angeles.
The regular adult fare for the Coaster from San Diego Santa Fe Depot to Oceanside is currently $5.50, and Metrolink from Oceanside to Los Angeles Union Station is $15.75, so your total is $21.25. (Amtrak is currently charging $37.00, it appears.)
Also note that some (but not all) Amtrak Pacific Surfliner trains are specially scheduled to serve the Coaster stations, and you can ride those trains between San Diego and Oceanside with a Coaster ticket for regular Coaster fare. See here.
The main difficulty is the schedules: both services are intended for commuters and their schedules don't allow for many convenient connections. There is a nice timetable here showing all train arrivals and departures at Oceanside.
You should carefully check the timetables for the Metrolink trains separately. In particular, the Metrolink 8xx trains are the Inland Empire-OC line which goes to San Bernardino; not what you want. The 6xx trains are Orange County line, but note that not all of them go all the way to Union Station (e.g. train 631 which terminates at Fullerton).
On weekdays your only real option is train 609, leaving Oceanside at 3:26pm.
On weekends you have a couple more options since all weekend 6xx trains have service all the way to LA Union Station.
I wasn't able to find anything in the way of bus options, other than Greyhound. It appears Megabus used to serve this route but no longer does. I found a reference to Lux Bus America serving this route, and their website suggests that they do, but doesn't actually let you book anything, so it's not clear if their service exists. Anyway they quote a fare of $44 going only to Anaheim, so even if it exists it's probably out of your price range.
I think Coaster/Metrolink may be your best bet, short of stringing together local bus services, which, even if it is possible, is likely to be incredibly slow and inconvenient. Other options include looking for a rideshare on Craigslist or a similar site (though that isn't public transit).
It is possible to use local buses the whole way. Starting in downtown San Diego
- San Diego Transit 30 (http://www.sdmts.com/print/1?fragment=30)
- NCTD 101 (http://www.gonctd.com/wp-content/uploads/Schedules/101.pdf)
- NCTD 395 (http://www.gonctd.com/wp-content/uploads/Schedules/395.pdf)
- OCTA 1 (http://www.octa.net/ebusbook/RoutePDFNew/route001.pdf)
- Long Beach Transit 171 (http://www.lbtransit.com/Schedules/Default.aspx?routegrp=171&routes=171&direction=Inbound&day=today&mode=map)
- Metro Blue Line (https://www.metro.net/riding/maps/blue-line/)
Of all of these, NCTD 395 is the least frequent. You have to plan everything around meeting it. This should take about 6 to 8 hours to complete.