Open Collective Scraper avatar

Open Collective Scraper

Pricing

Pay per event

Go to Apify Store
Open Collective Scraper

Open Collective Scraper

Scrape Open Collective: collective details, backers, transactions, and expenses via the public GraphQL API. No auth required. Export to JSON, CSV, Excel.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Extract open-source funding data from Open Collective — no API key, no authentication, no browser overhead. Pure GraphQL API wrapper that fetches collective details, members/backers, transactions, and expenses in seconds.

Try it now: Open Collective Scraper on Apify Store

What does Open Collective Scraper do?

Open Collective Scraper connects to Open Collective's public GraphQL API at https://api.opencollective.com/graphql/v2 and extracts structured data about any public collective. You provide one or more collective slugs (the URL identifier after opencollective.com/), and the actor returns a clean JSON/CSV dataset with the data you need.

Capabilities:

  • 🏠 Collective details — name, description, website, social links, currency, creation date, and financial stats (balance, total raised, total spent, contributor count)
  • 👥 Members & backers — role, donation totals, account info, profile URLs, and join dates — paginate through thousands of backers
  • 💸 Transactions — full financial history: type (CREDIT/DEBIT), kind (CONTRIBUTION, HOST_FEE, etc.), amounts, net amounts, fees, and counterparty info
  • 📋 Expenses — approved and pending payments: description, amount, payee, status, tags, and linked items
  • 100% public data — no login, no API key, no personal tokens required for public collectives
  • HTTP-only — pure API calls, no browser — fast and cheap

Who is Open Collective Scraper for?

🔬 Open-source researchers & academics

You're studying the open-source funding ecosystem — who donates, how much, and to which projects. With this actor you can:

  • Map donation networks across hundreds of collectives
  • Track which companies sponsor which projects via their backer accounts
  • Analyze contribution trends over time using transaction history

📊 Investors & VC analysts

You need to evaluate an open-source project's financial health before making an investment or partnership decision:

  • Pull current balance, total raised, and spending trends
  • Identify major sponsors and their contribution levels
  • Compare funding levels across competing projects

🏢 Developer relations & sponsorship teams

You're identifying open-source projects worth sponsoring or projects that sponsor your competitors:

  • Bulk-extract backer lists from related collectives
  • Find influential contributors and community leaders (ADMIN/MEMBER roles)
  • Monitor when key sponsors join or leave a collective

📰 Journalists & tech writers

You're covering open-source sustainability, funding inequality, or specific project economics:

  • Pull verifiable financial data directly from the source
  • Compare funding across language ecosystems (JS, Python, Rust, etc.)
  • Extract transaction histories for investigative pieces

🤖 Automation engineers

You maintain dashboards or pipelines that track OSS health metrics:

  • Schedule daily/weekly runs to monitor balance changes
  • Feed data into Google Sheets or Airtable for stakeholder reporting
  • Trigger Slack alerts when a collective's balance drops below a threshold

Why use Open Collective Scraper?

  • 🚀 Actually works — direct API access, not scraping the DOM — immune to UI changes
  • 🆓 No auth required — all public data is accessible without API keys or logins
  • 📄 Multi-type output — collective, member, transaction, and expense records in one run
  • 🔄 Full pagination — handles collectives with thousands of backers or tens of thousands of transactions
  • 🛡️ Graceful error handling — invalid slugs are logged and skipped, not crashes
  • 🔗 URL input support — paste full OpenCollective URLs or just slugs
  • 📦 Apify platform benefits — schedule runs, export to Google Sheets, connect to Make/Zapier, monitor via webhooks

What data can you extract?

🏠 Collective Details

FieldDescription
idUnique Open Collective identifier
nameDisplay name
slugURL slug (e.g., "webpack")
descriptionShort description
longDescriptionFull HTML description
websiteOfficial website URL
imageUrlAvatar/logo image URL
twitterHandleTwitter/X profile URL
githubHandleGitHub organization URL
currencyOperating currency
balanceValueCurrent balance amount
totalAmountReceivedValueAll-time total raised
totalAmountSpentValueAll-time total spent
contributorsCountNumber of contributors
isActiveWhether collective is active
tagsCategorization tags
createdAtFounding date

