Steam Workshop Scraper avatar

Steam Workshop Scraper

Pricing

Pay per event

Go to Apify Store
Steam Workshop Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldDescription
itemIdSteam Workshop published file ID
urlCanonical item detail URL
titleWorkshop item title
appIdSteam app/game ID
gameGame name when visible
authorNameCreator display name
authorUrlCreator Steam profile URL
ratingTextVisible rating text
ratingCountParsed number of ratings
uniqueVisitorsPublic visitor counter
currentSubscribersPublic subscriber counter
currentFavoritesPublic favorite counter
fileSizeVisible file size
postedAtPosted date text
updatedAtUpdated date text
descriptionPublic Workshop description text
tagsWorkshop tags
previewImageUrlsPreview and screenshot image URLs
dependenciesOptional required item links when rendered
collectionCountNumber of visible collections using the item
commentCountPublic comment count
commentsOptional recent public comments
changelogUrlChange notes URL
sourceUrlBrowse or detail URL that produced the item
scrapedAtISO 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

  1. Open the actor on Apify.
  2. Keep the default Steam app ID or paste your own Workshop URL.
  3. Set maxItems to the number of Workshop items you need.
  4. Choose a sort order such as Trending, Top rated, Most subscribed, or Most recent.
  5. Decide whether to include comments and dependencies.
  6. Start the run.
  7. 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&section=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 2
  • 4000 — Garry's Mod
  • 108600 — Project Zomboid
  • 294100 — RimWorld
  • 255710 — Cities: Skylines

Search query

Use query to search Workshop titles and descriptions.

Examples:

  • map
  • realism
  • weapon
  • server
  • quality of life

Browse sort

Use browseSort to match Steam's public browse filters.

Supported values:

  • trend
  • mostrecent
  • lastupdated
  • totaluniquesubscribers
  • totaluniquevisitors
  • toprated

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.

{
"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 ApifyClient
client = 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.

Explore other automation-lab actors for gaming and community intelligence:

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.