· 18 min read
Nexus Mods Scraper: Up to 1,000 Free Results a Month (2026)
Mod records carry 32 fields, including the full description, endorsement counts, and author details across more than 4,900 games. This collector returns everything from file version history to individual archive contents like ESP and BSA paths without requiring an API key or cookies. A thousand results cost $5.00 on the free-plan price, and Apify's free plan provides a $5.00 monthly credit that covers the majority of that volume. This is for developers building compatibility trackers or community dashboards who need public modding data; it is not for those seeking private user email addresses.
Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Nexus Mods Scraper on Apify and run the prefilled example.
How reliable is Nexus Mods Scraper in production?
Across the last 30 days of public runs on the Apify platform, Nexus Mods Scraper recorded 61 runs with the following outcomes.
| Outcome | Runs | Share |
|---|---|---|
| Succeeded | 61 | 100.0% |
| Failed | 0 | 0.0% |
| Aborted by the user | 0 | 0.0% |
| Timed out | 0 | 0.0% |
| Total | 61 | 100.0% |
No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.
What does it cost to run Nexus Mods Scraper?
Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.005 | $5.00 |
| BRONZE | $0.00433 | $4.33 |
| SILVER | $0.00367 | $3.67 |
| GOLD | $0.003 | $3.00 |
| PLATINUM | $0.003 | $3.00 |
| DIAMOND | $0.003 | $3.00 |
Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.
The maxItems control has the largest effect on the bill because it directly limits the number of results written to the dataset. The cheapest way to verify your setup is to set this to a small value like 5 and run a test before scaling to a full search.
How do you run Nexus Mods Scraper from the API?
The schema marks 1 of its 38 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Nexus Mods Scraper, so the request works once your token is in place.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~nexus-mods-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","collectionSlug":"rqhcxy","username":"Chesko","userSearchQuery":"chesko"}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"collectionSlug": "rqhcxy",
"username": "Chesko",
"userSearchQuery": "chesko"
}
run = client.actor("crawlerbros~nexus-mods-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"mode": "search",
"collectionSlug": "rqhcxy",
"username": "Chesko",
"userSearchQuery": "chesko"
}
const run = await client.actor('crawlerbros~nexus-mods-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.
Which Nexus Mods Scraper inputs matter, and which can you skip?
The mode control is the most important setting, as it defines whether you receive mod metadata, user profiles, or file hashes. Most practitioners should provide a gameDomainName and leave advanced filters like minFileSizeKb at their defaults for an initial run.
mode(string): What to fetch from Nexus Mods. Default:"search".collectionSlug(string): Nexus Mods collection slug identifying the collection to list mods/comments/changelog/bug reports for, e.g.rqhcxy(found in a collection page URL: nexusmods.com/games//collections/).username(string): Exact Nexus Mods username to look up, e.g.Chesko. Ignored ifmemberIdis set.userSearchQuery(string): Free-text query matched against Nexus Mods usernames (partial/substring match), e.g.chesko,dark,mod. Must be at least 2 characters.searchQuery(string): Free-text query matched against mod names, e.g.survival,armor,graphics overhaul. Must be at least 2 characters (shorter values are ignored). Leave blank to browse a game's mods by filters/sort only. Default:"survival".gameDomainName(string): Nexus Mods game slug to scope results to, e.g.skyrimspecialedition,fallout4,cyberpunk2077,witcher3,stardewvalley,baldursgate3,eldenring. Find a game's slug in its Nexus Mods URL (nexusmods.com/). Leave blank to search/browse across all games (not supported in modDetails/modFiles/modFileContents/modEndorsers/modRequirements/browseTags/browseMedia, which always require it; optional in collectionMods/collectionComments sincecollectionSlugalone already identifies the collection). Default:"skyrimspecialedition".modIds(array): Numeric Nexus Mods mod IDs to fetch (found in a mod page URL, e.g.671fromnexusmods.com/skyrimspecialedition/mods/671). RequiresgameDomainNameto also be set. Default:[].fileExtensionFilter(string): Restrict the archive file listing to an exact file extension, e.g..esp,.esl,.esm,.bsa,.ba2,.dll,.ini,.txt,.json,.dds,.nif. The leading dot is optional (espand.espboth work). Leave blank to list every file inside the mod's archive(s).requirementDirection(string): Which side of the dependency relationship to return for each mod ID. Default:"all".collectionRevisionNumber(integer): Exact revision number to fetch. Leave blank to fetch the collection's current published revision.collectionCommentsSortBy(string): Collection comments sort order. Default:"createdAt".bugReportStatusFilter(string): Which bug reports to return for the collection. Default:"open".
The other 26 controls, with their defaults, are listed in the input schema on Nexus Mods Scraper on Apify.
Fixed-choice controls: mode accepts 18 values (default search), including search (Search mods (text query + filters)), modDetails (exact lookup by game + mod ID), modFiles (download/version list by game + mod ID), modFileContents (archive file/folder listing by game + mod ID); requirementDirection accepts all (Both directions), requires (Only what this mod requires (dependencies + DLC)), requiredBy (Only mods that require this mod (dependents)); collectionCommentsSortBy accepts createdAt (Date posted), likesCount (Likes); bugReportStatusFilter accepts open (Open only), closed (Closed only), all (Both).
What does Nexus Mods Scraper return?
The returned records are ideal for tracking version updates or monitoring game trends through endorsement counts. They do not contain restricted file download links or any data that is not publicly visible on the Nexus Mods website.
Mod record (recordType: "mod")
modIduidnamesummarydescriptionversioncategorycategoryIdstatuscreatedAtupdatedAtadultContentauthordownloadsendorsementsfileSizeKbsupportsVortexdirectDownloadEnabledblockedFromEarningPointslegacyModRequirementsEnabledpictureUrlthumbnailUrlthumbnailLargeUrlthumbnailBlurredUrlthumbnailLargeBlurredUrluploaderNameuploaderMemberIduploaderAvatarUrlgameIdgameDomainNamegameNamemodUrl
Mod file record (recordType: "modFile")
fileIdnameversioncategorydescriptionuploadedAtsizeKbsizeBytestotalDownloadsuniqueDownloadsarchiveFileNameisPrimaryvirusScanStatushasRequirementsAlertfileGroupIduploaderNameuploaderMemberIdmodIdmodNamegameDomainNamegameNamefileUrlmodUrl
Mod file content record (recordType: "modFileContent")
fileNamefilePathfileExtensionfileSizeBytesfileIdmodIdmodNamegameDomainNamegameNamemodUrlfileUrl
Mod endorser record (recordType: "modEndorser")
memberIdnameavatarUrlendorsedAtmodIdmodNamegameDomainNamegameNamemodUrlprofileUrl
Mod requirement record (recordType: "modRequirement")
sourceModIdsourceModNamesourceModUrldirectionrequiresrequiredByrequirementTypemoddlcrelatedNamerelatedModIdrelatedModUrlisExternalnotesexternalUrlgameDomainNamegameName
Game record (recordType: "game")
gameIdnamedomainNamegenremodCountcollectionCountimageCountmediaCountvideoCountdownloadCountuniqueDownloadCountsupportsVortexcopyrightedNametrendingPeriodDaysforumUrlapprovedAtgameUrl
Collection record (recordType: "collection")
collectionIdslugnamesummarydescriptionendorsementstotalDownloadsuniqueDownloadsoverallRatingoverallRatingCountrecentRatingrecentRatingCountcollectionStatusallowUserMediacategoryNamegameIdgameDomainNamegameNameauthorNameauthorMemberIdauthorAvatarUrlheaderImageUrltileImageUrllatestPublishedRevisionNumbermodCounttotalSizeBytescreatedAtupdatedAtfirstPublishedAtlastPublishedAtcollectionUrl
Collection mod record (recordType: "collectionMod")
collectionSlugcollectionRevisionNumberoptionalupdatePolicyversionfileIdfileNamesizeKbsizeBytesfileTotalDownloadsfileUniqueDownloadsmodIdmodNamemodSummarymodCategorymodAdultContentmodAuthorgameDomainNamegameNamemodUrlcollectionUrl
Collection comment record (recordType: "collectionComment")
commentIdbodycreatedAtupdatedAtlikesCountisPinnedisReplyparentCommentIdcreatorNamecreatorMemberIdcreatorAvatarUrlcreatorProfileUrlcollectionSlugcollectionNamegameDomainNamegameNamecollectionUrl
Collection changelog record (recordType: "collectionChangelog")
changelogIdrevisionNumbercollectionRevisionIddescriptioncreatedAtupdatedAtcollectionSlugcollectionNamegameDomainNamegameNamecollectionUrl
Collection bug report record (recordType: "collectionBugReport")
bugReportIdtitledescriptionstatusopenclosedcollectionRevisionNumbercreatedAtupdatedAtclosedAtclosureReasonresolvednot_a_bugwont_fixreporterNamereporterMemberIdreporterAvatarUrlreporterProfileUrlcollectionSlugcollectionNamegameDomainNamegameNamecollectionUrl
News record (recordType: "news")
newsIdtitlesummarycontentisHtmldatecommentsCountcategoryNameauthorNameauthorMemberIdauthorAvatarUrlimageUrlheaderImageUrlsourceNamesourceUrlnewsUrl
User record (recordType: "user")
memberIdnameavatarUrlaboutcountryjoinedlastActivekudosendorsementsGivenmodCountownedModCountcontributedModCountcollectionCountimageCountvideoCountpostsviewsrecognizedAuthordonationsEnabledhasGivenKudosbanneddeleteduniqueModDownloadsprofileUrl
Tag record (recordType: "tag")
tagIdnameisAdultisGlobaltaggablesCountcategoryNamegameDomainName
Media record (recordType: "media")
mediaIdmediaTypeimagevideosupporterImagetitlecaptiondescriptionmediaUrlthumbnailUrlsiteUrlisAdultContentviewsratingcreatedAtcategoryNameownerNameownerMemberIdgameIdgameDomainNamegameName
File hash record (recordType: "fileHash")
md5fileNamefileSizeBytesfileTypecreatedAtgameIdfileIdversionsizeKbmodFileSizeBytestotalDownloadsuniqueDownloadscategorymodIdmodNamegameDomainNamegameNamemodUrlfileUrl
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Nexus Mods Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Select mode based on the specific artifact you need, such as modDetails for metadata or modFileContents for archive paths.
- Locate the gameDomainName from the Nexus Mods URL, using slugs like skyrimspecialedition or baldursgate3.
- Enter the numeric modIds into the array if you are using mod-specific modes to target exact records.
- Set maxItems to a low value like 5 for a trial run to verify that the returned recordType fields meet your requirements.
- Configure the adultContentFilter to include or exclude 18+ content based on your project's content policy.
- Verify the output in the dataset to ensure fields like uploaderName or downloads are populated as expected.
- Download the final results in your preferred format such as JSON or CSV once the run status shows SUCCESS.
How do you apply it? Three worked playbooks
These are Nexus Mods Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Modding tool integrations
Outcome: Build mod-list managers, update checkers, or compatibility trackers
Configure: Set mode to "modFiles", gameDomainName to a slug like "stardewvalley", and input the target modIds.
Working method: Retrieve the file list for specific mods to extract the version and uploadedAt fields. Compare these values against your local version database on a regular schedule to detect new releases.
Deliverable: A JSON dataset containing the latest file versions and download stats for a set of mod IDs.
Stop condition: The run returns zero results for a mod ID that is confirmed to be public on the site.
Use case 2: Conflict/compatibility checks
Outcome: Inspect a mod's archive contents (modFileContents) to see exactly which ESP/BSA/texture files it packs before installing
Configure: Set mode to "modFileContents", gameDomainName to the game slug, and fileExtensionFilter to ".esp".
Working method: Input the modIds of two mods you wish to compare and examine the filePath fields in the output. Look for overlapping paths or identical file names that indicate potential file overwrites.
Deliverable: A file listing of archive contents including file paths, sizes, and extensions.
Stop condition: The fileExtensionFilter yields no results for an archive known to contain those specific extensions.
Use case 3: Community dashboards
Outcome: Track a game's most-endorsed or most-downloaded mods over time
Configure: Set mode to "search", gameDomainName to the game slug, and sortBy to "endorsements".
Working method: Execute the search mode at set intervals, such as weekly, and capture the endorsements and totalDownloads for the top mods. Compare snapshots to identify trending content.
Deliverable: A time-series dataset of mod popularity metrics for a specific game catalog.
Stop condition: The endorsements field returns null or missing values for a top-ranked mod.
What breaks, and how do you design around it?
- Private/authenticated fields (email addresses, IP addresses, moderation history) are never exposed - only public profile data is returned for
userProfile. - Mod page URLs (
modUrl,fileUrl,gameUrl,collectionUrl,newsUrl,profileUrl,siteUrl) are standard browser links to nexusmods.com; they are not fetched by this actor and are provided for reference/click-through only. nexusmods.com sits behind a Cloudflare JS challenge, so these links return a 403 to non-browser tools likecurlor server-side fetchers - they load normally in any real browser. Media URLs (pictureUrl,thumbnailUrl,headerImageUrl,tileImageUrl,imageUrl,avatarUrl,mediaUrl) are served fromstaticdelivery.nexusmods.com, which has no such challenge and is directly fetchable. browseMediaresults are user-generated screenshots/videos;caption/description/isAdultContentare only populated for image uploads (Nexus Mods' schema does not expose an adult flag for videos), andcaptionis omitted entirely for videos since the underlying field doesn't exist on that type.mode=modRequirementsDLC-type records (requirementType: "dlc") never haverelatedModId/relatedModUrl/isExternal- a DLC/game-expansion requirement isn't a mod, so onlyrelatedName(the expansion's name, e.g.Far Harbor) and optionallynotesare populated for those records.searchQuery(mode=search) andgameNameQuery(mode=browseGames) must be at least 2 characters - Nexus Mods' API rejects shorter values outright, so single-character queries are ignored (other filters/sort still apply, or the full catalog/game's mods are browsed unfiltered).mediaSearchQuery(mode=browseMedia) has no such minimum.mode=collectionCommentsonly covers comments on collection pages - Nexus Mods' public data API does not expose a comparable comment thread for individual mod pages, so there is no equivalentmodCommentsmode.mode=collectionBugReportswithbugReportStatusFilter: "all"issues one request foropenand one forclosedand merges them (Nexus Mods' API requires an exact status per request, with no combined option) - theopenbatch is always emitted first.mode=collectionChangelog/collectionBugReportsrequirecollectionSlug;gameDomainNameis optional context for both (same ascollectionMods/collectionComments) since the slug alone already identifies the collection.mode=fileHashLookupcan return multiple matching files for one hash - an MD5 checksum is not unique to a single mod file (unrelated uploads can legitimately share identical content, e.g. an empty file, a duplicate re-upload, or a shared readme); every match is returned as a separatefileHashrecord. Invalid entries inmd5Hashes(wrong length or non-hex characters) are silently dropped before the request is made.mode=collectionModscannot fetch the mod list of a collection that is flagged adult-only (18+) - Nexus Mods' API blocks that specific lookup for anonymous (non-logged-in) requests regardless ofcollectionRevisionNumber, even though the same collection still appears normally inbrowseCollectionslistings and its comments/changelog/bug reports remain fetchable. The actor detects this and reports it clearly via the run's status message rather than a misleading "not found".
When you hit the restriction on adult-only collection mod lists, remember that these specific lookups are blocked for anonymous requests by the site's API. For tracing unlabeled archives, use the fileHashLookup mode to resolve MD5 checksums back to their source mod records.
When should you not use Nexus Mods Scraper?
If you need to scrape open-source Minecraft data specifically, Modrinth Scraper is a more focused alternative for that ecosystem. For those who need to download video content linked in mod media, the TikTok Downloader API is better suited if the source is external to Nexus. This Actor cannot access private modder data or collection mod lists flagged as adult-only, so look elsewhere if those specific non-public fields are required.
What should you check before trusting the output?
- Confirm that recordType matches the requested mode, as each mode emits a different schema.
- Check that modId is present in modFile records to ensure the data is correctly mapped to its parent mod.
- Monitor for 403 errors on modUrl links, which occur when accessing them with non-browser tools due to site protections.
- Validate that gameDomainName matches the official slug, otherwise the Actor may return an empty dataset.
- Alert if the downloads count for a known high-traffic mod remains at zero, indicating a potential change in the source layout.
None of this proves a record is correct. It gives a scheduled Nexus Mods Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
What is the cost for 1,000 results?
At the free-plan price, 1,000 results cost $5.00. Apify's free plan includes a $5.00 monthly usage credit with no credit card required, which covers nearly 1,000 results once the small run-start fee and platform usage are considered. Result charges only apply to items written to the dataset.
How reliable is this Actor for scheduled tasks?
The Actor has a 100.0% success rate based on 61 of 61 public runs finishing successfully in the last 30 days. No run failed or timed out during this period, indicating it is a stable choice for automated mod-update checkers or community dashboards.
Do I need a Nexus Mods account to use this?
No. This Actor requires no login, API key, or cookies. It retrieves data from public endpoints, allowing you to fetch mod details, file versions, and user profiles without managing any credentials or authentication headers.
How can I identify an unknown mod file?
Use the fileHashLookup mode and provide the MD5 hashes of the files you want to identify. The Actor will return every mod and specific file version on Nexus Mods that matches that checksum, making it easy to trace unlabeled archives back to their source.
How do I find a game's domain name?
The gameDomainName is the slug found in the game's URL on the site, such as skyrimspecialedition or fallout4. If you don't know the slug, you can run the browseGames mode to get a list of all 4,900+ supported games and their domain names.
Where to go next
When you are ready to run it, open Nexus Mods Scraper on Apify; the free plan covers up to 1,000 results a month.
Start with the Nexus Mods Scraper Actor page for the current input schema, pricing tier, and run history.
Other Actors we maintain for related data:
- Modrinth Scraper: Scrape Modrinth â€" the largest open-source Minecraft mod and plugin registry.
- Hacker News Stories, Comments & Users Scraper: Scrape Hacker News - search stories and comments, fetch top/new/best stories, get user profiles and submission history.
- Roblox Scraper: Scrape Roblox, search games by keyword, fetch game details by universe ID, browse trending games, search catalog UGC items, and get user profiles with their published games.
- TikTok Downloader API: Download TikTok videos and their cover thumbnails by URL.
Related guides:
- Yahoo Finance Scraper: 48 Data Fields, Up to 2,500 Free Results/Month
- TapTap Scraper: 3 Practical Use Cases
- TikTok Downloader API: Practical Playbooks and Workflows
- Reddit Community Scraper: Up to 1,000 Free Results a Month (2026)
- TikTok Profile Scraper: Up to 1,000 Free Results a Month (2026)
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.
Actor last updated by its maintainers on 2026-08-03.
Run outcome figures cover the 30 day public window ending 2026-09-27.
Featured actors
Nexus Mods Scraper
Scrape Nexus Mods - the largest modding community. Search mods across 4,900+ games, fetch mod details and file/version history, browse games, mod collections and their bundled mods, news, user profiles, and identify files by MD5 hash. No login, API key, or cookies required.
Run on Apify ↗