R25 — Парсинг предстоящих спортивных событий для контента под ставки
Дата: 2026-08-13. Цель: автоматически собирать расписание предстоящих матчей (API/RSS/open) и заранее производить контент-превью под ставки, ведя пользователя на реферальные офферы операторов (PAMPAS/BetBox/BoraWin). Ищем самый простой и дешёвый путь.
1. Контекст и задача
- Ниша: онлайн-ставки BR (pt-BR) и AR (es-AR), ядро — футбол (fútbol).
- Нужен источник предстоящих матчей (fixtures/schedule) с: датой/временем, командами, лигой, местом, желательно котировками (для «вести на ставки») и новостным хуком (травмы/форма).
- Контент должен появляться заранее (превью, прогноз, коэффициенты), затем вести на ставку.
2. Критерии выбора
- Бесплатно и без жёстких лимитов.
- Без ключа / простой ключ.
- Покрытие BR/AR футбола (Serie A BR, Liga Profesional AR, Copa Libertadores, нацкубки).
- Стабильный JSON (не HTML-скрейп).
- Есть коэффициенты и новостные хуки в том же ответе.
3. Сравнение источников (дип-рисеч 2026)
| Источник | Тип | Стоимость/лимит | Ключ | AR/BR футбол | Коэфф. | Новости/форма | Надёжность | Оценка |
|---|---|---|---|---|---|---|---|---|
| ESPN Public API | JSON, без ключа | без офиц. лимитов; «уважайте» | ❌ нет | ✅ arg.1, bra.1, conmebol.libertadores, кубки |
✅ встроенные odds[] |
✅ news, standings, summary |
высокая (неофиц., может меняться) | ⭐⭐⭐⭐⭐ |
| football-data.org | JSON, ключ | free: 12 лиг, 10 зап/мин, 100/24ч | ✅ free key | ⚠️ только 12 лиг free (может не быть AR) | ❌ | ✅ matchday | высокая | ⭐⭐⭐ |
| TheSportsDB | JSON, ключ 123/3 |
free: eventsday 3/день, 30 req/мин |
✅ free key | ✅ есть | ❌ | частично | средняя (community) | ⭐⭐⭐ |
| The Odds API | JSON, ключ | free 500 «кредитов»/мес (≈83 полных запроса) | ✅ | ✅ Serie A BR; AR фрагментарно | ✅ ~40 букм. | ❌ | высокая | ⭐⭐⭐⭐ (для коэфф.) |
| OddsPapi (альтерн.) | JSON, ключ | free 250 запросов/мес, 1 запрос = весь рынок | ✅ | ✅ | ✅ 370 букм. + Pinnacle | ❌ | высокая | ⭐⭐⭐⭐ |
| SofaScore / FlashScore | unofficial JSON/HTML | без лимитов (неофиц.) | ❌ | ✅ | ✅ | ✅ | низкая (JS, блокировки) | ⭐⭐ |
| RSS-фиды (Reuters/ESPN/спорт-СМИ) | RSS/XML | бесплатно | ❌ | частично | ❌ | ✅ | средняя | ⭐⭐ (только новостные хуки) |
Детали ключевых источников
ESPN (рекомендован, основа пайплайна)
- База: https://site.api.espn.com/apis/site/v2/sports/soccer/{league}/scoreboard?dates=YYYYMMDD-YYYYMMDD
- Слаг-лиги (проверено 2026-08-13): arg.1 (Liga Profesional AR), bra.1 (Serie A BR), conmebol.libertadores (Кубок Либертадорес), eng.1 и т.д. (80+ лиг).
- Ответ: events[] → competitions[0] → competitors[] (home/away, команды), status.type.description (SCHEDULED/LIVE/FINISHED), date, venue, odds[] (встроенная котировка), links.
- Доп. ресурсы: news, standings (на /apis/v2/.../standings), summary?event={id} (полный матч-репорт), teams/{id}/injuries.
- Без ключа, без антибота, обычный User-Agent достаточен, plain JSON. Неофициально — кэшируйте и пишите защитно.
TheSportsDB (fallback для лиг вне ESPN)
- https://www.thesportsdb.com/api/v1/json/3/eventsnextleague.php?id={idLeague} — ближайшие события лиги.
- Free-ключ 123/3; тяжёлые лимиты (eventsday 3/день). Данные community — возможны пропуски по AR/BR.
The Odds API / OddsPapi (коэффициенты для «вести на ставки»)
- The Odds API free 500 кредитов/мес, но 1 запрос = рынки×регионы (≈83 полных вызова). Покрывает Serie A BR.
- OddsPapi: 250 запросов/мес, 1 запрос = весь рынок (все букм. + Pinnacle, историч. бесплатно). Лучше по цене/покрытию.
- Нулевой вариант: использовать встроенный odds[] ESPN — 0 запросов, без ключа, достаточно для базового «2.10/3.4/3.1».
4. Рекомендуемая схема (как проще всего)
[Расписание] ESPN scoreboard arg.1/bra.1/libertadores?dates=+N дней
│ (бесплатно, без ключа)
▼
[Фильтр] status=SCHEDULED/pre, топ-матчи + наши целевые лиги/бренды
│
▼
[Коэфф. + хук] ESPN odds[] (0 запросов) + ESPN news/standings (форма, травмы)
│ опционально The Odds API/OddsPapi для глубоких рынков
▼
[Генерация] агент/шаблон → превью-статья на матч (700–1000 слов)
│
▼
[Публикация] за 24–48ч до старта, interlink на лендинг оператора (промокод/бонус)
│
▼
[Пост-апдейт] после финального свистка → результат + ссылка на ставки
Минимальный вариант (MVP, без денег):
- 1 cron (ежедневно утром) → ../igaming-engine/scripts/fetch_sports.py тянет scoreboard на +3..+5 дней по arg.1+bra.1+conmebol.libertadores.
- Сохраняет в outputs/YYYY-MM-DD/sports/ JSON + читаемый .md-дайджест (команды, время, лига, встроенный коэфф., ссылка на summary/news).
- Агент по шаблону пишет 1–3 превью на топ-матчи дня, интерлинкуя на лендинг PAMPAS/BetBox/BoraWin.
- Публикация за 1–2 дня; обновление результатом после матча (обновляемый контент = SEO+свежесть).
5. Типы контента и каденция
- Матч-превью «X vs Y — прогноз и коэффициенты» (за 24–48ч) — ядро: составы-хуки, форма, коэфф., прогноз, CTA на ставку.
- «Где смотреть / ставки на тур» — для Copa Libertadores/Кубка: сетка, даты, бонус.
- Прогноз на тур (jornada/rodada) — дайджест всех матчей выходных.
- Пост-матч результат — обновление превью → «как сыграл прогноз» (E-E-A-T/свежесть).
- Региональный угол (AR): матчи Ла-Пампы/провинциальных лиг → связка на PAMPAS.
Каденция: превью — ежедневно по топ-матчам; прогнозы тура — еженедельно; результаты — пост-фактум. Не гнать всё подряд: 3–5 качественных превью/нед лучше 30 пустых.
6. Как вести на ставки
- Каждое превью содержит блок «Apuesta en [оператор]»: кнопка/ссылка на реферальный URL + промокод + бонус (напр., PAMPAS 450%+500 FS, BetBox 250%, BoraWin до 45% RS).
- Коэффициенты показываем с пометкой «coefs sujetos a cambios» (AR-легал) / «odds sujeitos a alteração» (BR).
- Дисклеймеры обязательны: игра с риском, 18+/21+, ответственная игра (см. R03/R02 регуляторику).
- Внутренняя перелинковка: превью → страница оператора → бонус-лендинг (пирамида конверсии).
7. Риски и ограничения
- Неофициальность ESPN API: не контракт; кэш + defensive-парсер + fallback на TheSportsDB.
- Rate-limit: уважать; кэшировать
/scoreboardна ~1ч; не дёргать без нужды. - ToS/легал: ES-PAN в BR и регуляторика AR (провинции) запрещают часть рекламы ставок; обязательные дисклеймеры и 18+; избегать рекламы «гарантированного выигрыша» (Res 446/2025 AR).
- Точность времени: нормализовать в UTC на входе, конвертировать в локали BR/AR на выходе.
- Пустой слот (offsessan):
events=[]— это не ошибка, а «нет игр». - Несвоевременность данных: если у оператора нет рынка на событие — не показывать кнопку ставки.
8. Вывод
Самый простой и дешёвый путь — ESPN public API как единственный источник расписания+коэфф.+новостей (без ключей и денег), ежедневный cron, и шаблонная генерация превью агентом. The Odds API/OddsPapi — только когда нужны глубокие рынки для CTA. Начинать с MVP-скрипта ../igaming-engine/scripts/fetch_sports.py и 1 бренда (PAMPAS), затем масштабировать на BetBox/BoraWin.
9. Артефакты
- Скрипт:
../../igaming-engine/scripts/fetch_sports.py(забирает расписание → JSON + .md-дайджест). - Выходные данные:
../../outputs/YYYY-MM-DD/sports/. - БД: фикстуры заносятся в общую БД движка (таблица
fixtures, чанк 2–3DATA_MODEL.md). - Правила контента (trust-ссылки, свежесть, языки):
../../igaming-engine/RULES.md. - Связанные рисечи:
R03,R05,R10,R11,R14,R17,R18,R23(см.index.md).