aifree.dev

Track Free-Tier Changes Automatically

Know when a free AI tier you rely on changes or ends: email alerts, RSS, the changes API, signed webhooks, a CI check and MCP, with their real delays.

Time
5 to 30 minutes, depending on the channel
You need
Email alerts and RSS: nothing but an email address or a feed reader · Webhooks: a free aifree.dev API key and a public HTTPS endpoint · CI check: Node 18+ in the CI image for `npx aifree check` (the GitHub Action is not published yet)
Last checked

Free tiers change without notice: limits shrink, a card becomes required, a credit program closes. aifree.dev records every change to its catalog as an event - listed, verified, change detected, terms updated, expired, relisted, incident, incident resolved - and publishes the same log through several channels. This guide lines them up from least to most effort, with examples checked against the live API docs on 2026-10-18, and says plainly how fast each one is.

Pick a channel

You wantChannelEffortWhat arrives
An email when one offer changes"Alert me" on the offer page, cadence Instant1 minuteTerms updated, expired, relisted, incident and incident resolved, for the offers, hubs or countries you follow
A weekly summaryThe same alert, cadence Weekly1 minuteOne Sunday email, only in weeks where something changed
Every event in a readerRSS feed1 minuteThe newest 100 events, filterable by kind or hub
Data for a script or dashboardChanges API5 minutesJSON events since a date, no key needed
A push into your own systemWebhooks30 minutesA signed POST per event, with retries and replay
A failing build when a tier you use endsA curl + node step in CI over the changes API15 minutesExit code 1 and the matching events
An AI agent that can answer "what changed"The hosted MCP server2 minutesA recent_changes tool and a changes resource

Email alerts (least effort)

Every offer page, category hub, comparison, top chart and country page has an Alert me button. Enter an email, confirm it (double opt-in), then pick a cadence on the manage page linked from every email:

  • Instant: an email when an offer you follow has its terms updated, expires, is relisted, or has an incident opened or resolved.
  • Weekly digest: Sunday morning, only when something changed; new, expiring (within 14 days), changed and expired offers for your topics.
  • Nothing: keeps your topics and sends no email.

Browser push notifications are built (the bell in the header) but not switched on in production yet, so use email for now.

RSS: the whole changelog in a reader

Subscribe to https://aifree.dev/changes/rss.xml. It carries the newest 100 events; add ?kind= to follow one kind, for example /changes/rss.xml?kind=expired or ?kind=terms_updated. Kinds: listed, verified, changed (change detected), terms_updated, expired, relisted, incident, incident_resolved. An item for an offer that has since expired links to its category hub, with "Expired - see alternatives" in the description. To follow one category, add ?hub= with a hub slug: free-ai-coding-tools, free-api-credits, student-ai-deals, startup-ai-credits, free-ai-image-tools, free-ai-audio-tools or free-ai-video-tools, for example /changes/rss.xml?hub=free-ai-coding-tools for coding tools only; it combines with ?kind=, and each hub page links its own feed. The same list is browsable on the changelog page, where you can also filter by hub.

Changes API: JSON for scripts

GET /api/v1/changes returns the same log as JSON, newest first. No key is needed (600 requests per 15 minutes; a free key raises it to 6,000):

curl -s 'https://aifree.dev/api/v1/changes?since=2026-10-01&kind=expired,terms_updated'

Parameters: since=YYYY-MM-DD, kind= (comma list of the kinds above), hub= (one hub slug, as for the RSS feed), page, limit. Each record is { id, slug, url, kind, at, source, note, offerStatus, alternativesUrl }: source is human, monitor, community, probe or ai; offerStatus is the offer's current status and alternativesUrl is its category hub when it has expired (null while it is live). Responses carry an ETag, so a poller can send If-None-Match and get a cheap 304. The full contract is in the OpenAPI spec.

Webhooks: a signed POST per event

Get a free API key on the developers page, then register an HTTPS endpoint, either in the webhooks console or with the API:

curl -s -X POST https://aifree.dev/api/v1/webhooks \
  -H "Authorization: Bearer $AIFREE_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/hooks/aifree","kinds":["terms_updated","expired"],"format":"json"}'

kinds empty or omitted means every kind; format is json (the signed payload) or discord / slack (a ready-made message for an incoming-webhook URL, handy for a team channel; an expired message also says "See alternatives" with the category page to look at instead). Each delivery is a POST with X-Aifree-Event: offer.<kind>, X-Aifree-Delivery (the event id) and X-Aifree-Signature: t=<unix seconds>,v1=<hex>, an HMAC-SHA256 of t + "." + body with your endpoint secret; the console has Node and Python verifiers. The JSON body is { id, type, createdAt, data: { slug, kind, source, note, diff, offer, offerStatus, alternativesUrl } }, where diff lists the changed fields for terms_updated. New fields are only ever added, so ignore keys you do not know.

Answer with a 2xx within 10 seconds. A failed delivery is retried after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours (6 attempts in all); 20 failures in a row pause the endpoint until you delete and register it again. Every delivery can be replayed from the console or with POST /api/v1/webhooks/deliveries/{id}/replay. Limit: 5 endpoints per key.

Fail CI when a free tier you use changes