👥 Member / Backer Records

FieldDescription
idMember record ID
roleBACKER, MEMBER, ADMIN, HOST, CONTRIBUTOR, ATTENDEE
createdAtWhen membership started
sinceAlternative start date
totalDonationsValueLifetime donation total
totalDonationsCurrencyCurrency
accountSlugBacker's Open Collective slug
accountNameBacker's display name
accountTypeIndividual or Organization
accountImageUrlBacker's avatar URL
accountWebsiteBacker's website
urlLink to backer's OC profile

💸 Transaction Records

FieldDescription
idTransaction UUID
typeCREDIT or DEBIT
kindCONTRIBUTION, HOST_FEE, EXPENSE, PAYMENT_PROCESSOR_FEE, etc.
createdAtTransaction timestamp
descriptionHuman-readable description
amountValueGross amount
netAmountValueNet amount after fees
platformFeeValueOpen Collective platform fee
hostFeeValueFiscal host fee
paymentProcessorFeeValuePayment processor fee
fromAccountSlugSender slug
toAccountSlugRecipient slug
isRefundedWhether transaction was refunded
taxAmountTax amount if applicable

📋 Expense Records

FieldDescription
idExpense ID
typeINVOICE, RECEIPT, GRANT, SETTLEMENT, UNCLASSIFIED
statusPENDING, APPROVED, PAID, REJECTED, CANCELLED
descriptionWhat the expense is for
createdAtSubmission date
amountValueRequested amount
amountCurrencyCurrency
payeeSlugRecipient's OC slug
payeeNameRecipient's name
payeeTypeIndividual or Organization
createdBySlugSubmitter's slug
tagsExpense tags
itemsCountNumber of line items

How much does it cost to scrape Open Collective?

This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform costs are included.

FreeStarter ($29/mo)Scale ($199/mo)Business ($999/mo)
Per record$0.00115$0.001$0.00078$0.0006
1,000 records$1.15$1.00$0.78$0.60
+ Start fee$0.005$0.00475$0.00425$0.00375

