Bing search API and Azure Bing search API and Azure php php

Bing search API and Azure


Documentation for new services can get a bit interesting - especially in the rabbit-warren of MSDN. The most clear explanation I can find is on the Migration Guide from this Bing Search API page. Best of all the migration guide has a nice simple example in PHP towards the end.

EDIT: Alright, the migration guide is a starting point, but it isn't the best example. Here are two methods that work for me (no proxy, firewalls etc. interfering):

Using file_get_contents

Note: 'allow_url_fopen' needs to be enabled for this to work. You can use ini_set (or change php.ini etc.) if it isn't.

if (isset($_POST['submit'])) {    // Replace this value with your account key    $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';                $ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';                        $WebSearchURL = $ServiceRootURL . 'Web?$format=json&Query=';    $cred = sprintf('Authorization: Basic %s',       base64_encode($accountKey . ":" . $accountKey) );    $context = stream_context_create(array(        'http' => array(            'header'  => $cred        )    ));    $request = $WebSearchURL . urlencode( '\'' . $_POST["searchText"] . '\'');    $response = file_get_contents($request, 0, $context);    $jsonobj = json_decode($response);    echo('<ul ID="resultList">');    foreach($jsonobj->d->results as $value)    {                                echo('<li class="resultlistitem"><a href="'                 . $value->URL . '">'.$value->Title.'</a>');    }    echo("</ul>");}

Using cURL

If cURL is installed, which is normal these days:

<?php  $query = $_POST['searchText'];  $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';  $serviceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';    $webSearchURL = $serviceRootURL . 'Web?$format=json&Query=';  $request = $webSearchURL . "%27" . urlencode( "$query" ) . "%27";  $process = curl_init($request);  curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);  curl_setopt($process, CURLOPT_USERPWD,  "$accountKey:$accountKey");  curl_setopt($process, CURLOPT_TIMEOUT, 30);  curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);  $response = curl_exec($process);  $response = json_decode($response);  echo "<ol>";  foreach( $response->d->results as $result ) {    $url = $result->Url;    $title = $result->Title;    echo "<li><a href='$url'>$title</a></li>";  }  echo "</ol>";?>

[WTS] changed SearchWeb to Search.


None of the above worked for me. Im running MAMP, this may be relevant. Try the below:


$accountKey = '=';function sitesearch ($query, $site, $accountKey, $count=NULL){  // code from http://go.microsoft.com/fwlink/?LinkID=248077    $context = stream_context_create(array(    'http' => array(      'request_fulluri' => true,             'header'  => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)    )     ));     $ServiceRootURL =  'https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Market=%27en-GB%27&';    $WebSearchURL = $ServiceRootURL . '$format=json&Query=';      $request = $WebSearchURL . urlencode("'$query'"); // note the extra single quotes    if ($count) $request .= "&\$top=$count"; // note the dollar sign before $top--it's not a variable!    return json_decode(file_get_contents($request, 0, $context), true);}$q = "query";if ($q){  // get search results  $articles = sitesearch ($q, $_SERVER['HTTP_HOST'], $accountKey , 100);  foreach($articles['d']['results'] as $article) {      echo " <p>".$article['Title'].'</p>';      echo " <p>".$article['Description'].'</p>';      echo " <p>".$article['Source'].'</p>';      echo " <p>".strtotime($article['Date']).'</p>';  }}

FROM:http://bililite.com/blog/2012/06/05/new-bing-api/


you can use bellow code to get bing search results

$acctKey = 'Your account key here';$rootUri = 'https://api.datamarket.azure.com/Bing/Search';$query = 'Kitchen';$serviceOp ='Image';$market ='en-us';$query = urlencode("'$query'");$market = urlencode("'$market'");$requestUri = "$rootUri/$serviceOp?\$format=json&Query=$query&Market=$market";$auth = base64_encode("$acctKey:$acctKey");$data = array(              'http' => array(                        'request_fulluri' => true,                        'ignore_errors' => true,                        'header' => "Authorization: Basic $auth"                        )            );$context = stream_context_create($data);$response = file_get_contents($requestUri, 0, $context);$response=json_decode($response);echo "<pre>";print_r($response);echo "</pre>";