SharePoint 2013 mette a disposizione le nuove api REST per interrogare il motore di ricerca.

Un esempio di url di chiamata è la seguente:
http://sharepoint.sgart.local/site1/_api/search/query?querytext=testo+da+cercare
nel parametro querytext si possono usare alcune keyword per limitare la ricerca come ad esempio path: per indicare una url di partenza o (contentclass:STS_ListItem OR IsDocument:True) per restringere la ricerca ai soli item o file.
Ad esempio:
testo da cercare path:http://sharepoint.sgart.local/site1/Lists/Requests (contentclass:STS_ListItem OR IsDocument:True)

Un esempio in javascript per interrogare il motore di ricerca e gestire il risultato ritornato in JSON:
//la query con il testo da cercare su una specifica lista o document library e ritornare solo gli item o i documenti, non i folder
var k = "prova testo path:" + _spPageContextInfo.webAbsoluteUrl + "/Lists/MiaLista (contentclass:STS_ListItem OR IsDocument:True)";

//la url ai servizi rest
var searchRestSource = _spPageContextInfo.webAbsoluteUrl
  + "/_api/search/query?querytext='" + query + hdExecuteSearchVM.queryScope() + "'"
  + "&rowlimit=" + numberOfResults
  + "&selectproperties='Title,Url'";

//uso jquery per interrogare le api
$.ajax({
  url: searchRestSource,
  method: "GET",
  headers: { "accept": "application/json; odata=verbose" },
  success: function (data) {
    if (data.d.query.PrimaryQueryResult.RelevantResults.RowCount > 0) {
      var queryResults = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;
      var r = "";
      for (var i = 0; i < queryResults.length; i++) {
        var title = "?";
        var url = "";
        for (var h = 0; h < queryResults[i].Cells.results.length; h++) {
          //ciclo sui campi ritornati per cercare il Title e la Url
          var obj = queryResults[i].Cells.results[h];
          if (obj.Key == "Title") title = obj.Value;
          if (obj.Key == "Url") url = obj.Value;
        }
        // gestire i valori ritornati
        // addItem(title, url);
        r += title + " | ";
      }
      alert(r);
    }
  },
  error: function (err) {
    // gestire gli errori
    alert(JSON.stringify(err));
  },
});
Molto importante è specificare nell'header { "accept": "application/json; odata=verbose" }