# Curve Finance Pools Scraper (`parseforge/curve-finance-pools-scraper`) Actor

Tap the Curve Finance API and pull liquidity pool data across supported chains. Each record returns pool name, contract address, token composition, virtual price, USD volume, TVL, APY, pool type, gauge, and chain. Useful for DeFi yield analytics and pool comparison dashboards.

- **URL**: https://apify.com/parseforge/curve-finance-pools-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)

## 🌀 Curve Finance Pools Scraper

> 🚀 **Export Curve Finance pool stats, TVL, APY, and gauge data in seconds.**

> 🕒 **Last updated** 2026-06-05 · **📊 12 fields** per record · **Curve Finance · 8 chains · 1,000+ pools**

The Curve Finance Pools Scraper turns the public https://api.curve.finance/api/getPools/all/ethereum endpoint into a clean, structured dataset. It calls the upstream service, normalizes the response, and emits one flat record per entity.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| 📊 Analysts | Build clean snapshots of Curve Finance liquidity pools, TVL, APY, and volume |
| 🤖 ML engineers | Training datasets without writing client code |
| 🏢 Research teams | Periodic monitoring and dashboards |
| 👩‍💻 Developers | Mirror upstream data into your own warehouse |

### 📋 What this scraper does

- Calls https://api.curve.finance/api/getPools/all/ethereum with your filters.
- Parses the response and flattens each entity into a row.
- Surfaces any upstream rate-limit or error notes as a clean `error` record instead of crashing.
- Pushes records to the Apify dataset ready for download or downstream integration.

> 💡 **Why it matters** the upstream API is public but returns nested payloads. This actor normalizes everything to a flat schema your tools can use immediately.

### 🎬 Full Demo

🚧 Coming soon.

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td><code>chain</code></td><td>enum</td><td>No</td><td>Which chain to query Curve pools on.</td></tr>
<tr><td><code>registry</code></td><td>enum</td><td>No</td><td>Which Curve pool registry to scrape.</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. Prefill 10.</td></tr>
</table>

**Example**

````

{
"maxItems": 10
}

```

> ⚠️ **Good to Know** the actor enforces a 10 item preview limit for free users and auto-warns with an upgrade link. Paid users can request up to 1,000,000 items per run.

### 📊 Output

Each record is a flat object. `error` is always last.

| Field | Type | Description |
|---|---|---|
| 🔹 `name` | string | Pool name. |
| 🔹 `address` | string | Pool contract address. |
| 🔹 `tokens` | array | Coins in the pool. |
| 🔹 `virtualPrice` | number | Virtual price of the LP token. |
| 🔹 `volumeUsd` | number | 24h volume in USD. |
| 🔹 `tvlUsd` | number | Total value locked in USD. |
| 🔹 `apy` | number | Latest base APY. |
| 🔹 `poolType` | string | Pool type such as stable or crypto. |
| 🔹 `gauge` | string | Gauge contract address if any. |
| 🔹 `fee` | number | Pool fee. |
| 🔹 `chain` | string | Source chain. |
| 🔹 `scrapedAt` | string | When this row was fetched. |
| ❌ `error` | string | Set if the upstream response was an error or rate-limit. |

**Sample record**

```

{
"name": "3pool",
"address": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",
"tokens": \[
"DAI",
"USDC",
"USDT"
],
"virtualPrice": 1.0312,
"volumeUsd": 4500000,
"tvlUsd": 110000000,
"apy": 0.012,
"poolType": "stable",
"gauge": "0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A",
"fee": 0.0001,
"chain": "ethereum",
"scrapedAt": "2026-06-05T12:00:00.000Z",
"error": null
}

````

### ✨ Why choose this Actor

| 🆓 | Works with the public endpoint, no signup required for most queries. |
| 🧹 | Flat normalized schema, no nested keys to wrangle. |
| 🛟 | Surfaces upstream errors as clean records instead of crashing. |
| 💾 | Push to dataset, instant export to your favorite format. |

### 📈 How it compares to alternatives

| Approach | Setup time | Clean keys | Error handling |
|---|---|---|---|
| Roll your own fetch | 30 min plus | No | No |
| **This Actor** | 5 sec, no install | Yes | Yes |

