# Modrinth Scraper: Minecraft Mods, Plugins & Versions (`recordsdata/modrinth-minecraft-mods-scraper`) Actor

Scrape Modrinth: Minecraft mods, plugins, shaders, resource packs and modpacks with downloads, followers, categories, licenses and per-version file links. Filter by game version and loader. Searches 161,000+ projects. Export CSV, Excel, JSON. No login or API key.

- **URL**: https://apify.com/recordsdata/modrinth-minecraft-mods-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** Games, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3" alt="RecordsData" width="100%" />
</p>

## Modrinth Scraper: Minecraft Mods, Plugins & Versions

> Modrinth Scraper exports Minecraft mod, plugin, shader, resource pack, data pack, modpack and server listing data from modrinth.com: title, author, downloads, followers, categories, license, game versions, loaders, client and server side, plus one row per released version with file hashes and changelog. Filter by category, game version, loader, side, license, author, downloads and dates. Up to 72 fields per row. Export CSV, Excel, JSON or XML. No login, no API key. Priced from $10 per 1,000 search rows.

Modrinth lists 161,305 projects as of 2026-10-03 (76,721 of them mods), and this Modrinth scraper turns any slice of that catalog into a dataset. It reads Modrinth's official public API, so download and follower counts are the exact registry numbers at the moment you run it. A search is no longer capped at 10,000 rows.

### 🔎 What does Modrinth Scraper do?

Use it to find the **most downloaded Fabric or NeoForge mods for Minecraft 1.21.4**, client-only or server-only mods, Minecraft Java server listings, full project records for slugs such as `sodium`, and the version history per mod with changelog, SHA-1 and SHA-512 hashes and dependencies. Schedule the same query weekly to track download growth.

### 📋 What data can you extract from Modrinth?

Each row has up to 72 fields (71 data columns plus `error`). Fields that do not apply are omitted.

| Group | Fields | Row types |
|---|---|---|
| Identity | `recordType`, `projectId`, `slug`, `title`, `projectType`, `url`, `scrapedAt` | all |
| People | `author`, `organization`, `teamMembers` (usernames and roles) | search, project |
| Text | `description`, `body` (up to 20,000 characters) | search, project |
| Taxonomy | `categories` (no loaders), `additionalCategories`, `loaders`, `environment` | search, project |
| Popularity | `downloads`, `followers` | all |
| Compatibility | `clientSide`, `serverSide`, `latestGameVersion`, `latestReleaseVersion`, `gameVersions` (latest 20), `gameVersionCount` | search, project |
| License | `license`, `licenseName`, `licenseUrl` | search, project |
| Status | `projectStatus`, `monetizationStatus`, `versionCount`, `latestVersionId` | project |
| Links and media | `sourceUrl`, `issuesUrl`, `wikiUrl`, `discordUrl`, `donationUrls`, `iconUrl`, `galleryUrls` | project |
| Dates | `dateCreated`, `dateApproved`, `dateModified` | search, project |
| Server listings | `serverAddress`, `serverRegion`, `serverCountry`, `serverLanguages`, `serverPlayersOnline`, `serverPlayersMax`, `serverVersion`, `serverVerifiedPlays2w`, `serverVerifiedPlays4w`, `serverCheckedAt` | server rows |
| Versions | `projectSlug`, `projectTitle`, `versionId`, `name`, `versionNumber`, `versionType`, `versionStatus`, `featured`, `changelog` (up to 3,000 characters), `datePublished` | version rows |
| Files | `fileName`, `fileUrl`, `fileSizeBytes`, `fileSha1`, `fileSha512`, `fileCount`, `dependencyCount`, `dependencies` | version rows |

### 🧾 Sample output of the Modrinth scraper

A trimmed search row for the Sodium mod from the 2026-10-10 verification run:

```json
{
  "recordType": "search-hit",
  "slug": "sodium",
  "projectType": "mod",
  "categories": ["optimization"],
  "loaders": ["fabric", "neoforge", "quilt"],
  "url": "https://modrinth.com/mod/sodium"
}
```

`categories` no longer lists loaders; use `loaders`.

### 💰 How much does it cost to scrape Modrinth?

Pay per event. You pay only for rows saved to your dataset. Error rows, "project not found" rows, invalid-input runs and empty searches are never charged. Server details, team info and extra filters add no charge.

| Event | What is billed | Free tier | Bronze | Silver | Gold and above |
|---|---|---|---|---|---|
| `search-record` | One project or server listing from search | $0.01125 | $0.01031 | $0.010 | $0.010 |
| `project-record` | One full project record per slug | $0.015 | $0.01406 | $0.01313 | $0.01219 |
| `version-record` | One released version row | $0.010 | $0.010 | $0.010 | $0.010 |

Worked examples at the Free tier: 1,000 search rows cost $11.25. One project record for `sodium` plus 100 version rows costs $0.015 + $1.00 = $1.015. At Silver, 1,000 search rows cost $10. Set a maximum charge per run and the actor stops cleanly when it is reached. The Pricing tab is authoritative.

### 🚀 How to scrape Modrinth in 3 steps

1. Open the actor and choose a **project type** (mod, plugin, shader, resource pack, data pack, modpack or Minecraft Java server). Optionally set categories, game versions, loaders, client and server side, or license.
2. Choose how to sort (downloads, followers, newest, recently updated, relevance) and set **Max Items**. Optionally add project slugs, team info and version history.
3. Click **Start**, then download the dataset as CSV, Excel, JSON or XML.

### ⚙️ Input

| Field | Type | Default | Meaning |
|---|---|---|---|
| `includeSearch` | boolean | true | Scrape the catalog by search or browse |
| `searchQuery` | string | empty | Keyword; empty browses everything of the chosen type |
| `projectType` | select | mod | mod, plugin, datapack, resourcepack, shader, modpack, minecraft_java_server |
| `categories`, `categoriesMatch` | list, select | empty, all | Categories; `all` needs every one, `any` needs one |
| `gameVersions`, `gameVersion` | list, string | empty | Minecraft versions (any of); the single field still works |
| `loaders`, `loader` | list, select | empty | Any of 29 loaders, read live from Modrinth; the single field still works |
| `clientSide`, `serverSide` | select | any | required, optional, unsupported or unknown |
| `license`, `openSourceOnly` | string, boolean | empty, false | SPDX license id; open source projects only |
| `author` | string | empty | Author username, case-insensitive |
| `minDownloads`, `minFollowers` | integer | 0 | Minimum counts |
| `updatedSince`, `createdSince` | string | empty | YYYY-MM-DD, today, yesterday, 7d, 4w, 3m, 1y |
| `sortBy` | select | downloads | downloads, follows, newest, updated, relevance |
| `includeServerInfo` | boolean | false | Server address, region, languages, players, plays |
| `projectSlugs` | list | empty | Slugs or URLs for full project records |
| `includeTeam` | boolean | false | Slug mode: author, organization and team members with roles |
| `includeVersions` | boolean | false | Add one row per release for each slug |
| `maxVersionsPerProject` | integer | 50 | Cap on version rows per slug |
| `versionGameVersions`, `versionLoaders`, `versionTypes` | list | empty | Version rows only: game versions, loaders, release, beta or alpha |
| `maxItems` | integer | 10 | Cap on billable rows; free users limited to 10 |

Values inside one list are combined with OR; different filters with AND. An unknown category, loader, game version or date stops the run with a clear message and no charge.

```json
{
  "projectType": "mod",
  "categories": ["optimization"],
  "loaders": ["fabric", "neoforge"],
  "gameVersions": ["1.21.4", "1.20.1"],
  "clientSide": "required",
  "serverSide": "unsupported",
  "sortBy": "downloads",
  "maxItems": 10
}
```