Higher-tier plans get additional volume discounts (see PLATINUM and DIAMOND tiers in the actor's pricing tab).

Real-world cost examples:

TaskRecordsEstimated Cost (Free tier)
1 collective + 100 backers101~$0.12
5 collectives + details only5~$0.01
1 collective + 1,000 transactions1,001~$1.16
10 collectives + 100 backers each1,010~$1.16

Free plan estimate: With $5 in free credits, you can scrape approximately 4,000 records.

How to scrape Open Collective data

  1. Open the Open Collective Scraper on Apify Store
  2. Click "Try for free" — no credit card required for your first $5 in credits
  3. Enter collective slugs — paste slugs like webpack, babel, vuejs, or full URLs like https://opencollective.com/webpack
  4. Select data types — choose from collective, members, transactions, expenses
  5. Set limits — control how many members/transactions/expenses to fetch per collective
  6. Click "Start" and wait for results (typically under 30 seconds for 100 records)
  7. Export results as JSON, CSV, Excel, XML, or RSS — or connect directly to Google Sheets

Example inputs for common workflows:

Get collective stats for 5 projects:

{
"collectiveSlugs": ["webpack", "babel", "vuejs", "react", "typescript"],
"dataTypes": ["collective"],
"maxMembers": 0
}

Get top 500 backers of a collective:

{
"collectiveSlugs": ["webpack"],
"dataTypes": ["members"],
"maxMembers": 500,
"memberRoles": ["BACKER"]
}

Get recent transactions (credits only):

{
"collectiveSlugs": ["vuejs"],
"dataTypes": ["transactions"],
"maxTransactions": 100,
"transactionTypes": ["CREDIT"]
}

Input parameters

ParameterTypeDefaultDescription
collectiveSlugsarrayRequired. List of slugs or Open Collective URLs to scrape
dataTypesarray["collective","members"]Which data types to extract: collective, members, transactions, expenses
maxMembersinteger100Max members per collective. 0 = no limit
maxTransactionsinteger100Max transactions per collective. 0 = no limit
maxExpensesinteger100Max expenses per collective. 0 = no limit
memberRolesarray[]Filter members by role. Options: BACKER, MEMBER, ADMIN, HOST, CONTRIBUTOR, ATTENDEE. Empty = all roles
transactionTypesarray[]Filter transactions by type: CREDIT, DEBIT. Empty = both

Output examples

Each run produces a single flat dataset where different record types coexist. Every record has a recordType field (collective, member, transaction, or expense) plus collectiveSlug and collectiveName for easy filtering.

Collective record:

{
"recordType": "collective",
"collectiveSlug": "webpack",
"collectiveName": "webpack",
"id": "wov349mr-wgz75lpy-mzpa08dj-eybknoxd",
"name": "webpack",
"slug": "webpack",
"description": "webpack is THE build solution for modern web applications.",
"website": "https://webpack.js.org/",
"balanceValue": 100156.56,
"balanceCurrency": "USD",
"totalAmountReceivedValue": 1951653.85,
"totalAmountReceivedCurrency": "USD",
"contributorsCount": 2605,
"isActive": true,
"url": "https://opencollective.com/webpack"
}

Member record:

{
"recordType": "member",
"collectiveSlug": "webpack",
"collectiveName": "webpack",
"id": "nmlo94zn-7x08dpo3-z3pewga3-vjbrky5m",
"name": "Aseem Sood",
"role": "BACKER",
"createdAt": "2016-10-15T15:47:40.951Z",
"totalDonationsValue": 14,
"totalDonationsCurrency": "USD",
"accountSlug": "aseem",
"accountType": "Individual",
"url": "https://opencollective.com/aseem"
}

Transaction record:

{
"recordType": "transaction",
"collectiveSlug": "vuejs",
"collectiveName": "vue",
"id": "2258ff56-4943-4a3a-b8a0-317878e9d806",
"type": "CREDIT",
"kind": "CONTRIBUTION",
"createdAt": "2026-04-04T11:12:23.954Z",
"description": "Monthly financial contribution to vue (Backers)",
"amountValue": 2,
"amountCurrency": "USD",
"netAmountValue": 2,
"fromAccountSlug": "felix19",
"fromAccountName": "Felix",
"toAccountSlug": "vuejs",
"url": "https://opencollective.com/vuejs/transactions"
}

Tips for best results

  • 🔢 Start small — set maxMembers: 20 and maxTransactions: 20 to preview data before running at scale
  • 📋 Use recordType to filter — the output dataset contains mixed record types; filter by recordType in your downstream tool or the Apify dataset table view
  • 🔗 Paste full URLs — the actor accepts both webpack and https://opencollective.com/webpack — useful when copying directly from the browser
  • Schedule for monitoring — run daily/weekly to track funding changes over time
  • 📊 Member roles matterBACKER = financial contributors; CONTRIBUTOR = code/non-financial contributors; ADMIN = team members
  • 🌐 No pagination headaches — the actor handles multi-page fetching automatically; just set maxTransactions: 0 to get all records
  • 💡 Expenses may be empty — many collectives don't use Open Collective for expense management; this is expected

Integrations

Open Collective Scraper → Google Sheets Use the built-in Google Sheets integration to populate a funding tracker spreadsheet. Set up a daily run on a popular collective (e.g., webpack) to monitor balance changes and new backers automatically. Perfect for open-source sustainability research.

Open Collective Scraper → Slack/Discord Connect via Make (formerly Integromat) or Zapier: when a large transaction (> $1,000 CREDIT) appears in the transaction feed, send a Slack alert to your dev-relations channel. Use this to track when major sponsors join a competitor project.

Open Collective Scraper → Airtable Feed member records into an Airtable base to build a sponsor relationship database. Enrich with company info by cross-referencing accountWebsite with your CRM. Filter by accountType: "Organization" to focus on corporate sponsors.

Scheduled runs for OSS health monitoring Schedule a weekly run on 10-20 collectives in your ecosystem to track balanceValue, contributorsCount, and totalAmountReceivedValue. Export to a time-series database or Google Data Studio for trend analysis.

Open Collective Scraper → Webhooks Use Apify webhooks to trigger a downstream pipeline whenever a scrape completes. For example, update a public dashboard or send a summary email every Monday morning with the latest funding stats for your watchlist.

Using the Apify API

You can trigger and manage Open Collective Scraper runs programmatically using the Apify API.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/open-collective-scraper').call({
collectiveSlugs: ['webpack', 'babel', 'vuejs'],
dataTypes: ['collective', 'members'],
maxMembers: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/open-collective-scraper').call(run_input={
'collectiveSlugs': ['webpack', 'babel', 'vuejs'],
'dataTypes': ['collective', 'members'],
'maxMembers': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~open-collective-scraper/runs" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"collectiveSlugs": ["webpack", "babel"],
"dataTypes": ["collective", "members"],
"maxMembers": 100
}'

