Chris Carline


WebService::EveOnline -- a wrapper intended to (eventually) provide a useful interface to the MMORPG game, "Eve Online"

(N.B. Export EVE_USER_ID and EVE_API_KEY to your environment before installing to run all tests.)

Please have a look at the example scripts:

  * examples/show_characters
  * examples/show_corporation  
  * examples/show_transactions
  * examples/skills_overview

They will get you started a lot quicker than the documentation (patches welcome!) ever will, which is mostly reference.


0.61 - This is an incomplete implementation of the Eve Online API, but is a starting point.


    use WebService::EveOnline;
    my $eve = WebService::EveOnline->new({
        user_id => <user_id>,
        api_key => '<api_key>'
    my $character = $eve->character('<character_name or ID>');
    print $character->name . " has " .
     $character->balance . " ISK in the pot\n";

    foreach $char ($eve->characters) {
        print $char->name . " has " . scalar($character->skills) .
              " skills.";

    See example scripts for more ways of using the interface.


WebService::EveOnline (essentially) presents a nice programatic sugar over the top of the pretty cronky API that CCP games provide. The idea is that an interested party (e.g. me) can keep track of what's going on with my characters in a similar manner to what EveMON does.

There is currently no item data provided with this interface (although the API exposes no item data anyway, it'd be nice to have at some point).

Also, no map or wallet information is supported although this will be added as a priority over the coming weeks.


WebService::EveOnline is instantiated with a 'standard' (so much as these things are) call to "new". Usually, at this point you would pass down a hashref that contained the keys "user_id" and "api_key" as demonstrated in the synopsis.

You MUST specify your user_id and api_key parameters in order to get the API to work, even if you're only interested in returning data where they are not normally required by the API.

You may also specify the following parameters:

cache_type: Defaults to 'SQLite'. For now, please keep the default. cache_dbname: Database to use to store cached skill data. cache_user: Username of the database to use. Do not use yet. cache_pass: Password of the database to use. Do not use yet. cache_init: Set this to 'no' to disable caching. Not recommended. cache_maxage: Maximum time (in seconds) to wait before a cache rebuild.

Currently, only SQLite databases are supported. Using another database should be fairly straightforward to add in, but isn't available yet.

You can specify ":memory" as the cache_dbname to build the cache in memory if required.


API reference as follows:


Set up the initial object by calling the new method on it. It is important to pass a valid user id and api key (available from or this module will not do anything useful. That is does anything useful at all is debatable, but it does let me print out my favourite character's account balance, so that's pretty much all I want/need it to do at the moment... :-)

    my $eve = WebService::EveOnline->new({
        user_id => <user_id>,
        api_key => '<api_key>'


Please look at the individual WebService::EveOnline::API::* modules for documentation on how to extract other data from the API.

WebService::EveOnline::API::Character WebService::EveOnline::API::Skills WebService::EveOnline::API::Transactions WebService::EveOnline::API::Journal WebService::EveOnline::API::Map


By setting the environment variables EVE_USER_ID and EVE_API_KEY, it is possible to write short(ish) 'one-liners' returning data from your account like this:

 perl -MWebService::EveOnline \
 -e'print WebService::EveOnline->new->character('name')->account_balance'
 perl -MWebService::EveOnline \
 -e'print map{$_->character_name."\n"}WebService::EveOnline->new->characters'


If you don't happen to have my specific user_id and api_key, you milage may *seriously* vary. I've not been playing Eve Online all that long, and there are probably dozens of edge cases I need to look at and resolve.

Contributions/patches/suggestions are all gratefully received.

A public subversion repository is available at:

Please report any bugs or feature requests to bug-webservice-eveonline at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


Frankly, whilst the Eve Online API is better than nothing, it's pretty horrible to work with. I wanted to concentrate on my code rather than parsing results, so I decided to hide the gory details away in a nice module I didn't have to look at much. Having said that, by no means is this code considered anything other than a quick and dirty hack that does precisely the job I want it to do (and no more).


Chris Carline, <chris at>


Copyright 2007-2008 Chris Carline, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.