Skip to content

PaulRenvoise/steamilar

Repository files navigation

Steamilar

A command-line tool for searching and discovering Steam games using boolean query expressions with tags. Find games that match complex criteria like "indie AND souls-like AND OPTIONAL difficult AND NOT roguelike".

Features

  • Boolean Queries: Search using AND, OR, NOT, and OPTIONAL operators
  • Steam Tag Support: Filter by any Steam tag (action, indie, RPG, etc.)
  • Result Ranking: Results sorted by tag relevance and review count
  • Caching: Automatic caching with TTL to minimize API calls (default: 1 day)
  • Multiple Output Format: Results can be displayed with panels and formatting, or dumped in JSON

Installation

This project requires Python 3.14+ and uses uv for dependency management.

# Clone the repository
git clone <repository-url>
cd steamilar

# Install dependencies
uv sync

Usage

Basic Usage

uv run steamilar.py "indie AND souls-like"

Query Syntax

The tool supports sophisticated boolean expressions:

  • AND (or &&): Both tags must be present
  • OR (or ||): Either tag can be present
  • NOT (or !): Tag must not be present
  • OPTIONAL (or ?): Tag is preferred but not required
  • Parentheses: Group expressions for complex logic
  • Quotes: Use quotes for multi-word tags like "story rich"

Examples

Find indie souls-like with a top down view:

uv run steamilar "indie AND souls-like AND OPTIONAL singleplayer AND OPTIONAL difficult AND (action OR action-adventure OR combat) AND (top-down OR isometric)"

Find singleplayer story-rich atmospheric games:

uv run steamilar "singleplayer AND dark AND atmospheric AND OPTIONAL psychological AND (horror OR surreal) AND ('story rich' OR narrative)"

Find singleplayer investigation games:

uv run steamilar "singleplayer AND exploration AND mystery AND atmospheric AND OPTIONAL nonlinear AND (puzzle OR investigation)"

Command-Line Options

Option Default Description
-f/--format rich Output format: rich or json
--per-pages 100 Maximum results per page to fetch per search query
--max-pages 2 Maximum pages to fetch per search query
--exclude ["free", "low_reviews"] Exclude games: free (f2p), no_reviews (0 reviews), low_reviews (less than 50 reviews), none (no exclusion)

Examples:

# Get more results
uv run steamilar.py "indie AND puzzle" -p 5

# Export as JSON
uv run steamilar.py "action AND rpg" -f json > results.json

# Exclude games with no reviews (upcoming or non-reviewed games)
uv run steamilar.py "survival AND horror" --exclude no_reviews

Development

# Install dev dependencies
uv sync --dev

# Run linter
uvx ruff check .

# Format code
uvx ruff format .

Credits

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

About

Search steam to find games using boolean query expressions with tags

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages