Skip to main content
Version: Next

Quickstart

This page walks you through the most common V3 requests. Every link is a live query against the production API:

https://api.openaire.eu/graph/v3

Each search 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.

Get a single entity

Retrieve one entity by its OpenAIRE id:

/v3/research-products/doi_dedup___::a55b42c0d32a4a24cf99e621623d110e

The same pattern works for the other entities — /v3/projects/{id}, /v3/organizations/{id}, /v3/datasources/{id}, /v3/persons/{id}.

Free-text search across the entity's content with search:

/v3/research-products?search=open science

Filter

Each filter is its own query parameter. Combine several (they are AND-ed together):

note

When you use the logical operators AND, OR, or NOT, each value must be wrapped in double quotes — e.g. type=("dataset" OR "software").

Sort

Order results with sortBy (fieldname ASC|DESC):

/v3/research-products?search=climate&sortBy=citationCount DESC

See Sorting for the available sort fields per entity.

Page through results

Offset paging with page and pageSize (up to 10,000 results):

/v3/research-products?type=publication&page=1&pageSize=20

For larger result sets use cursor paging — start with cursor=* and follow nextCursor:

/v3/research-products?type=publication&pageSize=100&cursor=*

See Paging for details.

Query the other entities

Follow relationships

Filters that cross entities let you answer richer questions — for example, Greek research products funded by an EC project:

/v3/research-products?relProjectFundingShortName=EC&countryCode=GR

Use it from code

curl "https://api.openaire.eu/graph/v3/research-products?search=open%20science&type=publication&pageSize=5"
import requests

response = requests.get(
"https://api.openaire.eu/graph/v3/research-products",
params={
"type": "publication",
"publicationYear": 2025,
"pageSize": 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, quotes %22). The Python requests library handles encoding for you.

Next steps