# Open5e SRD 5.1 Scraper (`parseforge/open5e-srd-scraper`) Actor

Scrapes Open5e SRD 5.1 entries by resource type, search query, challenge rating, spell level, or source document. Returns each entry as a flat row for export to CSV, JSON, Excel, or XML.

- **URL**: https://apify.com/parseforge/open5e-srd-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other, Education, Developer tools
- **Stats:** 2 total users, 1 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.75 / 1,000 result items

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Open5e SRD 5.1 Scraper

**Scrape the Open5e SRD 5.1 database for monsters, spells, magic items, and more, up to a million entries per run.** Every entry comes as a flat row with its full stat block, description, and source document. No API key or registration. Export to CSV, JSON, Excel, or XML.

The Open5e API is rate-limited and returns nested JSON that is hard to flatten. This Actor reads the public Open5e SRD 5.1 database directly, filters by search term, challenge rating, spell level, or source document, and returns each entry in one fixed schema. Build your own monster manual, spellbook, or item compendium without writing a single line of code.

| Who uses it | What they scrape Open5e for |
|---|---|
| Game masters | Build a custom encounter table with monsters filtered by challenge rating and source book |
| Homebrew designers | Export the SRD baseline for spells or magic items to compare against their own creations |
| Tool developers | Populate a searchable database for a character builder or virtual tabletop |
| Data analysts | Study the distribution of monster stats or spell levels across official and third-party sources |

### What it does

This Actor collects Open5e SRD 5.1 entries by resource type, search query, challenge rating, spell level, or source document, and returns each one as a flat row.

- 📚 **Resource families:** monsters, spells, magic items, weapons, armor, classes, races, feats, backgrounds, conditions, and rules sections.
- 🔍 **Search query:** free-text search across the chosen resource, such as 'dragon' or 'fireball'.
- 🎯 **Challenge rating filter:** narrow monsters to a specific CR, from 0 to 30.
- ✨ **Spell level filter:** restrict spells to cantrips (0) or levels 1 through 9.
- 📄 **Source document filter:** limit results to Wizards SRD, Tome of Beasts, Deep Magic, and more.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Open5e data

**🐉 Build a monster manual.**

A game master scrapes all monsters with challenge rating 5 or lower from the Wizards SRD and Tome of Beasts, then exports the dataset to CSV for a custom encounter binder.

**🔮 Create a spellbook app.**

A developer scrapes every spell from levels 0 to 9, filters by the search term 'fire', and loads the flat JSON into a mobile spell reference.

**⚔️ Compare magic items across sources.**

A homebrew designer scrapes all magic items from Deep Magic and Vault of Magic, then uses the dataset to check for duplicates before publishing new content.

**📊 Analyze stat distributions.**

A data analyst scrapes all monsters from the Wizards SRD and computes average hit points and armor class by challenge rating for a balance study.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | The Actor reads the public Open5e database directly, so you do not need to register or manage tokens. |
| **Flat output** | Every entry is returned as a single row with consistent fields, ready for spreadsheets or databases. |
| **Up to a million entries** | Set maxItems as high as 1,000,000 to pull the entire SRD in one run. |
| **Multiple formats** | Export to CSV, JSON, Excel, or XML from the Apify dataset. |

### How it compares

No other Store actor targets Open5e the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Open5e SRD 5.1 Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Open5e changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from resource type, search query, challenge rating, spell level, and source document, alone or together, and filters run as each entry is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10,
  "resourceType": "monsters"
}
```

A larger pull:

```json
{
  "maxItems": 200,
  "resourceType": "monsters"
}
```

### Pricing

Pay-per-result: **$0.005 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.50 |
| 1,000 results | $5.00 |
| 10,000 results | $50.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Open5e SRD 5.1 Scraper](https://apify.com/parseforge/open5e-srd-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Open5e through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/open5e-srd-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your filters. If you set a searchQuery that does not match any entry, or combine a challengeRating with a non-monster resource, the Actor returns an empty dataset. Try clearing filters or broadening the search term.

**Why does the run stop before reaching maxItems?**

The Actor stops when it has collected all entries that match your filters. If the total number of matching entries is less than maxItems, the run ends early. Increase maxItems or remove filters to get more data.

**Why are some fields empty in the output?**

Not every entry has every field. For example, a monster may not have a damage vulnerability, or a spell may not have a material component. Empty fields are normal and reflect the source data.

**Can I scrape multiple resource types in one run?**

No, the Actor scrapes one resource type per run. Run it multiple times with different resourceType values and merge the datasets if needed.

### FAQ

| Question | Answer |
|---|---|
| What is the Open5e SRD 5.1? | It is a community-maintained database of the D\&D 5th Edition System Reference Document plus popular third-party content like Tome of Beasts and Deep Magic. This Actor scrapes that database directly. |
| Do I need an API key or registration? | No. The Actor reads the public Open5e database without authentication, so you can start scraping immediately. |
| Can I scrape all monsters at once? | Yes. Set resourceType to 'monsters' and maxItems to 1000000 to collect the entire monster database in a single run. |
| How do I filter by challenge rating? | Use the challengeRating input. It accepts values like '1/2', '5', or '20'. Leave it empty to include all challenge ratings. |
| Can I search for a specific spell or item? | Yes. Set resourceType to 'spells' or 'magicitems' and enter a searchQuery like 'fireball' or 'cloak'. The Actor returns only matching entries. |
| What source documents are supported? | The document input includes Wizards SRD, Tome of Beasts 1-3, Creature Codex, Deep Magic, Vault of Magic, Level Up Advanced 5e, and more. Choose one or leave it empty for all sources. |
| What output formats are available? | You can export the dataset to CSV, JSON, Excel, or XML directly from the Apify platform. |
| Is the data flat or nested? | The Actor flattens each entry into a single row with consistent fields, so you can load it straight into a spreadsheet or database. |
| Can I scrape rules sections? | Yes. Set resourceType to 'sections' to collect rules text from the SRD, such as combat or spellcasting rules. |
| How many entries can I scrape per run? | You can set maxItems up to 1,000,000. The actual number returned depends on the filters you apply. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Open5e. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

How many entries to collect per run.

## `resourceType` (type: `string`):

Which SRD resource family to scrape.

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

Free-text search across the chosen resource. Examples: 'dragon', 'fireball', 'cloak'.

## `challengeRating` (type: `string`):

Monsters only. Filter monsters by their challenge rating.

## `spellLevel` (type: `integer`):

Spells only. 0 for cantrips, 1-9 for leveled spells.

## `document` (type: `string`):

Restrict to one rules document.

## Actor input object example

```json
{
  "maxItems": 10,
  "resourceType": "monsters"
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10,
    "resourceType": "monsters",
    "document": ""
};

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

# Run the Actor and wait for it to finish
run = client.actor("parseforge/open5e-srd-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 '{
  "maxItems": 10,
  "resourceType": "monsters",
  "document": ""
}' |
apify call parseforge/open5e-srd-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/open5e-srd-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/SfkqRPO21cDK0VScW/builds/PcBAlZYXb58tn4yaO/openapi.json
