Open Collective API
Free Open Collective GraphQL API with no key: transparent budgets, expenses, contributors and balances for thousands of open source projects. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Open Collective API?
The Open Collective API is a free GraphQL API exposing the finances of collectives that fund open source and community projects. Public data — balances, transactions, expenses, contributor lists and tiers — is readable with no API key, since radical financial transparency is the platform's founding premise.
Open Collective's entire model is that a project's finances are public: who contributed, how much, what was spent and on what. The API is the machine-readable expression of that, and it means you can query a project's real budget and burn rate rather than guessing at its sustainability.
It is GraphQL rather than REST, which suits the data — a collective's finances involve members, tiers, transactions, expenses and updates, and a REST design would either over-fetch or force many round trips. Collectives are addressed by `slug`, the same identifier that appears in their profile URL, so moving from a project's page to an API query is direct. Writes (submitting an expense, for instance) require a personal token, but the read layer used here does not.
Quick facts
- Base URL
https://api.opencollective.com/graphql/v2- Authentication
- No API key for public read queries. A personal token is required only for writes and for private data such as unapproved expenses.
- Rate limit
- Unauthenticated queries are throttled per IP; supplying a free personal token raises the ceiling substantially.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Open Collective API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch a collective's name and currency with GraphQL
POST https://api.opencollective.com/graphql/v2
curl -X POST 'https://api.opencollective.com/graphql/v2' \
-H 'Content-Type: application/json' \
-d '{"query":"{collective(slug:\"webpack\"){name slug currency}}"}'const res = await fetch("https://api.opencollective.com/graphql/v2", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"query":"{collective(slug:\"webpack\"){name slug currency}}"}),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Content-Type": "application/json",
}
payload = {"query":"{collective(slug:\"webpack\"){name slug currency}}"}
res = requests.post("https://api.opencollective.com/graphql/v2", headers=headers, json=payload, timeout=20)
res.raise_for_status()
print(res.json()){
"data": {
"collective": {
"name": "webpack",
"slug": "webpack",
"currency": "USD"
}
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | The GraphQL query document, sent in the JSON body. {collective(slug:"webpack"){name slug currency}} |
variables | object | Optional | Values for variables declared in the query — the clean way to parameterise rather than string-building. {"slug":"webpack"} |
slug | argument | Optional | The collective's identifier, matching the last segment of its profile URL. webpack |
limit / offset | argument | Optional | Pagination on nested collections such as transactions and members. 10 |
Response fields
dataobject- The GraphQL result, shaped exactly like the query you sent — nothing extra is returned.
collective.name / slugstring- Display name and URL identifier.
collective.currencystring- The collective's base currency. Amounts elsewhere are denominated in it, so read this before comparing figures across collectives.
collective.stats.balanceobject- Current balance, returned as an amount in cents plus a currency — not a float.
transactionsobject- Paginated financial history with type, amount, description and counterparty.
expensesobject- Submitted expenses with status, amount and payee, which is where the transparency really shows.
membersobject- Contributors and backers with roles and contribution totals.
errorsarray- GraphQL returns HTTP 200 even for query errors — always check this array before reading `data`.
What you can build with the Open Collective API
- Display a project's real funding and expenses on its own site
- Research the financial sustainability of open source projects
- Build a sponsor or backer wall from live contributor data
- Track monthly recurring funding for a collective over time
Common errors and how to fix them
HTTP 200 with an errors array
The query was malformed or named an unknown field.
Fix: GraphQL reports errors in the body, never in the status code. Inspect `errors` first — a 200 does not mean success here.
Null collective
The slug does not exist or the collective is not public.
Fix: The slug is the last segment of the profile URL and is case-sensitive.
429
Unauthenticated rate limit reached.
Fix: Generate a free personal token and send it as an `Api-Key` header. Read queries still work without one, just with a lower ceiling.
Open Collective API — frequently asked questions
Is the Open Collective API free?
Yes. Public read queries need no API key, because financial transparency is the platform's whole premise. A free personal token is only needed for writes, private data, or to raise the rate limit.
Why does Open Collective use GraphQL?
Because the data is deeply connected — a collective has members, tiers, transactions, expenses and updates. REST would mean either over-fetching enormous objects or making many round trips; GraphQL lets you name exactly the fields you need in one request.
How do I find a collective's slug?
It is the last segment of its Open Collective profile URL. A project at opencollective.com/webpack has the slug `webpack`, which is what the `collective` query expects.
Are amounts returned as decimals?
No — amounts come back in cents alongside a currency code, which avoids floating-point rounding on money. Divide by 100 for display, and read the collective's `currency` field before comparing across collectives.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
Open Collective is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.