### 📦 Output

Rows go to the default dataset with three views: Overview, Versions and Servers. A search runs until `maxItems` or the end of the results; the old 10,000-row ceiling is gone (a 10,300-row search was checked locally, the largest cloud run so far had 501 rows). A search with no matches finishes as SUCCEEDED with the message "No results matched your search filters. Nothing was charged." In slug mode, after at least 25 failed slugs the rest of the list is skipped.

### ⚖️ Modrinth scraper vs alternatives

Store pages read on 2026-10-10.

| Actor | Price per 1,000 rows | Filters shown in listing |
|---|---|---|
| This actor | $10 to $11.25 by tier | Category, version, loader, side, license, dates |
| parseforge/modrinth-mods-scraper | $35.50 | Category (AND), loader (OR); rest not stated |
| fortuitous_pirate/modrinth-scraper | $12.50 | Loader, game version; rest not stated |

Version history, server listings and team info are not stated in either rival listing. Our search row is about 3.2 to 3.6 times cheaper than parseforge and 10 to 20 percent below fortuitous_pirate. A third rival, crawlerbros/modrinth-scraper, returned 404 and is not compared. Our project record costs $0.01219 to $0.015, so check the Pricing tab for your tier.

### 🧩 Use cases

Mod analytics, modpack curation, server discovery, content production ("best shaders for 1.21" articles with real download counts) and ecosystem research by diffing weekly snapshots.

### 🔌 Run Modrinth Scraper via API and integrations

```bash
curl -X POST "https://api.apify.com/v2/acts/RecordsData~modrinth-minecraft-mods-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectType":"shader","sortBy":"downloads","maxItems":10}'
```

Use the Apify API, the JavaScript or Python client, schedules and webhooks, or connect the dataset to Zapier, Make, n8n and Google Sheets.

### 📜 Is it legal to scrape Modrinth?

The actor reads Modrinth's official public API, which serves public project metadata, and sends a user agent with a contact address as Modrinth asks. It collects project data, not private user data. You are responsible for using the output in line with Modrinth's terms and the license of each project.

### 🤖 Modrinth Scraper MCP server for AI agents

AI agents can call this Actor through the Apify MCP server at `https://mcp.apify.com?tools=RecordsData/modrinth-minecraft-mods-scraper`. The URL loads only this Actor as a tool.

