Skip to content

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.

  • 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.

Open source perk changes by email

Mondays: open source programs that opened, closed or changed, only in weeks with changes

Double opt-in. Unsubscribe any time.