# Сбор данных о рынке криптовалют и NFT за пределами API бирж

API бирж имеют ограничения по частоте запросов и охватывают только те монеты, которые они перечисляют. Пары DEX, минимальные цены NFT и календари выпуска находятся на страницах с тяжелым JS за защитой от ботов. Вот как надежно собрать все эти данные.

Данные о рынке криптовалют кажутся простыми — наверняка у каждой биржи есть API? Они есть, но эти API имеют ограничения по частоте запросов, охватывают только активы, которые биржа перечисляет, и ничего не говорят о двух местах, где находится много альфа: парах децентрализованных бирж (DEX) и рынках NFT. Если вы создаете трекер цен, бота для листинга или канал альтернативных данных, вы быстро достигнете потолка API и придется собирать остальное. Это руководство охватывает уровни данных о криптовалютах и NFT, когда использовать API, а когда — сбор данных, и настройку прокси, которая поддерживает работу в реальном времени. Речь идет о сборе данных, а не об инвестиционных советах.

## Три уровня рыночных данных

Представьте данные в трех уровнях. Данные централизованных бирж и агрегаторов — цена, рыночная капитализация, циркулирующее предложение, объем за 24 часа и изменения за 1ч/24ч/7д — это то, что показывают такие сайты, как CoinMarketCap и CoinGecko, и это самое простое для получения. Данные DEX — текущие цены пар, ликвидность, новые листинги — находятся на страницах, отрисованных с помощью JavaScript, и редко имеют чистый бесплатный API. Данные NFT — минимальные цены, количество листингов, календари выпуска — находятся на страницах маркетплейсов, которые отрисовываются на стороне клиента и запускают защиту от ботов. Большинству проектов нужны как минимум два из этих уровней, поэтому одного API никогда не хватит.

## Начните с API агрегатора

Для данных CEX верхнего уровня используйте сначала публичный API агрегатора — это бесплатный JSON, быстрый и уже нормализованный. Загвоздка в ограничении по частоте запросов: бесплатные уровни ограничивают вас скромным количеством вызовов в минуту, что разваливается в момент, когда вы часто опрашиваете сотни активов. Получите массовый снимок за минимальное количество вызовов, затем соберите длинный хвост, который API не охватывает.

```python
import requests

# one call returns the top 100 by market cap, already normalised
r = requests.get(
    "https://api.coingecko.com/api/v3/coins/markets",
    params={"vs_currency": "usd", "order": "market_cap_desc",
            "per_page": 100, "page": 1},
    timeout=15,
)
for c in r.json()[:5]:
    print(c["symbol"], c["current_price"],
          c["total_volume"], c["price_change_percentage_24h"])
```