Config for Claude Desktop, Cursor, VS Code or any client with remote MCP:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=RecordsData/modrinth-minecraft-mods-scraper"
    }
  }
}
```

Example agent prompt:

> Use the Modrinth Scraper to list the 10 most downloaded client-only Fabric mods in the optimization category for Minecraft 1.21.4 with their downloads, followers and license.

Tool description: "Scrape Modrinth Minecraft mods, plugins, shaders, resource packs, data packs, modpacks and server listings with downloads, followers, categories, license and loaders, plus version history per project. Filter by category, game version, loader, client and server side, license and dates."

Choose this tool when an agent needs current Modrinth download counts, game versions, loaders or version history. It takes the same fields as the Input table.

### ❓ Frequently asked questions

#### How do I scrape Modrinth mods without coding?

Open the Modrinth Scraper on Apify, pick a project type such as mod, shader or plugin, set Max Items and click Start. No login or API key is needed because the actor reads Modrinth's official public API. Download the dataset as CSV, Excel, JSON or XML, or fetch it through the Apify API.

#### Can I filter Modrinth mods by Minecraft version and loader?

Yes. In the Modrinth Scraper set `gameVersions` (or the older `gameVersion`) and `loaders` (or `loader`). The loader list has 29 values, read live from Modrinth. Filters are applied on Modrinth's side, so you get a ranked list such as the most downloaded Fabric mods for one Minecraft version.

#### How do the category, loader and game version filters combine (AND or OR)?

Values inside one list are combined with OR: loaders fabric and neoforge match either one. Different filters are combined with AND. Categories default to AND (`categoriesMatch` set to `all`); set it to `any` to accept projects with at least one of them. An unknown value stops the run before any request.

#### How do I find client-only or server-only mods?

Use `clientSide` and `serverSide`, each with required, optional, unsupported or unknown. Client required plus server unsupported gives client-only mods, which were 16,048 of 77,055 mods on 2026-10-10. Server required plus client unsupported gives server-only mods. The values come back on every row as `clientSide` and `serverSide`.

#### Can the Modrinth Scraper list Minecraft servers?

Yes. Set `projectType` to `minecraft_java_server`. Switch on `includeServerInfo` to add the address, region, country, languages, players online and maximum, server software and verified plays over two and four weeks. It adds no extra charge: server rows bill as `search-record`, the same event as any other search row.

#### Can I get the project team and organization?

Yes, in slug mode. Add slugs to `projectSlugs` and switch on `includeTeam`. Each record then gets the author, the organization name and `teamMembers` with usernames and roles. For projects with no Owner role, such as Sodium and Lithium, the author is the Project Lead and the organization is CaffeineMC. It adds no extra charge.

#### Does the Modrinth Scraper get download counts for each version?

Yes. Turn on `includeVersions` and add project slugs such as `sodium`. Each version row has its own download count, release channel, game versions, loaders, file name, direct file URL, size and hashes. `maxVersionsPerProject` caps the version rows per slug and defaults to 50.

#### Can I filter version history by game version, loader and release type?

Yes. Use `versionGameVersions` and `versionLoaders` to keep only matching versions (applied on Modrinth's side), and `versionTypes` with release, beta or alpha to choose release channels. In a verified run with Fabric, 1.21.4 and release only, every version row matched all three. They do not apply to search rows.

#### Why did my Modrinth Scraper run return 0 results?

The filters matched nothing on Modrinth, for example a minimum downloads value no mod reaches. The run still succeeds, shows the message "No results matched your search filters. Nothing was charged.", and bills nothing. Loosen the filters or keyword and retry. A misspelled category, loader, game version or date fails fast instead, with a message listing valid values.

#### Am I charged for errors or unknown slugs in the Modrinth Scraper?

No. In the Modrinth Scraper, error rows and "project not found" rows are saved without a billable event, empty searches are never charged, and a run stopped by invalid input costs nothing. You pay only for rows saved to your dataset: search rows, full project records and version rows, each at the event price shown on the Pricing tab.

#### How many Modrinth projects can one scraper run return?

More than 10,000. The old per-query cap is gone: the Modrinth Scraper keeps paging until `maxItems` or the end of the results. A 10,300-row search was delivered in full in a local test, with no duplicates. The largest cloud run so far had 501 rows, so set a maximum charge per run for safety.

#### Why did the column order and the categories field change?

Every row now follows one fixed column order, so some columns, for example `iconUrl`, sit in new positions in CSV and Excel files; names and meanings are unchanged. Also, `categories` no longer includes loader names: for Sodium it is now `["optimization"]` and `loaders` holds `["fabric","neoforge","quilt"]`.

#### How current is the Modrinth Scraper data?

The Modrinth Scraper reads Modrinth's official public API live on every run, so download and follower counts are the exact registry numbers at the moment you start it. Each row includes a `scrapedAt` timestamp, and project rows carry `dateCreated` and `dateModified`.

#### Can I try the Modrinth Scraper for free?

Yes. Free Apify users get a 10-row preview per run, enough to check the fields, filters and output format. Paid Apify plans remove that limit and also get lower per-row event prices, for example $0.010 per search row from the Silver tier instead of $0.01125.

### 🧭 Want related data? Other RecordsData scrapers

- [Steam Charts Scraper](https://apify.com/RecordsData/steam-charts-scraper) for game player counts.
- [Epic Games Store Scraper](https://apify.com/RecordsData/epic-games-store-scraper) for game listings and prices.
- [OpenCritic Games Scraper](https://apify.com/RecordsData/opencritic-games-scraper) for game review scores.

### 💬 Support

Found a bug or a missing field? Open the Issues tab on this actor's page, or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11

# Actor input Schema

## `includeSearch` (type: `boolean`):

Scrape the Modrinth project catalog: search by keyword or browse everything sorted by downloads, followers or date, using the filters below. Turn off to fetch only the project slugs listed further down.

## `searchQuery` (type: `string`):

Keyword to search Modrinth projects by name or description, for example sodium, shaders or magic. Leave empty to browse all projects of the selected type, ordered by the sort option.

## `projectType` (type: `string`):

Which kind of Modrinth project to scrape: mod, plugin, data pack, resource pack, shader, modpack or Minecraft Java server listing. Defaults to mod.

## `categories` (type: `array`):

Only projects tagged with these categories, for example optimization, technology, worldgen, adventure, magic or library (resource packs: 16x, gui, realistic; shaders: realistic, cartoon). Matches a project's main and additional categories. See Categories match to choose between all of them and any of them. An unknown category stops the run before any request is charged and lists the valid names.

## `categoriesMatch` (type: `string`):

All: a project must carry every category listed above (AND). Any: at least one of them is enough (OR). Only used when Categories is not empty.

## `gameVersion` (type: `string`):

Only projects compatible with this Minecraft version, for example 1.21.4. Kept for older inputs; to combine several versions use Game versions below (both are merged). An unknown version stops the run before any request is charged.

## `gameVersions` (type: `array`):

Only projects compatible with at least one of these Minecraft versions, for example 1.21.4 and 1.20.1. Snapshots such as 26.4-snapshot-3 are accepted. Merged with Game version above.

## `loader` (type: `string`):

Only projects that support this loader or platform (Fabric, Forge, NeoForge, Quilt, Paper, Spigot and 22 more). Kept for older inputs; to combine several loaders use Loaders below (both are merged). Leave on Any for no loader filter.

## `loaders` (type: `array`):

Only projects that support at least one of these loaders, for example fabric and neoforge. Accepts every loader Modrinth lists (fabric, forge, neoforge, quilt, paper, spigot, bukkit, purpur, folia, velocity, iris, optifine and more); an unknown name stops the run before any request is charged and lists the valid ones. Merged with Loader above.

## `clientSide` (type: `string`):

Filter by how the project behaves on the player's client: required, optional, unsupported or unknown. Leave on Any for no filter.

## `serverSide` (type: `string`):

Filter by how the project behaves on a dedicated server: required, optional, unsupported or unknown. Client side required plus server side unsupported finds client-only mods such as Sodium. Leave on Any for no filter.

## `license` (type: `string`):

Only projects under this license, as the license column shows it: an SPDX id such as MIT, Apache-2.0, GPL-3.0-only or LGPL-3.0-only, or a custom id such as LicenseRef-All-Rights-Reserved. SPDX ids are matched ignoring case. Leave empty for any license.

## `openSourceOnly` (type: `boolean`):

Only projects that publish their source code (Modrinth's open source flag). Off by default.

## `author` (type: `string`):

Only projects owned by this Modrinth username, for example modmuss50. Matched ignoring case. Leave empty for all authors.

## `minDownloads` (type: `integer`):

Only projects with at least this many downloads. 0 means no minimum.

## `minFollowers` (type: `integer`):

Only projects with at least this many followers. 0 means no minimum.

## `updatedSince` (type: `string`):

Only projects updated on or after this date. Use YYYY-MM-DD (UTC), today, yesterday, or a relative value such as 7d (days), 4w (weeks), 3m (months of 30 days) or 1y. Leave empty for no date filter.

## `createdSince` (type: `string`):

Only projects first published on or after this date. Same formats as Updated since. Combine with the Newest sort to follow new releases on Modrinth.

## `sortBy` (type: `string`):

How search results are ordered: most downloaded, most followed, newest, recently updated, or keyword relevance. Defaults to downloads.

## `includeServerInfo` (type: `boolean`):

For Minecraft Java server listings (project type above, or a slug that is a server), add the join address, region, languages, players online and maximum, game version and verified plays. Costs one extra request per server and no extra charge. Off by default.

## `projectSlugs` (type: `array`):

Modrinth project slugs or URLs (for example sodium, fabric-api) to fetch as full project records with the 20 latest game versions plus the total count, loaders, links, gallery, donation links and the long description. Unknown slugs return an uncharged error row.

## `includeTeam` (type: `boolean`):

Add the project's author, organization and team member usernames with their roles to each full project record. Costs one or two extra requests per slug and no extra charge. Off by default.

## `includeVersions` (type: `boolean`):

One row per released version (game versions, loaders, downloads, changelog, file name, link and checksums, dependencies) for each slug above.

## `maxVersionsPerProject` (type: `integer`):

Cap on version rows per project.

## `versionGameVersions` (type: `array`):

Only version rows built for at least one of these Minecraft versions, for example 1.21.4. Applies to the version history of the slugs above and nothing else. Leave empty for all versions.

## `versionLoaders` (type: `array`):

Only version rows built for at least one of these loaders, for example fabric. Applies to the version history of the slugs above and nothing else. Leave empty for all loaders.

## `versionTypes` (type: `array`):

Only version rows of these channels: release, beta, alpha. Leave empty for all channels.

## `maxItems` (type: `integer`):

Maximum number of billable rows to return across search rows, project records and version rows. Free users are limited to 10 items (preview). Paid users: up to 1,000,000.

## Actor input object example

```json
{
  "includeSearch": true,
  "searchQuery": "",
  "projectType": "mod",
  "categories": [],
  "categoriesMatch": "all",
  "gameVersion": "",
  "gameVersions": [],
  "loader": "",
  "loaders": [],
  "clientSide": "",
  "serverSide": "",
  "license": "",
  "openSourceOnly": false,
  "author": "",
  "minDownloads": 0,
  "minFollowers": 0,
  "updatedSince": "",
  "createdSince": "",
  "sortBy": "downloads",
  "includeServerInfo": false,
  "projectSlugs": [],
  "includeTeam": false,
  "includeVersions": false,
  "maxVersionsPerProject": 50,
  "versionGameVersions": [],
  "versionLoaders": [],
  "versionTypes": [],
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields per row

## `versions` (type: `string`):

One row per released version with game versions, loaders, file and link

## `servers` (type: `string`):

Minecraft Java server listings with join address, region and players

## `fullData` (type: `string`):

Complete dataset with all fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "",
    "categories": [],
    "gameVersion": "",
    "gameVersions": [],
    "loaders": [],
    "license": "",
    "author": "",
    "updatedSince": "",
    "createdSince": "",
    "projectSlugs": [],
    "versionGameVersions": [],
    "versionLoaders": [],
    "versionTypes": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/modrinth-minecraft-mods-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "",
    "categories": [],
    "gameVersion": "",
    "gameVersions": [],
    "loaders": [],
    "license": "",
    "author": "",
    "updatedSince": "",
    "createdSince": "",
    "projectSlugs": [],
    "versionGameVersions": [],
    "versionLoaders": [],
    "versionTypes": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/modrinth-minecraft-mods-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "",
  "categories": [],
  "gameVersion": "",
  "gameVersions": [],
  "loaders": [],
  "license": "",
  "author": "",
  "updatedSince": "",
  "createdSince": "",
  "projectSlugs": [],
  "versionGameVersions": [],
  "versionLoaders": [],
  "versionTypes": [],
  "maxItems": 10
}' |
apify call recordsdata/modrinth-minecraft-mods-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/modrinth-minecraft-mods-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/m6uKbzxTdy8V5Ali9/builds/RwsNWEyXOEKYuh1vy/openapi.json
