Налаштування автоматичного мониторинга позицій сайта у пошуку
Позиції у пошуку не статичні: апдейти алгоритмів Google/Яндекс, активність конкурентів, зміни на самому сайті — все це впливає на ранжування. Дізнатися про зміни через тиждень-дві — значит реагувати поздно. Автоматичний мониторинг позицій дає сигнал протягом 24 годин.
Джерела даних
Три принципово різні підходи до отримання позицій:
Google Search Console API — безплатно, дані за 28 днів, реальні позиції по всім запитам, але з затримкою 2–3 дня. Не дозволяє перевірити конкретну позицію «прямо сейчас». Хорошо для відстеження трендів та історичного аналізу.
Платні API (SE Ranking, Serpstat, DataForSEO, Serpwow) — перевіряють позицію по конкретному ключовому слову для заданого регіону прямо сейчас. Стоимість: від $0.001 до $0.05 за запит залежно від сервісу та обсягу.
Прямий парсинг SERP — технічно можливий, але нарушає ToS Google/Яндекс, вимагає ротації прокси, ненадійний. Не використовується в продакшн-мониторингу.
Інтеграція DataForSEO SERP API
import requests
from base64 import b64encode
class DataForSEOClient:
BASE_URL = 'https://api.dataforseo.com/v3'
def __init__(self, login: str, password: str):
creds = b64encode(f'{login}:{password}'.encode()).decode()
self.headers = {
'Authorization': f'Basic {creds}',
'Content-Type': 'application/json',
}
def check_positions(self, keyword: str, target_domain: str):
payload = [{
'keyword': keyword,
'target': target_domain,
'location_code': 2840,
'language_code': 'uk',
'depth': 100,
}]
resp = requests.post(
f'{self.BASE_URL}/serp/google/organic/live/advanced',
headers=self.headers,
json=payload,
timeout=60,
)
return resp.json()
Структура бази даних
CREATE TABLE tracked_keywords (
id SERIAL PRIMARY KEY,
keyword TEXT NOT NULL,
target_domain TEXT NOT NULL,
search_engine VARCHAR(20) DEFAULT 'google',
location_code INTEGER,
language_code VARCHAR(10),
active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE position_history (
id SERIAL PRIMARY KEY,
keyword_id INTEGER REFERENCES tracked_keywords(id),
position INTEGER,
url TEXT,
checked_at DATE NOT NULL,
UNIQUE(keyword_id, checked_at)
);
Щоденний запуск мониторинга
Перевірити позиції для всіх активних ключевих слів щодня та зберегти результати.
Алерти на зміни позицій
Виявити значні зміни (поріг 5+ позицій) та сповістити через Telegram.
Розрахунок обсягу запитів та стоимості
Для 100 ключевих слів з щоденною перевіркою — 100 API-запитів на день, 3000 на місяць. За тарифами DataForSEO ($0.003–0.005 за Google SERP) це $9–15/місяць. При 500 словах — $45–75/місяць.
Сроки
Налаштування мониторинга з хранением у PostgreSQL та Telegram-алертами для одного домену — 2–3 робочих дні. Додавання візуалізації (Grafana/Metabase), підтримки кількох сайтів, автоматичного імпорту ключевих слів з GSC — 4–6 днів.