Когда вы перерастете бесплатное ограничение по частоте запросов, распределите запросы по вращающимся IP, чтобы ограничение на IP перестало быть вашим потолком. Поскольку конечные точки агрегатора похожи на API и терпимы, быстрые [центры обработки данных](https://quantumproxies.io/datacenter-proxies) — это экономичный выбор здесь — дешево, быстро и достаточно для параллельного опроса без срабатывания ограничений.

![API агрегатора бирж рядом со сбором данных: API возвращает чистые нормализованные данные CEX, но ограничен по частоте запросов и охватывает только перечисленные в нем активы, а сбор данных дотягивается до длинного хвоста, пар DEX и минимальных цен NFT. Карточка перечисляет, что дает API, и пробелы, которые закрывает сбор данных.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335192/blog/generated/qp-b9-060-diag1.png)
*API агрегаторов дают вам чистые данные CEX быстро, но ограничивают вас и пропускают пары DEX и NFT — сбор данных заполняет именно эти пробелы.*

## Пары DEX и страницы бирж: отрисовка JavaScript

Страницы пар DEX и многие страницы рынка бирж отображают свои цены и графики с помощью JavaScript за агрессивной защитой от ботов — сырой HTTP-запрос получает пустую оболочку. Чтобы прочитать текущие цены пар, ликвидность или полный вид торговли токена, вы отрисовываете страницу в безголовом браузере, направленном через прокси. Ожидайте элемента цены, а не фиксированного сна, и вращайте выходной IP на каждую операцию, чтобы конечная точка не идентифицировала повторяющегося посетителя.

```python
from playwright.sync_api import sync_playwright

PROXY = {"server": "http://residentialpremium.quantumproxies.io:8080",
         "username": "USER", "password": "PASS"}

def pair_price(url, selector):
    with sync_playwright() as p:
        browser = p.chromium.launch(proxy=PROXY)
        page = browser.new_page()
        page.goto(url, wait_until="networkidle", timeout=30000)
        page.wait_for_selector(selector)          # wait for the price to render
        price = page.inner_text(selector)
        browser.close()
        return price
```

Если вы отрисовываете много таких страниц, поддержание флота браузеров плюс вращение прокси становится тяжелым. [Scraper API](https://quantumproxies.io/scraper-api) отрисовывает JavaScript, обходит слой ботов и возвращает чистые данные за один вызов — наша заметка о [сборе данных с сайтов с тяжелым JavaScript](https://quantumproxies.io/blog/scraping-javascript-heavy-websites-with-proxies) объясняет, когда переключаться.

[Отрисовка страниц криптовалют с тяжелым JS с помощью Scraper API](https://quantumproxies.io/scraper-api)

## Минимальные цены NFT и календари выпуска

Данные NFT — это то, на чем работают боты для листинга и покупатели по минимальным ценам: текущая минимальная цена коллекции, сколько их выставлено и когда выходят новые выпуски. Страницы маркетплейсов отрисовываются на стороне клиента, поэтому надежный подход — делать снимок минимальной цены коллекции по плотному графику и сравнивать его — падение минимальной цены или всплеск листингов — это сигнал, на который реагируют трейдеры. Календари выпуска — это тот же шаблон, применяемый к предстоящим выпускам: опрашивайте календарь, фиксируйте новые записи и оповещайте о тех, которые вас интересуют.

```python
import time

def watch_floor(collection_url, selector, interval=60):
    last = None
    while True:
        floor = float(pair_price(collection_url, selector).strip(" ETH"))
        if last is not None and floor < last:
            print(f"floor dropped {last} -> {floor}")   # act on the dip
        last = floor
        time.sleep(interval)                              # snapshot cadence
```

Именно здесь боты для листинга живут или умирают на своих данных. Бот для снайпинга, который реагирует на падение минимальной цены или новый листинг, работает только так быстро, как его канал, а канал, который ограничен по частоте запросов или блокируется, бесполезен. Боты, которые выигрывают, агрессивно опрашивают свои целевые коллекции, используя чистые вращающиеся IP, и нормализуют все в одну форму — коллекция, цена, валюта, временная метка — чтобы падение было сопоставимо между маркетплейсами. Проблема сбора данных и проблема торговли — это одна и та же проблема: держите данные свежими и никогда не теряйте доступ к источнику.

![Конвейер данных о криптовалютах в пять шагов: опрашивать API агрегатора CEX, рендерить страницы пар DEX через прокси, делать снимки минимальных цен NFT и сравнивать их, нормализовать все в одну структуру и хранить как временной ряд. Карточка показывает общую запись: коллекция, цена, валюта и отметка времени на каждом снимке.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335192/blog/generated/qp-b9-060-diag2.png)
*Один конвейер нормализует сигналы CEX, DEX и NFT; ценность в регулярных снимках, а не в одном единственном.*

## Какие прокси для какого уровня

Соответствуйте прокси цели. Конечные точки агрегаторов и публичные JSON терпимы — быстрые, дешевые [центры обработки данных](https://quantumproxies.io/datacenter-proxies) с ротацией справляются с ними и держат ваши затраты на гигабайт низкими. Страницы DEX, виды рынка бирж и маркетплейсы NFT запускают реальную защиту от ботов, поэтому им нужны резидентные IP или Scraper API, который несет отпечаток браузера. Ошибка, которую следует избегать, — это платить за резидентную пропускную способность на конечных точках, которые с удовольствием обслужат IP центра обработки данных — это описано в нашем [руководстве по использованию центров обработки данных](https://quantumproxies.io/blog/datacenter-proxies-when-to-use). И поскольку эти каналы питают стратегии альтернативных данных, та же дисциплина сбора из нашего [руководства по альтернативным данным для фондов](https://quantumproxies.io/blog/alternative-data-web-scraping-finance) применяется: фиксируйте временные метки и делайте снимки по фиксированному графику.

## Часто задаваемые вопросы

### Зачем собирать данные о криптовалютах, если у бирж есть API?

API бирж имеют ограничения по частоте запросов и охватывают только активы, которые биржа перечисляет. Они не показывают цены пар DEX, минимальные цены NFT или календари выпуска, а бесплатные уровни ограничивают объем ваших вызовов. Сбор данных заполняет эти пробелы — длинный хвост токенов, децентрализованные рынки и данные маркетплейсов — и позволяет вам агрегировать данные из источников, которые API никогда не соединяют.

### Нужны ли мне прокси для сбора данных о криптовалютах и NFT?

Для легкого использования публичного API — нет. Для частого опроса или сбора данных с страниц DEX и NFT — да. Конечные точки агрегаторов ограничивают вас по IP, поэтому вращающиеся центры обработки данных увеличивают вашу пропускную способность. Страницы DEX и маркетплейсов запускают защиту от ботов, что требует резидентных IP или Scraper API, который отрисовывает JavaScript и несет отпечаток браузера.

### Как собрать данные о минимальных ценах NFT?

Страницы коллекций маркетплейсов отрисовываются на стороне клиента, поэтому отрисуйте страницу в безголовом браузере через прокси, дождитесь элемента минимальной цены и делайте снимок по расписанию. Сравнивайте последовательные снимки, чтобы уловить падения и всплески листингов. Вращайте выходные IP на каждую операцию и регулируйте частоту опроса, чтобы маркетплейс не пометил повторяющегося посетителя.

### Как часто следует делать снимки цен на криптовалюты?

Это зависит от случая использования. Для отслеживания портфеля достаточно минут; мониторинг пар DEX и минимальных цен NFT для торговых сигналов часто требует более коротких интервалов, до секунд для самых активных пар. Более быстрое опрос увеличивает объем ваших запросов и риск блокировки, поэтому распределяйте его по вращающимся IP и фиксируйте временные метки для восстановления серии.

Данные о рынке криптовалют и NFT охватывают три уровня — агрегаторы CEX, пары DEX, минимальные цены NFT и выпуски — и ни один API не охватывает их. Начните с агрегатора для чистых снимков CEX, отрисуйте страницы DEX и маркетплейсов с тяжелым JS через прокси и подберите тип прокси в зависимости от того, насколько защищена каждая цель: дешевые IP центров обработки данных для терпимых JSON, резидентные или Scraper API для защищенных страниц. Делайте снимки по расписанию, фиксируйте все временные метки, нормализуйте в одну форму, и у вас будет канал, который видит весь рынок, а не только монеты, которые одна биржа случайно перечисляет.

[Начните собирать рыночные данные с QuantumProxies](https://quantumproxies.io/datacenter-proxies)
