Quickstart
This page walks you through the most common filter-based requests. Every link is a live query against the production API:
https://api.openaire.eu/graph/v4
Each response is a JSON object with a header (counts, paging info) and a results array. See an entity's overview page for the full response shape.
Search
Free-text search across the entity's content with search:
/v4/research-products?search=open science
Filter
Every filter goes into the single filter parameter as field:value. Separate them with commas — they are AND-ed together:
Publications from 2023 onwards:
/v4/research-products?filter=type:publication,from_publication_year:2023Peer-reviewed, Open Access publications:
/v4/research-products?filter=type:publication,is_peer_reviewed:true,best_oa.rights:Open Access
Within one field, use a pipe (|) for OR:
Research data or research software from 2023 onwards:
/v4/research-products?filter=type:dataset|software,from_publication_year:2023
Prefix a value with ! to negate it, and use > or < for numeric and date ranges:
Everything except "other":
Publications cited more than 100 times:
/v4/research-products?filter=type:publication,impact.citation_count:>100
See Filter syntax for the complete field reference.
Comma means AND, pipe means OR, so a single field entry is either one value, a negation, a range, or an OR-list — these cannot be mixed within one entry. Percent-encode > as %3E and < as %3C when you build URLs in code.
Retrieve a single entity
There are no by-id endpoints — filter on the id field instead:
/v4/research-products?filter=id:dedup_wf_002::016e036dfe4204781ee9bf94c8b06c1b
The same works for a persistent identifier, which saves you a lookup:
/v4/research-products?filter=ids.doi:10.5281/zenodo.15069438
Sort
Order results with sort, as field:direction:
/v4/research-products?filter=type:publication&sort=citation_count:desc
See Sorting for the available sort fields per entity.
Page through results
Offset paging with page and page_size (up to 10,000 results):
/v4/research-products?filter=type:publication&page=1&page_size=20
For larger result sets use cursor paging — start with cursor=* and follow nextCursor:
/v4/research-products?filter=type:publication&page_size=100&cursor=*
See Paging for details.
Return only the fields you need
select trims the response to the fields you list, using the JSON property names:
/v4/research-products?filter=type:publication&select=id,mainTitle,publicationDate
See Sparse fieldsets.
Count instead of listing
facets returns records plus bucket counts for the fields you name:
/v4/research-products?filter=type:publication&facets=best_oa.rights
group_by returns the counts only, with no records — useful for dashboards:
/v4/research-products?group_by=type
See Aggregations.
Query the other entities
Projects that started after 2022, funded by the EC:
Organizations in Greece:
Data sources that are journals:
Persons by name:
Follow relationships
Dotted field names cross into related entities, which lets you answer richer questions — for example, research products by Greek authors funded by the EC:
/v4/research-products?filter=grants.funder_short_name:EC,authorships.countries:GR
Use it from code
curl "https://api.openaire.eu/graph/v4/research-products?filter=type:publication,from_publication_year:2023&page_size=5"
import requests
response = requests.get(
"https://api.openaire.eu/graph/v4/research-products",
params={
"filter": "type:publication,from_publication_year:2023",
"select": "id,mainTitle,publicationDate",
"page_size": 5,
},
)
data = response.json()
print(data["header"]["numFound"])
for product in data["results"]:
print(product["mainTitle"])
With curl, make sure the URL is properly encoded (spaces become %20, > becomes %3E). The Python requests library handles encoding for you.
Adding a mailto parameter with your contact address puts your requests in the polite pool, which carries a higher rate limit:
/v4/research-products?filter=type:publication&page_size=5&mailto=you@example.org
Next steps
- Filter syntax — the complete field reference
- Research products · Projects · Organizations · Data sources · Persons
- Migration from Parameter-based Queries — mapping each parameter to its
filterequivalent - Per-entity Examples pages for the complete list of filters with ready-to-run links