For AI agents
57 open source perks from 55 companies and funds, read-only JSON, no key.
Point your agent here
https://openperks.fru.dev/llms.txtSummary, every page and the API
https://openperks.fru.dev/llms-full.txtEvery offer, one line each
https://openperks.fru.dev/openapi.jsonOpenAPI 3.1, usable as tools
Call the API
GET only, CORS open, cached an hour at the edge. Lists take limit (up to 200) and offset.
EndpointParamsReturns
- GET/api/offersFree tiers, trials, credits and programs, filterabletype, category, vendor, nocard, limit, offset{ updated, total, count, limit, offset, offers[], vendors[], changes[] }
- GET/api/offers/{id}One offer with its vendor and change historyid{ offer, vendor, changes[] }
- GET/api/vendorsEvery vendor with how many offers it hasnone{ updated, count, vendors[] }
- GET/api/vendors/{id}One vendor and its offersid{ vendor, offers[] }
- GET/api/changesLaunches, raises, cuts and ends, newest first, each with its sourcesince, limit, offset{ total, count, limit, offset, since, changes[], candidates[] } (candidates: the growth queue's adds and status moves)
- GET/api/candidatesCompanies queued to become vendors (the growth queue), Unverifiedstatus, since, limit, offset{ total, count, limit, offset, candidates[] } with status (candidate, found, none, tracked), the pricing page and the sentence on it that states a free offer
- GET/api/searchRanked search over vendors, offers and pagesq, limit{ q, results[] } (at most 20)
Free tiers, trials, credits and programs, filterable
curl -s 'https://openperks.fru.dev/api/offers?type=always-free&category=database'Sample response (real row, trimmed)
{
"updated": "2026-09-28 12:11:09",
"total": 57,
"count": 1,
"limit": 1,
"offset": 0,
"offers": [
{
"id": "aws-oss-credits",
"vendor": "aws",
"product": "AWS promotional credits for open source",
"category": "hosting",
"type": "credits",
"headline": "AWS credits for upstream testing and CI",
"summary": "AWS promotional credits for open source projects, typically for upstream and performance testing, CI/CD and artifact sto",
"creditsUsd": null,
"upTo": false,
"durationDays": null,
"cardRequired": null,
"limits": [
[
"Credits",
"AWS promotional credits"
],
[
"Typical use",
"Testing, CI/CD, artifact storage"
]
],
"eligibility": "Open source projects.",
"audience": "project",
"window": "rolling",
"nextDate": "",
"nextLabel": "",
"signupUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"docsUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceQuote": "Today, we are excited to further extend our support by offering AWS promotional credits to open source projects.",
"lastVerified": "2026-09-28",
"reviewed": false,
"origin": "seed"
}
]
}One offer with its vendor and change history
curl -s 'https://openperks.fru.dev/api/offers/snowflake-trial'Sample response (real row, trimmed)
{
"offer": {
"id": "aws-oss-credits",
"vendor": "aws",
"product": "AWS promotional credits for open source",
"category": "hosting",
"type": "credits",
"headline": "AWS credits for upstream testing and CI",
"summary": "AWS promotional credits for open source projects, typically for upstream and performance testing, CI/CD and artifact sto",
"creditsUsd": null,
"upTo": false,
"durationDays": null,
"cardRequired": null,
"limits": [
[
"Credits",
"AWS promotional credits"
],
[
"Typical use",
"Testing, CI/CD, artifact storage"
]
],
"eligibility": "Open source projects.",
"audience": "project",
"window": "rolling",
"nextDate": "",
"nextLabel": "",
"signupUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"docsUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceQuote": "Today, we are excited to further extend our support by offering AWS promotional credits to open source projects.",
"lastVerified": "2026-09-28",
"reviewed": false,
"origin": "seed"
},
"vendor": {
"id": "aws",
"name": "AWS",
"domain": "aws.amazon.com",
"website": "https://aws.amazon.com",
"description": "Amazon Web Services."
},
"changes": []
}Every vendor with how many offers it has
curl -s 'https://openperks.fru.dev/api/vendors'Sample response (real row, trimmed)
{
"count": 55,
"vendors": [
{
"id": "aws",
"name": "AWS",
"domain": "aws.amazon.com",
"website": "https://aws.amazon.com",
"description": "Amazon Web Services.",
"offers": 1
}
]
}One vendor and its offers
curl -s 'https://openperks.fru.dev/api/vendors/snowflake'Sample response (real row, trimmed)
{
"vendor": {
"id": "aws",
"name": "AWS",
"domain": "aws.amazon.com",
"website": "https://aws.amazon.com",
"description": "Amazon Web Services."
},
"offers": [
{
"id": "aws-oss-credits",
"vendor": "aws",
"product": "AWS promotional credits for open source",
"category": "hosting",
"type": "credits",
"headline": "AWS credits for upstream testing and CI",
"summary": "AWS promotional credits for open source projects, typically for upstream and performance testing, CI/CD and artifact sto",
"creditsUsd": null,
"upTo": false,
"durationDays": null,
"cardRequired": null,
"limits": [
[
"Credits",
"AWS promotional credits"
],
[
"Typical use",
"Testing, CI/CD, artifact storage"
]
],
"eligibility": "Open source projects.",
"audience": "project",
"window": "rolling",
"nextDate": "",
"nextLabel": "",
"signupUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"docsUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceUrl": "https://aws.amazon.com/blogs/opensource/aws-promotional-credits-open-source-projects/",
"sourceQuote": "Today, we are excited to further extend our support by offering AWS promotional credits to open source projects.",
"lastVerified": "2026-09-28",
"reviewed": false,
"origin": "seed"
}
]
}Launches, raises, cuts and ends, newest first, each with its source
curl -s 'https://openperks.fru.dev/api/changes?limit=10'Sample response (real row, trimmed)
{
"total": 0,
"count": 1,
"limit": 1,
"offset": 0,
"changes": []
}Companies queued to become vendors (the growth queue), Unverified
curl -s 'https://openperks.fru.dev/api/candidates?status=found&limit=5'Ranked search over vendors, offers and pages
curl -s 'https://openperks.fru.dev/api/search?q=postgres'Sample response (real row, trimmed)
{
"q": "aws",
"results": [
{
"id": "co:aws",
"group": "companies",
"title": "AWS",
"href": "/vendors/aws"
}
]
}Add to your agent
System prompt line
For credits, free plans, grants and paid mentorships an open source project or maintainer can apply for, fetch https://openperks.fru.dev/llms.txt and use https://openperks.fru.dev/api/offers (filters: type, category, vendor, nocard=1 for open now). Cite "OpenPerks (openperks.fru.dev)" with a link.Tool definition
{
"name": "openperks_list",
"description": "List perks for open source projects and maintainers from OpenPerks (openperks.fru.dev): credits, free plans, seats, grants and paid mentorships. Returns each with headline, amount, application window, next date, eligibility and the official apply link.",
"input_schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"credits",
"free-plan",
"license",
"grant",
"stipend"
]
},
"category": {
"type": "string",
"enum": [
"ai",
"hosting",
"data",
"ci",
"quality",
"security",
"observability",
"docs",
"devtools",
"funding"
]
},
"vendor": {
"type": "string",
"description": "Company or fund id, e.g. neon"
},
"nocard": {
"type": "string",
"enum": [
"1"
],
"description": "1 = only perks open to apply now (open or rolling)"
}
}
}
}Python
import requests
r = requests.get(
"https://openperks.fru.dev/api/offers",
params={"type": "grant", "nocard": "1"},
timeout=10,
)
for o in r.json()["offers"]:
print(o["product"], "-", o["headline"], o["signupUrl"])TypeScript
const url = new URL('https://openperks.fru.dev/api/offers')
url.searchParams.set('type', 'credits')
url.searchParams.set('category', 'hosting')
const res = await fetch(url)
const { offers } = await res.json()
for (const o of offers) {
console.log(o.product, '-', o.headline, o.signupUrl)
}Usage terms
- Free for reading. No key, no sign-up.
- Please cite "OpenPerks (openperks.fru.dev)" with a link.
- Responses are cached an hour; keep to 60 requests a minute.
- Rows with reviewed: false are Unverified. The vendor's page is the final word.