GridIron Data API changelog

Quick answer: Everything that changed in the GridIron Data API, newest first. September 28, 2026 changed the free plan to 50 requests a month with no daily cap. September 26, 2026 added a free plan and the Pro injury changes feed, stopped keys expiring while subscribed, and fixed resubscribing, filtered /players pages, x-api-key casing and 404s.

What changed on ?

AddedAnnual billing: Basic $45 a year, Pro $249 a year

Both paid plans can now be billed once a year, with three months free compared with paying monthly. The limits are the same as the monthly plan, and so is the key. Choose Annual under Billing when you sign up, or switch an existing plan from your dashboard: Manage Subscription & Payment, then Update plan. Pricing →

AddedPause until next season

A paid plan can be paused from the dashboard instead of cancelled. You aren't billed while paused, and the plan turns back on by itself on August 1 with the same key. You can also resume early at any time. While paused, data requests answer 403 with "reason": "subscription_paused", the resume date and the steps to resume.

What changed on ?

ChangedFree plan: 50 requests a month, no daily cap

The free plan is now 50 requests a month at 10 a minute, with no daily limit. The count resets on the 1st of each month at 00:00 UTC. Request 51 in a month gets HTTP 429 with "reason": "free_monthly_quota" and an upgrade_url; the old free_daily_quota reason is gone. Fifty requests is enough to try every endpoint and build a prototype. Running something every week of the season is what Basic ($5 a month, 5,000 requests) is for, and upgrading keeps the same key. Free plan details →

Follow along in any feed reader: Atom or JSON Feed.

What changed on ?

AddedLeague-wide news feed: GET /news/latest

Every tracked player's news in one call, newest first, filterable by impact, position and team, with a since timestamp and cursor paging. It's built for free agency and the draft, when you want every signing and cut without polling player by player. Basic and above get 90 days of history; Free keys get the 5 newest headlines from the last 24 hours. The MCP server has a matching get_latest_news tool. Docs →

ChangedOne code per team in every response

The Rams, Washington and Jacksonville came back as both LA/LAR, WSH/WAS and JAC/JAX, depending on the source row, which split a player's history against the Rams into two half-sized samples. Responses now always use LAR, WAS and JAX, and alias histories are merged. Filters and paths still accept either spelling, and /projections gains a team filter. Details →

ChangedThe default season stays 2026 through the off-season

Calls without ?season= used to switch to the next year on March 1, before any of its data exists. The default now moves only when the new season's data is loaded. GET /health reports it as default_season.

AddedHistorical data docs and a backtest example

A new docs section maps the 2020–2026 history (actuals, snap share, matchups, deviations) for backtesting and dynasty research, with a runnable season-over-season example. Historical data →

What changed on ?

AddedFree plan: 100 requests a day, no credit card

Sign up, confirm your email and your key is on the dashboard. The free plan allows 100 requests a day at 10 a minute and resets at 00:00 UTC. Request 101 gets HTTP 429 with "reason": "free_daily_quota" and an upgrade_url. Upgrading keeps the same key. Free plan details →

AddedPro injury changes feed: GET /injuries/changes?since=

Returns only the players whose injury status changed since a timestamp, with previous_status, status and detected_at, plus a next_since cursor. Pro and Enterprise keys only; others get 403 pro_required. Lookback is 14 days. Game-day polling guide →

ChangedInjury status refreshes on game days

Status still refreshes daily at 11:00 am ET, and now also after inactives on Sunday (about 12:45, 3:50 and 7:45 pm ET) and before Thursday and Monday night games (about 7:15 pm ET). Schedule in the docs →

ChangedKeys never expire while you're subscribed

A key on a live subscription has no expiry date. After a cancellation the key stays on file for 90 days, then it's removed.

FixedYou can resubscribe after cancelling

Checkout used to reject any email that had ever had a key. Now it blocks only an email with a live subscription, and a returning customer gets their previous key back, reactivated.

FixedFiltered /players returns full pages

/players?position=WR used to return a handful of players plus a cursor, because the filter ran after each page was read. It now keeps reading until the page is full (or the table ends), so you make far fewer calls. A non-numeric limit now returns 400. API reference →

FixedThe x-api-key header works in any casing

Account routes (usage stats, key regeneration, billing) read the header case-sensitively, so a client sending X-Api-Key got a 401. Every route now accepts any casing, as data routes already did.

FixedReal 404s

Unknown URLs used to return the home page with HTTP 200. They now return a 404 page with a 404 status, and /docs and /pricing redirect (301) to their pages.

What changed on ?

AddedSnap share: /snaps, and snap_pct on /stats

Per-week offensive snap share for every fantasy-relevant player from 2020, with a season average and a trailing trend. Snap share release notes →

Frequently asked questions

How do I get notified of API changes?

Subscribe to the Atom feed at /feed.xml or the JSON Feed at /feed.json. Every changelog release is posted there.

Will a change break my code?

We don't remove or rename fields without notice here first. The changes listed on this page are additive or fix wrong behaviour.