Well, you've got a good and a bad case. So you probably have all the parts you need to solve the puzzle.
So the next step is probably to narrow down what precisely it is that breaks it.
I'd probably see what headers are being sent for each of your requests, since that's a source of difference, and then add them in one by one to the non-working case until it starts working.
I mean, could be anything. Could be that they restricted the User-Agent of the client you're using for the request due to someone spamming them or something.