Skip to content
Rust library wrapping the API
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Linux Build Status Windows Build Status

A Rust library for using the Screeps HTTP API.

Screeps is a true programming MMO where users uploading JavaScript code to power their online empires. rust-screeps-api can connect to the official server, and any private server instances run by users.

rust-screeps-api uses hyper to run http requests and serde to parse json results.


extern crate screeps_api;

use screeps_api::SyncApi;

let mut api = SyncApi::new().unwrap();

api.login("username", "password").unwrap();

let my_info = api.my_info().unwrap();

println!("Logged in with user ID {}!", my_info.user_id);

Documentation is located at

Unofficial API documentation for:

What's implemented

  • Logging in
  • Getting all leaderboard information
  • Getting room terrain
  • Checking room status
  • Getting room overview info
  • Getting logged in user's info
  • Getting rooms where PvP recently occurred
  • Websocket connections:
    • Getting user CPU and Memory usage each tick
    • Getting a map overview of a room
    • Getting new message notifications
    • Getting console messages
    • Parts of getting room detailed updates
      • Almost all room objects are parsed
      • Flags are parsed
      • RoomVisuals are not parsed

What isn't implemented

  • Market API
  • Messaging API
  • Detailed user information API
  • Game manipulation API
  • Room history API
  • Parsing room visuals in room socket updates.


rust-screeps-api has both unit tests for parsing sample results from each endpoint, and integration tests which make calls to the official server.

Environmental variables used when testing:

  • SCREEPS_API_USERNAME: the username to log in with for doing authenticated tests
  • SCREEPS_API_PASSWORD: the password to login with for doing authenticated tests
  • All variables can also be placed into a .env file (parsed using the dotenv crate)


  • cargo test to perform all tests, including calls to with provided login details.
  • cargo test parse to only perform parsing unit tests. This can be performed offline.
  • cargo test -- --skip auth to test both parsing and all unauthenticated calls to the official server.
You can’t perform that action at this time.