# L2Beat Rollups Scraper (`parseforge/l2beat-rollups-scraper`) Actor

Tap L2Beat and pull Ethereum rollup data with name, TVL, stage, rollup type, purpose, data availability layer, host chain, activity TPS, daily ops, and listed risks. Filter by tab, stage, or host chain for layer two research, ecosystem dashboards, and scaling analytics.

- **URL**: https://apify.com/parseforge/l2beat-rollups-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)

## 🪜 L2Beat Rollups Scraper

> 🚀 **Export L2Beat scaling summary in seconds. Rollup name, TVL, stage, risks, DA layer, host chain, type, TPS, and daily ops direct from the public L2Beat data layer.**

> 🕒 **Last updated:** 2026-06-05 · **📊 12 fields** per record · Rollups, Validiums, Optimiums · Stage 0, 1, 2 coverage

The L2Beat Rollups Scraper turns the public L2Beat scaling summary into a structured dataset. It returns one row per rollup with TVL, decentralization stage, data availability layer, host chain, type, activity TPS, daily operations, and risk profile.

Coverage spans every rollup, validium, and optimium tracked by L2Beat with 12 normalized fields per record.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| 🪜 L2 researchers | Track rollup stage progression |
| 📊 Crypto analysts | Compare L2 TVL by category |
| 🤖 Quants | Build L2 market datasets |
| 🏢 Allocators | Monitor L2 risk profiles |
| 👩‍💻 Developers | Mirror L2Beat data into a warehouse |

### 📋 What the L2Beat Rollups Scraper does

- Calls the public L2Beat scaling summary tRPC endpoint.
- Returns one normalized row per L2.
- Optional filters by category, stage, and host chain.
- Exports as CSV, Excel, JSON, JSONL, XML, RSS, or HTML.

> 💡 **Why it matters:** L2Beat is the definitive scoreboard of Ethereum scaling solutions. Its data drives institutional risk assessments. This actor surfaces the live snapshot without scraping HTML.

### 🎬 Full Demo

_🚧 Coming soon._

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></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>tab</code></td><td>enum</td><td>No</td><td>rollups, validiumsAndOptimiums, others.</td></tr>
<tr><td><code>stage</code></td><td>enum</td><td>No</td><td>Stage 0, 1, or 2.</td></tr>
<tr><td><code>hostChain</code></td><td>string</td><td>No</td><td>Optional host chain partial match.</td></tr>
</table>

