Ebay Search API (Async)

This endpoint will retrieve products for a specified search term from Ebay search page and transform it into usable JSON.

Single Query request:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class Main {
    public static void main(String[] args) {
        try {
            String apiKey = "APIKEY";
            String jsonInputString = "{"
                + "\"apiKey\": \"" + apiKey + "\", "
                + "\"query\": \"QUERY\", "
                + "\"country_code\": \"COUNTRY_CODE\", "
                + "\"tld\": \"TLD\", "
                + "\"sort_by\": \"SORT_BY\", "
                + "\"page\": \"PAGE\", "
                + "\"items_per_page\": \"ITEMS_PER_PAGE\", "
                + "\"seller_id\": \"SELLER_ID\", "
                + "\"condition\": \"CONDITION\", "
                + "\"buying_format\": \"BUYING_FORMAT\", "
                + "\"show_only\": \"SHOW_ONLY\", "
                + "\"callback\": {"
                + "    \"type\": \"webhook\", "
                + "    \"url\": \"YYYY\""
                + "}}";

            URL url = new URL("https://async.scraperapi.com/structured/ebay/search");
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setRequestProperty("Accept", "*/*");
            connection.setDoOutput(true);
            try (OutputStream os = connection.getOutputStream()) {
                byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }
            int responseCode = connection.getResponseCode();
            StringBuilder response = new StringBuilder();
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String readLine;
            while ((readLine = in.readLine()) != null) {
                response.append(readLine);
            }
            in.close();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                System.out.println("Response: " + response.toString());
            } else {
                throw new Exception("Error in API Call: Response code " + responseCode + "\nbody: " + response.toString());
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Multiple Query request:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class Main {
    public static void main(String[] args) {
        try {
            String apiKey = "APIKEY";
            String jsonInputString = "{"
                + "\"apiKey\": \"" + apiKey + "\", "
                + "\"queries\": [\"QUERY1\", \"QUERY2\"], "
                + "\"country_code\": \"COUNTRY_CODE\", "
                + "\"tld\": \"TLD\", "
                + "\"sort_by\": \"SORT_BY\", "
                + "\"page\": \"PAGE\", "
                + "\"items_per_page\": \"ITEMS_PER_PAGE\", "
                + "\"seller_id\": \"SELLER_ID\", "
                + "\"condition\": \"CONDITION\", "
                + "\"buying_format\": \"BUYING_FORMAT\", "
                + "\"show_only\": \"SHOW_ONLY\", "
                + "\"callback\": {"
                + "    \"type\": \"webhook\", "
                + "    \"url\": \"YYYY\""
                + "}}";

            URL url = new URL("https://async.scraperapi.com/structured/ebay/search");
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setRequestProperty("Accept", "*/*");
            connection.setDoOutput(true);
            try (OutputStream os = connection.getOutputStream()) {
                byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }
            int responseCode = connection.getResponseCode();
            StringBuilder response = new StringBuilder();
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String readLine;
            while ((readLine = in.readLine()) != null) {
                response.append(readLine);
            }
            in.close();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                System.out.println("Response: " + response.toString());
            } else {
                throw new Exception("Error in API Call: Response code " + responseCode + "\nbody: " + response.toString());
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

ParametersDetails

API_KEY (required)

User's normal API Key

QUERY (required)

Search query. Example: iPhone

TLD

Top-level Ebay domain to scrape. This is an optional argument and defaults to “com” (ebay.com). Valid values include:

com (ebay.com)

co.uk (ebay.co.uk)

com.au (ebay.com.au)

de (ebay.de)

ca (ebay.ca)

fr (ebay.fr)

it (ebay.it)

es (ebay.es)

at (ebay.at)

ch (ebay.ch)

com.sg (ebay.com.sg)

com.my (ebay.com.my)

ph (ebay.ph)

ie (ebay.ie)

pl (ebay.pl)

nl (ebay.nl)

COUNTRY

country_code influences the language and the currency of the page. The TLD should be set to ‘com’ if you are using languages that are not used by the TLDs listed above.

SORT_BY

Instructs the API to sort the results. Supported values:

ending_soonest newly_listed price_lowest price_highest distance_nearest best_match

PAGE

Page number

ITEMS_PER_PAGE

Number of items returned. Supported values: 60, 120, 240

SELLER_ID

The ‘name’ of the seller. This is a textual id, for example ‘gadget-solutions’

Filter options

CONDITON

Condition of the products. Supported values:

'new', 'used', 'open_box', 'refurbished', 'for_parts', 'not_working’ Note: These categories don’t have the same name for all products.

For example open_box is sometimes called ‘without tag’ on the eBay results page. Please ensure that you are always using the values from the supported list when sending request to the API. Note2: Multiple options can be used here. So if you want to search for new and open_box products you can use the query param: ’used,open_box’ in an URL encoded form like &condition=used%2Copen_box

BUYING_FORMAT

Buying format. Supported values:

buy_it_now auction accepts_offers Note: You can specify multiple options just as with the condition parameter.

SHOW_ONLY

Additional filters for search. Supported values:

returns_accepted authorized_seller completed_items sold_items sale_items listed_as_lots search_in_description benefits_charity authenticity_guarantee Note: Multiple options can be used here. So if you want to search for a product where returns are accepted and it’s from an authorized seller the query param: ’returns_accepted,authorized_seller’ in an URL encoded form like &show_only=returns_accepted%2Cauthorized_seller

Sample Response

Single Query Request:

{                          
  "id": "28cd7eb4-b1a1-4f99-b843-c9c8217d8a46",
  "attempts": 0,           
  "status": "running",     
  "statusUrl": "https://async.scraperapi.com/jobs/28cd7eb4-b1a1-4f99-b843-c9c8217d8a46",
  "query": "iphone",    
  "sort_by": "price_lowest",  
  "supposedToRunAt": "2024-11-11T10:18:01.316Z"
}

Multiple Query Request:

[                                                                                                                                                                                                                                                                                                                             
  {
    "id": "cb102a9b-d294-4172-b1b2-1c5b9f4b47df",
    "attempts": 0,
    "status": "running",
    "statusUrl": "https://async.scraperapi.com/jobs/cb102a9b-d294-4172-b1b2-1c5b9f4b47df",
    "query": "iphone",
    "sort_by": "price_lowest"
  },
  {
    "id": "e4abe7b8-9f71-4bcd-ae43-f2479aff013a",
    "attempts": 0,
    "status": "running",
    "statusUrl": "https://async.scraperapi.com/jobs/e4abe7b8-9f71-4bcd-ae43-f2479aff013a",
    "query": "android",
    "sort_by": "price_lowest"
  }
]

Last updated