This should get you started:
browse: GET https://us.battle.net/wow/en/vault/character/auction/horde/
bid_auction: POST https://us.battle.net/wow/en/vault/character/auction/horde/bid
cancel_auction: POST https://us.battle.net/wow/en/vault/character/auction/horde/cancel
create_auction: POST https://us.battle.net/wow/en/vault/character/auction/horde/createAuction
deposit (ticket request): POST https://us.battle.net/wow/en/vault/character/auction/horde/deposit
money: POST https://us.battle.net/wow/en/vault/character/auction/horde/money
my_auctions: GET https://us.battle.net/wow/en/vault/character/auction/horde/auctions
my_bids: GET https://us.battle.net/wow/en/vault/character/auction/horde/bids
Keep in mind that the "horde" portion of the URL is dynamic and can be "horde", "alliance", or "neutral".
So far I've found that the bid, cancel, create, deposit (ticket request) and money requests all return native JSON.
I still haven't found a way to get the browse, "my auctions", or "my bids" requests to return anything but HTML.
Also, upon looking at this I got the idea that since all of the POST requests returned JSON that maybe any POST request would, but sending POST instead of GET to the browse URL still results in HTML.