Federated search

Probably the oldest example of using an API to retrieve data from ScienceDirect / Scopus is that of federated search: integrating search results from different sources into a single user interface. For years, we facilitated this through a SOAP interface called FEDSRF, which we plan to start retiring in 2014. The RESTful APIs, however, provide a good alternative, and the below explains how to go about using them for this purpose.

Who is this information for?
Providers of federated search applications to subscribing ScienceDirect/Scopus customers, or customers who wish to integrate ScienceDirect/Scopus into their home-grown federated search system.

Getting access
After registering for an API Key here, contact us for next steps: we may need to change some of your key settings and will probably want to co-ordinate some things about customer authentication. Also make sure that you read the content use policies that explain what data you can use in your application.

Building search requests
After your API Key has been granted access to the ScienceDirect/Scopus search API, you can start sending requests. You'll have to pass in your APIKey either via X-ELS-APIKey HTTP request header or as apiKey query string parameter. API search requests for ScienceDirect and Scopus are very similar:
    http://api.elsevier.com/content/search/scidir?query=[query]
    http://api.elsevier.com/content/search/scopus?query=[query]
[query] is the user's search query, mapped to ScienceDirect's or Scopus' search syntax.
By default, this request will return results in JSON; the other response format that is available is Atom/XML. Either format can be explicitly requested by modifying the 'Accept' HTTP header for the request:
  Accept: application/json
    Or
  Accept: application/atom+xml

Instead of passing in this parameters as a HTTP request header, you can also pass it in as an encoded URL parameter:
    http://api.elsevier.com/content/search/scidir?query=[query]&httpAccept= application%2Fatom%2Bxml

By default, the AP will return 25 responses. You can get up to 100 responses by adding a 'count' parameter:
    http://api.elsevier.com/content/search/scopus?query=heart&count=100
Beware, however, that higher counts negatively affect response time.

By default, the API will return standard bibliographic data for each record. A more complete set of data can be retrieved by using the 'VIEW' parameter:
    http://api.elsevier.com/content/search/scopus?query=heart&view=COMPLETE

Requesting this view, especially in combination with requesting more than the standard 25 results, will negatively affect response time.
You can tailor the specific fields to be returned by using the 'fields' parameter. For example:
    http://api.elsevier.com/content/search/scidir?query=heart&field=dc:title,dc:creator,prism:publicationName,prism:coverDate,dc:description,prism:doi

The available search fields are documented for ScienceDirect and Scopus.

By default, the API returns search results ordered by whatever the default sort order is on ScienceDirect/Scopus itself. However, it is also possible to force a sort order, e.g. descending (-) by date:
    http://api.elsevier.com/content/search/scidir?query=decay&sort=-date