# Morpho Blue Vaults Scraper (`parseforge/morpho-blue-vaults-scraper`) Actor

Pull Morpho Blue vault data across supported chains. Each record returns vault name, asset, total assets, total supply, APY, market count, curator address, fee, and contract address. Filter by chainId, order, or asset symbol for lending market analytics and vault selection research.

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

## Pricing

from $7.50 / 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)

## 🦋 Morpho Blue Vaults Scraper

> 🚀 **Export Morpho Blue vaults in seconds. Total assets, supply, APY, allocations, curator, fee, and market count direct from the public Morpho GraphQL API.**

> 🕒 **Last updated:** 2026-06-05 · **📊 11 fields** per record · Ethereum and Base · Every public vault

The Morpho Blue Vaults Scraper hits the public Morpho GraphQL API and returns a normalized record for every vault on Ethereum and Base. It pulls vault name, underlying asset, total assets in USD, net APY, market count, curator, and fee in one pass.

Coverage includes every MetaMorpho vault across Ethereum and Base, with 11 normalized fields and consistent ordering.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| 📊 DeFi analysts | Rank vaults by APY or TVL |
| 🌱 Yield seekers | Compare curators across vaults |
| 🤖 Quants | Build vault performance datasets |
| 🏢 DAOs | Monitor curator allocations |
| 👩‍💻 Developers | Mirror Morpho vault data into a warehouse |

### 📋 What the Morpho Blue Vaults Scraper does

- Queries the Morpho Blue GraphQL endpoint.
- Returns one normalized row per vault.
- Optional filters by asset symbol and ranking metric.
- Exports as CSV, Excel, JSON, JSONL, XML, RSS, or HTML.

> 💡 **Why it matters:** Morpho Blue separates risk into curated vaults that allocate across isolated lending markets. Tracking curators, allocations, and net APYs manually is impractical, this actor flattens it.

### 🎬 Full Demo

_🚧 Coming soon._

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td><code>chainId</code></td><td>enum</td><td>No</td><td><code>1</code> Ethereum, <code>8453</code> Base.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td>No</td><td>Free users 10. Paid users up to 1,000,000.</td></tr>
<tr><td><code>orderBy</code></td><td>enum</td><td>No</td><td>Sort by TotalAssetsUsd, NetApy, or Name.</td></tr>
<tr><td><code>assetSymbol</code></td><td>string</td><td>No</td><td>Optional, filter by underlying asset (USDC, WETH, etc).</td></tr>
</table>

