Steam Workshop Scraper
Pricing
Pay per event
Steam Workshop Scraper
Scrape Steam Workshop mods, creators, ratings, subscribers, tags, dependencies, comments, and change links for game intelligence.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Extract public Steam Workshop mods, maps, collections, creators, ratings, subscribers, tags, dependencies, change links, and comments from Steam Workshop pages.
Use this actor when you need structured Workshop intelligence for games such as Counter-Strike 2, Garry's Mod, Project Zomboid, Cities: Skylines, RimWorld, and other Steam titles with active mod ecosystems.
What does Steam Workshop Scraper do?
Steam Workshop Scraper turns public Steam Workshop browse, search, and item detail pages into clean dataset records.
It can start from Steam Workshop browse URLs, exact item detail URLs, or Steam app IDs.
For each discovered Workshop item, it opens the public detail page and extracts the fields analysts usually need.
Typical fields include title, Workshop file ID, Steam app ID, game name, creator profile, rating count, visitor count, subscriber count, favorite count, tags, preview images, description, posted date, updated date, change note link, collection count, and optional public comments.
Who is it for?
Game studios can monitor which community maps, skins, add-ons, and mods gain traction.
Publishers can compare creator ecosystems across titles.
Community managers can find popular creators and content themes.
Mod-platform analysts can track subscriber and favorite trends.
Gaming data vendors can enrich datasets with public Workshop metadata.
Market researchers can study genre, tag, and creator behavior across games.
Why use this actor?
Steam Workshop pages are built for browsing, not bulk analysis.
Manual collection is slow and inconsistent.
This actor saves Workshop pages as structured rows that can be exported to JSON, CSV, Excel, Google Sheets, databases, or BI tools.
It uses HTTP extraction rather than a browser, so runs are lightweight and cost-efficient.
What Steam Workshop data can I extract?
| Field | Description |
|---|---|
itemId | Steam Workshop published file ID |
url | Canonical item detail URL |
title | Workshop item title |
appId | Steam app/game ID |
game | Game name when visible |
authorName | Creator display name |
authorUrl | Creator Steam profile URL |
ratingText | Visible rating text |
ratingCount | Parsed number of ratings |
uniqueVisitors | Public visitor counter |
currentSubscribers | Public subscriber counter |
currentFavorites | Public favorite counter |
fileSize | Visible file size |
postedAt | Posted date text |
updatedAt | Updated date text |
description | Public Workshop description text |
tags | Workshop tags |
previewImageUrls | Preview and screenshot image URLs |
dependencies | Optional required item links when rendered |
collectionCount | Number of visible collections using the item |
commentCount | Public comment count |
comments | Optional recent public comments |
changelogUrl | Change notes URL |
sourceUrl | Browse or detail URL that produced the item |
scrapedAt | ISO timestamp for the scrape |
How much does it cost to scrape Steam Workshop mods?
This actor uses pay-per-event pricing.
There is a small run-start charge and a per-item charge for each Workshop item saved to the dataset.
The default input is intentionally small, so your first run stays cheap.
Increase maxItems when you are ready to collect a larger sample.
Comments add extra page requests, so enable includeComments only when comment text is part of your workflow.
Quick start
- Open the actor on Apify.
- Keep the default Steam app ID or paste your own Workshop URL.
- Set
maxItemsto the number of Workshop items you need. - Choose a sort order such as Trending, Top rated, Most subscribed, or Most recent.
- Decide whether to include comments and dependencies.
- Start the run.
- Export the dataset in your preferred format.
Input options
Steam Workshop URLs
Use startUrls for exact Steam Workshop browse/search URLs or item detail URLs.
Example browse URL:
https://steamcommunity.com/workshop/browse/?appid=730&browsesort=trend§ion=readytouseitems
Example item URL:
https://steamcommunity.com/sharedfiles/filedetails/?id=3750019896
Steam app IDs
Use appIds when you want the actor to build browse URLs for you.
Common examples:
730— Counter-Strike 24000— Garry's Mod108600— Project Zomboid294100— RimWorld255710— Cities: Skylines
Search query
Use query to search Workshop titles and descriptions.
Examples:
maprealismweaponserverquality of life
Browse sort
Use browseSort to match Steam's public browse filters.
Supported values:
trendmostrecentlastupdatedtotaluniquesubscriberstotaluniquevisitorstoprated
Section
Use section to choose the Workshop area.
Most users should keep readytouseitems.
Collections and guides may expose different item shapes, so validate a small sample before large runs.
Comments and dependencies
Set includeComments to true to fetch recent public comments.
Set includeDependencies to true to capture visible required item links and related collection links when Steam renders them.
Example input: trending CS2 maps
{"appIds": ["730"],"query": "map","browseSort": "trend","section": "readytouseitems","maxItems": 50,"includeDependencies": true,"includeComments": false,"maxConcurrency": 5}
Example input: exact Workshop item with comments
{"startUrls": [{ "url": "https://steamcommunity.com/sharedfiles/filedetails/?id=3750019896" }],"maxItems": 1,"includeDependencies": true,"includeComments": true,"maxCommentsPerItem": 5}
Example output
{"itemId": "3750019896","url": "https://steamcommunity.com/sharedfiles/filedetails/?id=3750019896","title": "Nuke Line-ups | JuggLineups","appId": "730","game": "Counter-Strike 2","authorName": "juggphd","ratingCount": 1063,"currentSubscribers": 23956,"tags": ["CS2", "Map"],"commentCount": 119,"changelogUrl": "https://steamcommunity.com/sharedfiles/filedetails/changelog/3750019896"}
Tips for better results
Start with a small maxItems value to confirm the game and filter combination works.
Use toprated for evergreen content discovery.
Use trend for current momentum.
Use lastupdated to monitor active creators and recently maintained mods.
Use totaluniquesubscribers to find historically popular items.
Keep comment extraction disabled unless you need comment text.
Use lower concurrency for very large runs to reduce rate-limit risk.
Integrations
Send the output dataset to Google Sheets for creator watchlists.
Export CSV files for BI dashboards.
Connect the dataset to BigQuery, Snowflake, or Postgres for longitudinal analysis.
Use Apify webhooks to trigger downstream alerts when new Workshop items appear.
Combine the actor with sentiment analysis to classify public comments.
Join appId and itemId with your internal game catalog.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/steam-workshop-scraper').call({appIds: ['730'],query: 'map',maxItems: 50,});console.log(`Dataset: ${run.defaultDatasetId}`);
Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/steam-workshop-scraper').call(run_input={'appIds': ['730'],'query': 'map','maxItems': 50,})print(run['defaultDatasetId'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~steam-workshop-scraper/runs?token=MY-APIFY-TOKEN' \-H 'Content-Type: application/json' \-d '{"appIds":["730"],"query":"map","maxItems":50}'
MCP usage
Use the Apify MCP server to run this actor from AI tools.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/steam-workshop-scraper
Claude Code setup:
$claude mcp add apify-steam-workshop "https://mcp.apify.com/?tools=automation-lab/steam-workshop-scraper"
Claude Desktop JSON config:
{"mcpServers": {"apify-steam-workshop": {"url": "https://mcp.apify.com/?tools=automation-lab/steam-workshop-scraper"}}}
Example prompts showing MCP usage:
Example Claude Code MCP prompt:
Run automation-lab/steam-workshop-scraper for appId 730, query map, maxItems 25. Summarize the top creators by subscriber count.
Example Claude Desktop MCP prompt:
Scrape top-rated Steam Workshop items for Garry's Mod and export titles, authors, subscribers, favorites, and tags.
Example MCP analysis prompt:
Use the Steam Workshop Scraper to collect 100 trending CS2 map items, then rank them by subscribers, favorites, and update recency.
Data quality notes
Steam displays dates as public page text, often without a year.
Subscriber and visitor counts are public counters that may change over time.
Some Workshop items hide comments, collections, dependencies, or stats.
The actor returns optional fields only when Steam renders them publicly.
Legality
This actor extracts publicly available web pages.
You are responsible for using the data lawfully and respecting Steam's terms, applicable privacy rules, and your own compliance requirements.
Avoid collecting personal data you do not need.
Do not use the actor for spam, harassment, or abusive automation.
FAQ
Why did I get fewer items than requested?
Steam may return fewer results for narrow queries, tags, or small Workshop sections.
Try a broader query, remove required tags, or use a popular app ID.
Why are comments empty?
Comments may be disabled, hidden, rate-limited, or unavailable on the public comments page.
Enable includeComments and keep maxCommentsPerItem small for testing.
Why is the game field missing?
Some Workshop pages do not render the game name in a stable place.
Use appId as the reliable join key.
Related scrapers
Explore other automation-lab actors for gaming and community intelligence:
- https://apify.com/automation-lab/steam-workshop-scraper
- https://apify.com/automation-lab/steam-reviews-scraper
- https://apify.com/automation-lab/reddit-scraper
- https://apify.com/automation-lab/discord-server-scraper
Changelog
Initial version extracts public Steam Workshop browse and item detail data with optional comments and dependency links.
Support
If a Steam page type does not parse correctly, share the input URL and run ID so the extractor can be improved.