skip to Main Content

How do I get a large item image using the eBay API? The API call below returns a thumbnail image when I use galleryURL. I tried replacing it with PictureURLLarge, but that did not return a URL.

(The line I am referring to is 16th from the bottom: $pic = $item->galleryURL;)

// API request variables
       $endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';  // URL to call
       $version = '1.11.0';  // API version supported by your application
       $appid = 'XXXXX';  // Replace with your own AppID
       $globalid = 'EBAY-US';  // Global ID of the eBay site you want to search (e.g., EBAY-DE)
       $query = "soft thin (shirt, tshirt, t-shirt)";  // Supply your own query
       $safequery = urlencode($query);  // Make the query URL-friendly
       $i = '0';  // Initialize the item filter index to 0

       // Create a PHP array of the item filters you want to use in your request
       $filterarray =
         array(
           array(
           'name' => 'MaxPrice',
           'value' => '1500',
           'paramName' => 'Currency',
           'paramValue' => 'USD'),
           array(
           'name' => 'FreeShippingOnly',
           'value' => 'false',
           'paramName' => '',
           'paramValue' => ''),
           array(
           'name' => 'ListingType',
           'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
           'paramName' => '',
           'paramValue' => ''),
         );

       // Generates an indexed URL snippet from the array of item filters
       function buildURLArray ($filterarray) {
         global $urlfilter;
         global $i;
         // Iterate through each filter in the array
         foreach($filterarray as $itemfilter) {
           // Iterate through each key in the filter
           foreach ($itemfilter as $key =>$value) {
             if(is_array($value)) {
               foreach($value as $j => $content) { // Index the key for each value
                 $urlfilter .= "&itemFilter($i).$key($j)=$content";
               }
             }
             else {
               if($value != "") {
                 $urlfilter .= "&itemFilter($i).$key=$value";
               }
             }
           }
           $i++;
         }
         return "$urlfilter";
       } // End of buildURLArray function

       // Build the indexed item filter URL snippet
       buildURLArray($filterarray);

       // Construct the findItemsAdvanced HTTP GET call 
       $apicall = "$endpoint?";
       $apicall .= "OPERATION-NAME=findItemsAdvanced";
       $apicall .= "&SERVICE-VERSION=$version";
       $apicall .= "&SECURITY-APPNAME=$appid";
       $apicall .= "&GLOBAL-ID=$globalid";
       $apicall .= "&descriptionSearch=true";
       $apicall .= "&categoryId=110";
       $apicall .= "&keywords=$safequery";
       $apicall .= "&paginationInput.entriesPerPage=100";
       $apicall .= "$urlfilter";

       // Load the call and capture the document returned by eBay API
       $resp = simplexml_load_file($apicall);

       // Check to see if the request was successful, else print an error
       if ($resp->ack == "Success") {
         $results = '';
         // If the response was loaded, parse it and build links  
         foreach($resp->searchResult->item as $item) {
           $pic    = $item->galleryURL;
           $link   = $item->viewItemURL;
           $title  = $item->title;
           $ship = (float) $item->shippingInfo->shippingServiceCost;
           $price = (float) $item->sellingStatus->currentPrice;
           $sell = ($ship + $price);

           // For each SearchResultItem node, build a link and append it to $results
           $results .= "<a href="$link" title="$title" target="_blank"><div class="shirt-block"><img src="$pic" width="200" height="200"><br /><br /><span class="cost">$$sell</span></div></a>";
         }
       }
       // If the response does not indicate 'Success,' print an error
       else {
         $results  = "<h3>Oops! The request was not successful. Make sure you are using a valid ";
         $results .= "AppID for the Production environment.</h3>";
       }

2

Answers


  1. Did you try the most recent method provided in the eBay Forum?

    I can help to explain and guide you.

    That member suggests to include $apicall .= "&outputSelector=$outputSelector"; in your construct of the findItemsAdvanced request.

    At that point I would check the XML File returned to see if it’s included via Firebug (click the NET tab, then XHR below). In Chrome, just enable Developer Tools and click the NETWORK tab to see returned XML File. Click file to expand and you will see contents without whitespace.

    Because the XML file is not going to be pretty, copy that content then paste it HERE to beautify it for readability.

    Sample XML file HERE that has both pictureURLLarge and pictureURLSuperSize shown.

    Once you verify that the URL for large image has been included in your XML file, second step is to then use it in your markup like so:

    $pic = $item->pictureURLLarge;
    

    or

    $pic = $item->pictureURLSuperSize;
    

    Sorry I do not have my own eBay AppID to test and their API Playground link is broken but can assist further is anything is unclear.

    To be sure, the first step is to obtain the Large Image request and the second step is to simply use the image.

    Login or Signup to reply.
  2. In my case it worked after I passed outputSelector as an array to the GET request:

     $apiCall .= "&outputSelector(0)=PictureURLLarge";
     $apiCall .= "&outputSelector(1)=PictureURLSuperSize";
     $apiCall .= "&outputSelector(2)=GalleryInfo";
    

    But, I was using findItemsByKeywords. Here is the full request.

     $apiCall = "https://svcs.ebay.com/services/search/FindingService/v1?";
     $apiCall .= "OPERATION-NAME=findItemsByKeywords";
     $apiCall .= "&SERVICE-VERSION=1.0.0";
     $apiCall .= "&SECURITY-APPNAME=PASTE-APP-ID-HERE";
     $apiCall .= "&GLOBAL-ID=EBAY-GB";
     $apiCall .= "&keywords=" . urlencode($keywords);
     $apiCall .= "&outputSelector(0)=PictureURLLarge";
     $apiCall .= "&outputSelector(1)=PictureURLSuperSize";
     $apiCall .= "&outputSelector(2)=GalleryInfo";
     $apiCall .= "&RESPONSE-DATA-FORMAT=XML";
     $apiCall .= "&REST-PAYLOAD";
     $apiCall .= "&paginationInput.pageNumber=1";
     $apiCall .= "&paginationInput.entriesPerPage=100";
    

    Hope it will help someone.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search