The aifree CLI does it in one step: npx aifree check groq-free-tier google-gemini-developer-api-free-tier reads the offers and the last 30 days of changes and fails on an expiry or incident. With no slugs it reads an .aifree.yml offers: list, or detects the SDKs in package.json; --markdown prints a table for the pull request. The GitHub Action is not published yet. Without Node, the changes API does the core check with curl. List the offers your project depends on (the slug is the last part of the offer URL) and fail the job when one of them expired or had an incident in the last 30 days:

since=$(date -u -d '30 days ago' +%F)   # GNU date, as on ubuntu-latest
curl -fsS "https://aifree.dev/api/v1/changes?since=$since&kind=expired,incident&limit=200" |
  node -e 'const want = new Set(process.argv.slice(1)); const hits = JSON.parse(require("fs").readFileSync(0, "utf8")).data.filter((c) => want.has(c.slug)); for (const c of hits) console.log(c.kind, c.slug, c.at); process.exit(hits.length ? 1 : 0)' google-gemini-developer-api-free-tier groq-free-tier

It prints each matching event and exits 1, which fails the step; add terms_updated to kind to be strict. The CLI's check also warns on other events, such as a terms update.

Ask an agent: the MCP server

The hosted MCP server needs no install or key:

claude mcp add --transport http aifree https://aifree.dev/mcp

Then ask "what free AI offers expired this week?". The recent_changes tool takes since (YYYY-MM-DD), kind, hub and limit (up to 50), and aifree://changes lists the latest 50 events. Both are built from the offer rows at day granularity (listed, verified, change detected, expired), so they do not show terms updates or incidents; use the changes API or webhooks for those. Clients that only run local servers can use the stdio proxy npx -y @aifree/mcp instead of the hosted URL.

How fast is "automatically"?

  • Detection is nightly. A monitor reads every offer's pricing page once a night (scheduled at 03:00 UTC) and records "change detected" when the pricing text differs from the night before. Pages behind a login are reported as blocked unless the offer has a public pricing page to watch instead, and the monitor never expires an offer on its own.
  • A person rules on each finding. "Change detected" means the page text moved, not that the free tier changed. A person checks it and records "terms updated" (with the changed fields) or "expired" only when the facts changed, so instant emails, which skip "change detected", can come a day or more after the vendor's change.
  • Scheduled jobs can run late. The jobs run on GitHub Actions; jobs scheduled every 5 minutes have in practice run every 2 to 5 hours. A webhook's first attempt is sent as soon as the event is recorded, but its retries ride that job, so a retry can arrive hours late.
  • Caching. The RSS feed and the API are cached for up to 5 minutes.

None of these channels replaces reading the vendor's terms before you depend on a free tier in production.

Frequently asked questions

How quickly will I hear about a free-tier change?
The monitor checks pricing pages nightly, and a person confirms each finding before it becomes a terms update or an expiry, so expect hours to a couple of days after the vendor changes its page. A webhook goes out as soon as the event is recorded; retries can lag by hours.
Do I need an API key?
Not for RSS, email alerts, the MCP server or reading GET /api/v1/changes (600 requests per 15 minutes). Webhooks need a free key from the developers page, which also raises the API limit to 6,000 requests per 15 minutes.
What is the difference between "change detected" and "terms updated"?
"Change detected" is the nightly monitor noticing that the pricing text changed. "Terms updated" is a person confirming that the offer’s facts changed, with the changed fields listed. Instant emails are sent for terms updates, not for detections.
Can I get alerts in Slack or Discord?
Yes: register an incoming-webhook URL from Slack or Discord in the webhooks console with the slack or discord format, and every matching event is posted to that channel.
Can I use the aifree GitHub Action today?
Not as a published action: it has no Marketplace listing and its source is not public yet. The aifree CLI is on npm, so run `npx aifree check` in a CI step instead (or poll the changes API with curl; this guide has both).

Sources

Steps and limits were checked against these official pages.

More guides

Never miss new offers and news

New tools, credits, and AI news are added regularly. Pick how you want to hear about them.

Telegram channel
Join @aifree_dev and get new free AI offers and news right in your Telegram feed.
Browser notifications
Turn on push notifications and get an alert on this device whenever something new is posted. No account needed.
Email newsletter
A weekly digest of new, changed and expiring free AI offers. Double opt-in, one-click unsubscribe.

Unsubscribe anytime. Privacy

Frequently asked questions

What is aifree.dev?

aifree.dev helps everyone access AI through a curated directory of free AI tools, API credits, free tiers, and startup programs for coding, image, voice, video, and students - verified regularly.

How are offers presented?

Each offer includes its access details, free models when available, and expiration information when provided. Limited-time deals stay visible so they are easy to compare.

Do education and startup programs need verification?

Yes. Providers usually ask students to verify their status with a school email, student ID, or a program like the GitHub Student Pack, and ask startups to verify company details such as age, funding, or website. Check each offer’s claim page for the exact requirements.

What kinds of free AI offers are listed?

Free tiers and free trials from AI providers, free API credits, startup and student programs, and free tools for coding, image generation, voice, and video.

How can I suggest a tool or report a broken link?

Use the submit form: paste the offer page URL and a short note. A person checks every submission before anything is listed. Broken links and changed terms go through the same form.

+

Know a good one?

Tell us about an AI tool worth knowing. Found a broken link? We want to hear that too.

Submit an offer