Network Rail on the other had are (basically) state owned, and their extremely comprehensive feeds are now completely open: http://www.networkrail.co.uk/data-feeds/
these feeds even include the raw signalling data (you even get events when trains activate level crossings) -- there's nothing stopping you building your own NRE API.
I've been slowly building up a database of signal locations/berths to lat/longs by matching up my physical position (while riding on the train) to the NR feed events, with the idea of being able to produce a much better map of where the trains are in realtime.