meta-search: filter and sort metadata
Filter paper bibliographic metadata by structured conditions such as year, journal, DOI, and language.
Overview
meta-search returns bibliographic metadata such as title, abstract, authors, and publication year. It is suited for paper lists, filtering, and exports, but does not return passage text. You can search precisely with filters and sort without query, or use query for full-text fuzzy matching (query and sort can be combined: with sort, results are hard-sorted by the field and query degrades to a match filter; without sort, use freshness_boost to bias toward recent papers, impact_boost to favor highly-cited ones, or language_affinity to favor papers in the query's language).
Use cases
- · Filter literature lists by fields such as subject, year, journal, and language.
- · Use meta-catalog to dynamically generate UI filters.
- · Use cursor pagination for cross-page retrieval.
Not for
- · Use agentic-search for open-ended semantic evidence retrieval.
- · Use content when you need full source text.
- · Use resource when you need Figure, Table, or attachment binaries.
Capability boundaries
- · meta-search is for structured scholarly metadata retrieval and does not return evidence chunk text.
- · filters, fields, and sort names must come from meta-catalog; do not hard-code or invent field names.
- · query and sort should not be combined for relevance-ranked use cases; use cursor for deep pagination beyond page * page_size 10000.
- · Returned fields may be trimmed by account field permissions.
Authentication
Use API key Bearer token authentication for all requests. Add this HTTP header:
Authorization: Bearer YOUR_API_TOKEN
Request example
curl -X POST https://api.sciverse.space/meta-search \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "graphene battery cycle stability",
"filters": [
{"field": "publication_published_year", "operator": "FILTER_OP_GTE", "value": 2022}
],
"fields": ["title", "doi", "publication_published_year", "publication_venue_name_unified"],
"page": 1,
"page_size": 10
}'Request body (JSON)
FilterItem: { field, operator?, value }. operator defaults to EQ; supported values are FILTER_OP_EQ/NE/GT/GTE/LT/LTE/IN/NIN/CONTAINS/MATCH/MATCH_PHRASE. SortItem: { field, order }. order defaults to SORT_ORDER_DESC.
| Field | Type | Required | Description |
|---|---|---|---|
| collection | string | Optional | Entity collection to search. papers (default) / authors / sources. Each collection has its own field schema — call meta-catalog?collection=<name> for its field list. Link from paper results via orcid (authors) or issn (sources). Default papersRange papers / authors / sources |
| query | string | Optional | Full-text fuzzy query. Can be combined with sort — with sort, results are hard-sorted by the field and query degrades to a match filter (no relevance ranking). |
| filters | array<FilterItem> | Optional | List of field filter conditions. |
| sort | array<SortItem> | Optional | Sort field list. Sortable fields: publication_published_year / publication_published_date / reference_count / citation_count / influential_citation_count / fwci. Can be combined with query (with sort, results are hard-sorted by the field and query degrades to a match filter); when sort is set, freshness_boost/impact_boost/language_affinity are ignored (hard sort takes precedence). |
| fields | array<string> | Optional | Field projection. doc_id is always returned. |
| page | integer | Optional | Page number. Default 1Range ≥ 1 |
| page_size | integer | Optional | Items per page. Default 25Range 1–200 |
| cursor | string | Optional | Cursor pagination token; mutually exclusive with page > 1. |
| freshness_boost | enum | Optional | Freshness boosting for fuzzy search. MILD: 10-year decay, suited for everyday literature search. STRONG: 3-year decay, suited for tracking research directions / latest progress. Only effective when query is non-empty and sort is not provided (ignored when sort is set, as hard sort takes precedence); can be combined with impact_boost. Implemented via a two-phase rescore (BM25 retrieves top-N candidates, then reranks them with gauss decay); when a boost is active, only shallow paging is supported (no cursor). Default NONERange NONE / MILD / STRONG |
| impact_boost | enum | Optional | Impact boosting for fuzzy search: highly-cited papers rise while relevance is preserved. MILD: light boost, relevance still dominant; STRONG: strongly favors highly-cited papers. Only effective when query is non-empty and sort is not provided; can be combined with freshness_boost (set both non-NONE for relevant + recent + highly-cited). Implemented via a two-phase rescore, impact factor = 1 + weight × saturation(citation_count) (multiplicative, bounded, neutral for zero-citation); when a boost is active, only shallow paging is supported (no cursor). Default NONERange NONE / MILD / STRONG |
| language_affinity | enum | Optional | Language-affinity boosting for fuzzy search: results not in the query's language are demoted (never excluded). The target language is detected server-side from the query text (kana→ja / hangul→ko / Han→zh / Latin→en; other scripts have no effect); papers with unknown language (empty / und / zxx) stay neutral and are not demoted. MILD: non-target languages ×0.5, strongly relevant cross-language results can still surface; STRONG: ×0.2, near-exclusive focus on the target language. Only effective when query is non-empty and sort is not provided; can be combined with freshness_boost / impact_boost; when a boost is active, only shallow paging is supported. To hard-exclude a language, use the language field in filters instead (soft and hard constraints have different semantics). Default NONERange NONE / MILD / STRONG |
Field capabilities
Field visibility depends on the current token permissions. Dotted subfields are for filters / sort only and cannot be used in fields[] projections. At runtime, prefer the meta-catalog response as the source of truth.
| Field | Type | Filter | Search | Sort | Default | Project | Description |
|---|---|---|---|---|---|---|---|
| doc_id | string | ✓ | – | – | ✓ | ✓ | Content hash (sha256) of the full-text artifact. Present only when the record has full text; metadata-only records have no doc_id. Use unique_id to reference the metadata record itself; use doc_id only when fetching full text via /content. |
| unique_id | string | ✓ | – | – | ✓ | ✓ | Global unique ID of the metadata record. Every record has one regardless of whether full text exists; ideal for reference, dedup, and cross-service linking. Returned by default. |
| metadata_type | string | ✓ | – | – | ✓ | ✓ | Metadata source type. Paper sources use paper; book sources use ebook. |
| title | string | ✓ | ✓ | – | ✓ | ✓ | Resource title. |
| abstract | string | ✓ | ✓ | – | ✓ | ✓ | Abstract, summary, or content overview. |
| language | string | ✓ | – | – | ✓ | ✓ | Resource language. |
| doi | string | ✓ | – | – | ✓ | ✓ | Digital object identifier, mainly used to locate academic resources such as papers. |
| isbns | array<string> | ✓ | – | – | ✓ | ✓ | Book ISBN list, possibly containing multiple ISBNs. |
| isbn13 | string | ✓ | – | – | ✓ | ✓ | 13-digit ISBN, the standard identifier for book resources. |
| type | string | ✓ | – | – | ✓ | ✓ | Resource or literature type. |
| author | array<object> | ✓ | – | – | ✓ | ✓ | Author list (array of objects with name/orcid subfields). Filter by author name: exact via author.name.keyword, fuzzy MATCH via author.name; pass field as author. |
| contributors | array<string> | ✓ | – | – | – | ✓ | Contributor list, such as editors and translators. |
| locations | array<object> | – | – | – | ✓ | ✓ | Accessible locations, source links, holdings, or open-access location list. |
| access_is_oa | string | ✓ | – | – | ✓ | ✓ | Whether the resource is open access. |
| access_oa_status | string | ✓ | – | – | ✓ | ✓ | Open-access status. |
| access_oa_url | string | ✓ | – | – | ✓ | ✓ | Open-access URL. |
| access_license | string | ✓ | – | – | ✓ | ✓ | Open-access or usage license. |
| publication_published_date | date | ✓ | – | ✓ | – | ✓ | Publication date (ISO yyyy-MM-dd). Supports range filters, day-level sort, and day-level freshness_boost. About 19.6% of documents use YYYY-01-01 as a year-only placeholder and will cluster at the start of the year under day precision. |
| publication_published_year | integer | ✓ | – | ✓ | ✓ | ✓ | Publication year. |
| publication_published_place | array<string> | ✓ | – | – | – | ✓ | Publication place. |
| publication_published_country | array<string> | ✓ | – | – | – | ✓ | Publication country/region. |
| publication_venue_name_unified | string | ✓ | ✓ | – | ✓ | ✓ | Canonical form of the publication venue name (abbreviation / casing / punctuation normalized). Preferred over publication_venue_name_unified for exact match and aggregation; can replace venue_name in those scenarios. |
| publication_venue_type | string | ✓ | – | – | ✓ | ✓ | Publication venue type. |
| publication_venue_issn | array<string> | ✓ | – | – | ✓ | ✓ | Publication venue ISSN list. |
| publication_publisher | array<string> | ✓ | – | – | ✓ | ✓ | Publisher. |
| publication_venue_biblio_volume | string | ✓ | – | – | – | ✓ | Journal/conference volume. |
| publication_venue_biblio_issue | string | ✓ | – | – | – | ✓ | Journal/conference issue. |
| publication_venue_biblio_pages | string | ✓ | – | – | – | ✓ | Journal/conference page range. |
| publication_pages | integer | ✓ | – | – | – | ✓ | Book page count or total resource page count. |
| keywords | array<string> | ✓ | ✓ | – | ✓ | ✓ | Keyword list. |
| primary_topic | object | – | – | – | – | ✓ | Primary topic information. |
| topics | array<object> | – | – | – | – | ✓ | Topic list. |
| subjects | array<string> | ✓ | – | – | – | ✓ | Book subject list. |
| genre | array<string> | ✓ | – | – | – | ✓ | Book genre/type list. |
| reference_count | integer | ✓ | – | ✓ | ✓ | ✓ | Reference count: how many works this work cites. |
| citation_count | integer | ✓ | – | ✓ | ✓ | ✓ | Citation count: the number of times this work has been cited by other works, an important impact indicator. |
| influential_citation_count | integer | ✓ | – | ✓ | ✓ | ✓ | Influential citation count. |
| fwci | float | ✓ | – | ✓ | ✓ | ✓ | Field-Weighted Citation Impact (FWCI) for a work. |
| references | array<string> | – | – | – | ✓ | ✓ | Reference list cited by this paper. |
| related_works | array<string> | – | – | – | ✓ | ✓ | Related works list. |
| citation_normalized_percentile | object | – | – | – | ✓ | ✓ | Citation percentile for a work, indicating its citation position within a comparable set by type, publication year, and subfield. |
| cited_by_percentile_year | object | – | – | – | ✓ | ✓ | Citation percentile by publication year. min: 0, max: 100; 99-100 means the top 1% among works from the same year. |
| citations | array<object> | – | – | – | – | ✓ | List of works that cite this paper (projected on demand; returned as a whole, not filtered by subfield). |
| primary_topic.id | string | ✓ | – | – | – | – | Primary topic OpenAlex topic ID, such as https://openalex.org/T11615. |
| primary_topic.display_name | string | ✓ | – | – | – | – | Exact-match display name of the primary topic. |
| primary_topic.score | float | ✓ | – | ✓ | – | – | Primary topic confidence score, from 0 to 1. |
| primary_topic.domain.id | string | ✓ | – | – | – | – | OpenAlex domain ID for the primary topic, such as https://openalex.org/domains/3. |
| primary_topic.domain.display_name | string | ✓ | – | – | – | – | Exact-match display name of the primary topic domain. |
| topics.id | string | ✓ | – | – | – | – | Topic ID (nested; OpenAlex URL format). |
| topics.display_name | string | ✓ | – | – | – | – | Exact-match topic display name (nested). |
| topics.score | float | ✓ | – | ✓ | – | – | Topic confidence score (nested). |
| citation_normalized_percentile.value | float | ✓ | – | ✓ | – | – | Citation percentile from 0 to 1; 0.99 means top 1%. |
| citation_normalized_percentile.is_in_top_10_percent | boolean | ✓ | – | – | – | – | Whether the work is in the top 10% by citations. |
| citation_normalized_percentile.is_in_top_1_percent | boolean | ✓ | – | – | – | – | Whether the work is in the top 1% by citations. |
| cited_by_percentile_year.min | float | ✓ | – | ✓ | – | – | Lower bound of citation percentile within the publication year, from 0 to 100. |
| cited_by_percentile_year.max | float | ✓ | – | ✓ | – | – | Upper bound of citation percentile within the publication year, from 0 to 100. |
Response structure
| Field | Type | Description |
|---|---|---|
| results | array<object> | Matched records; fields depend on the fields parameter and token permissions. |
| results[].abstract | string | Abstract, summary, or content overview. |
| results[].access_is_oa | string | Whether the resource is open access. |
| results[].access_license | string | Open-access or usage license. |
| results[].access_oa_status | string | Open-access status. |
| results[].access_oa_url | string | Open-access URL. |
| results[].author | array<object> | Author list (array of objects with name/orcid subfields). |
| results[].citation_count | integer | Citation count: the number of times this work has been cited by other works, an important impact indicator. |
| results[].citation_normalized_percentile | object | Citation percentile for a work, indicating its citation position within a comparable set by type, publication year, and subfield. |
| results[].cited_by_percentile_year | object | Citation percentile by publication year. min: 0, max: 100; 99-100 means the top 1% among works from the same year. |
| results[].contributors | array<string> | Contributor list, such as editors and translators. |
| results[].doc_id | string | Content hash (sha256) of the full-text artifact. Present only when the record has full text; metadata-only records have no doc_id. Use unique_id to reference the metadata record itself; use doc_id only when fetching full text via /content. |
| results[].doi | string | Digital object identifier, mainly used to locate academic resources such as papers. |
| results[].fwci | float | Field-Weighted Citation Impact (FWCI) for a work. |
| results[].genre | array<string> | Book genre/type list. |
| results[].influential_citation_count | integer | Influential citation count. |
| results[].isbn13 | string | 13-digit ISBN, the standard identifier for book resources. |
| results[].isbns | array<string> | Book ISBN list, possibly containing multiple ISBNs. |
| results[].keywords | array<string> | Keyword list. |
| results[].language | string | Resource language. |
| results[].locations | array<object> | Accessible locations, source links, holdings, or open-access location list. |
| results[].metadata_type | string | Metadata source type. Paper sources use paper; book sources use ebook. |
| results[].primary_topic | object | Primary topic information. |
| results[].publication_pages | integer | Book page count or total resource page count. |
| results[].publication_published_country | array<string> | Publication country/region. |
| results[].publication_published_date | date | Publication date (ISO yyyy-MM-dd). Supports range filters, day-level sort, and day-level freshness_boost. About 19.6% of documents use YYYY-01-01 as a year-only placeholder and will cluster at the start of the year under day precision. |
| results[].publication_published_place | array<string> | Publication place. |
| results[].publication_published_year | integer | Publication year. |
| results[].publication_publisher | array<string> | Publisher. |
| results[].publication_venue_biblio_issue | string | Journal/conference issue. |
| results[].publication_venue_biblio_pages | string | Journal/conference page range. |
| results[].publication_venue_biblio_volume | string | Journal/conference volume. |
| results[].publication_venue_issn | array<string> | Publication venue ISSN list. |
| results[].publication_venue_name_unified | string | Canonical form of the publication venue name (abbreviation / casing / punctuation normalized). Preferred over publication_venue_name_unified for exact match and aggregation; can replace venue_name in those scenarios. |
| results[].publication_venue_type | string | Publication venue type. |
| results[].reference_count | integer | Reference count: how many works this work cites. |
| results[].references | array<string> | Reference list cited by this paper. |
| results[].related_works | array<string> | Related works list. |
| results[].subjects | array<string> | Book subject list. |
| results[].title | string | Resource title. |
| results[].topics | array<object> | Topic list. |
| results[].type | string | Resource or literature type. |
| results[].unique_id | string | Global unique ID of the metadata record. Every record has one regardless of whether full text exists; ideal for reference, dedup, and cross-service linking. Returned by default. |
| total_count | integer | Total hit count. |
| page | integer | Current page. |
| page_size | integer | Items per page. |
| total_pages | integer | Total pages. |
| search_time_ms | float | Search time in milliseconds. |
| next_cursor | string | Next cursor for deep pagination. |
Response example
{
"results": [
{
"doc_id": "d_2a91...",
"title": "Cycle stability of graphene composite cathodes",
"doi": "10.1234/xyz",
"language": "en",
"publication_published_year": 2024,
"publication_venue_name_unified": "Adv. Energy Mater.",
"citation_count": 42,
"fwci": 1.84
}
],
"total_count": 318,
"page": 1,
"page_size": 25,
"total_pages": 13,
"search_time_ms": 56.4,
"next_cursor": "eyJvZmZzZXQiOjI1fQ=="
}Errors
| Code | Message | Description |
|---|---|---|
| 400 | INVALID_REQUEST / INVALID_ARGUMENT | Invalid parameters, including sorting on a non-sortable field or cursor/page mutual exclusion. |
| 401 | UNAUTHORIZED / UNAUTHENTICATED | Authentication failed. |
| 403 | PERMISSION_DENIED | No permission for the field; adjust fields or use another token. |
| 429 | RATE_LIMITED | Account quota limit reached. |
| 500/502/503/504 | UPSTREAM_UNAVAILABLE | Service error. |
See the Errors section for shared error codes.
Parameter bounds
| Limit | Value |
|---|---|
| page lower bound | ≥ 1 |
| page_size | 1-200, default 25 |
| Shallow pagination | page * page_size ≤ 10000 |
| Deep pagination | Use cursor; cursor is mutually exclusive with page > 1. |
| query and sort | Can be combined: with sort, results are hard-sorted by the field and query degrades to a match filter; without sort, sorted by relevance. |
| Default rate limit | 30 requests / minute unless account-specific rules are configured |
Retry guidance
- · Retry recommended: 502 / 503 / 504
- · Do not retry: 400 / 401 / 403; for 429, wait for the limit window or daily quota reset.
FAQ
What is meta-search best for?
It is best for filtering papers by year, venue, DOI, language, OA status, and other structured fields, returning paper-level metadata lists.
Does meta-search return full-text passages?
No. Use agentic-search for evidence chunks and content for source context.
How do I know whether a field can be filtered or sorted?
Call meta-catalog first and inspect filterable, sortable, projectable, and supported operators.
How should I handle deep pagination?
Use page and page_size for shallow pages. Switch to next_cursor/cursor once public deep-pagination limits are reached.
Need an API key?
Create one in Console > Tokens.The same API key works for enabled Sciverse, DianShi, and Skills capabilities, with starter quota available according to account permissions.