Basically Google changed the way the Keyword tool works. It no longer just sends a simple HTTP request with data in the query string and post header.
It now uses a mess of compressed JavaScript code which does XML-RPC calls. The parameters of the request are encoded somehow and unless you unravel the whole mess of JS code to figure out how the request parameters are encoded and what order they go in, you can't do this with a simple cURL request.
And no, you can't use Fiddler or some other tool to intercept the calls and simply change the keywords in the XML-RPC data being sent in the HTTP request. There appear to be checksum values in the call data. I was able to take the call data for a single keyword and replace it with any other single keyword and make it work, but trying to pass in more than one keyword at a time didn't work.
So I created a tool which scrapes the keyword tool which uses the IE browser control under the hood to get around the whole mess. Works just fine under multiple threads. The only issue is that you can't run multiple browser controls, each with their own proxy settings as setting the proxy for the IE control sets it for all IE browsers.
But my tool works just fine in scraping the tool under 3-4 threads until the current proxy IP gets a temporary ban. Then I just rotate to the next proxy in the list. I'm able to suck in an average of about 1200 keywords per minute or about 1.7 million per day per computer that I run it on