# CurseForge Mods Scraper | Export Minecraft Mod Data CSV/JSON (`parseforge/curseforge-mods-scraper`) Actor

Scrape Minecraft mods from CurseForge. Export mod details, downloads, authors, files, categories, game versions, and mod loader info as CSV, Excel, JSON, or XML.

- **URL**: https://apify.com/parseforge/curseforge-mods-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🔥 CurseForge Mods Scraper

> 🚀 **Export Minecraft mod data from CurseForge in seconds.** Mod name, slug, downloads, categories, loader, supported MC versions, license, author, main file URL, screenshots, and the full description - straight to CSV, Excel, JSON, or XML.

> 🕒 **Last updated:** 2026-05-22 · **📊 23 fields** per record · **150K+ mods** available on CurseForge · **All Minecraft versions and loaders**

The CurseForge Mods Scraper turns the public [CurseForge Minecraft Mods](https://www.curseforge.com/minecraft/mc-mods) catalog into a clean, structured dataset. It fetches each mod's server-rendered detail page (no API key required, no Cloudflare key needed from you) and parses the embedded React Server Components payload to surface every field the public page exposes.

Coverage spans 52 official Minecraft mod categories (Adventure & RPG, Magic, Storage, Technology, Performance, Utility & QoL, Map and Information, Tinker's Construct, Create, Refined Storage, and more), 7 mod loaders (Forge, Fabric, NeoForge, Quilt, LiteLoader, Cauldron, Any), and every Minecraft release version from 1.7.10 up to the current 1.21.x line.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| 🎮 Modpack creators | Identify popular mods by loader and MC version |
| 🛠️ Launcher and tool developers | Mirror CurseForge metadata into your own DB |
| 📊 Data analysts | Track download counts, loader market share, license trends |
| 🎥 Content creators | Find the top-downloaded mods for a specific version before recording |
| 🏢 Server operators | Audit which mods are compatible with your server stack |
| 🤖 AI / ML teams | Build a corpus of mod descriptions and metadata |

### 📋 What the CurseForge Mods Scraper does

- Fetches the CurseForge `/minecraft/mc-mods` listing or `/search?search=...` page with a real Chrome TLS fingerprint.
- Extracts the slug of every mod the SSR page surfaces (up to 20 per query).
- Visits each mod's detail page and parses the embedded RSC payload for the full project record.
- Applies post-fetch filters for `categoryIds`, `gameVersions`, and `modLoaderTypes` against the surfaced set.
- Flattens everything into a 23-field record with `imageUrl` first and `error` last.
- Exports as CSV, Excel, JSON, JSONL, XML, RSS, or HTML.

> 💡 **Why it matters:** the official CurseForge API requires a private API key and the internal web API is hard-locked behind Cloudflare bot management. This actor uses the public detail pages directly - the data you'd see in a browser, without needing your own key or `cf_clearance` cookie.

### 🎬 Full Demo

_🚧 Coming soon._

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td>searchQuery</td><td>string</td><td>No</td><td>Free-text search (e.g. jei, magic, storage). Leave empty to pull the default popular listing. Prefill: jei.</td></tr>
<tr><td>maxItems</td><td>integer</td><td>No</td><td>Free users: 10. Paid users: up to 1,000,000. Per-query soft cap: ~20 mods (see caveat). Prefill: 10.</td></tr>
<tr><td>sortField</td><td>enum</td><td>No</td><td>Featured, Popularity, LastUpdated, Name, Author, TotalDownloads. Default: Popularity.</td></tr>
<tr><td>categoryIds</td><td>string[]</td><td>No</td><td>52 official CurseForge categories: Adventure & RPG, API and Library, Magic, Storage, Technology, Performance, Utility & QoL, Cosmetic, Create, Tinker's Construct, Twilight Forest, Refined Storage, and more.</td></tr>
<tr><td>gameVersions</td><td>string[]</td><td>No</td><td>Free-text MC versions, e.g. 1.21.1, 1.20.1.</td></tr>
<tr><td>modLoaderTypes</td><td>string[]</td><td>No</td><td>Forge, Fabric, NeoForge, Quilt, LiteLoader, Cauldron, Any.</td></tr>
</table>

**Example 1 - search for JEI:**
```json
{
  "searchQuery": "jei",
  "maxItems": 10,
  "sortField": "Popularity"
}
````

**Example 2 - magic mods on Forge for 1.20.1:**

```json
{
  "searchQuery": "magic",
  "maxItems": 20,
  "sortField": "TotalDownloads",
  "categoryIds": ["magic"],
  "gameVersions": ["1.20.1"],
  "modLoaderTypes": ["Forge"]
}
```

> ⚠️ **Good to Know:** CurseForge only server-renders the first 20 mods of any listing; the rest is hydrated client-side via a Cloudflare-protected internal API. This scraper returns up to ~20 mods per query. To widen coverage, run multiple queries with different `searchQuery` terms - that's the recommended workflow. `categoryIds`, `gameVersions`, and `modLoaderTypes` are applied as post-fetch filters on the surfaced set so the input remains honest.

### 📊 Output

Each record is a flat object. `imageUrl` is always first, `error` is always last.

| Field | Type | Description |
|---|---|---|
| 🖼️ `imageUrl` | string | Mod avatar URL (CDN). |
| 📌 `name` | string | Display name of the mod. |
| 🔖 `slug` | string | URL-safe slug. |
| 🔗 `url` | string | Canonical CurseForge mod page. |
| 🆔 `id` | number | CurseForge project ID. |
| 📝 `summary` | string | Short tagline / one-liner. |
| 🏷️ `primaryCategory` | string | Top-level class (always `Mods` for this actor). |
| 🏷️ `categories` | string\[] | All categories the mod belongs to. |
| 👤 `author` | string | Primary author username. |
| 👥 `members` | object\[] | All project members with `name` and `role`. |
| 🧩 `modLoader` | string | Main file's mod loader (Forge / Fabric / NeoForge / Quilt / ...). |
| 🎮 `gameVersion` | string | Main file's primary MC version. |
| 🎮 `gameVersions` | string\[] | All MC versions the main file targets. |
| ⬇️ `downloadCount` | number | Lifetime project download count. |
| 📜 `licenseType` | string | License name (e.g. `MIT License`, `Custom License`). |
| 📅 `dateCreated` | ISO 8601 | Project creation date. |
| 🔄 `updateDate` | ISO 8601 | Project last-update date. |
| 🔗 `links` | object | `{ website, wiki, issues, source, donation }`. |
| 📦 `mainFile` | object | `{ id, fileName, displayName, fileLength, releaseType, primaryGameVersion, gameVersions, modLoader, dateCreated, dateModified }`. |
| 🖼️ `screenshots` | string\[] | Screenshot image URLs. |
| 📄 `description` | string | Full HTML description from the project page. |
| 🕒 `scrapedAt` | ISO 8601 | When this row was scraped. |
| ❌ `error` | string|null | Per-record error (null on success). |

**Sample record (JEI):**

```json
{
  "imageUrl": "https://media.forgecdn.net/avatars/thumbnails/29/69/256/256/635838945588716414.jpeg",
  "name": "Just Enough Items (JEI)",
  "slug": "jei",
  "url": "https://www.curseforge.com/minecraft/mc-mods/jei",
  "id": 238222,
  "summary": "View Items and Recipes",
  "primaryCategory": "Mods",
  "categories": ["Map and Information", "API and Library"],
  "author": "mezz",
  "members": [
    { "name": "mezz", "role": "Owner" },
    { "name": "CFGrafanaStats", "role": "Mascot" }
  ],
  "modLoader": "NeoForge",
  "gameVersion": "1.21.1",
  "gameVersions": ["1.21.1", "1.21"],
  "downloadCount": 573555876,
  "licenseType": "MIT License",
  "dateCreated": "2015-11-23T23:00:41.000Z",
  "updateDate": "2026-05-18T13:29:37.000Z",
  "mainFile": {
    "fileName": "jei-1.21.1-neoforge-19.27.0.336.jar",
    "displayName": "19.27.0.336 for NeoForge 1.21.1",
    "fileLength": 1529192,
    "modLoader": "NeoForge"
  },
  "scrapedAt": "2026-05-22T23:22:20.754Z",
  "error": null
}
```

**Sample record (Distraction Free Recipes):**

```json
{
  "imageUrl": "https://media.forgecdn.net/avatars/thumbnails/1145/593/256/256/638711642517202621.png",
  "name": "Distraction Free Recipes (EMI / REI / JEI)",
  "slug": "distraction-free-recipes",
  "id": 1167848,
  "summary": "Automatically hides the recipe viewer when not searching.",
  "categories": ["Utility & QoL", "Performance", "Cosmetic"],
  "author": "Txni",
  "modLoader": "Fabric",
  "gameVersion": "1.21.1",
  "downloadCount": 17212679,
  "licenseType": "Custom License"
}
```

### ✨ Why choose this Actor

| ✨ Feature | What it gets you |
|---|---|
| 🔓 No API key required | You don't need a CurseForge x-api-key or a `cf_clearance` cookie. |
| 🛡️ Real Chrome TLS fingerprint | Uses `impit` so detail pages return 200, not 403. |
| 📦 Full project record | Authors, members, main file, screenshots, HTML description, license. |
| 🧩 Mod-only scope | Locked to `classId=6` (Mods). Modpacks, resourcepacks, shaders excluded. |
| 📊 23 fields per record | Far beyond what the CurseForge UI shows on a single screen. |
| 🎯 Honest pagination | The README and input description make the per-query cap clear up front. |

### 📈 How it compares to alternatives

| Approach | Free? | Fields | Coverage | Effort |
|---|---|---|---|---|
| Manually copy from curseforge.com | ✅ | ~5 | Browsing limit | Hours of clicking |
| CurseForge Core API | ❌ (requires key + approval) | Full | Full | API key application + integration code |
| Internal web API | ❌ (Cloudflare-locked) | Full | Full | `cf_clearance` reverse-engineering |
| **CurseForge Mods Scraper** | ✅ ($5 trial credit) | **23** | **~20 per query, run many queries** | **1 click** |

### 🚀 How to use

1. **Sign up.** [Create a free Apify account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. **Open** the CurseForge Mods Scraper page.
3. **Set inputs.** Type a `searchQuery` and pick a sort field. Optionally add `categoryIds`, `gameVersions`, `modLoaderTypes`.
4. **Run.** Click Start. Free users get 10 items, paid users up to 1,000,000 (in batches of ~20 per query).
5. **Export.** Download the dataset as CSV, Excel, JSON, JSONL, XML, RSS, or HTML.

### 💼 Business use cases

#### 🎒 Modpack curation

Pull the top mods for Minecraft 1.20.1 Forge by search topic - performance, magic, storage, technology - and seed your modpack manifest with the `mainFile` info per row.

#### 📊 Catalog analytics

Track download growth over time across loaders and MC versions. Run on a schedule and pipe to BigQuery / Snowflake.

#### 🧩 Launcher / store integration

Mirror a curated slice of the CurseForge catalog into your own launcher or store front. No API key approval needed.

#### 🤖 AI dataset / RAG corpus

Index the `description` HTML for an AI assistant that recommends mods, compares alternatives ("Forge vs Fabric versions of X"), or explains mod compatibility.

### 🔌 Automating CurseForge Mods Scraper

- **Make (Integromat)** - schedule a weekly pull, push CSV to Google Sheets.
- **Zapier** - Slack alert when a tracked mod hits a download milestone.
- **Slack** - daily digest of newest mods for a specific MC version.
- **Airbyte** - sync the dataset into your warehouse.
- **GitHub Actions** - commit JSON snapshots to a repo on a cron.
- **Google Drive / Dropbox / S3** - drop the export into a folder.
- **Webhooks** - POST dataset URLs anywhere.

### 🌟 Beyond business use cases

#### 🔬 Research

Compare CurseForge and Modrinth catalogs. Study which mods exist on both, which are exclusive, license distribution, author overlap.

#### 🎮 Personal projects

Discord bots, personal launchers, modpack recommendation tools, "best of 2026" Reddit posts.

#### 🤝 Non-profit / education

Use the dataset to teach data analysis with a topic students actually care about.

#### 🧪 Experimentation

Train embeddings on mod descriptions. Cluster by category overlap. LLM-generate modpack themes from a filtered set.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude, Perplexity, or Copilot:

> "Help me design a series of input queries for the ParseForge CurseForge Mods Scraper to build a 200-mod dataset of popular Forge 1.20.1 magic and tech mods, knowing the scraper returns up to 20 results per query."

### ❓ Frequently Asked Questions

#### 🔑 Do I need a CurseForge API key?

No. The actor uses the public detail pages directly. No `x-api-key` and no `cf_clearance` cookie are required from you.

#### 🤔 Why does each query return at most ~20 mods?

CurseForge only server-renders the first 20 mods on any listing. The remaining results are hydrated client-side via a Cloudflare-protected internal API that hard-blocks every non-browser client. To pull more, run multiple queries with different `searchQuery` terms.

#### 🎮 Does it scrape modpacks, resourcepacks, or shaders?

No. Scope is locked to `classId=6` (Mods only). Modpacks (4471), resourcepacks (12), shaders, and addons categories are excluded by design.

#### 🧩 What loaders are supported?

Forge, Fabric, NeoForge, Quilt, LiteLoader, Cauldron, and Any.

#### 🎯 What MC versions does it support?

Every version CurseForge tags, from 1.7.10 (legacy) through the current 1.21.x line. Pass them as strings like `1.21.1`.

#### 📦 Does the output include a download URL?

Yes. `mainFile.downloadUrl` is included where CurseForge surfaces it on the page, alongside `fileName`, `displayName`, and `fileLength`.

#### 📊 How many fields per record?

23 fields. See the Output section.

#### 🆓 What do free users get?

Up to 10 items per run on a $5 trial credit. Paid users can run as many queries as needed and pull up to 1,000,000 items total.

#### 🔄 How often is the data refreshed?

Live on every run. The actor fetches CurseForge in real time.

#### 🌍 Does this use proxies?

The actor uses `impit` (Chrome TLS fingerprint) on Apify infrastructure. No residential proxies required for detail-page fetches.

#### ⚠️ Is this affiliated with CurseForge or Overwolf?

No. This is an independent tool. It is not endorsed by or affiliated with Overwolf or CurseForge.

#### 📥 What export formats are available?

CSV, Excel (XLSX), JSON, JSONL, XML, RSS, and HTML.

### 🔌 Integrate with any app

Apify natively integrates with Make, Zapier, n8n, Slack, Discord, Airbyte, Keboola, Google Drive, Google Sheets, Dropbox, AWS S3, GitHub, GitLab, generic webhooks, and the Apify API / SDK (Python, JavaScript, CLI).

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [Modrinth Mods Scraper](https://apify.com/parseforge/modrinth-mods-scraper) | Pull the same kind of data from Modrinth's official v2 API. |
| [Steam Store Scraper](https://apify.com/parseforge/steam-store-scraper) | Game prices, reviews, and metadata from Steam. |
| [GitHub Repo Scraper](https://apify.com/parseforge/github-repo-scraper) | Repo metadata, stars, releases, contributors. |
| [itch.io Games Scraper](https://apify.com/parseforge/itch-io-scraper) | Indie game listings, tags, and prices from itch.io. |
| [OurAirports Database Scraper](https://apify.com/parseforge/ourairports-scraper) | Full global airport reference dataset. |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more catalog and marketplace scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this is an independent tool, not affiliated with Overwolf, CurseForge, or Mojang. Only publicly available data from the CurseForge website is collected. Respect the licenses of the mods you download.

# Actor input Schema

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

Free-text search across Minecraft mods (e.g. 'jei', 'magic', 'storage'). Leave empty to pull the default popular mods listing.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Note: due to upstream pagination restrictions, this scraper returns up to ~20 mods per query — combine with searchQuery to widen coverage.

## `sortField` (type: `string`):

How to order the listing when no searchQuery is provided.

## `categoryIds` (type: `array`):

Filter results to mods that belong to any of the selected categories.

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

Filter to mods whose main file supports any of these Minecraft versions (e.g. '1.21.1', '1.20.1').

## `modLoaderTypes` (type: `array`):

Filter to mods whose main file targets any of these mod loaders.

## Actor input object example

```json
{
  "searchQuery": "jei",
  "maxItems": 10,
  "sortField": "Popularity"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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": "jei",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/curseforge-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": "jei",
    "maxItems": 10,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": "jei",
  "maxItems": 10
}' |
apify call parseforge/curseforge-mods-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/curseforge-mods-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CurseForge Mods Scraper | Export Minecraft Mod Data CSV/JSON",
        "description": "Scrape Minecraft mods from CurseForge. Export mod details, downloads, authors, files, categories, game versions, and mod loader info as CSV, Excel, JSON, or XML.",
        "version": "0.1",
        "x-build-id": "baVojAfOfD51hhD1E"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~curseforge-mods-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-curseforge-mods-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~curseforge-mods-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-curseforge-mods-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~curseforge-mods-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-curseforge-mods-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text search across Minecraft mods (e.g. 'jei', 'magic', 'storage'). Leave empty to pull the default popular mods listing."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Note: due to upstream pagination restrictions, this scraper returns up to ~20 mods per query — combine with searchQuery to widen coverage."
                    },
                    "sortField": {
                        "title": "Sort field",
                        "enum": [
                            "Featured",
                            "Popularity",
                            "LastUpdated",
                            "Name",
                            "Author",
                            "TotalDownloads"
                        ],
                        "type": "string",
                        "description": "How to order the listing when no searchQuery is provided.",
                        "default": "Popularity"
                    },
                    "categoryIds": {
                        "title": "Categories",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter results to mods that belong to any of the selected categories.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "mc-addons",
                                "adventure-rpg",
                                "library-api",
                                "applied-energistics-2",
                                "armor-weapons-tools",
                                "technology-automation",
                                "world-biomes",
                                "blood-magic",
                                "bug-fixes",
                                "addons-buildcraft",
                                "cosmetic",
                                "crafttweaker",
                                "create",
                                "creativemode",
                                "world-dimensions",
                                "education",
                                "technology-energy",
                                "technology-item-fluid-energy-transport",
                                "farmers-delight",
                                "technology-farming",
                                "mc-food",
                                "addons-forestry",
                                "galacticraft",
                                "technology-genetics",
                                "horror",
                                "addons-industrialcraft",
                                "integrated-dynamics",
                                "kubejs",
                                "magic",
                                "map-information",
                                "mc-creator",
                                "mc-miscellaneous",
                                "world-mobs",
                                "modjam-2025",
                                "world-ores-resources",
                                "performance",
                                "technology-player-transport",
                                "technology-processing",
                                "redstone",
                                "refined-storage",
                                "server-utility",
                                "skyblock",
                                "storage",
                                "world-structures",
                                "technology",
                                "addons-thaumcraft",
                                "addons-thermalexpansion",
                                "addons-tinkers-construct",
                                "twilight-forest",
                                "twitch-integration",
                                "utility-qol",
                                "world-gen"
                            ],
                            "enumTitles": [
                                "Addons",
                                "Adventure and RPG",
                                "API and Library",
                                "Applied Energistics 2",
                                "Armor, Tools, and Weapons",
                                "Automation",
                                "Biomes",
                                "Blood Magic",
                                "Bug Fixes",
                                "Buildcraft",
                                "Cosmetic",
                                "CraftTweaker",
                                "Create",
                                "CreativeMode",
                                "Dimensions",
                                "Education",
                                "Energy",
                                "Energy, Fluid, and Item Transport",
                                "Farmer's Delight",
                                "Farming",
                                "Food",
                                "Forestry",
                                "Galacticraft",
                                "Genetics",
                                "Horror",
                                "Industrial Craft",
                                "Integrated Dynamics",
                                "KubeJS",
                                "Magic",
                                "Map and Information",
                                "MCreator",
                                "Miscellaneous",
                                "Mobs",
                                "ModJam 2025",
                                "Ores and Resources",
                                "Performance",
                                "Player Transport",
                                "Processing",
                                "Redstone",
                                "Refined Storage",
                                "Server Utility",
                                "Skyblock",
                                "Storage",
                                "Structures",
                                "Technology",
                                "Thaumcraft",
                                "Thermal Expansion",
                                "Tinker's Construct",
                                "Twilight Forest",
                                "Twitch Integration",
                                "Utility & QoL",
                                "World Gen"
                            ]
                        }
                    },
                    "gameVersions": {
                        "title": "Game versions",
                        "type": "array",
                        "description": "Filter to mods whose main file supports any of these Minecraft versions (e.g. '1.21.1', '1.20.1').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "modLoaderTypes": {
                        "title": "Mod loaders",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter to mods whose main file targets any of these mod loaders.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Forge",
                                "Fabric",
                                "NeoForge",
                                "Quilt",
                                "LiteLoader",
                                "Cauldron",
                                "Any"
                            ],
                            "enumTitles": [
                                "Forge",
                                "Fabric",
                                "NeoForge",
                                "Quilt",
                                "LiteLoader",
                                "Cauldron",
                                "Any"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
