The Great API Easter Egg Hunt! API Easter egg hunt!

There's an API at http://easter_egg_hunt.andrewfaraday.com which will provide a special Easter egg hunt, just for you...

You can see the API docs at the above address, or try it from here.

The API:

All calls to this API are GET requests, which will return a JSON string.

These examples are in a 5x5 garden, for illustration only. 
The API will actually operate on a 100x100 garden (from indexes 1 to 100)

/new_game


Internally, the API produces a garden, and hides an egg in it.

In this example the egg is at 4, 4

+----------+
|          |
|          |
|          |
|          |
|   E      |
|          |
|          |
|          |
|          |
|          |
+----------+


Call

/new_game


Returns

{game_id: 'abcde'}




/guess/:game_id/:x/:y


The API looks in the garden and tells you how close you are.

If you guess 2 across and 8 down, the garden looks like this

+----------+
|          |
|          |
|          |
|          |
|   E      |
|          |
|          |
| g        |
|          |
|          |
+----------+


Call

/guess/abcde/2/8


Returns

{x: 'higher', y: 'lower'}


This means:
* Your x is too low (the egg position is higher)
* Your y is too high (The egg position is lower)

Correct call:

/guess/abcde/4/4


Returns

{x: 'right', y: 'right', turns: 10}




The Rules

Write a program to find the Easter egg with an API.


Use any language.
Try to write concise, but readable code.
Your program MUST call '/new_game' every time, and use the game_id returned in all 'guess' calls. No peeking at the garden!
Try to consistently finish the game with the smallest number of calls possible.
This is not code golf.




Competetive answer?

To be in with a chance of winning here's what we need to know:


What code are you using (In your answer, or a github link if it's bigger than you like to put in an answer).
Run your code 10 times, and record the game_id and score each time.


-game_id-: -score-

e.g.

abbbbbbb: 10

abbbbbdd: 5

(Note: The game_ids are required to verify a result)

The score will be calculated thus:


The highest and lowest two results will be ignored.
The remaining 6 scores will be added together.
This is your score. 
Lowest score wins.




Addendum

Tl,dr: The app is a little shoddy.

The API was written in the space of about 90 minutes, and is deployed on a Raspberry Pi 2. Please be gentle with my API server. If you DDOS this poor thing you could spoil it for everyone.

Also, it's implemented with NOIP to simulate a static IP address, but sometimes this will drop out for a little while. That's what I get for using for zero-budget web hosting. 

Just for giggles, here's a simple statistical analysis of games played... http://easter_egg_hunt.andrewfaraday.com/stats
APL+WIN
Works by starting in the centre and converges on the location by setting the upper or lower limit to the last value and adding or subtracting half the difference to the appropriate limit to the last guess on each iteration.
API                                                                               
id←¯20↑¯2↓GetUrl 'http://easter_egg_hunt.andrewfaraday.com/new_game'              
xh←yh←100 ⋄ xl←yl←0 ⋄ x←50 ⋄ y←50 ⋄ c←0                                           
:repeat                                                                           
    xy←GetUrl 'http://easter_egg_hunt.andrewfaraday.com/guess/',id,'/',(⍕x),'/',⍕y
    xy←(('higher'⍷xy)+(¯1×'lower'⍷xy)+2×'right'⍷xy)~0                             
    :if xy[1]=1 ⋄ xl←x ⋄ x←x+⌈(xh-x)÷2 ⋄ :endif                                   
    :if xy[1]=¯1 ⋄ xh←x ⋄ x←x-⌈(x-xl)÷2 ⋄ :endif                                  
    :if xy[2]=1 ⋄ yl←y ⋄ y←y+⌈(yh-y)÷2 ⋄ :endif                                   
    :if xy[2]=¯1 ⋄ yh←y ⋄ y←y-⌈(y-yl)÷2 ⋄ :endif                                  
    c←c+1                                                                         
:until 4=+/2↑xy                                                                   
'id:',id,' x:',(⍕x),' y:',(⍕y),' count:',⍕c 

This function uses the following function to do the API calls:
r←GetUrl url                                     
⎕wself←'HTTP' ⎕wi 'Create' 'MSXML2.ServerXMLHTTP'
⎕wi 'XOpen' 'GET' url 0                          
⎕wi 'XSend'                                      
r←⎕wi 'xresponseText'

The results for 10 trys were:
id:rbgprkxrqzzhwdfsbszn x:36 y:52 count:7      
id:nmpcxdqsdzhgrbtlcpbp x:35 y:49 count:6      
id:qqnsbpwnlbptxxblywnz x:99 y:22 count:6      
id:nsytnvcgnsyrgzvjcysc x:45 y:28 count:6      
id:yfkpfhphjpqxtqnwpmhv x:95 y:40 count:7      
id:kxhszzrhxqlnvwvwjgnm x:49 y:6 count:6       
id:rwnwfgdpzcjpzzfmgcfn x:93 y:34 count:7      
id:tcvhtpqlfrwngybsyzqh x:95 y:94 count:6      
id:pmlmqnprwcjggjfhttmy x:20 y:41 count:6      
id:kpsmmhfhxxrrlvbbgzkv x:9 y:28 count:5