After the run completes, retrieve results:

curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

Use with AI agents via MCP

Open Collective Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

Example prompts

Once connected, try asking your AI assistant:

  • "Use automation-lab/open-collective-scraper to fetch the top 200 backers of webpack and tell me which organizations are sponsoring it"
  • "Scrape the last 100 transactions for vuejs and summarize the monthly donation trends"
  • "Get collective details for babel, jest, and prettier and compare their current balances and total funding raised"

Learn more in the Apify MCP documentation.

Open Collective is a transparent platform — financial data is intentionally public to foster trust in open-source funding. The actor exclusively uses Open Collective's official public GraphQL API (api.opencollective.com/graphql/v2), which is designed for programmatic access.

Key points:

  • ✅ Only public data is accessed — the same data visible to anyone on the website
  • ✅ Uses the official API, not HTML scraping — respectful and stable
  • ✅ No authentication bypassed — no login, session cookies, or private data accessed
  • ✅ Rate limiting is respected — built-in delays between requests to avoid overloading the server
  • ⚠️ Do not store or redistribute personal data in violation of GDPR — backer names and profile info are personal data when combined
  • ⚠️ Always review Open Collective's Terms of Service before using data commercially

This actor is intended for research, analytics, and automation of publicly available data. Use it responsibly.

FAQ

How fast does it run? Very fast — purely HTTP API calls, no browser. Expect 100 records in under 5 seconds, 1,000 records in 30-60 seconds (including built-in rate-limit delays of ~200ms per pagination request).

How much does it cost to scrape 1,000 backers? On the free plan: $0.005 (start fee) + 1,001 × $0.00115 ≈ $1.16. On the Scale plan: ~$0.79. The first $5 in free credits gets you ~4,000 records.

Does it work for organizations and projects too, not just collectives? Yes — the collective query endpoint in Open Collective's API handles all account types. You can use it for organizations, projects, events, and funds as long as their slug is valid and the account is public.

Why are the expenses list empty for some collectives? Not all collectives use Open Collective's expense management feature. Many collectives only use OC for receiving donations and handle payouts through other tools. This is normal and not a bug.

Why do some transactions show 0 netAmount? Platform fees, host fees, and payment processor fees can reduce the net amount to zero or even negative. This is especially common for HOST_FEE and PAYMENT_PROCESSOR_FEE transaction kinds. These are real transactions — they represent fee deductions.

I'm getting rate limit errors. What should I do? The built-in delays (200ms between pagination calls, 500ms between collectives) handle normal usage. If you're running many collectives in a single job, consider splitting into smaller batches or using Apify's scheduler to run separate jobs. You can also obtain a personal token from Open Collective to increase your rate limits.

How do I get all backers for a collective with thousands of members? Set maxMembers: 0 — this disables the limit and fetches all pages automatically. For webpack (3,000+ backers) this takes approximately 30-45 seconds.

Other Open Source & Developer Tools scrapers

Looking for complementary data? Here are other automation-lab actors you might find useful: