Skip to main content

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.

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:

Within one field, use a pipe (|) for OR:

Prefix a value with ! to negate it, and use > or < for numeric and date ranges:

See Filter syntax for the complete field reference.

note

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​

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"])
note

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​