Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: This API supports rich searching across the Web of Science based on your subscription to retrieve item-level metadata, including times cited counts and contributor addresses/affiliations.
version: 1.0.0-oas3
title: Web of Science API Expanded Search API
servers:
- url: https://api.clarivate.com/api/wos
security:
- key: []
tags:
- name: Search
description: Supports discovery and interrogation of Web of Science data.
paths:
/:
get:
summary: Submits a user query and returns results
description: The search operation submits a search query to the specified database edition and retrieves data. This operation returns a query ID that can be used in subsequent operations to retrieve more records.
externalDocs:
description: Query examples
url: https://webofscience.help.clarivate.com/en-us/Content/advanced-search.html
tags:
- Search
parameters:
- name: databaseId
in: query
description: Database to search. WOK represents all databases.
required: true
schema:
type: string
enum:
- WOS
- BCI
- BIOABS
- BIOSIS
- CABI
- CCC
- CSCD
- DCI
- DIIDW
- FSTA
- GRANTS
- INSPEC
- MEDLINE
- PPRN
- PQDT
- RC
- SCIELO
- WOK
- ZOOREC
- name: lang
in: query
description: '"Language of search. This element can take only one value for WOS (core collection): en for English. If no language is specified, English is passed by default. Only for specific regional databases other languages are supported."'
required: false
schema:
type: string
- name: usrQuery
in: query
description: 'User query for requesting data, ex: TS=(cadmium). The query parser will return errors for invalid queries.'
required: true
schema:
type: string
example: ts=(cadmium)
- name: edition
in: query
description: 'Edition(s) to be searched. If null, user permissions will be substituted. Must include the name of the collection and edition name separated by ''+'' or '' '', ex: WOS+SCI. Multiple editions are separated by '',''. Editions available for collection (WOS) - AHCI,CCR,IC,ISSHP,ISTP,SCI,SSCI,BHCI,BSCI and ESCI.'
required: false
schema:
type: string
- name: publishTimeSpan
in: query
description: 'This element specifies a range of publication dates. If publishTimeSpan is used, the loadTimeSpan, createdTimeSpan and, modifiedTimeSpan parameter must be omitted. If publishTimeSpan, loadTimeSpan, createdTimeSpan, and modifiedTimeSpan are omitted, then the maximum time span will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31.'
required: false
schema:
type: string
- name: loadTimeSpan
in: query
description: 'Load time span (otherwise described as symbolic time span) defines a range of load dates. The load date is the date a record was added to the database. If load date is specified, the publishTimeSpan, createdTimeSpan and, modifiedTimeSpan parameter must be omitted. If both publishTimeSpan, loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Any of D/W/M/Y prefixed with a number where D-Day, M-Month, W-Week, Y-Year allowed. Acceptable value range for Day(0-6), Week(1-52), Month(1-12) and Year(0-10), ex: 5D,30W,10M,8Y.'
required: false
schema:
type: string
- name: createdTimeSpan
in: query
description: 'Created time span (otherwise described as symbolic time span) defines a range of creation dates. The create date is the date a record was created. If create date is specified, the modifiedTimeSpan, loadTimeSpan and, publishTimeSpan parameter must be omitted. If createdTimeSpan, loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31.'
required: false
schema:
type: string
- name: modifiedTimeSpan
in: query
description: 'Modified time span (otherwise described as symbolic time span) defines a range of modified dates. The modified date is the date a record was most recently modified in the database. If modified date is specified, the publishTimeSpan, loadTimeSpan and, createdTimeSpan parameter must be omitted. If modifiedTimeSpan and loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31. This parameter is not allowed with databaseId=WOK.'
required: false
schema:
type: string
- name: tcModifiedTimeSpan
in: query
description: 'Times Cited Modified time span (otherwise described as symbolic time span) defines a range of tc modified dates. The tc modified date is the date a record was most recently modified in the database. If tc modified date is specified, the publishTimeSpan, loadTimeSpan and, createdTimeSpan, modifiedTimeSpan parameter must be omitted. If modifiedTimeSpan and loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31. This parameter is not allowed with databaseId=WOK.'
required: false
schema:
type: string
- name: count
in: query
description: Number of records to return, must be 0-100.
required: false
schema:
type: integer
default: 10
example: 10
- name: firstRecord
in: query
description: Specific record, if any within the result set to return. Cannot be less than 1 and greater than 100000.
required: false
schema:
type: integer
default: 1
example: 1
- name: sortField
in: query
description: 'Order by field(s). Field name and order by clause separated by ''+'' or '' '', use A for ASC and D for DESC, ex: PY+D. Multiple values are separated by comma.'
required: false
schema:
type: string
examples:
LoadDate:
value: LD+D
summary: Load Date (Descending)
LoadDate Asc:
value: LD+A
summary: Load Date (Ascending)
Author:
value: AU+D
summary: Author (Descending)
Author Asc:
value: AU+A
summary: Author (Ascending)
CTitle:
value: CF+D
summary: Conference Title (Descending)
CTitle Asc:
value: CF+A
summary: Conference Title (Ascending)
CitedYear:
value: CY+D
summary: Cited Year (Descending)
CitedYear Asc:
value: CY+A
summary: Cited Year (Ascending)
LTCited:
value: LC+D
summary: Local Times Cited (Descending)
LTCited Asc:
value: LC+A
summary: Local Times Cited (Ascending)
Page PG:
value: PG+D
summary: Page (Descending)
Page Asc:
value: PG+A
summary: Page (Ascending)
PYear:
value: PY+D
summary: Publication Year (Descending)
PYear Asc:
value: PY+A
summary: Publication Year (Ascending)
Relevance:
value: RS+D
summary: Relevance (Descending)
Source SO:
value: SO+D
summary: Source (Descending)
Source SO Asc:
value: SO+A
summary: Source (Ascending)
TimesCited:
value: TC+D
summary: Times Cited (Descending)
TimesCited Asc:
value: TC+A
summary: Times Cited (Ascending)
Volume VL:
value: VL+D
summary: Volume (Descending)
Volume VL Asc:
value: VL+A
summary: Volume (Ascending)
- name: viewField
in: query
description: 'Parameter to limit records to selected fields. Because many fields are uniquely identified by a combination of element and attribute, you may not be able to limit record content to a precise degree. For example, the viewField parameter ''titles'' will always return document titles, publication names (both full and abbreviated), and book titles. You cannot limit retrieval to only document (item) titles or only publication (source) titles because item and source are attribute values, not elements. You cannot include attributes in viewField parameters. Collection name and field name(s) separated by ''+'' or '' '' ex: WOS+titles+addresses, where titles and addresses represent fields.If collection name is missing, the database id will be used, e.g. databaseId=WOS&viewfield=title+addresses is equivalent to databaseId=WOS&viewfield=WOS+title+addresses.'
required: false
schema:
type: string
examples:
Search0:
value: ''
summary: All
Search1:
value: pub_info
summary: View Publication Information
Search2:
value: titles+addresses
summary: View Document Title and Author Address
Search3:
value: doctypes+keywords
summary: View Document Type and Author Keywords
Search4:
value: conferences
summary: View Conferences
Search5:
value: contributor
summary: View ResearcherID or ORCID
- name: optionView
in: query
description: "Document detail:\n * `FR` - Retrieves all metadata of the document (also known as FullRecord)\n * `SR` - Retrieves a short version of the document that would not count against the quota.\n The response fields are similar to the [Web of Science Starter API](https://developer.clarivate.com/apis/wos-starter) fields.\n * `FS` - Custom Field Selection - must be combined with query parameter `viewField`. It is automatically selected if `viewField` is used.\n"
schema:
type: string
enum:
- FR
- SR
- FS
default: FR
- name: optionOther
in: query
description: 'Other option(s) of result representation. HL and On/Off separated by ''+'' or '' '' where HL=HighLight: ex. HL+On.'
required: false
schema:
type: string
- name: links
in: query
description: Flag to return gateway links(Source and Citing) for each record returned in response. Default is false
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/WosSearchResponse'
application/json(ShortRecord):
schema:
$ref: '#/components/schemas/WosShortSearchResponse'
application/xml:
schema:
$ref: '#/components/schemas/WosSearchResponseXML'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'429':
description: Throttle error
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
operationId: getRoot
x-operation-id-source: derived
post:
summary: Submits a user query and returns results
description: The search operation submits a search query to the specified collection edition and retrieves data. This operation returns a query ID that can be used in subsequent operations to retrieve more records.
tags:
- Search
requestBody:
content:
application/json:
schema:
type: object
required:
- databaseId
- usrQuery
- count
- firstRecord
properties:
databaseId:
description: 'Database to search. Must be a valid collection ID, ex: BCI/BIOABS/BIOSIS/CABI/CCC/CSCD/DCI/DIIDW/FSTA/GRANTS/INSPEC/MEDLINE/PPRN/PQDT/RC/SCIELO/WOK/WOS/ZOOREC. WOK represents all databases'
type: string
default: WOS
lang:
description: 'Language of search. This element can take only one value: en for English'
type: string
usrQuery:
description: 'User query for requesting data, ex: TS=(cadmium). The query parser will return errors for invalid queries'
type: string
example: ts=(cadmium)
edition:
description: 'Edition(s) to be searched. If null, user permissions will be substituted. Must include the name of the collection and edition name separated by +, ex: WOS+SCI. Multiple editions are separated by '',''. Editions available for collection(WOS) - AHCI,CCR,IC,ISSHP,ISTP,SCI,SSCI,BHCI,BSCI and ESCI'
type: string
publishTimeSpan:
description: 'This element specifies a range of publication dates. If publishedTimeSpan is used, the loadTimeSpan parameter must be omitted. If publishedTimeSpan and loadTimeSpan are both omitted, then the maximum time span will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by +, ex: 1993-01-01+2009-12-31'
type: string
loadTimeSpan:
description: 'Load time span (otherwise described as symbolic time span) defines a range of load dates. The load date is the date a record was added to the collection. If load date is specified, the publishTimeSpan parameter must be omitted. If both publishTimeSpan and loadTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Any of D/W/M/Y prefixed with a number where D-Day, M-Month, W-Week, Y-Year allowed. Acceptable value range for Day(0-6), Week(1-52), Month(1-12) and Year(0-10), ex: 5D,30W,10M,8Y'
type: string
createdTimeSpan:
description: 'Created time span (otherwise described as symbolic time span) defines a range of creation dates. The create date is the date a record was created. If create date is specified, the modifiedTimeSpan, loadTimeSpan and, publishTimeSpan parameter must be omitted. If createdTimeSpan, loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31.'
type: string
modifiedTimeSpan:
description: 'Modified time span (otherwise described as symbolic time span) defines a range of modified dates. The modified date is the date a record was most recently modified in the database. If modified date is specified, the publishTimeSpan, loadTimeSpan and, createdTimeSpan parameter must be omitted. If modifiedTimeSpan and loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31. This parameter is not allowed with databaseId=WOK.'
type: string
tcModifiedTimeSpan:
description: 'Times Cited Modified time span (otherwise described as symbolic time span) defines a range of tc modified dates. The tc modified date is the date a record was most recently modified in the database. If tc modified date is specified, the publishTimeSpan, loadTimeSpan and, createdTimeSpan, modifiedTimeSpan parameter must be omitted. If modifiedTimeSpan and loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31. This parameter is not allowed with databaseId=WOK.'
type: string
count:
description: Number of records to return, must be 0-100
type: integer
example: 5
firstRecord:
description: Specific record, if any within the result set to return. Cannot be less than 1
type: integer
default: 1
sortField:
description: 'Order by field(s). Field name and order by clause separated by +, use A for ASC and D for DESC, ex: PY+D. Multiple values are separated by ,'
type: string
viewField:
description: 'Parameter to limit records to selected fields. Because many fields are uniquely identified by a combination of element and attribute, you may not be able to limit record content to a precise degree. For example, the viewField parameter ''titles'' will always return document titles, publication names (both full and abbreviated), and book titles. You cannot limit retrieval to only document (item) titles or only publication (source) titles because item and source are attribute values, not elements. You cannot include attributes in viewField parameters. Collection name and field name(s) separated by + ex: WOS+titles+addresses, where titles and addresses represent fields.If collection name is missing, the database id will be used, e.g. databaseId=WOS&viewfield=title+addresses is equivalent to databaseId=WOS&viewfield=WOS+title+addresses.'
type: string
optionView:
description: "Document detail:\n * `FR` - Retrieves all metadata of the document (also known as FullRecord)\n * `SR` - Retrieves a short version of the document that would not count against the quota.\n The response fields are similar to the [Web of Science Starter API](https://developer.clarivate.com/apis/wos-starter) fields.\n * `FS` - Custom Field Selection - must be combined with query parameter `viewField`. It is automatically selected if `viewField` is used.\n"
type: string
optionOther:
description: 'Other option(s) of result representation. RI and On/Off separated by + where RI-RecordIDs, ex: RI+On'
type: string
description: Query parameters
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/WosSearchResponse'
application/json(ShortRecord):
schema:
$ref: '#/components/schemas/WosShortSearchResponse'
application/xml:
schema:
$ref: '#/components/schemas/WosSearchResponseXML'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
operationId: postRoot
x-operation-id-source: derived
/query/{queryId}:
get:
tags:
- Search
summary: Fetch record(s) by query identifier
description: This operation returns record(s) identified by a query identifier.
parameters:
- name: queryId
in: path
description: Retrieve records based on query identifier.
required: true
schema:
type: integer
example: 1
- name: count
in: query
description: Number of records to return, must be 0-100.
required: false
schema:
type: integer
default: 10
example: 10
- name: firstRecord
in: query
description: Specific record, if any within the result set to return. Cannot be less than 1 and greater than 100000.
required: false
schema:
type: integer
default: 1
example: 1
- name: sortField
in: query
description: 'Order by field(s). Field name and order by clause separated by ''+'' or '' '', use A for ASC and D for DESC, ex: PY+D. Multiple values are separated by comma. If sortField was set on the original query, this parameter should be set as sorting is not a property of the query.'
required: false
schema:
type: string
examples:
LoadDate:
value: LD+D
summary: Load Date (Descending)
LoadDate Asc:
value: LD+A
summary: Load Date (Ascending)
Author:
value: AU+D
summary: Author (Descending)
Author Asc:
value: AU+A
summary: Author (Ascending)
CTitle:
value: CF+D
summary: Conference Title (Descending)
CTitle Asc:
value: CF+A
summary: Conference Title (Ascending)
CitedYear:
value: CY+D
summary: Cited Year (Descending)
CitedYear Asc:
value: CY+A
summary: Cited Year (Ascending)
LTCited:
value: LC+D
summary: Local Times Cited (Descending)
LTCited Asc:
value: LC+A
summary: Local Times Cited (Ascending)
Page PG:
value: PG+D
summary: Page (Descending)
Page Asc:
value: PG+A
summary: Page (Ascending)
PYear:
value: PY+D
summary: Publication Year (Descending)
PYear Asc:
value: PY+A
summary: Publication Year (Ascending)
Relevance:
value: RS+D
summary: Relevance (Descending)
Source SO:
value: SO+D
summary: Source (Descending)
Source SO Asc:
value: SO+A
summary: Source (Ascending)
TimesCited:
value: TC+D
summary: Times Cited (Descending)
TimesCited Asc:
value: TC+A
summary: Times Cited (Ascending)
Volume VL:
value: VL+D
summary: Volume (Descending)
Volume VL Asc:
value: VL+A
summary: Volume (Ascending)
- name: viewField
in: query
description: 'Parameter to limit records to selected fields. Because many fields are uniquely identified by a combination of element and attribute, you may not be able to limit record content to a precise degree. For example, the viewField parameter ''titles'' will always return document titles, publication names (both full and abbreviated), and book titles. You cannot limit retrieval to only document (item) titles or only publication (source) titles because item and source are attribute values, not elements. You cannot include attributes in viewField parameters. Collection name and field name(s) separated by ''+'' or '' '' ex: WOS+titles+addresses, where titles and addresses represent fields.If collection name is missing, the database id will be used, e.g. databaseId=WOS&viewfield=title+addresses is equivalent to databaseId=WOS&viewfield=WOS+title+addresses.'
required: false
schema:
type: string
examples:
Search0:
value: ''
summary: All
Search1:
value: pub_info
summary: View Publication Information
Search2:
value: titles+addresses
summary: View Document Title and Author Address
Search3:
value: doctypes+keywords
summary: View Document Type and Author Keywords
Search4:
value: conferences
summary: View Conferences
Search5:
value: contributor
summary: View ResearcherID or ORCID
- name: optionView
in: query
description: "Document detail:\n * `FR` - Retrieves all metadata of the document (also known as FullRecord)\n * `SR` - Retrieves a short version of the document that would not count against the quota.\n The response fields are similar to the [Web of Science Starter API](https://developer.clarivate.com/apis/wos-starter) fields.\n * `FS` - Custom Field Selection - must be combined with query parameter `viewField`. It is automatically selected if `viewField` is used.\n"
schema:
type: string
enum:
- FR
- SR
- FS
default: FR
- name: optionOther
in: query
description: 'Other option(s) of result representation. HL and On/Off separated by ''+'' or '' '' where HL=HighLight: ex. HL+On.'
required: false
schema:
type: string
- name: links
in: query
description: Flag to return gateway links(Source and Citing) for each record returned in response. Default is false
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/RetrieveResponse'
application/json(ShortRecord):
schema:
$ref: '#/components/schemas/WosShortSearchResponse'
application/xml:
schema:
$ref: '#/components/schemas/RetrieveResponseXML'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'429':
description: Throttle error
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/errorMessage'
application/xml:
schema:
$ref: '#/components/schemas/errorMessage'
operationId: getQueryByQueryId
x-operation-id-source: derived
/related:
get:
summary: Identify related records
description: This operation finds related records for a given unique identifier. Related records will share cited references with the specified record. The operation returns the parent record along with the related records. The total number of related records for a given parent record is shown at the end of the response. The count parameter should be used to limit the number of related records returned by the operation.
tags:
- Search
parameters:
- name: databaseId
in: query
description: Database to search. WOK represents all databases.
required: true
schema:
type: string
enum:
- WOS
- BCI
- BIOABS
- BIOSIS
- CABI
- CCC
- CSCD
- DCI
- DIIDW
- FSTA
- GRANTS
- INSPEC
- MEDLINE
- PPRN
- PQDT
- RC
- SCIELO
- WOK
- ZOOREC
- name: lang
in: query
description: 'Language of search. This element can take only one value: en for English. If no language is specified, English is passed by default.'
required: false
schema:
type: string
- name: uniqueId
in: query
description: 'Primary item id to be searched, ex: WOS:000270372400005. Cannot be null or an empty string.'
required: true
schema:
type: string
example: WOS:000270372400005
- name: edition
in: query
description: 'Edition(s) to be searched. If null, user permissions will be substituted. Must include the name of the collection and edition name separated by ''+'' or '' '', ex: WOS+SCI. Multiple editions are separated by '',''. Editions available for collection(WOS) - AHCI,CCR,IC,ISSHP,ISTP,SCI,SSCI,BHCI,BSCI and ESCI.'
required: false
schema:
type: string
- name: publishTimeSpan
in: query
description: 'This element specifies a range of publication dates. If publishTimeSpan is omitted, then the maximum time span will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31.'
required: false
schema:
type: string
- name: modifiedTimeSpan
in: query
description: 'Modified time span (otherwise described as symbolic time span) defines a range of modified dates. The modified date is the date a record was most recently modified in the database. If modified date is specified, the publishTimeSpan, loadTimeSpan and, createdTimeSpan parameter must be omitted. If modifiedTimeSpan and loadTimeSpan, createdTimeSpan, and modifyTimeSpan are omitted, the maximum publication date will be inferred from the editions data. Beginning and end dates should be specified in the yyyy-mm-dd format separated by ''+'' or '' '', ex: 1993-01-01+2009-12-31. This parameter is not allowed with databaseId=WOK.'
required: false
schema:
type: string
- name: tcModifiedTimeSpan
in: query
description: 'Times Cited Modified time span (otherwise described as symbolic time span) defines a range of tc modified dates. The tc modified date is the date a record was most recent
# --- truncated at 32 KB (164 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clarivate/refs/heads/main/openapi/clarivate-search-api-openapi.yml