BYTETOOLS

Open Science Framework API

Free Open Science Framework API with no key for public data: projects, registrations, preprints, files and contributors in JSON:API format. Tested example and live response.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Open Science Framework API?

The Open Science Framework API is a free REST interface to OSF's public research projects, preregistrations, preprints and files. Public data is readable without authentication; a personal access token is only needed for private content or to write.

OSF is where a large slice of psychology, education and social science now keeps its preregistrations, materials and data. The API exposes all of the public side: projects (called nodes), their contributors, their file trees, registrations and the preprint servers OSF hosts. For meta-research and reproducibility tooling it is the primary source, because preregistrations carry timestamps that cannot be edited after the fact.

The API follows JSON:API strictly, which is a mixed blessing. Every object separates `attributes` from `relationships`, and relationships are returned as links rather than embedded data — so getting a project's contributors means following `relationships.contributors.links.related.href` rather than reading an array. Bracketed query parameters (`page[size]`, `filter[title]`) need URL-encoding in most HTTP clients. Anonymous access is throttled fairly aggressively, so anything beyond casual polling wants a token even though the data itself is public.

Quick facts

Base URL
https://api.osf.io/v2
Authentication
No key needed to read public nodes, registrations and preprints. A free personal access token raises the rate limit and is required for private projects or any write operation.
Rate limit
Anonymous requests are throttled per IP and will return HTTP 429 under sustained use. Authenticated requests with a personal access token get a substantially higher allowance.
Pricing
Free. OSF is run by the non-profit Center for Open Science; individual projects set their own licence, exposed as `node_license`.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Open Science Framework 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. List public OSF projects, one per page

GET https://api.osf.io/v2/nodes/?page%5Bsize%5D=1

curl
curl 'https://api.osf.io/v2/nodes/?page%5Bsize%5D=1'
JavaScript (fetch)
const res = await fetch("https://api.osf.io/v2/nodes/?page%5Bsize%5D=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.osf.io/v2/nodes/?page%5Bsize%5D=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "data": [
    {
      "id": "wmx2h",
      "type": "nodes",
      "attributes": {
        "title": "The effect of anonymity on willingness to testify",
        "description": "",
        "category": "project",
        "custom_citation": null,
        "date_created": "2025-02-05T10:40:56.699961",
        "date_modified": "2026-08-21T07:38:31.695545",
        "registration": false,
        "preprint": false,
        "fork": false,
        "collection": false,
        "tags": [],
        "access_requests_enabled": true,
        "node_license": null,
        "analytics_key": "",
        "current_user_can_comment": false,
        "current_user_permissions": [
          "read"
        ],
        "current_user_is_contributor": false,
        "current_user_is_contributor_or_group_member": false,
        "wiki_enabled": true,
        "public": true,
        "subjects": []
      },
      "relationships": {
        "children": {
          "links": {
            "related": {
              "href": "https://api.osf.io/v2/nodes/wmx2h/children/",
              "meta": {}
            }
          }
        },
        "collected_in": {
          "links": {
            "related": {
              "href": "https://api.osf.io/v2/nodes/wmx2h/collections/",
              "meta": {}
            }
          }
        },
        "comments": {
          "links": {
            "related": {
              "href": "https://api.osf.io/v2/nodes/wmx2h/comments/?filter%5Btarget%5D=wmx2h",
              "meta": {}
            }
          }
        },
        "contributors": {
          "links": {

Parameters

ParameterTypeRequiredDescription
page[size]queryOptionalResults per page, up to 100. Bracket characters must be URL-encoded. 10
pagequeryOptionalOne-based page number. 1
filter[title]queryOptionalFilter nodes by title substring. Most attributes support a `filter[...]` form. replication
embedqueryOptionalEmbed a related resource inline instead of returning a link, saving a round trip. contributors
sortqueryOptionalSort field; prefix with `-` for descending. -date_modified

Response fields

data[].idstring
The five-character OSF GUID, which is also the public URL path for the project.
data[].typestring
JSON:API resource type — `nodes`, `registrations`, `preprints`, `files` and so on.
attributes.title / descriptionstring
Project title and description as entered by the researchers.
attributes.categorystring
Self-declared project type such as `project`, `data`, `analysis` or `methods and measures`.
attributes.registrationboolean
True for frozen preregistrations, which cannot be edited after submission.
attributes.publicboolean
Whether the node is publicly visible. The anonymous API only ever returns true here.
relationshipsobject
Links to related resources. Follow the `related.href` values, or use `embed` to inline them.

What you can build with the Open Science Framework API

  • Harvest preregistrations for a meta-research study
  • Mirror a lab's public project list onto its own website
  • Monitor a project for new files or contributors
  • Cross-reference preprints to their underlying data and materials
  • Check whether an analysis plan was registered before data collection

Common errors and how to fix them

429

Anonymous throttle exceeded.

Fix: Slow down and cache. A free personal access token, sent as a bearer header, raises the ceiling considerably.

400 on filter or page parameters

Square brackets were sent unencoded.

Fix: Encode them as `%5B` and `%5D`. Several HTTP clients do this automatically and several do not.

Empty relationships

JSON:API returns links, not embedded objects.

Fix: Follow `relationships.<name>.links.related.href`, or add `embed=<name>` to inline the resource in the same response.

404 on a project you can see in a browser

The node is private or view-only.

Fix: Anonymous API access sees public nodes only. View-only links are a web-interface feature and do not extend to the API.

Open Science Framework API — frequently asked questions

Do I need an OSF account to use the API?

Not for reading public projects, registrations and preprints — those work anonymously. You need a free personal access token for private content, for writing, and in practice for any sustained read volume because of the anonymous rate limit.

What is the difference between a node and a registration on OSF?

A node is a live project that contributors can edit. A registration is a frozen, timestamped snapshot of a node, typically a preregistered analysis plan, which cannot be changed afterwards. That immutability is why registrations are the interesting object for meta-research.

Why are contributors not included in the project response?

OSF follows the JSON:API specification, which returns relationships as links rather than embedded data. Either follow the link in `relationships.contributors` or request `embed=contributors` to have it inlined.

Can I download files through the API?

Yes. File objects carry download links that resolve through OSF's storage service. The metadata API describes the file tree; the actual bytes come from those separate URLs.

Tools that pair with this API

Open Science Framework 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.