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 validget_database_info()- Get info about world save databaseread_save_header()- Read SaveHeader from custom tablelist_profile_files()- List all .arkprofile fileslist_tribe_files()- List all .arktribe filesread_profile_file(path)- Read single profile fileread_tribe_file(path)- Read single tribe fileget_all_players()- Get all player dataget_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 IDtribe_id: Optional[int]- Tribe ID if player is in a tribelevel: int- Character levelexperience: float- Total XPlat: float- Latitude coordinatelon: float- Longitude coordinatelast_seen: Optional[datetime]- Last time profile was modifiedfile_path: str- Path to .arkprofile file
TribeData
Dataclass containing tribe information.
Fields:
tribe_id: int- Unique tribe IDtribe_name: str- Tribe name (if available)owner_name: str- Owner name (if available)member_count: int- Number of membersdino_count: int- Number of tamed dinoslast_active: Optional[datetime]- Last time tribe was modifiedfile_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
- Complete UE5 property deserialization
- Property name mappings (which bytes = player name, etc.)
- Dino data extraction
- Structure coordinate extraction
- 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 scanningplayer_analysis.py- Player statisticstribe_analysis.py- Tribe statisticscluster_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
- Issues: GitHub Issues
- Discord: [ARK Admin Community]
- Documentation: Wiki
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
331a5a8c0043ac45072b21d1bab5e869a74774aa3b9bdea7a3952d3f70dbb9b9
|
|
| MD5 |
4409e89e512082dea18d901e18cf94b8
|
|
| BLAKE2b-256 |
8aa609ab6efb053e522c2e700b751d23bc54df7f871b07570df451534196efb6
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b7ac62f57ee1d9ff9737277d445eb1ec414d00a3859d08834c9f5f36f51e4da
|
|
| MD5 |
4b8ef3c12d25c32e1e2d0b7a22e741ff
|
|
| BLAKE2b-256 |
f772eaa0e5f652f273e998938939650e3da7fbcd6d69dcf4b2a52807396c12cc
|