**Example 1, Stage 1 rollups:**
```json
{ "tab": "rollups", "stage": "Stage 1", "maxItems": 25 }
````

**Example 2, validiums on Ethereum:**

```json
{ "tab": "validiumsAndOptimiums", "hostChain": "Ethereum", "maxItems": 25 }
```

> ⚠️ **Good to Know:** L2Beat stages reflect decentralization maturity, not security. Stage 0 has training-wheel governance, Stage 2 is fully decentralized.

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🏷️ `name` | string | L2 name. |
| 💎 `tvl` | number | Total value secured in USD. |
| 🪜 `stage` | string | Decentralization stage. |
| 🧰 `type` | string | Category (ZK, optimistic). |
| 🎯 `purpose` | string | Stated purpose. |
| 📡 `daLayer` | string | Data availability layer. |
| 🌐 `hostChain` | string | Host chain. |
| ⚡ `activityTps` | number | Transactions per second. |
| 📊 `dailyOps` | number | Daily user operations. |
| ⚠️ `risks` | string | Risk profile summary. |
| 🕒 `scrapedAt` | string | When this row was fetched. |
| ❌ `error` | string | Set if upstream returned an error. |

**Sample record:**

```json
{
  "name": "Arbitrum One",
  "tvl": 12500000000,
  "stage": "Stage 1",
  "type": "Optimistic Rollup",
  "purpose": "Universal",
  "daLayer": "Ethereum (blobs)",
  "hostChain": "Ethereum",
  "activityTps": 35,
  "dailyOps": 1200000,
  "risks": "State validation; Data availability; ...",
  "scrapedAt": "2026-06-05T13:00:00.000Z",
  "error": null
}
```

### ✨ Why choose this Actor

| 🪜 | Stage and DA layer surfaced. |
| 📡 | Direct tRPC payload, no HTML scraping. |
| ⚡ | Activity metrics included. |
| ⚠️ | Risk profile flattened to a single field. |
| 🛟 | Clean error records. |
| 💾 | Push to dataset, instant tabular export. |

### 📈 How it compares to alternatives

| Approach | Setup | Risk profile | TVL history |
|---|---|---|---|
| Raw HTML scrape | 1 hr plus | brittle | manual |
| L2Beat SDK | None public | partial | partial |
| **This Actor** | 5 sec | yes | snapshot |

### 🚀 How to use

1. Click **Try for free**.
2. Optionally set `tab`, `stage`, `hostChain`.
3. Click **Start**.

### 💼 Business use cases

**🪜 Risk assessment.** Pull every Stage 0 vs Stage 1 vs Stage 2 L2 for due diligence.

**📊 Market sizing.** Snapshot TVL by category.

**🤖 Activity tracking.** Feed TPS into infra dashboards.

**🏢 Allocator reporting.** Maintain a log of L2 exposures.

### 🔌 Automating L2Beat Rollups 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 L2 scaling concepts.

**🧪 Personal research.** Track Ethereum scaling.

**🤝 Open data.** Public L2 dashboards.

**🧰 Tinkering.** Prototype L2 aggregators.

### 🤖 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 L2s are covered?** Every L2 in L2Beat scaling summary.

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

**❓ Is TVL in USD?** Yes.

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

**❓ Can I filter by category?** Yes via `tab`.

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

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

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

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

**❓ What is Stage?** Decentralization maturity, 0 means training wheels, 2 means fully decentralized.

### 🔌 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 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 Morpho Blue Vaults Scraper](https://apify.com/parseforge/morpho-blue-vaults-scraper) | Morpho vault metrics. |
| [ParseForge Pendle Yield Markets Scraper](https://apify.com/parseforge/pendle-yield-markets-scraper) | Pendle yield markets. |

> 💡 **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

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

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

## `tab` (type: `string`):

Which L2Beat category to scrape.

## `stage` (type: `string`):

Optional, filter by decentralization stage.

## `hostChain` (type: `string`):

Optional, partial match on host chain name.

## Actor input object example

```json
{
  "maxItems": 10,
  "tab": "rollups"
}
```

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

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/l2beat-rollups-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 }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "L2Beat Rollups Scraper",
        "description": "Tap L2Beat and pull Ethereum rollup data with name, TVL, stage, rollup type, purpose, data availability layer, host chain, activity TPS, daily ops, and listed risks. Filter by tab, stage, or host chain for layer two research, ecosystem dashboards, and scaling analytics.",
        "version": "0.1",
        "x-build-id": "MRh78NoYVnukzygeY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~l2beat-rollups-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-l2beat-rollups-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~l2beat-rollups-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-l2beat-rollups-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~l2beat-rollups-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-l2beat-rollups-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": {
                    "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."
                    },
                    "tab": {
                        "title": "Category",
                        "enum": [
                            "rollups",
                            "validiumsAndOptimiums",
                            "others"
                        ],
                        "type": "string",
                        "description": "Which L2Beat category to scrape.",
                        "default": "rollups"
                    },
                    "stage": {
                        "title": "Stage",
                        "enum": [
                            "",
                            "Stage 0",
                            "Stage 1",
                            "Stage 2"
                        ],
                        "type": "string",
                        "description": "Optional, filter by decentralization stage."
                    },
                    "hostChain": {
                        "title": "Host Chain",
                        "type": "string",
                        "description": "Optional, partial match on host chain name."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
