The dataset
Last updated 21 Oct 2026
Everything in this directory is available as a machine-readable dataset. It is generated from the same records that produce the pages — there is no separate copy to go stale — and it currently holds 25 non-expired offers, each with the primary source it was verified against and the date it was last checked.
Download
-
/api/offers.json— complete records, with a versioned envelope. Start here. -
/api/offers.csv— the same rows as flat columns, for spreadsheets.
Both are plain static files. No key, no sign-up, no rate limit — fetch them as often as is useful, and cache them rather than polling: they only change when we deploy.
The envelope
The JSON response wraps the records so you can tell what you are holding:
schemaVersion (currently 2),
generatedAt, license, canonicalUrl,
documentationUrl, disclaimer, count and
offers. schemaVersion changes only when a field is removed or retyped; new
fields may be added without a bump, so parse defensively and ignore what you do not recognise.
Compatibility and migration
Version 2 keeps existing field types and currency values. New fields are additive and CSV
columns are appended. Read availability rather than treating status=active as an open application. Read cardPolicy and cardCondition rather than
interpreting legacy null as no card. Use allowance.unit for native units
such as Neurons, and amountType for maximum amounts. Both existing endpoints receive
the current verified records; there is no frozen legacy copy.
Fields
| Field | Meaning |
|---|---|
| slug | Stable identifier. Also the offer page path: /offers/{slug}. |
| provider | Provider slug (e.g. groq, google, aws). |
| offerName | The offer’s name as the provider calls it. |
| category | One of: provider-free-tier, trial-credit, startup-program, student-education, hackathon-event, cloud-marketplace, aggregator-router. |
| status | Legacy programme-date status: active, expiring-soon or expired. Read availability for application access; active does not mean open. |
| creditAmount | Number, or null when the offer is an allowance with no fixed balance. |
| currency | The unit creditAmount is measured in: USD, credits, tokens, requests and so on. |
| cardRequired | true when the provider says a payment method is needed to claim; false only when the provider says, in its own words, that none is needed; null when no unconditional yes/no can be stated, including conditional policies which the legacy field cannot represent. Empty in the CSV; use cardPolicy and cardCondition. |
| ongoing | True when the offer has no fixed end date. |
| expiry | Legacy programme end date, or null. Never the validity of an individual credit balance. |
| eligibility | Who qualifies, in the provider’s terms. |
| claimUrl | Where to claim the offer. |
| sourceUrl | The primary source we verified the figures against. Never empty. |
| lastVerified | ISO date we last confirmed this record against sourceUrl. Never empty. |
| firstPublished | ISO date the offer was first listed here. |
| tags | Free-form labels. Space-separated in CSV, an array in JSON. |
| url | Canonical URL of the offer page on this site. |
| availability | open, paused, closed, ended, existing-users, conditional or unknown. The dataset includes non-expired entries even when applications are closed; read the conditions. |
| isClaimable | True for open or conditional application routes that have not expired. This is not a guarantee of eligibility or award; inspect availability and its note. |
| availabilityNote | Verified restrictions on programme or application access, or null. |
| applicationDeadline | ISO date of application deadline; null means no deadline is stated, not unlimited credit validity. |
| creditValidity | Object: kind duration/not-stated/no-expiry; count and unit (day/month/year), anchor issue/activation/approval/signup, optional note. CSV stores JSON. Never anchored to lastVerified. |
| allowance | Object: native unit, period day/month/minute/other, optional reset/timezone/note. CSV stores JSON. Missing reset or timezone means unconfirmed. |
| amountType | fixed, up-to or variable; an up-to amount is a maximum, never guaranteed. |
| benefitType | credit, allowance, discount or other. Different types and periods are not comparable values. |
| cardPolicy | required, not-required, not-stated or conditional. Use this field for new integrations. |
| cardCondition | The condition for a conditional payment-method policy; otherwise null. |
| amountLabel | Shared presentation of amount, maximum qualifier, native unit and period. |
| creditValueNote | Scope and qualifications attached to the amount, or null. |
| currentCaveats | Current material restrictions and billing warnings, an array in JSON and a JSON-encoded array in CSV. Read before using an offer. |
The JSON records additionally carry summary, a one-sentence description. It is
omitted from the CSV because long prose makes a spreadsheet unreadable.
What is in it — and what is not
The dataset contains offers that are published and not expired. Drafts are
excluded: an offer we cannot verify is never published, in the dataset or on the site (see our
verification methodology). Expired offers are excluded. Paused or
closed application programmes can remain in this version 2 directory: status=active describes
the programme timeline, not open enrolment. Filter isClaimable=true for open or conditional
routes, then read eligibility and availability notes.
Records are sorted by slug, so if you pull the file twice and diff it, you see real
changes rather than reordering.
Update cadence
Dynamic application programmes and changing model restrictions have a seven-day review target;
stable terms have a thirty-day target. A date check does not prove unchanged terms. The whole
dataset is regenerated on every deploy. The practical way to detect change is to watch each
record's lastVerified date and compare the figures. Every sweep is recorded in the
change log — what moved, when, and what replaced it since.
Licence & citation
Free to read, query and cite with attribution and a link to freellmcredits.com. Bulk redistribution or republication of the dataset requires permission.
We want to be cited — that is the whole point of publishing this. If you use the data in
an article, an answer or a tool, please attribute it to
freellmcredits.com and link to the relevant offer page (each record carries its
url). If you need broader redistribution rights, get in touch.
Offers change frequently and we verify rather than guarantee. Confirm current terms with the provider before relying on a figure — see our terms.
Is there an MCP endpoint?
Not today. The JSON and CSV downloads are the supported interfaces. Automated probes of hypothetical endpoints do not establish demand for a new service.