# GeckoTerminal DEX Scraper (`automation-lab/geckoterminal-scraper`) Actor

Extract DEX trading data from GeckoTerminal -- trending pools, token prices, OHLCV candles, liquidity, and volume across 100+ blockchains. No API key needed. Export to JSON, CSV, Excel, or connect via API.

- **URL**: https://apify.com/automation-lab/geckoterminal-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## GeckoTerminal DEX Scraper

Extract real-time DEX (decentralized exchange) trading data from [GeckoTerminal](https://www.geckoterminal.com) across 100+ blockchain networks. Get trending pools, token prices, OHLCV candles, liquidity, trading volume, and transaction counts -- all without an API key.

### What does GeckoTerminal DEX Scraper do?

GeckoTerminal DEX Scraper pulls live decentralized exchange data from GeckoTerminal's public API. It covers every major blockchain -- Ethereum, Solana, BSC, Base, Arbitrum, Polygon, Avalanche, Optimism, and 100+ more networks.

The scraper supports five modes:
- **Trending Pools** -- discover the hottest trading pools globally or on a specific network
- **Search Pools** -- find pools by token name, symbol, or contract address
- **Token Info** -- get detailed token data including price, market cap, FDV, and volume
- **Network Top Pools** -- list the top pools on any blockchain by liquidity and volume
- **OHLCV Candles** -- fetch historical price data (daily, hourly, or minute candles)

### Who is it for

- **DeFi traders and analysts** who need real-time pool data to identify trading opportunities
- **Crypto researchers** building dashboards, alerts, or analytical reports on DEX activity
- **Portfolio managers** tracking token prices, liquidity, and volume across chains
- **Quant developers** who need OHLCV candlestick data for backtesting trading strategies
- **Market intelligence teams** monitoring trending tokens and new pool launches

### Why use GeckoTerminal DEX Scraper instead of the API directly?

- **No rate limit headaches** -- built-in throttling handles GeckoTerminal's API limits automatically
- **Structured output** -- clean, flat JSON ready for spreadsheets, databases, or analysis tools
- **Pagination handled** -- automatically fetches multiple pages of results
- **Cloud scheduling** -- run on a schedule to build historical datasets without managing infrastructure
- **Integrations** -- pipe data directly to Google Sheets, Slack, webhooks, or 1000+ apps via Zapier

### What data can you extract?

#### Pool data fields

| Field | Description |
|-------|-------------|
| poolName | Pool name (e.g., "WETH / USDT 0.01%") |
| poolAddress | Pool contract address |
| network | Blockchain network (eth, solana, bsc, etc.) |
| dex | DEX name (uniswap_v3, raydium, pancakeswap, etc.) |
| baseTokenSymbol | Base token symbol |
| baseTokenAddress | Base token contract address |
| quoteTokenSymbol | Quote token symbol |
| quoteTokenAddress | Quote token contract address |
| priceUsd | Current price in USD |
| priceChange5m/15m/30m/1h/6h/24h | Price change percentages |
| volume5m/15m/30m/1h/6h/24h | Trading volume in USD |
| buys5m/1h/24h | Buy transaction counts |
| sells5m/1h/24h | Sell transaction counts |
| buyers5m/1h/24h | Unique buyer counts |
| sellers5m/1h/24h | Unique seller counts |
| liquidityUsd | Pool liquidity in USD |
| marketCap | Market capitalization |
| fdv | Fully diluted valuation |
| poolCreatedAt | Pool creation timestamp |

#### Token data fields

| Field | Description |
|-------|-------------|
| tokenName | Full token name |
| tokenSymbol | Token symbol |
| tokenAddress | Contract address |
| priceUsd | Current price in USD |
| marketCap | Market capitalization |
| fdv | Fully diluted valuation |
| volume24h | 24-hour trading volume |
| totalReserveUsd | Total reserve across all pools |
| coingeckoId | CoinGecko identifier |

#### OHLCV candle fields

| Field | Description |
|-------|-------------|
| timestamp | Unix timestamp |
| datetime | ISO 8601 datetime |
| open / high / low / close | Candle prices |
| volume | Trading volume |

### How much does it cost to scrape DEX trading data?

GeckoTerminal DEX Scraper uses pay-per-event pricing so you only pay for what you extract:

- **Run started**: $0.005 per run
- **Per pool/token/candle**: $0.00115 per data point (volume discounts available)

**Example costs (Free tier):**
- 20 trending pools = $0.005 + $0.023 = **$0.028**
- 100 pools search = $0.005 + $0.115 = **$0.120**
- 100 OHLCV candles = $0.005 + $0.115 = **$0.120**
- 1 token lookup = $0.005 + $0.00115 = **$0.006**

Free tier users get $5/month of platform credits -- enough for thousands of data points.

### How to scrape trending DEX pools

1. Go to the [GeckoTerminal DEX Scraper](https://apify.com/automation-lab/geckoterminal-scraper) on Apify
2. Select **Trending pools** mode
3. Optionally set a blockchain network (leave empty for global trending)
4. Set max results (default: 20)
5. Click **Start** and download your data

### Input configuration

| Field | Description | Default |
|-------|-------------|---------|
| Mode | Scraping mode (trending, search, token info, network pools, OHLCV) | Trending pools |
| Blockchain network | Network ID (eth, solana, bsc, base, arbitrum, polygon_pos, avax, optimism) | solana |
| Search query | Token name/symbol to search for | PEPE |
| Token addresses | Contract addresses for token info mode | -- |
| Pool address | Pool address for OHLCV mode | -- |
| OHLCV timeframe | Candle period (day, hour, minute) | day |
| OHLCV aggregate | Aggregation (1, 4, 12 for hour; 1, 5, 15 for minute) | 1 |
| OHLCV candle limit | Number of candles (max 1000) | 30 |
| Max results | Maximum data points to return | 20 |
| Max pages | Maximum API pages to fetch | 3 |

### Output format

Results are saved as clean JSON objects in the Apify dataset. Here is an example pool record:

```json
{
    "poolName": "LOL / SOL",
    "poolAddress": "Dx5wFoszXvND6XYYAjAjUQrGLqDAUrTVH2JmHz6eJDNt",
    "network": "solana",
    "dex": "pumpswap",
    "baseTokenSymbol": "LOL",
    "priceUsd": 0.009672,
    "priceChange24h": -10.77,
    "volume24h": 1681751.61,
    "liquidityUsd": 376208.31,
    "marketCap": 9590764.73,
    "buys24h": 9860,
    "sells24h": 6571,
    "poolCreatedAt": "2026-03-18T23:57:45Z"
}
````

### Tips for getting the best results

- **Use network filter for trending pools** to focus on a specific chain (Solana, Ethereum, BSC, etc.)
- **Combine modes** -- run trending pools first to discover hot tokens, then use token info for deeper analysis
- **OHLCV aggregation** -- use 1-minute candles for scalping analysis, daily candles for swing trading
- **Schedule runs** to build historical trending pool datasets -- trending pools change constantly
- **Network IDs** are lowercase: `eth`, `solana`, `bsc`, `base`, `arbitrum`, `polygon_pos`, `avax`, `optimism`

### Integrations and workflow patterns

GeckoTerminal DEX Scraper connects to 1000+ apps through Apify integrations:

- **Google Sheets** -- auto-update a DEX trading dashboard with trending pool data
- **Slack / Discord** -- get alerts when new pools hit the trending list
- **Webhook** -- trigger custom workflows when specific tokens appear in trending
- **Zapier / Make** -- connect to any app for automated DeFi data pipelines
- **PostgreSQL / BigQuery** -- store historical pool data for analysis

### API usage

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('automation-lab/geckoterminal-scraper').call({
    mode: 'trendingPools',
    network: 'solana',
    maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_API_TOKEN')

run = client.actor('automation-lab/geckoterminal-scraper').call(run_input={
    'mode': 'trendingPools',
    'network': 'solana',
    'maxResults': 50,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~geckoterminal-scraper/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "trendingPools", "network": "solana", "maxResults": 50}'
```

### Using with MCP (Model Context Protocol)

Connect GeckoTerminal DEX Scraper to AI assistants using the Apify MCP server.

#### Claude Code

```bash
claude mcp add apify-mcp -s user -- npx -y @anthropic/apify-mcp-server@latest --actors='automation-lab/geckoterminal-scraper'
```

Then ask Claude: "Get trending pools on Solana from GeckoTerminal" or "Fetch OHLCV candles for this pool address on Ethereum."

#### Claude Desktop

Add to your MCP config:

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": ["-y", "@anthropic/apify-mcp-server@latest"],
            "env": {
                "APIFY_TOKEN": "YOUR_API_TOKEN"
            }
        }
    }
}
```

Visit the [Apify MCP server](https://mcp.apify.com?tools=automation-lab/geckoterminal-scraper) for more details.

#### Example MCP prompts

- "What are the top trending DEX pools right now?"
- "Get the price and volume for PEPE token pools"
- "Fetch daily OHLCV candles for the WETH/USDT pool on Ethereum"
- "Show me the top liquidity pools on Arbitrum"

### Legality

GeckoTerminal provides a free public REST API specifically designed for programmatic access. This scraper uses that official API -- no scraping of web pages, no bypassing of protections, no authentication required. The API is documented and intended for developer use.

Always review [GeckoTerminal's Terms of Service](https://www.geckoterminal.com/terms-of-service) for the latest policies on API usage.

### FAQ

**Q: Do I need an API key for GeckoTerminal?**
A: No. GeckoTerminal's API is free and public. No authentication is required.

**Q: What blockchain networks are supported?**
A: Over 100 networks including Ethereum, Solana, BSC, Base, Arbitrum, Polygon, Avalanche, Optimism, Fantom, Cronos, and many more. Use the [networks endpoint](https://api.geckoterminal.com/api/v2/networks) for the full list.

**Q: Why am I getting fewer results than expected?**
A: GeckoTerminal's API returns up to 20 pools per page. Increase the "Max pages" setting to fetch more results. Also check that the network ID is correct (e.g., `eth` not `ethereum`, `bsc` not `binance`).

**Q: The scraper returns 0 results for my search. What should I do?**
A: Verify the token name/symbol spelling. Try searching by contract address instead of name. Make sure the token exists on GeckoTerminal by checking [geckoterminal.com](https://www.geckoterminal.com) first.

**Q: How often does the data update?**
A: GeckoTerminal data is near real-time. Pool prices, volumes, and transaction counts update every few seconds on the platform. OHLCV candles update at the end of each period.

**Q: Can I get historical data?**
A: Yes, use OHLCV mode for historical price candles (up to 1000 candles per request). For historical trending pools, schedule regular runs to build your own dataset over time.

### Pricing

This actor uses pay-per-event pricing. See the Pricing tab on Apify Store for current rates.

### Related

- [DexScreener Scraper](https://apify.com/automation-lab/dexscreener-scraper) -- extract DEX data from DexScreener
- [CoinGecko Scraper](https://apify.com/automation-lab/coingecko-scraper) -- cryptocurrency market data from CoinGecko
- [CoinMarketCap Scraper](https://apify.com/automation-lab/coinmarketcap-scraper) -- crypto prices and rankings from CoinMarketCap

# Actor input Schema

## `mode` (type: `string`):

Select the scraping mode. <strong>Trending pools</strong> fetches the hottest pools globally or on a specific network. <strong>Search pools</strong> finds pools by token name or symbol. <strong>Token info</strong> gets detailed data for specific token addresses. <strong>Network pools</strong> lists top pools on a network. <strong>OHLCV candles</strong> gets historical price candles for a pool.

## `network` (type: `string`):

The blockchain network ID. Examples: <code>eth</code>, <code>solana</code>, <code>bsc</code>, <code>base</code>, <code>arbitrum</code>, <code>polygon\_pos</code>, <code>avax</code>, <code>optimism</code>. Leave empty for global trending. Full list at <a href="https://api.geckoterminal.com/api/v2/networks" target="_blank">GeckoTerminal networks API</a>.

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

Token name, symbol, or address to search for. Used in <strong>Search pools</strong> mode.

## `tokenAddresses` (type: `array`):

Token contract addresses for lookup. Used in <strong>Token info</strong> mode. Requires <strong>Blockchain network</strong> to be set.

## `poolAddress` (type: `string`):

Pool contract address for OHLCV data. Used in <strong>OHLCV candles</strong> mode. Requires <strong>Blockchain network</strong> to be set.

## `ohlcvTimeframe` (type: `string`):

Candle timeframe for OHLCV mode.

## `ohlcvAggregate` (type: `integer`):

Aggregation period. For <strong>day</strong>: 1 only. For <strong>hour</strong>: 1, 4, 12. For <strong>minute</strong>: 1, 5, 15.

## `ohlcvLimit` (type: `integer`):

Number of candles to fetch (max 1000).

## `maxResults` (type: `integer`):

Maximum number of results to return. Set to 0 for no limit. Applies to pool/token modes.

## `maxPages` (type: `integer`):

Maximum number of API pages to fetch. Each page returns up to 20 pools. Set to 0 for no limit.

## Actor input object example

```json
{
  "mode": "trendingPools",
  "network": "solana",
  "searchQuery": "PEPE",
  "tokenAddresses": [],
  "poolAddress": "",
  "ohlcvTimeframe": "day",
  "ohlcvAggregate": 1,
  "ohlcvLimit": 10,
  "maxResults": 20,
  "maxPages": 3
}
```

# 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 = {
    "mode": "trendingPools",
    "network": "solana",
    "searchQuery": "PEPE",
    "ohlcvTimeframe": "day",
    "ohlcvAggregate": 1,
    "ohlcvLimit": 10,
    "maxResults": 20,
    "maxPages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/geckoterminal-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 = {
    "mode": "trendingPools",
    "network": "solana",
    "searchQuery": "PEPE",
    "ohlcvTimeframe": "day",
    "ohlcvAggregate": 1,
    "ohlcvLimit": 10,
    "maxResults": 20,
    "maxPages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/geckoterminal-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 '{
  "mode": "trendingPools",
  "network": "solana",
  "searchQuery": "PEPE",
  "ohlcvTimeframe": "day",
  "ohlcvAggregate": 1,
  "ohlcvLimit": 10,
  "maxResults": 20,
  "maxPages": 3
}' |
apify call automation-lab/geckoterminal-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GeckoTerminal DEX Scraper",
        "description": "Extract DEX trading data from GeckoTerminal -- trending pools, token prices, OHLCV candles, liquidity, and volume across 100+ blockchains. No API key needed. Export to JSON, CSV, Excel, or connect via API.",
        "version": "0.1",
        "x-build-id": "eVIgHFoB2GzK0kQrM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~geckoterminal-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-geckoterminal-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/automation-lab~geckoterminal-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-geckoterminal-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/automation-lab~geckoterminal-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-geckoterminal-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "trendingPools",
                            "searchPools",
                            "tokenInfo",
                            "networkPools",
                            "ohlcv"
                        ],
                        "type": "string",
                        "description": "Select the scraping mode. <strong>Trending pools</strong> fetches the hottest pools globally or on a specific network. <strong>Search pools</strong> finds pools by token name or symbol. <strong>Token info</strong> gets detailed data for specific token addresses. <strong>Network pools</strong> lists top pools on a network. <strong>OHLCV candles</strong> gets historical price candles for a pool.",
                        "default": "trendingPools"
                    },
                    "network": {
                        "title": "Blockchain network",
                        "type": "string",
                        "description": "The blockchain network ID. Examples: <code>eth</code>, <code>solana</code>, <code>bsc</code>, <code>base</code>, <code>arbitrum</code>, <code>polygon_pos</code>, <code>avax</code>, <code>optimism</code>. Leave empty for global trending. Full list at <a href=\"https://api.geckoterminal.com/api/v2/networks\" target=\"_blank\">GeckoTerminal networks API</a>.",
                        "default": ""
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Token name, symbol, or address to search for. Used in <strong>Search pools</strong> mode.",
                        "default": ""
                    },
                    "tokenAddresses": {
                        "title": "Token addresses",
                        "type": "array",
                        "description": "Token contract addresses for lookup. Used in <strong>Token info</strong> mode. Requires <strong>Blockchain network</strong> to be set.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "poolAddress": {
                        "title": "Pool address",
                        "type": "string",
                        "description": "Pool contract address for OHLCV data. Used in <strong>OHLCV candles</strong> mode. Requires <strong>Blockchain network</strong> to be set.",
                        "default": ""
                    },
                    "ohlcvTimeframe": {
                        "title": "OHLCV timeframe",
                        "enum": [
                            "day",
                            "hour",
                            "minute"
                        ],
                        "type": "string",
                        "description": "Candle timeframe for OHLCV mode.",
                        "default": "day"
                    },
                    "ohlcvAggregate": {
                        "title": "OHLCV aggregate",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Aggregation period. For <strong>day</strong>: 1 only. For <strong>hour</strong>: 1, 4, 12. For <strong>minute</strong>: 1, 5, 15.",
                        "default": 1
                    },
                    "ohlcvLimit": {
                        "title": "OHLCV candle limit",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Number of candles to fetch (max 1000).",
                        "default": 100
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of results to return. Set to 0 for no limit. Applies to pool/token modes.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of API pages to fetch. Each page returns up to 20 pools. Set to 0 for no limit.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