**Example 1, top vaults by TVL on Ethereum:**
```json
{ "chainId": "1", "orderBy": "TotalAssetsUsd", "maxItems": 25 }
````

**Example 2, USDC vaults only:**

```json
{ "chainId": "1", "assetSymbol": "USDC", "maxItems": 50 }
```

> ⚠️ **Good to Know:** Morpho Blue vaults are curated. Different curators apply different risk policies even for the same asset.

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🏷️ `vaultName` | string | Vault name. |
| 💰 `asset` | string | Underlying asset symbol. |
| 💎 `totalAssets` | number | Total assets in USD. |
| 📦 `totalSupply` | number | Vault total supply. |
| 📈 `apy` | number | Net APY. |
| 🧩 `marketCount` | number | Active market allocations. |
| 🎨 `curator` | string | Curator address. |
| 💸 `fee` | number | Performance fee. |
| 🔗 `address` | string | Vault contract address. |
| 🕒 `scrapedAt` | string | When this row was fetched. |
| ❌ `error` | string | Set if upstream returned an error. |

**Sample record:**

```json
{
  "vaultName": "Steakhouse USDC",
  "asset": "USDC",
  "totalAssets": 152000000,
  "totalSupply": "151000000000000",
  "apy": 0.087,
  "marketCount": 7,
  "curator": "0x...",
  "fee": 0.05,
  "address": "0x...",
  "scrapedAt": "2026-06-05T13:00:00.000Z",
  "error": null
}
```

### ✨ Why choose this Actor

| 🦋 | Direct GraphQL access, fast and reliable. |
| 📊 | Ranked output, plug into BI tools. |
| 🎨 | Curator visibility for risk monitoring. |
| 🧩 | Market allocation counts included. |
| 🛟 | Clean error records on failure. |
| 💾 | Push to dataset, instant tabular export. |

### 📈 How it compares to alternatives

| Approach | Setup | Multi-chain | Curator data |
|---|---|---|---|
| Raw GraphQL queries | 30 min plus | manual | manual |
| Morpho SDK | 1 hr install | yes | yes |
| **This Actor** | 5 sec | yes | yes |

### 🚀 How to use

1. Click **Try for free**.
2. Pick a chain.
3. Optionally set `orderBy` or `assetSymbol`.
4. Click **Start**.

### 💼 Business use cases

**📊 Vault discovery.** Rank all Morpho vaults by APY for an asset.

**🌱 Risk monitoring.** Track curator allocations across markets.

**🤖 Strategy automation.** Feed APY deltas into rebalancing bots.

**🏢 Treasury yield.** Pick the best USDC vault for stable deposits.

### 🔌 Automating Morpho Blue Vaults Scraper

- **Make and Zapier** integrations.
- **Cron schedule** on Apify.
- **Webhooks** on run completion.
- **Pipe to BigQuery, Snowflake, Postgres** via native integrations.

### 🌟 Beyond business use cases

**🎓 Education.** Teach isolated lending mechanics.

**🧪 Personal research.** Track your own deposits.

**🤝 Open data.** Build public Morpho dashboards.

**🧰 Tinkering.** Prototype yield strategies.

### 🤖 Ask an AI assistant about this scraper

Pop this README into ChatGPT, Claude, or any AI assistant and ask it to map your workflow to the actor inputs.

### ❓ Frequently Asked Questions

**❓ Which chains are supported?** Ethereum and Base.

**❓ Does it include unsupported vaults?** Only those returned by the public GraphQL API.

**❓ Is it rate-limited?** The public API is generous.

**❓ Are APYs annualized?** Yes.

**❓ How fresh is the data?** As fresh as Morpho indexer state.

**❓ Can I filter by asset?** Yes via `assetSymbol`.

**❓ Can I schedule runs?** Yes.

**❓ Is this scraping or API?** API.

**❓ Will the schema change?** Core fields are stable.

**❓ What formats can I download?** Every tabular and document format Apify supports.

### 🔌 Integrate with any app

Apify ships native integrations with Make, Zapier, Slack, Discord, Google Drive, Google Sheets, Gmail, Airbyte, Keboola, Telegram, GitHub, and any REST or webhook endpoint.

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [ParseForge Pendle Yield Markets Scraper](https://apify.com/parseforge/pendle-yield-markets-scraper) | Pendle yield markets data. |
| [ParseForge Aave V3 Markets Scraper](https://apify.com/parseforge/aave-v3-markets-scraper) | Aave V3 lending markets. |
| [ParseForge EigenLayer Restaking Scraper](https://apify.com/parseforge/eigenlayer-restaking-scraper) | EigenLayer operators. |
| [ParseForge L2Beat Rollups Scraper](https://apify.com/parseforge/l2beat-rollups-scraper) | L2 TVL and risk data. |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for 900+ production-grade scrapers.

***

**Disclaimer:** This actor scrapes only publicly available data. ParseForge is not affiliated with, endorsed by, or sponsored by any third-party service referenced. Users are responsible for complying with the target site terms of service and applicable law. [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp).

# Actor input Schema

## `chainId` (type: `string`):

Blockchain network whose Morpho Blue vaults you want to scrape.

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

Free users limited to 10 items (preview). Paid users optional, max 1,000,000.

## `orderBy` (type: `string`):

Vault ranking metric.

## `assetSymbol` (type: `string`):

Optional filter, vault underlying asset symbol (e.g. USDC, WETH).

## Actor input object example

```json
{
  "chainId": "1",
  "maxItems": 10,
  "orderBy": "TotalAssetsUsd"
}
```

# 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 = {
    "chainId": "1",
    "maxItems": 10
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Morpho Blue Vaults Scraper",
        "description": "Pull Morpho Blue vault data across supported chains. Each record returns vault name, asset, total assets, total supply, APY, market count, curator address, fee, and contract address. Filter by chainId, order, or asset symbol for lending market analytics and vault selection research.",
        "version": "0.1",
        "x-build-id": "pLTH3jfftJfuh2hyc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~morpho-blue-vaults-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-morpho-blue-vaults-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~morpho-blue-vaults-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-morpho-blue-vaults-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~morpho-blue-vaults-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-morpho-blue-vaults-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": {
                    "chainId": {
                        "title": "Chain",
                        "enum": [
                            "1",
                            "8453"
                        ],
                        "type": "string",
                        "description": "Blockchain network whose Morpho Blue vaults you want to scrape.",
                        "default": "1"
                    },
                    "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."
                    },
                    "orderBy": {
                        "title": "Order By",
                        "enum": [
                            "TotalAssetsUsd",
                            "NetApy",
                            "Name"
                        ],
                        "type": "string",
                        "description": "Vault ranking metric.",
                        "default": "TotalAssetsUsd"
                    },
                    "assetSymbol": {
                        "title": "Asset Symbol",
                        "type": "string",
                        "description": "Optional filter, vault underlying asset symbol (e.g. USDC, WETH)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
