World Cup Data Node
The World Cup Data node feeds our proprietary football intelligence into your agent: live scores, in-match events, lineups, elo priors, squad market values, our algorithmic edge signals, cross-venue mispricings, and news. It's the same curated raw-intel diet our own council consumes — data you can't get from any single venue.
Lenses
Pick a lens to choose which slice of intelligence to fetch:
| Lens | Returns |
|---|---|
Fixtures & Scores (fixtures) | Upcoming and live matches with scores, status, and venue |
Live Events (live_events) | Goals, cards, and substitutions for in-play matches |
Lineups (lineups) | Formation, starting XI, and substitutes (~40min pre-kick) |
Elo Ratings (elo) | Our elo priors per team — rank and rating (tournament form is in the team_stats lens) |
Squad Values (squad) | Transfermarkt player and squad market values per team |
Edge Signals (signals) | Our algorithmic edges: fair value vs market, edge, Kelly |
Mispricings (mispricings) | Our cross-venue de-vig (Polymarket vs consensus vs elo-fair) |
News (news) | Football news and news-derived signals |
Match Stats / xG (match_stats) | Live per-team xG, shots, possession, and box score per match |
Team Form (team_stats) | Per-team tournament form: played, W/D/L, goal averages, clean sheets |
Players (players) | Per-player box score for a fixture, or the tournament top-scorers leaderboard when no fixture is given |
Full Snapshot (full) | Joined per-match snapshot of all of the above |
Configuration
| Field | Description |
|---|---|
| Lens | Which slice of World Cup intelligence to fetch. |
| Match | Filter to one fixture by team name or fixture id. Leave empty for all relevant fixtures. |
| Status | Match state filter: Upcoming / Live / Finished / All. Hidden for the elo, squad and team_stats lenses (team-level, no per-match state). |
| Limit | Number of items to return. Default: 10. Max: 100. |
| Description | Optional note describing what this data fetch is for. |
Output
Top-level shape: { lens, count, match, items[], missing[] }. Each item carries the fields for the requested lens, with all probabilities normalized to a 0–1 float. Any requested fixture or team that did not resolve is listed in output.missing — there is no silent fallback.
| Path | Description |
|---|---|
| {worldcup_data.lens} | The lens that was fetched |
| {worldcup_data.count} | Number of items returned |
| {worldcup_data.match} | The match filter that was applied (empty = all) |
| {worldcup_data.items} | Array of normalized items for the lens |
| {worldcup_data.missing} | Requested lookups that did not resolve |
Match Stats / xG
The match_stats lens returns one row per team per match with live expected goals and the full box score. Filter by team name or fixture id; results are ordered by most recently captured.
| Field | Description |
|---|---|
fixtureId, teamId, team | Match and team identity |
xg | Expected goals for the team in that match |
goalsPrevented | Goals prevented (goalkeeping/defense over-performance) |
shotsTotal, shotsOnGoal, shotsOffGoal, shotsBlocked | Shot volume breakdown |
shotsInsidebox, shotsOutsidebox | Shot location split |
possessionPct, passesTotal, passesAccurate, passesPct | Possession and passing |
corners, offsides, fouls, yellowCards, redCards, gkSaves | Set pieces, discipline, saves |
capturedAt | When the row was scraped |
Team Form
The team_stats lens returns one row per team with current tournament form, ordered as a leaderboard (most wins first). Filter by team name.
| Field | Description |
|---|---|
teamId, team | Team identity |
played, wins, draws, losses | Match record so far |
goalsForAvg, goalsAgainstAvg | Goals scored / conceded per match |
cleanSheets | Matches without conceding |
form | Recent results string (e.g. WWDL) |
capturedAt | When the row was scraped |
The same form data is also folded into each team in the full lens snapshot.
Players
The players lens has two modes, picked automatically by the match filter:
- Pass a fixture id — returns the per-player box score for that match (best-rated first).
- Pass a team name, or leave it empty — returns the tournament top-scorers leaderboard (goals, then assists, then rating).
| Field | Description |
|---|---|
playerId, player, teamId, team | Player and team identity |
position, shirtNumber | Role and shirt (per-fixture mode) |
apps, minutes | Appearances and minutes played |
goals, assists, goalContributions | Scoring output |
rating / avgRating | Match rating (fixture mode) / tournament average |
shotsTotal, shotsOn, passesKey, tacklesTotal, interceptions, duelsWon | Box-score detail (per-fixture mode) |
saves, goalsConceded, penScored | Keeper and penalty stats |
yellowCards, redCards | Discipline |
lastSeen / capturedAt | Freshness |
The full lens is the showcase — one call returns a joined per-match snapshot:
{
"lens": "full",
"count": 1,
"match": "Argentina",
"items": [
{
"fixture": { "fixtureId": 1489383, "date": "2026-06-24T19:00:00Z", "round": "Group C", "venue": "Estadio Azteca" },
"score": { "home": "Argentina", "away": "France", "homeScore": null, "awayScore": null },
"state": "NS",
"elo": { "home": { "rank": 1, "rating": 2143.2 }, "away": { "rank": 3, "rating": 2098.7 } },
"squad": { "home": { "totalValueEur": 920000000, "marketRank": 4 }, "away": { "totalValueEur": 1100000000, "marketRank": 1 } },
"form": { "home": { "played": 2, "wins": 2, "draws": 0, "losses": 0, "goalsForAvg": 2.5, "goalsAgainstAvg": 0.5, "cleanSheets": 1, "form": "WW" }, "away": { "played": 2, "wins": 1, "draws": 1, "losses": 0, "goalsForAvg": 1.5, "goalsAgainstAvg": 1.0, "cleanSheets": 0, "form": "WD" } },
"xg": { "home": { "xg": 2.31, "shotsTotal": 17 }, "away": { "xg": 1.04, "shotsTotal": 9 } },
"topSignal": { "signalKind": "elo_vs_market", "teamOrOutcome": "Argentina", "fairValue": 0.52, "marketPrice": 0.46, "edgePp": 6.0, "confidence": 78, "recommendedSide": "BUY_YES" },
"mispricing": { "marketQuestion": "Argentina vs France — winner", "polymarketYes": 0.46, "oddsConsensusImplied": 0.49, "eloFairValue": 0.52, "spreadPp": 6.0 },
"news": [{ "title": "Messi passed fit for France clash", "url": "https://...", "pubDate": "2026-06-23T16:24:00Z" }]
}
],
"missing": []
}
worldcup_data with your edge label if you renamed it.Cost
Single-lens fetches cost 2 credits. The full lens fans out several joined reads per match, so it costs 5 credits and caps limit at 25.
What this node does NOT include
By design, this node exposes only our raw, derived intelligence — not venue order books or our own AI's opinions:
- No sportsbook / odds consensus — out of scope.
- No Polymarket or Kalshi market prices — use the dedicated Polymarket and Kalshi nodes for venue feeds.
- No council / agent consensus — that's Nick's own output, so feeding it back into an agent would be circular.
0–1. Unresolved lookups appear in output.missing.