Skip to main content

Python library for parsing ARK: Survival Ascended save files

Project description

ARK Data Parser

A Python library for parsing ARK: Survival Ascended (ASA) save files.

Features

  • 📊 Read world saves (.ark) - SQLite database access to game objects
  • 👤 Parse player profiles (.arkprofile) - Extract player data including EOS IDs, last seen times
  • 🏛️ Parse tribe files (.arktribe) - Extract tribe information and metadata
  • 🔍 Binary format support - Custom binary reader for Unreal Engine 5 serialization
  • 📈 Cluster scanning - Scan entire ARK clusters automatically

Installation

pip install ark-asa-data-parser

Or install from source:

git clone https://github.com/BoldPhoenix/ArkDiscordBot.git
cd ArkDiscordBot
pip install -e ./bot/ark_data_parser

Quick Start

from ark_asa_parser import ArkSaveReader, scan_all_servers
from pathlib import Path

# Read a single server
save_dir = Path(r'C:\ARK\Saved\SavedArks\TheIsland_WP')
reader = ArkSaveReader(save_dir)

# Get database info
info = reader.get_database_info()
print(f"Game objects: {info['tables']['game']:,}")

# Get all players
players = reader.get_all_players()
for player in players:
    print(f"Player: {player.eos_id}, Last seen: {player.last_seen}")

# Get all tribes
tribes = reader.get_all_tribes()
for tribe in tribes:
    print(f"Tribe {tribe.tribe_id}, Last active: {tribe.last_active}")

# Scan entire cluster
cluster_root = Path(r'C:\ARK')
readers = scan_all_servers(cluster_root)
for server_name, reader in readers.items():
    print(f"{server_name}: {len(reader.get_all_players())} players")

Current Capabilities

✅ Working

  • Read world save files as SQLite databases
  • Extract game object counts and statistics
  • Read player profile metadata (EOS ID, file size, timestamps)
  • Read tribe metadata (ID, file size, timestamps)
  • Scan multiple servers in a cluster
  • Binary data reading utilities

🚧 In Development

  • Full UE5 property deserialization
  • Player name extraction from profiles
  • Player level and stats parsing
  • Tribe name extraction
  • Tribe member lists
  • Dino data extraction
  • Structure data extraction

File Format

ARK: Survival Ascended uses different formats for different save types:

World Saves (.ark)

  • Format: SQLite database
  • Tables:
    • game: Contains binary blobs for all game objects (players, dinos, structures)
    • custom: Contains metadata like SaveHeader
  • Size: 50-250 MB typical

Player Profiles (.arkprofile)

  • Format: Binary (Unreal Engine 5 serialization)
  • Contains: Player data, stats, inventory, engrams
  • Size: 10-50 KB typical

Tribe Files (.arktribe)

  • Format: Binary (Unreal Engine 5 serialization)
  • Contains: Tribe name, members, settings, logs
  • Size: 1-50 KB typical

API Reference

ArkSaveReader

Main class for reading ARK save data.

reader = ArkSaveReader(save_dir: Path)

Methods:

  • is_valid() - Check if save directory is valid
  • get_database_info() - Get info about world save database
  • read_save_header() - Read SaveHeader from custom table
  • list_profile_files() - List all .arkprofile files
  • list_tribe_files() - List all .arktribe files
  • read_profile_file(path) - Read single profile file
  • read_tribe_file(path) - Read single tribe file
  • get_all_players() - Get all player data
  • get_all_tribes() - Get all tribe data

PlayerData

Dataclass containing player information.

Fields:

  • character_name: str - Character name (if available)
  • player_name: str - Player name (if available)
  • eos_id: str - Epic Online Services ID
  • tribe_id: Optional[int] - Tribe ID if player is in a tribe
  • level: int - Character level
  • experience: float - Total XP
  • lat: float - Latitude coordinate
  • lon: float - Longitude coordinate
  • last_seen: Optional[datetime] - Last time profile was modified
  • file_path: str - Path to .arkprofile file

TribeData

Dataclass containing tribe information.

Fields:

  • tribe_id: int - Unique tribe ID
  • tribe_name: str - Tribe name (if available)
  • owner_name: str - Owner name (if available)
  • member_count: int - Number of members
  • dino_count: int - Number of tamed dinos
  • last_active: Optional[datetime] - Last time tribe was modified
  • file_path: str - Path to .arktribe file

scan_all_servers

Scan all servers in a cluster.

readers = scan_all_servers(cluster_root: Path) -> Dict[str, ArkSaveReader]

Parameters:

  • cluster_root: Path to cluster root directory (e.g., R:\PhoenixArk)

Returns: Dictionary mapping server name to ArkSaveReader instance

Advanced Usage

Custom Binary Parsing

from ark_asa_parser.binary_reader import BinaryReader
from pathlib import Path

# Read binary file
with open('player.arkprofile', 'rb') as f:
    data = f.read()

# Create reader
reader = BinaryReader(data)

# Read data
version = reader.read_int32()
guid = reader.read_guid()
text = reader.read_string()

Property Deserialization

from ark_asa_parser.binary_reader import PropertyReader

prop_reader = PropertyReader(reader)
properties = prop_reader.read_all_properties()

for name, prop_data in properties.items():
    print(f"{name}: {prop_data['value']}")

Contributing

Contributions are welcome! This library is under active development as we reverse engineer the ARK ASA save format.

Priority Areas

  1. Complete UE5 property deserialization
  2. Property name mappings (which bytes = player name, etc.)
  3. Dino data extraction
  4. Structure coordinate extraction
  5. Documentation improvements

Development Setup

git clone https://github.com/BoldPhoenix/ArkDiscordBot.git
cd ArkDiscordBot
pip install -e .[dev]

Examples

See the examples/ directory for more usage examples:

  • basic_usage.py - Simple server scanning
  • player_analysis.py - Player statistics
  • tribe_analysis.py - Tribe statistics
  • cluster_dashboard.py - Full cluster overview

Known Limitations

  • UE5 Binary Format: Full deserialization of UE5 properties is complex and ongoing
  • Property Names: Not all property names are known yet
  • Encrypted Data: Some data may be encoded/compressed
  • Version Compatibility: Tested with ARK ASA as of December 2025

Credits

Created by BoldPhoenix for the ARK admin community.

Inspired by:

  • VincentHenauGithub/ark-save-parser
  • arkutils projects
  • ARK modding community

License

MIT License - See LICENSE file for details

Support

Changelog

v0.1.0 (December 2025)

  • Initial release
  • Basic save file reading
  • SQLite world save access
  • Profile and tribe metadata extraction
  • Cluster scanning functionality
  • Binary reader utilities

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ark_asa_parser-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ark_asa_parser-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file ark_asa_parser-0.1.0.tar.gz.

File metadata

  • Download URL: ark_asa_parser-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for ark_asa_parser-0.1.0.tar.gz
Algorithm Hash digest
SHA256 331a5a8c0043ac45072b21d1bab5e869a74774aa3b9bdea7a3952d3f70dbb9b9
MD5 4409e89e512082dea18d901e18cf94b8
BLAKE2b-256 8aa609ab6efb053e522c2e700b751d23bc54df7f871b07570df451534196efb6

See more details on using hashes here.

File details

Details for the file ark_asa_parser-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ark_asa_parser-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for ark_asa_parser-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b7ac62f57ee1d9ff9737277d445eb1ec414d00a3859d08834c9f5f36f51e4da
MD5 4b8ef3c12d25c32e1e2d0b7a22e741ff
BLAKE2b-256 f772eaa0e5f652f273e998938939650e3da7fbcd6d69dcf4b2a52807396c12cc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page