---
title: Fill historical Sportradar play data on trial quotas
type: task
status: planned
description: >-
  Fill Sportradar play-by-play for the seasons the league lacks it, one quota-bounded slice per free
  trial, to recover columns like is_blitz for 2016-2023 that no other source carries.
base_uri: user:task/league/fill-historical-sportradar-plays-on-trial-quotas.md
created_at: '2026-09-26T15:01:54.235Z'
entity_id: 4d0d4ef4-0710-4cfb-b0ac-dd3bf5415d88
owner_identity_uri: █████████████████████████
priority: Low
public_read: true
relations:
  - relates [[user:task/league/backfill-2024-sportradar-role-columns.md]]
  - relates [[█████████████████████████-██████████-█████-████-███-██████-██████████]]
  - relates [[user:task/league/build-out-default-data-view-catalog.md]]
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-10-03T03:08:23.842Z'
visibility_analyzed_at: '2026-11-06T00:17:52.337Z'
---

## Objective

Fill Sportradar play-by-play for the seasons the league database lacks it, a slice at a time on free trial quotas rather than a paid tier. Operator decision 2026-09-26.

## Why

Sportradar is the only candidate source for several play columns that no other feed carries before recent seasons. Measured 2026-09-26 by the 2016-2017 coverage investigation:

- `is_blitz` is empty for 2016-2023. The tracking supplier's feed has no blitz field; Sportradar's 2024 payloads do carry one.
- Coverage scheme for 2016-2017 is NOT a Sportradar question — it is a permanent floor, settled against the live tracking supplier's feed and nflverse (see the coverage paragraph in [[███████████████████████████████-█████████-████████]]).
- Broken tackles and the role columns for 2024 are already scoped by the two related 2024 tasks.

## Constraints

- A trial is 1,000 requests, and that does not cover even one full season. Every run must stay inside the remaining quota of the current trial, and a slice must be resumable from the local cache at `/sportradar/pbp/<game_id>`.
- 2016-2023 games carry no `sportradar_game_id`, so each earlier season needs a game-id resolution step before any play request.
- Never re-request a cached game. Log the requests spent per run so the quota is accounted rather than guessed.

## Plan

- [ ] Order the seasons by value: which columns each season unlocks, against the requests it costs.
- [ ] Land the 2024 slices first through the two related 2024 tasks, since those games already carry game ids.
- [ ] For each earlier season, resolve `sportradar_game_id` for its games, then fetch within a trial's quota, resuming across trials.
- [ ] After each season, re-derive the play canonicals it feeds (`is_blitz` among them) and re-measure coverage, recording the result on the █████████ traps sheet.