### 🚀 How to use

1. Click **Try for free**.
2. Set your filters or leave defaults.
3. Click **Start**. Within seconds your dataset is ready.

### 💼 Business use cases

**📊 Market research.** Snapshot the dataset on a schedule and pipe into your BI tool.

**💼 Analytics.** Track changes across runs to build trend reports.

**📰 Reporting.** Verify upstream metrics with one click instead of writing custom client code.

**🤖 ML feature engineering.** Build a clean training set without provisioning any infra.

### 🔌 Automating this Actor

- **Make and Zapier** trigger this actor on a schedule, push results to Airtable, Google Sheets, or Slack.
- **Cron schedule** native Apify scheduler.
- **Webhooks** get a POST to your endpoint the moment a run finishes.
- **Warehouse pipes** native Apify integrations move datasets straight into your warehouse.

### 🌟 Beyond business use cases

**🎓 Education.** Teach a class with real public data.

**🧪 Personal research.** Track topics you care about.

**🤝 Non-profit and open data.** Build public dashboards without writing client code.

**🧰 Tinkering and prototyping.** Spin up a feed in 5 seconds to test a new tool.

### 🤖 Ask an AI assistant about this scraper

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

### ❓ Frequently Asked Questions

**❓ Do I need an API key?** Not for most queries. The upstream endpoint is public.

**❓ Is there a rate limit?** The upstream service applies its own limits. This actor surfaces rate-limit notes as a clean `error` record.

**❓ Can I schedule runs?** Yes, use Apify's native scheduler.

**❓ How fresh is the data?** It is fetched live on every run.

**❓ Will the schema change?** The documented fields are stable. Optional fields may appear based on upstream changes.

### 🔌 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 API or webhook endpoint.

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [ParseForge Alpha Vantage Scraper](https://apify.com/parseforge/alpha-vantage-public-scraper) | Stocks, FX, crypto, and indicators. |
| [ParseForge OurAirports Scraper](https://apify.com/parseforge/ourairports-scraper) | Global airport database. |
| [ParseForge Yahoo Finance Scraper](https://apify.com/parseforge) | Equities, funds, indices. |

> 💡 **Pro Tip** browse the complete [ParseForge collection](https://apify.com/parseforge) for 900 plus production-grade scrapers across business intelligence, real estate, e-commerce, sports, finance, and public records.

---

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

# Actor input Schema

## `chain` (type: `string`):

Which chain to query Curve pools on.
## `registry` (type: `string`):

Which Curve pool registry to scrape.
## `maxItems` (type: `integer`):

Free users limited to 10 items preview. Paid users optional up to 1000000.

## Actor input object example

```json
{
  "chain": "ethereum",
  "registry": "all",
  "maxItems": 10
}
````

# 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/curve-finance-pools-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/curve-finance-pools-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/curve-finance-pools-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Curve Finance Pools Scraper",
        "description": "Tap the Curve Finance API and pull liquidity pool data across supported chains. Each record returns pool name, contract address, token composition, virtual price, USD volume, TVL, APY, pool type, gauge, and chain. Useful for DeFi yield analytics and pool comparison dashboards.",
        "version": "0.1",
        "x-build-id": "ivsO3hAECIHteuqxy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~curve-finance-pools-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-curve-finance-pools-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~curve-finance-pools-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-curve-finance-pools-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~curve-finance-pools-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-curve-finance-pools-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": {
                    "chain": {
                        "title": "Chain",
                        "enum": [
                            "ethereum",
                            "polygon",
                            "arbitrum",
                            "optimism",
                            "base",
                            "fantom",
                            "avalanche",
                            "gnosis"
                        ],
                        "type": "string",
                        "description": "Which chain to query Curve pools on.",
                        "default": "ethereum"
                    },
                    "registry": {
                        "title": "Registry",
                        "enum": [
                            "all",
                            "main",
                            "crypto",
                            "factory",
                            "factory-crypto",
                            "factory-crvusd",
                            "factory-tricrypto",
                            "factory-stable-ng"
                        ],
                        "type": "string",
                        "description": "Which Curve pool registry to scrape.",
                        "default": "all"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users limited to 10 items preview. Paid users optional up to 1000000."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
