# FootQuery (full description) > FootQuery is a football stats engine you query in plain language. The AI only interprets the question; every number is computed by FootQuery's own Go calculation engine from per-match records (API-Football data), never generated by a language model. Same question, same answer. Every answer shows Source data, and answers live as widgets on boards you keep, refresh, group in folders and share. Updated: October 2026. Short version: [llms.txt](https://footquery.com/llms.txt). ## What FootQuery is FootQuery answers football stats questions written in plain language. A language model reads the question and decides what is being asked, but it never writes a number. Every number is calculated by FootQuery's own calculation engine, written in Go, from per-match records supplied by API-Football. Because the calculation is deterministic, the same question gives the same answer. Every answer shows Source data: the exact matches used, the data provider, and the matches that were not counted, each with the reason (for example a friendly, a match the player didn't play, or missing stats). Answers are widgets on boards. You keep them, refresh them, group them in folders and share them. ## How it works ### 1. Routing The question goes to a router that picks exactly one typed tool call. There are about 40 tools, including player research, team research, compare, match hub, league leaders, standings, fixtures by date, live matches, head to head, injuries, player clubs and odds markets. Two routers race. A deterministic grammar plus Jev by TypeSafe AI form a fast lane for simple question shapes, and the OpenAI API handles everything else. Whichever pick is chosen is re-checked against real lookups before it wins. The model never writes numbers. ### 2. Data FootQuery's own backend (Go, gRPC) fetches the records the question needs from API-Football: fixtures, per-match player stat sheets, lineups, events, season rows, standings, injuries and odds. Requests are batched (20 fixtures per request) and paced. ### 3. Storage FootQuery keeps its own Postgres store of provider data it has fetched: settled match sheets, season fixture lists, player season rows, name searches, coverage flags and fixture snapshots, each with an expiry. An in-memory cache sits in front of it. This is not a full mirror of every match ever played. Data is fetched on demand the first time someone needs it and then served from FootQuery's own store, so popular players and teams answer from stored data. By contrast, Footlab says it ingests API-Football into its own database ahead of time. ### 4. Calculation The stat engine computes the answer from the match rows. It handles counts, thresholds and hit rates, streaks, last occurrence, splits (home or away, starter or substitute, competition, opponent), per-90 values, medians, season totals checked against the fixture list, and multi-season and career walks. Missing values are shown as missing, never as zero. Seasons or teams with no data are skipped and named in the notes of the answer. ### 5. Proof The response carries the match list and calculation lines (for example "14 shots on target / 10 matches") for the Source data view, plus the provider, the fetch time, whether the data was cached or fresh, and the number of provider requests used. ## What you can ask All of the following work today. ### Player per-match history - "Mbappe shots on target, last 10 matches" - "Salah 2+ shots on target, how often in the last 20?" - "When did Odegaard last get an assist?" - Streaks, home vs away, starts only, and filters by competition or opponent. ### Career and all time - "Haaland career goals" - "How many hat tricks has Haaland scored in his career?" Career questions read every season the provider lists for the player. For example, Eriksen's all time goals come out as 120 club goals from 2010/11 to 2025/26, with one point per season. ### Multi-season trends (up to 10 seasons) - "Messi goals per season, last 5 seasons" - "Liverpool corners per season, last 5 seasons" ### Last N matches where something happened FootQuery searches back through a career to find them. - "Haaland's last 5 matches where he scored 2 or more" ### Teams Results, form, splits and team history over years. - "Arsenal results when Saka and Odegaard both start" ### Head to head over years - "Arsenal vs Tottenham head to head" - "How many times has Liverpool lost to Manchester United in the last 10 years?" ### Leagues Standings, top scorers, top assists and cards, the title and relegation race, home and away tables, and team stat rankings. Champions League and Europa League leaders are counted from the main tournament, with qualifying rounds removed. - "Which Bundesliga team has kept the most clean sheets?" ### Team xG and ratings Team xG per match and per season, and expected vs actual goals per match. The xG is API-Football's model; only matches with xG are counted, and a match without xG is never counted as 0. Top rated players for a team or a league use API-Football's rating with a minutes floor. - "Arsenal xG per match last 10" - "Arsenal best rated players this season" ### Compare Player vs player, team vs team, season vs season. - "Haaland vs Kane goals this season" ### Live matches and fixtures Live matches worldwide, and match hubs with live score, minute, events timeline, lineups, team stats (including provider xG where available), player ratings, head to head and the table. - A live hub refreshes about every 30 seconds while it is open, shows "updated N seconds ago" and a ticking match clock, flashes on goals and red cards, and puts the score in the browser tab title. - Live mode shows a big score, an event ticker and live stats, for watching next to a stream. - Live stats split by half (1st half, 2nd half), plus player of the match and the top 3 ratings. - Optional browser notifications for goals and red cards, while the tab is open. - The Live now list shows the last goal on each row, puts followed teams first and can be filtered by league. - "La Liga fixtures this weekend" - "matches played yesterday" ### Availability and facts Injuries and suspensions for a team or a whole league, coach history (from the provider's list, with gaps noted), a player's career clubs, stadiums, and odds for one market (data only, no tips). - "who is injured in the Premier League" - "Arsenal managers since 2015" ### Player prop research (research, never tips) - Hit rate answers have a line stepper: move 2+ to 3+ and see the hit rate change, with the last 5, last 10 and all matches side by side. - One tap "Starts only" and "60+ minutes" refinements. - Question templates for common props. - A pre-match prop sheet for a fixture: likely starters' hit rates for shots on target, shots, fouls and cards. Example: "prop sheet Arsenal vs Chelsea". - Bet365 pre-match player odds shown as data with the implied probability, labelled "not a prediction". - Public player props pages at /props list every match behind each number. ### Follow-ups Follow-ups refine the same answer: "only Champions League", "home matches only", "last 20 instead". Danish phrasing works too. ### Sharing and alerts - "Share answer" on any widget: copy a link, save as an image, or optionally make it public on the web. Shared links show the match list without signing in. - "Alert me when this changes": a daily check sends an in-app notification when the answer's numbers change. A Pro feature, free during the beta. ### Verified answers The /verified page lists answers hand-checked against official sources. The same checks run before every deploy. ## Limits and honesty - Data comes from API-Football, not Opta. Coverage per competition and season is whatever API-Football provides. FootQuery's coverage page lists what API-Football covers today: 1,248 competitions with seasons back to 2008, 915 with lineups and 152 with full per-player statistics (coverage flags as of October 2026, see /coverage). - Per-player stats are not available for every league and season. When they are missing, the answer says so. - Player xG is not provided. Team xG is API-Football's model and appears only where the provider sends it; matches without xG are left out, never counted as 0. - Ratings are API-Football's ratings and can differ from FotMob or Sofascore. - Some very old seasons lack per-match sheets for some players. This is a known open gap. - FootQuery is not a chatbot, news, opinions, tips, or predictions presented as facts. Alerts are in-app notifications, and goal and red card notifications only arrive while the tab is open. It is not a native app: it is a web app that works on phone and desktop. ## Speed Measured over 1,174 benchmark runs: - Uncached: median 2.4 seconds, p90 6.1 seconds. - Cached: median 1.8 seconds, p90 2.4 seconds. Most answers arrive in 2 to 3 seconds. Big uncached career questions take longer. ## Access and pricing - Private beta, invite only. - Guests can ask a question without an account (3 per day per connection). - Signed up, waiting for an invite: 5 questions. - Invited accounts: up to 100 questions per day with a daily fair-use data allowance. Reopening saved answers is free. - No payment is collected during the beta. - Planned paid plans after launch: Founder 45 kr/month (36 kr/month billed yearly), Standard 69 kr/month (55 kr/month billed yearly). Yearly is 20% cheaper than monthly. Not on sale yet. ## How FootQuery compares (October 2026, from each product's own site) ### Footlab AI (footlab.ai) Footlab also answers natural-language questions over API-Football data. It says it pays for API-Football's Ultra plan, plus Wikidata for honours and web search for news. The data is ingested into its own database and queried with SQL. It advertises about 1.56 million matches and 16 languages, gives chat answers with sources stated, and also sells match predictions with a published accuracy page. It is paid only, from $9.99/month with a 7-day trial. Footlab does not advertise threshold hit rates, streaks, last N per-match logs with the match list, boards, or live match hubs. It uses the same data provider as FootQuery, so neither has exclusive data. ### FotMob Best in class for live scores, news, alerts and native apps, with Opta-style data such as shot maps and ratings. It has no plain-language question engine. Free, with an ad-free tier. ### StatMuse (FC) Free natural-language answer pages for top leagues, without a match list behind the numbers. ### ChatGPT and Perplexity They answer anything, but numbers are written by a language model or copied from web pages, can change between runs, and come with no match-level proof. ### Honest summary FootQuery's differences are match-level proof for every number, question types built for per-match research (hit rates, streaks, last occurrence, splits, career walks), answers kept as live widgets on boards, and live match hubs in the same product. Where others win: FotMob on live scores, news, alerts and apps; Footlab on prebuilt match volume, languages and predictions. ## Links - [Homepage](https://footquery.com/) - [How it works](https://footquery.com/how-it-works) - [Compare](https://footquery.com/compare) - [Coverage](https://footquery.com/coverage) - [Verified answers](https://footquery.com/verified) - [Player props](https://footquery.com/props) - [Changelog](https://footquery.com/changelog) - [Request access](https://footquery.com/register) - [Terms of Service](https://footquery.com/terms) - [Privacy Policy](https://footquery.com/privacy)