OpenOrganizations

OpenOrganizations API

Public JSON for organizations, programs and proposals. No API key required.

GET endpointContentsResponse keys
/api/v1/organizations.jsonAll organizationsmeta, organizations
/api/v1/programs.jsonProgram registry and coveragemeta, programs
/api/v1/proposals.jsonProposal links and source archivesmeta, sources, proposals
/api/v1/organizations/3dtk.jsonOne organization, by slugmeta, organization, proposals

Quick start

const response = await fetch('https://openorganizations.site/api/v1/organizations.json');
if (!response.ok) throw new Error('API request failed');
const { organizations } = await response.json();
const gsoc = organizations.filter(org =>
  org.participations.some(p => p.program === 'gsoc')
);

How it works

These are static snapshots, updated with website deployments. Filter the response in your code; query parameters do not filter these endpoints. Reuse a downloaded snapshot instead of requesting it for every result. Cross-origin browser requests are supported.

Each organization includes its slug, description, website, technologies, topics and participation records. Each participation identifies its program, year, cohort, projects and source. Use an organization’s slug in /api/v1/organizations/SLUG.json. Unknown slugs return 404.

Coverage and attribution

The API uses the same directory cutoff as the website: at least one indexed participation from 2016 onward. Earlier history for retained organizations remains available. Proposal outcomes are reported by archive maintainers. Preserve source URLs, attribution and license fields when reusing data; see sources and coverage.