A user (PaulKirby) on this forum has a script that does this...not sure if he will share it with you ....he may be along with the answer to your questions etc
Yep, I wrote mine in .NET and its on its 5th version, the first version only took me 20 mins to write but was very messy code and slow.
As for giving out the code, sadly I cannot give away the code due to it uses our own server and database to store all the information once it gets it.
If I ever re-code it to use a local file database I may release it, but that might result in it breaking due to BT may change their site in the future which has happened 3 times already.
I also have to do loads of stuff before hand like add the exchange information to the database along with all the postcodes that are for that area which some are partly connected to said exchange etc.
Also its not really that fast due to adding delays between requests so that I don't hammer BT's server.
A lookup of an exchange of 1,000 addresses will take an average of 1h 23m 20s and all requests are done asynchronously.
BT already adds a small delay (seems about 2 - 3 or so seconds) when you do a single lookup, on top of that I add 1 second delay between lookup requests.
So you can see why I cringe when I have to look up +25K of addresses LOL.
And once it completes all the lookups I can do a status lookup which says how many addresses has or can get what on each cabinet or EO Line.
I also can lookup an area on roadworks and also lookup information from the BTOR Where and when page that both return the information as JSON formatted data.