{"id":35870,"date":"2025-10-06T14:27:31","date_gmt":"2025-10-06T12:27:31","guid":{"rendered":"https:\/\/www.graviton.at\/letterswaplibrary\/title-steam-dataset-2025-263k-games-with-multi-modal-database-architecture-postgresql-pgvector\/"},"modified":"2025-10-06T14:27:31","modified_gmt":"2025-10-06T12:27:31","slug":"title-steam-dataset-2025-263k-games-with-multi-modal-database-architecture-postgresql-pgvector","status":"publish","type":"post","link":"https:\/\/www.graviton.at\/letterswaplibrary\/title-steam-dataset-2025-263k-games-with-multi-modal-database-architecture-postgresql-pgvector\/","title":{"rendered":"Title: Steam Dataset 2025 \u2013 263K Games With Multi-modal Database Architecture (PostgreSQL + Pgvector)"},"content":{"rendered":"<p><!-- SC_OFF --><\/p>\n<div class=\"md\">\n<p>I&#8217;ve been working on a modernized Steam dataset that goes beyond the typical CSV dump approach. My third data science project, and my first serious one that I&#8217;ve published on Zenodo. I&#8217;m a systems engineer, so I take a bit of a different approach and have extensive documentation.<\/p>\n<p>Would love a star on the repo if you&#8217;re so inclined or get use from it! <a href=\"https:\/\/github.com\/vintagedon\/steam-dataset-2025\">https:\/\/github.com\/vintagedon\/steam-dataset-2025<\/a><\/p>\n<p>After collecting data on 263,890 applications from Steam&#8217;s official API (including games, DLC, software, and tools), I built a multi-modal database system designed for actual data science workflows. Both as an exercise, a way to &#8216;show my work&#8217; and also to prep for my own paper on the dataset.<\/p>\n<p>What makes this different:<\/p>\n<p>Architecture-first approach: Instead of flat CSV files, this uses PostgreSQL 16 for normalized relational data, Neo4j for publisher\/developer relationship graphs, and pgvector for semantic search on game descriptions. The goal was to make it analytically-native from the start.<\/p>\n<p>Comprehensive coverage: 263K applications compared to the 27K in the popular 2019 Kaggle dataset. Includes rich HTML descriptions with embedded media, international pricing, detailed metadata, and Steam&#8217;s full application catalog as of January 2025.<\/p>\n<p>Semantic search ready: Game descriptions are vectorized using sentence-transformers, enabling queries like &#8220;find games similar to Baldur&#8217;s Gate 3&#8221; based on actual content similarity rather than just tags.<\/p>\n<p>Use cases: &#8211; NLP projects using game descriptions (avg 270 words) &#8211; Price prediction models with international market data &#8211; Semantic search and recommendation systems &#8211; Time-series analysis of gaming trends<\/p>\n<p>Data quality notes: &#8211; ~56% API success rate (Steam delists games, regional restrictions, content type diversity) &#8211; Conservative rate limiting (1.5s delays) for sustainable collection &#8211; All data from official Steam Web API only (no third-party scrapers) &#8211; Comprehensive error handling and retry logic<\/p>\n<p>The dataset is fully documented with setup guides, analysis examples, and architectural decision rationale. Built using Python 3.12+, all collection and processing code included.<\/p>\n<p>Repository: <a href=\"https:\/\/github.com\/vintagedon\/steam-dataset-2025\">https:\/\/github.com\/vintagedon\/steam-dataset-2025<\/a><\/p>\n<p>Zenodo Release: <a href=\"https:\/\/zenodo.org\/records\/17266923\">https:\/\/zenodo.org\/records\/17266923<\/a><\/p>\n<p>Quick stats: &#8211; 263,890 total applications &#8211; ~150K successful detailed records &#8211; International pricing across 40+ currencies &#8211; 50+ metadata fields per game &#8211; Vector embeddings for 100K+ descriptions<\/p>\n<p>This is an active project \u2013 still refining collection strategies and adding analytical examples. Open to feedback on what analysis would be most useful to include.<\/p>\n<p>Technical stack: Python, PostgreSQL 16, Neo4j, pgvector, sentence-transformers, official Steam Web API<\/p>\n<\/div>\n<p><!-- SC_ON -->   submitted by   <a href=\"https:\/\/www.reddit.com\/user\/vintagedon\"> \/u\/vintagedon <\/a> <br \/> <span><a href=\"https:\/\/www.reddit.com\/r\/datasets\/comments\/1nzgnwn\/title_steam_dataset_2025_263k_games_with\/\">[link]<\/a><\/span>   <span><a href=\"https:\/\/www.reddit.com\/r\/datasets\/comments\/1nzgnwn\/title_steam_dataset_2025_263k_games_with\/\">[comments]<\/a><\/span><\/p><div class='watch-action'><div class='watch-position align-right'><div class='action-like'><a class='lbg-style1 like-35870 jlk' href='javascript:void(0)' data-task='like' data-post_id='35870' data-nonce='614a020375' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.graviton.at\/letterswaplibrary\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-35870 lc'>0<\/span><\/a><\/div><\/div> <div class='status-35870 status align-right'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been working on a modernized Steam dataset that goes beyond the typical CSV dump approach. My&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[85],"tags":[],"class_list":["post-35870","post","type-post","status-publish","format-standard","hentry","category-datatards","wpcat-85-id"],"_links":{"self":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts\/35870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/comments?post=35870"}],"version-history":[{"count":0,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts\/35870\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/media?parent=35870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/categories?post=35870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/tags?post=35870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}