Paging
All SKG-IF search endpoints share the same paging parameters, and both paging modes use the same page parameter — per the SKG-IF OpenAPI specification, page is a string that holds either a page number or a search-iteration token.
page: page number (default1), or*to begin cursor pagingpage_size: results per page, range 1–100 (default 10)
Rather than constructing page links yourself, follow the links in the meta object of each response.
Offset paging
Pass a page number:
/skg-if/v1/products?filter=product_type:literature&page=2&page_size=10
The meta object links to the neighbouring pages and reports the total:
"meta": {
"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products?filter=product_type:literature&page=2",
"entity_type": "search_result_page",
"prev_page": { "local_identifier": "...&page=1", "entity_type": "search_result_page" },
"next_page": { "local_identifier": "...&page=3", "entity_type": "search_result_page" },
"part_of": {
"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products?filter=product_type:literature",
"entity_type": "search_result",
"total_items": 238603805
}
}
Offset paging reaches only the first 10,000 records (page × page_size). Beyond that the request is rejected and points you to cursor paging.
Cursor paging
For larger result sets, start with page=*:
/skg-if/v1/products?filter=product_type:literature&page=*&page_size=100
Then follow meta.next_page.local_identifier — it is a complete URL whose page parameter carries the token for the next page:
"meta": {
"entity_type": "search_result_page",
"next_page": {
"local_identifier": "https://api.openaire.eu/graph/skg-if/v1/products?filter=product_type:literature&page=AoM%2FDzA2Y2RkM2ZmNDcwMDo...",
"entity_type": "search_result_page"
},
"part_of": {
"first_page": { "local_identifier": "...&page=*", "entity_type": "search_result_page" },
"total_items": 238603805
}
}
Repeat until the response has no meta.next_page — that is the last page.
In cursor mode there is no prev_page; paging only moves forward. part_of.first_page links back to the start (page=*). Cursor tokens are opaque and already URL-encoded — pass them through unchanged.
Which mode to use
| Offset paging | Cursor paging | |
|---|---|---|
| Start with | page=1 (or omit) | page=* |
| Jump to an arbitrary page | Yes | No — forward only |
| Reachable records | First 10,000 | The full result set |
| Best for | Browsing, UIs with page numbers | Harvesting, bulk export |