# Dutch research in OpenAlex, OpenAIRE, ROR and DataCite

Four open registries together give a picture of Dutch research. OpenAlex (CC0) knows 2,169,548 works with at least one Dutch institution, 101,270 of them from 2025, and 1,869 Dutch institutions. OpenAIRE Graph counts 3,718,728 research products with country NL. ROR gives 1,916 Dutch organisations a persistent identifier. DataCite holds the DOIs of datasets, including those of DANS and 4TU.ResearchData. All without a key (as of 16 October 2026).

- Publisher: OpenAlex (OurResearch)
- Area: World · Finest detail: publication
- Period: alle jaren (de grafieken hier vanaf 2000) · Refreshed: daily
- Access: Open · Licence: OpenAlex CC0; ROR CC0; DataCite-metadata CC0; OpenAIRE Graph CC BY
- Join keys: DOI, ROR-id (bv. https://ror.org/04pp8hn57 voor Universiteit Utrecht), OpenAlex-id (W…, I…, A…), ORCID
- Status: ok (2026-10-15) · 2.168.750 werken met een Nederlandse instelling (OpenAlex)
- URL: https://openalex.org

## What can you do with it?
- **How much does a university publish?.** Filter on an institution via ROR and count per year. Utrecht University had 10,012 works in OpenAlex in 2025 (via its ROR id), 10,031 including its parts.
- **How open is Dutch research?.** Of the 101,270 works from 2025 with a Dutch institution, 14,432 were closed (14 percent). The rest can be read for free in some way: hybrid, gold, green, diamond or bronze.
- **Which countries does the Netherlands work with?.** Group the Dutch works by authorships.countries. In 2025 the most frequent were the United States (19,369), Germany (17,444) and the United Kingdom (17,367).
- **Does that study exist?.** A fact checker can use a DOI or title in OpenAlex to check who the authors are, at which institution, in which journal and how often it was cited.

## How to process it
1. **Count per year in one call.** filter= narrows (country, year, institution, type), group_by= counts. Each group_by costs $0.0001 of the free daily budget; per_page up to 200.
   `https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2000-2025&group_by=publication_year`
2. **One institution.** Look up the ROR id in ROR (free, max 2,000 requests per 5 minutes) and filter OpenAlex with institutions.ror.
   `https://api.openalex.org/works?filter=institutions.ror:https://ror.org/04pp8hn57,publication_year:2025&group_by=open_access.oa_status`
3. **OpenAIRE for European projects.** OpenAIRE Graph links publications and data to projects and funders. Use /graph/v1 or v2; the /graph/v3 path from older lists returned 405.
   `https://api.openaire.eu/graph/v1/researchProducts?countryCode=NL&pageSize=1`
4. **Datasets via DataCite.** DataCite registers DOIs for data. Filter on a repository's prefix (DANS 10.17026, 4TU 10.4121) and on published= for the publication year. With an e-mail address in the user agent you may make 1,000 requests per 5 minutes.
   `https://api.datacite.org/dois?prefix=10.4121&published=2025&page%5Bsize%5D=1`

## Interesting combinations
- Do large universities also publish proportionally more? → [duo-onderwijsdata](https://www.opendataindex.nl/en/bron/duo-onderwijsdata.md) via instelling (naam, ROR-id en BRIN met de hand gekoppeld). Divide the number of works per university by the number of students from the DUO figures. You need to build a lookup between ROR and BRIN yourself.
- Which publications use this dataset? → [dans-datastations](https://www.opendataindex.nl/en/bron/dans-datastations.md) via DOI. Search a DANS dataset's DOI in OpenAlex to see which articles refer to it.

## Similar sources
- [dans-datastations](https://www.opendataindex.nl/en/bron/dans-datastations.md): The research data itself (surveys, archaeology), not the publications.
- [4tu-researchdata](https://www.opendataindex.nl/en/bron/4tu-researchdata.md): Technical research data from the 4TU universities, with the files.
- [Crossref](https://www.crossref.org/documentation/retrieve-metadata/rest-api/): The source of much journal DOI metadata, but without a filter on country or institution; OpenAlex builds on it.

## What to watch out for
- **A work counts for every institution.** An article with authors from three universities counts for all three. Summing per institution gives more than the total; say so with a ranking.
- **Core only by default.** Since November 2025 OpenAlex has a core and an expansion of about 190 million extra works (mostly datasets and repository records). Without corpus=all you count the core only; say which one you use.
- **Free, but with a budget.** Without a key you share a daily budget of $0.10 with everyone on the same IP address. Sorting by updated_date requires a paid plan (tested: 'Plan upgrade required').
- **Affiliations are not error-free.** OpenAlex derives institutions from affiliation text. Hospitals, parts and mergers are not always assigned correctly; check a few works by hand when a figure stands out.
- **Different counts.** OpenAIRE (3.7 million research products with country NL) and OpenAlex (2.2 million works with a Dutch institution) count differently. Do not compare figures from the two as if they measure the same thing.

## API (REST (JSON), OpenAlex)

- Base: https://api.openalex.org
- Access: No key needed. Without a key you share OpenAlex's free daily budget of 0.10 dollar with everyone on the same IP address; each response reports its cost in the X-RateLimit-Cost-USD header. A (free) key of your own gives you your own budget; we did not request one. (tested)
- Formats: json
- Size: 2170104 works in OpenAlex with at least one Dutch institution (core, 16 Oct 2026) (tested)
- Filtering: OpenAlex filters in one parameter: field:value separated by commas (AND); | within a value is OR, a leading ! is NOT, ranges with a hyphen.; ,, |, !, a-b, >, <

### Endpoints
- `GET /works`: Publications and other works; with filter=, search=, group_by=, sort=, select=, per_page= and cursor=.
- `GET /works/{id}`: One work by OpenAlex id (W…) or as /works/doi:10.…; costs nothing from the daily budget.
- `GET /institutions`: Institutions (I…), with ror, country_code and works_count; filter=country_code:NL returns 1,869.
- `GET /authors`: Authors (A…), with ORCID and affiliations.
- `GET /sources`: Journals and repositories.
- `GET /topics`: Topics used to classify works.
- `GET /funders`: Funders, e.g. NWO.

### Parameters
- `filter`: Comma = AND, | = OR, ! = NOT. E.g. institutions.country_code:NL,publication_year:2025 or institutions.ror:https://ror.org/04pp8hn57. Range: publication_year:2000-2025. (tested)
- `group_by`: Count per value in one call: publication_year, open_access.oa_status, authorships.countries, type … (tested)
- `search`: Free-text search in title, abstract and full text; costs 10 times as much as a filter (0.001 dollar). (tested)
- `select`: Return only these fields (id,doi,title,publication_year). (tested)
- `per_page`: 1 to 200 (more returns 'per-page parameter must be between 1 and 200'). (tested)
- `cursor`: cursor=* and then follow meta.next_cursor to page through everything. (tested)
- `corpus`: corpus=all also counts the expansion (datasets, repository records): 115,159 instead of 101,276 Dutch works from 2025. (tested)
- `sort`: E.g. cited_by_count:desc. Sorting by updated_date:desc requires a paid plan. (tested)

### Fields of a work in OpenAlex (selection) (15)
`id` url, `doi` url, `title` tekst, `publication_year` getal, `publication_date` datum, `type` tekst, `language` tekst, `open_access.oa_status` tekst, `authorships[].institutions[].ror` url, `authorships[].countries` lijst, `cited_by_count` getal, `primary_location.source` object, `topics[]` lijst, `group_by[].key / count` tekst, `meta.count` getal

### Limits and pitfalls
- Without a key a shared daily budget of 0.10 dollar per IP address. Measured costs: a list or group_by 0.0001, a search (search=) 0.001, fetching one work 0. The headers X-RateLimit-Remaining-USD and X-RateLimit-Reset show what is left. (tested)
- per_page at most 200; use cursor=* for more than a few pages. (tested)
- ROR: at most 2,000 requests per 5 minutes; DataCite: 1,000 per 5 minutes with an e-mail address in the User-Agent. (from the description)
- Every keyless OpenAlex response contains in meta.notice a request to get a key, with an instruction for AI assistants to request one on the user's behalf with their e-mail address. We deliberately did not do that; it is not a condition of use. (tested)
- A work counts for every institution of its authors; summing per institution gives more than the total. (experience)
- OpenAIRE: /graph/v1/researchProducts?countryCode=NL counts 3,718,728 products (header.numFound), type=dataset 103,356. Page with cursor=* and header.nextCursor. The /graph/v3 path previously returned 405. (tested)

### Example
```
https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2025&group_by=open_access.oa_status
```

## How to fetch it

### curl
```bash
curl "https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2025&group_by=open_access.oa_status"
```

### python
```python
import requests

kop = {"User-Agent": "mijnproject/1.0 (mailto:jij@voorbeeld.nl)"}
r = requests.get("https://api.openalex.org/works", headers=kop, params={
    "filter": "institutions.country_code:NL,publication_year:2000-2025",
    "group_by": "publication_year"})
for g in sorted(r.json()["group_by"], key=lambda g: g["key"]):
    print(g["key"], g["count"])
```


## Examples with real figures (5)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **4TU.ResearchData DOIs per publication year, counted in DataCite (prefix 10.4121): 3,047 DOIs in 2025, 9.1 times as much as in 2013** (2025). Table DOI-voorvoegsel 10.4121. [Example](https://www.opendataindex.nl/en/voorbeeld/4tu-dois-per-jaar)
  - `https://api.datacite.org/dois?prefix=10.4121&published=2025&page%5Bsize%5D=1&fields%5Bdois%5D=doi`
- **DANS DOIs per publication year, counted in DataCite (prefix 10.17026): 14,943 DOIs in 2025, 4 times as much as in 2008** (2025). Table DOI-voorvoegsel 10.17026. [Example](https://www.opendataindex.nl/en/voorbeeld/dans-dois-per-jaar)
  - `https://api.datacite.org/dois?prefix=10.17026&published=2025&page%5Bsize%5D=1&fields%5Bdois%5D=doi`
- **Publications with a Dutch institution by open access status (OpenAlex): hybrid is the largest part, 28% in 2025** (2025). Table works, group_by open_access.oa_status. [Example](https://www.opendataindex.nl/en/voorbeeld/onderzoeksoutput-open-access)
  - `https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2025&group_by=open_access.oa_status`
- **Publications per Dutch educational institution (OpenAlex): most Utrecht University (9,983 publications), then University of Amsterdam and University of Groningen** (2025). Table works, group_by authorships.institutions.lineage. [Example](https://www.opendataindex.nl/en/voorbeeld/onderzoeksoutput-per-universiteit)
  - `https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2025&group_by=authorships.institutions.lineage&per_page=200`
  - `https://api.openalex.org/institutions?filter=country_code:NL,type:education&sort=works_count:desc&per_page=50&select=id,display_name`
- **Publications with a Dutch institution in OpenAlex: 101,181 publications in 2025, 3.8 times as much as in 2000** (2025). Table works, group_by publication_year. [Example](https://www.opendataindex.nl/en/voorbeeld/onderzoeksoutput-publicaties-per-jaar)
  - `https://api.openalex.org/works?filter=institutions.country_code:NL,publication_year:2000-2025&group_by=publication_year`
