Code Library

Production-Ready
Code Examples

Enterprise-grade integration snippets with retry logic, structured logging, and robust error handling. Copy, paste, and ship — in Python, Ruby, JavaScript, Java, and Go.

No credit card required • 5 languages supported • Production-ready patterns

product_lookup.py
import requests — HTTP client Ready
retry_with_backoff() — 3 retries Built-in
response.json() — Parsed OK 200 OK
logger.info() — Structured log Logged
5
Languages
12+
Endpoints
60+
Snippets
Enterprise-Grade Security
Lightning-Fast Delivery
Global Marketplace Coverage
Dedicated Support

Complete Code Examples for Every Endpoint

Browse production-ready integration snippets with retry logic, structured logging, and error handling for each API endpoint.

Use Case

Fetch detailed analytics for an Amazon product, such as sales trends and ranking, to inform pricing or inventory decisions.

GET /amazon-product-statistics

Amazon Product Statistics

Retrieve detailed statistics for an Amazon product, including sales rank and review counts.

Parameters

ParameterTypeRequiredDescription
asin text Required Product ASIN (e.g., "B08N5WRWNW")
marketplaceId text Required Marketplace ID (e.g., "A1PA6795UKMFR9")
api_key text Required Your API key
graphs text Optional Generate visually graphs for history data

Response Example

200 OK application/json
{
  "data": {
    "asin": "B0CLTBHXWQ",
    "buyBoxFulfillment": "FBM",
    "buyBoxPrice": 41800,
    "buyBoxSellerIdHistory": [
      [
        "2025-06-14 17:08:00",
        "A2I59UVTUWUFH0"
      ]
    ],
    "categoryTree": [
      {
        "catId": 412603031,
        "name": "Videogiochi"
      },
      {
        "catId": 20904349031,
        "name": "PlayStation 5"
      },
      {
        "catId": 20904364031,
        "name": "Console"
      }
    ],
    "graphs": {
      "amazonAsSellerPriceHistory": "https://sellermagnet-api-webspace.s3.eu-central-1.amazonaws.com/amazon/api/charts/B0CLTBHXWQ/1749913774/B0CLTBHXWQ_amazon_price_1749913773.png",
      "lowestFBAPriceHistory": "https://sellermagnet-api-webspace.s3.eu-central-1.amazonaws.com/amazon/api/charts/B0CLTBHXWQ/1749913776/B0CLTBHXWQ_fba_price_1749913773.png",
      "lowestFBMPriceHistory": "https://sellermagnet-api-webspace.s3.eu-central-1.amazonaws.com/amazon/api/charts/B0CLTBHXWQ/1749913775/B0CLTBHXWQ_fbm_price_1749913773.png",
      "monthlySoldHistory": "https://sellermagnet-api-webspace.s3.eu-central-1.amazonaws.com/amazon/api/charts/B0CLTBHXWQ/1749913778/B0CLTBHXWQ_monthly_sold_1749913773.png",
      "productRatingHistory": "https://sellermagnet-api-webspace.s3.eu-central-1.amazonaws.com/amazon/api/charts/B0CLTBHXWQ/1749913777/B0CLTBHXWQ_rating_1749913773.png"
    },
    "listedSince": "2023-12-30 01:00:00",
    "lowestFBAPrice": 44999,
    "lowestFBMPrice": 41700,
    "marketplaceId": "APJ6JRA9NG5V4",
    "marketplaceNewPriceHistory": [
      [
        "2025-06-14",
        41700
      ]
    ],
    "offers": {
      "A11IL2PNWYJU7H": {
        "isFBA": true,
        "lastUpdated": "2025-06-14 17:08:00",
        "priceHistory": [
          [
            "2025-06-14 06:22:00",
            44999,
            0
          ]
        ],
        "stockHistory": [
          [
            "2025-05-29 11:32:00",
            1
          ]
        ]
      },
      "A12FLY25DT7QO0": {
        "isFBA": false,
        "lastUpdated": "2025-06-14 17:08:00",
        "priceHistory": [
          [
            "2025-06-09 15:32:00",
            41800,
            0
          ]
        ],
        "stockHistory": [
          [
            "2025-06-14 13:34:00",
            49
          ]
        ]
      },
      "A18KSDUE00UP6J": {
        "isFBA": false,
        "lastUpdated": "2025-06-14 17:08:00",
        "priceHistory": [
          [
            "2025-05-29 11:32:00",
            42890,
            0
          ]
        ],
        "stockHistory": [
          [
            "2025-05-30 18:30:00",
            3
          ]
        ]
      }
    },
    "productReviewAverage": 4.7,
    "productTitle": "Playstation 5 Console Edizione Digital Slim",
    "productTotalReviews": 3129,
    "rootCategory": {
      "id": 412603031,
      "name": "Videogiochi"
    },
    "stats": {
      "amazonAsSellerPriceHistory": [
        [
          "2025-06-14",
          44999
        ]
      ],
      "buyBoxPriceHistory": [
        [
          "2025-06-13",
          41700
        ]
      ],
      "monthlySoldHistory": [
        [
          "2025-06",
          1000
        ]
      ],
      "productRatingCountHistory": [
        [
          "2025-06-14 15:28:00",
          3129
        ]
      ],
      "productRatingHistory": [
        [
          "2025-02-02 01:30:00",
          4.7
        ]
      ],
      "salesRankHistory": [
        [
          "2025-06-14 01:58:00",
          15
        ]
      ]
    }
  },
  "success": true
}

Production Code

amazon_product_statistics.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_amazon_product_statistics(api_key, asin, marketplaceId, graphs, max_retries=3, timeout=10):
    """Fetch data from Amazon Product Statistics with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-product-statistics"
    params = {
        "api_key": api_key,
        
        "asin": asin,
        
        "marketplaceId": marketplaceId,
        
        "graphs": graphs,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Amazon Product Statistics")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_amazon_product_statistics(
            api_key="YOUR_API_KEY",
            
            asin="Product ASIN "B08N5WRWNW"",
            
            marketplaceId="Marketplace ID "A1PA6795UKMFR9"",
            
            graphs="graphs",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_amazon_product_statistics(api_key, asin, marketplaceId, graphs, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-product-statistics"
      params = {
        "api_key" => api_key,
        
        "asin" => asin,
        
        "marketplaceId" => marketplaceId,
        
        "graphs" => graphs,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Amazon Product Statistics")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_amazon_product_statistics(
    "YOUR_API_KEY",
    
    "Product ASIN "B08N5WRWNW"",
    
    "Marketplace ID "A1PA6795UKMFR9"",
    
    "graphs",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchAmazonProductStatistics(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-product-statistics";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Amazon Product Statistics`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchAmazonProductStatistics("YOUR_API_KEY", {
            
            asin: "Product ASIN "B08N5WRWNW"",
            
            marketplaceId: "Marketplace ID "A1PA6795UKMFR9"",
            
            graphs: "graphs",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchAmazonProductStatistics(String apiKey, String asin, String marketplaceId, String graphs, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("asin", asin);
        
        params.put("marketplaceId", marketplaceId);
        
        params.put("graphs", graphs);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-product-statistics?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Amazon Product Statistics");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchAmazonProductStatistics(
                "YOUR_API_KEY",
                
                "Product ASIN "B08N5WRWNW"",
                
                "Marketplace ID "A1PA6795UKMFR9"",
                
                "graphs",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchAmazonProductStatistics(apiKey string, asin string, marketplaceId string, graphs string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("asin", asin)
    
    params.Add("marketplaceId", marketplaceId)
    
    params.Add("graphs", graphs)
    

    reqURL := "https://sellermagnet-api.com/amazon-product-statistics?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Amazon Product Statistics", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchAmazonProductStatistics(
        "YOUR_API_KEY",
        
        "Product ASIN "B08N5WRWNW"",
        
        "Marketplace ID "A1PA6795UKMFR9"",
        
        "graphs",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Convert ASIN to EAN or vice versa to manage cross-marketplace product listings or integrate with external databases.

GET /amazon-asin-converter

Amazon ASIN Converter

Convert between ASIN and EAN identifiers for Amazon products.

Parameters

ParameterTypeRequiredDescription
asin text Required ASIN or EAN to convert (e.g., "B08N5WRWNW" or "9781234567890")
marketplaceId text Required Marketplace ID (e.g., "A1PA6795UKMFR9")
conversion_direction text Required Conversion direction: "asin-to-ean" or "ean-to-asin"
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "asin": "B0CLTBHXWQ",
    "eanList": [
      "0711719577294"
    ],
    "listedSince": "2023-12-30 01:00:00",
    "productTitle": "Playstation 5 Console Edizione Digital Slim"
  },
  "success": true
}

Production Code

amazon_asin_converter.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_amazon_asin_converter(api_key, asin, marketplaceId, conversion_direction, max_retries=3, timeout=10):
    """Fetch data from Amazon ASIN Converter with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-asin-converter"
    params = {
        "api_key": api_key,
        
        "asin": asin,
        
        "marketplaceId": marketplaceId,
        
        "conversion_direction": conversion_direction,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Amazon ASIN Converter")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_amazon_asin_converter(
            api_key="YOUR_API_KEY",
            
            asin="ASIN or EAN to convert "B08N5WRWNW" or "9781234567890"",
            
            marketplaceId="Marketplace ID "A1PA6795UKMFR9"",
            
            conversion_direction="asin-to-ean",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_amazon_asin_converter(api_key, asin, marketplaceId, conversion_direction, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-asin-converter"
      params = {
        "api_key" => api_key,
        
        "asin" => asin,
        
        "marketplaceId" => marketplaceId,
        
        "conversion_direction" => conversion_direction,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Amazon ASIN Converter")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_amazon_asin_converter(
    "YOUR_API_KEY",
    
    "ASIN or EAN to convert "B08N5WRWNW" or "9781234567890"",
    
    "Marketplace ID "A1PA6795UKMFR9"",
    
    "asin-to-ean",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchAmazonASINConverter(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-asin-converter";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Amazon ASIN Converter`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchAmazonASINConverter("YOUR_API_KEY", {
            
            asin: "ASIN or EAN to convert "B08N5WRWNW" or "9781234567890"",
            
            marketplaceId: "Marketplace ID "A1PA6795UKMFR9"",
            
            conversion_direction: "asin-to-ean",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchAmazonASINConverter(String apiKey, String asin, String marketplaceId, String conversion_direction, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("asin", asin);
        
        params.put("marketplaceId", marketplaceId);
        
        params.put("conversion_direction", conversion_direction);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-asin-converter?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Amazon ASIN Converter");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchAmazonASINConverter(
                "YOUR_API_KEY",
                
                "ASIN or EAN to convert "B08N5WRWNW" or "9781234567890"",
                
                "Marketplace ID "A1PA6795UKMFR9"",
                
                "asin-to-ean",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchAmazonASINConverter(apiKey string, asin string, marketplaceId string, conversion_direction string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("asin", asin)
    
    params.Add("marketplaceId", marketplaceId)
    
    params.Add("conversion_direction", conversion_direction)
    

    reqURL := "https://sellermagnet-api.com/amazon-asin-converter?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Amazon ASIN Converter", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchAmazonASINConverter(
        "YOUR_API_KEY",
        
        "ASIN or EAN to convert "B08N5WRWNW" or "9781234567890"",
        
        "Marketplace ID "A1PA6795UKMFR9"",
        
        "asin-to-ean",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Retrieve seller feedback to evaluate supplier reliability or monitor competitor performance for sourcing platforms.

GET /amazon-seller-review

Get Amazon Seller Review

Fetch review details for a specific Amazon seller.

Parameters

ParameterTypeRequiredDescription
sellerId text Required Seller ID (e.g., "A1B2C3D4E5F6G7")
marketplaceId text Required Marketplace ID (e.g., "A1PA6795UKMFR9")
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "marketplace": {
      "ATVPDKIKX0DER": {
        "last5Reviews": [
          {
            "dateRated": "By gary kraus on June 5, 2025.",
            "reviewText": "great",
            "starRating": "5 out of 5 stars"
          },
          {
            "dateRated": "By Amazon Customer on June 5, 2025.",
            "reviewText": "Ok",
            "starRating": "5 out of 5 stars"
          },
          {
            "dateRated": "By Graciela Casta\u00f1eda on May 21, 2025.",
            "reviewText": "Excelente",
            "starRating": "5 out of 5 stars"
          }
        ],
        "sellerFeedback": {
          "30": {
            "rating": "3.3",
            "reviewsCount": "7"
          },
          "365": {
            "rating": "3.9",
            "reviewsCount": "114"
          },
          "90": {
            "rating": "3.6",
            "reviewsCount": "30"
          },
          "lifetime": {
            "rating": "4.5",
            "reviewsCount": "1,535"
          }
        }
      }
    },
    "sellerId": "A1CWSGXIR635I6"
  },
  "success": true
}

Production Code

get_amazon_seller_review.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_seller_review(api_key, sellerId, marketplaceId, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Seller Review with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-seller-review"
    params = {
        "api_key": api_key,
        
        "sellerId": sellerId,
        
        "marketplaceId": marketplaceId,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Seller Review")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_seller_review(
            api_key="YOUR_API_KEY",
            
            sellerId="Seller ID "A1B2C3D4E5F6G7"",
            
            marketplaceId="Marketplace ID "A1PA6795UKMFR9"",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_seller_review(api_key, sellerId, marketplaceId, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-seller-review"
      params = {
        "api_key" => api_key,
        
        "sellerId" => sellerId,
        
        "marketplaceId" => marketplaceId,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Seller Review")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_seller_review(
    "YOUR_API_KEY",
    
    "Seller ID "A1B2C3D4E5F6G7"",
    
    "Marketplace ID "A1PA6795UKMFR9"",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonSellerReview(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-seller-review";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Seller Review`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonSellerReview("YOUR_API_KEY", {
            
            sellerId: "Seller ID "A1B2C3D4E5F6G7"",
            
            marketplaceId: "Marketplace ID "A1PA6795UKMFR9"",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonSellerReview(String apiKey, String sellerId, String marketplaceId, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("sellerId", sellerId);
        
        params.put("marketplaceId", marketplaceId);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-seller-review?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Seller Review");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonSellerReview(
                "YOUR_API_KEY",
                
                "Seller ID "A1B2C3D4E5F6G7"",
                
                "Marketplace ID "A1PA6795UKMFR9"",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonSellerReview(apiKey string, sellerId string, marketplaceId string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("sellerId", sellerId)
    
    params.Add("marketplaceId", marketplaceId)
    

    reqURL := "https://sellermagnet-api.com/amazon-seller-review?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Seller Review", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonSellerReview(
        "YOUR_API_KEY",
        
        "Seller ID "A1B2C3D4E5F6G7"",
        
        "Marketplace ID "A1PA6795UKMFR9"",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Access product details like price, images, and descriptions to build product comparison tools or enrich e-commerce catalogs.

GET /amazon-product-lookup

Get Amazon Product

Retrieve detailed product information for a given ASIN.

Parameters

ParameterTypeRequiredDescription
asin text Required Product ASIN (e.g., 'B08N5WRWNW')
marketplaceId text Required Marketplace ID (e.g., 'A1PA6795UKMFR9')
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "productInfo": {
      "additionalDetails": {
        "ASIN": "B0CL61F39H",
        "Batteries": "1 Lithium Ion batteries required. (included)",
        "Best Sellers Rank": "Nr. 31 in Video Games Nr. 1 in PlayStation 5 Consoles",
        "Customer Rating": "4.7 out of 5 stars",
        "Date First Available": "December 10, 2023",
        "Item Weight": "10.6 pounds",
        "Item model number": "CFI-2015",
        "Manufacturer": "Sony",
        "Number of Reviews": "7,092 ratings",
        "Product Dimensions": "14 x 17 x 7 inches; 10.6 Pounds",
        "Release date": "December 10, 2023",
        "Type of item": "Video Game"
      },
      "asin": "B0CL61F39H",
      "bestsellerRanks": {
        "main_category": {
          "name": "Video Games",
          "rank": 31
        },
        "subcategory": {
          "name": "PlayStation",
          "rank": 1
        }
      },
      "bulletPoints": [
        "Model Number CFI-2000",
        "Includes DualSense Wireless Controller, 1TB SSD, Disc Drive, 2 Horizontal Stand Feet, HDMI Cable, AC power cord, USB cable, printed materials, ASTRO\u2019s PLAYROOM (Pre-installed game)",
        "Vertical Stand sold separately"
      ],
      "buyBoxInfo": {
        "currencyCode": "USD",
        "currencyName": "United States Dollar",
        "currencySymbol": "$",
        "price": 444.99,
        "sellerId": "A3853PJW50SJG8"
      },
      "categories": {
        "bestsellerCategory": [
          {
            "id": "20972781011",
            "index": 1,
            "name": "PlayStation 5",
            "url": "https://www.amazon.com/b/ref=dp_bc_2?ie=UTF8\u0026node=20972781011"
          },
          {
            "id": "20972796011",
            "index": 2,
            "name": "Consoles",
            "url": "https://www.amazon.com/b/ref=dp_bc_3?ie=UTF8\u0026node=20972796011"
          }
        ],
        "rootCategory": {
          "id": "468642",
          "name": "Video Games",
          "url": "https://www.amazon.com/computer-video-games-hardware-accessories/b/ref=dp_bc_1?ie=UTF8\u0026node=468642"
        }
      },
      "description": [
        "Model Number CFI-2000",
        "Includes DualSense Wireless Controller, 1TB SSD, Disc Drive, 2 Horizontal Stand Feet, HDMI Cable, AC power cord, USB cable, printed materials, ASTRO\u2019s PLAYROOM (Pre-installed game)",
        "Vertical Stand sold separately",
        "The PS5 console unleashes new gaming possibilities that you never anticipated. Experience lightning fast loading with an ultra-high speed SSD, deeper immersion with support for haptic feedback, adaptive triggers, and 3D Audio*, and an all-new generation of incredible PlayStation games. Lightning Speed - Harness the power of a custom CPU, GPU, and SSD with Integrated I/O that rewrite the rules of what a PlayStation console can do. Stunning Games - Marvel at incredible graphics and experience new PS5 features. Play a back catalog of supported PS4 games. Breathtaking Immersion - Discover a deeper gaming experience with support for haptic feedback, adaptive triggers, and 3D Audio technology. Vertical stand sold separately. *3D audio via built-in TV speakers or analog/USB stereo headphones. Set up and latest system software update required."
      ],
      "details": {
        "ASIN": "B0CL61F39H",
        "Batteries": "1 Lithium Ion batteries required. (included)",
        "Date First Available": "December 10, 2023",
        "Item Weight": "10.6 pounds",
        "Item model number": "CFI-2015",
        "Manufacturer": "Sony",
        "Platform": "PlayStation 5",
        "Product Dimensions": "14 x 17 x 7 inches; 10.6 Pounds",
        "Release date": "December 10, 2023",
        "Type of item": "Video Game"
      },
      "hasAPlusContent": true,
      "images": [
        "https://m.media-amazon.com/images/I/41ECK5cY-2L._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/41srF-iY93L._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/41tVr19I3zL._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/41HMaO9jO3L._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/61e8hPmeoYL._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/61Gj1Kc5R5L._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/61r6PutKGwL._SL1000_.jpg",
        "https://m.media-amazon.com/images/I/717Id5h1fhL._SL1000_.jpg"
      ],
      "link": "https://www.amazon.com/dp/B0CL61F39H",
      "listedSinceDate": "2023-12-10",
      "mainImage": "https://m.media-amazon.com/images/I/31kTNmpm6vL.jpg",
      "marketplaceId": "ATVPDKIKX0DER",
      "reviews": {
        "averageRating": 4.7,
        "reviewSummary": "4.7 out of 5 stars",
        "totalReviews": 7092
      },
      "title": "PlayStation\u00ae5 console (slim)",
      "variations": [
        {
          "asin": "B0F6968Y5G",
          "attributes": {
            "Pattern Name": "PS5 w/ Black Ops Bundle",
            "Style": "PlayStation\u00ae5 Digital Edition (slim)"
          }
        },
        {
          "asin": "B0CL5KNB9M",
          "attributes": {
            "Pattern Name": "PS5 Only",
            "Style": "PlayStation\u00ae5 Digital Edition (slim)"
          }
        },
        {
          "asin": "B0CL61F39H",
          "attributes": {
            "Pattern Name": "PS5 Only",
            "Style": "PlayStation\u00ae5 console (slim)"
          }
        },
        {
          "asin": "B0F691TJTP",
          "attributes": {
            "Pattern Name": "PS5 w/ Black Ops Bundle",
            "Style": "PlayStation\u00ae5 console (slim)"
          }
        },
        {
          "asin": "B0FD54CGQ8",
          "attributes": {
            "Pattern Name": "PS5 w/ $100 PlayStation Store GC",
            "Style": "PlayStation\u00ae5 Digital Edition (slim)"
          }
        },
        {
          "asin": "B0FD4WGVH5",
          "attributes": {
            "Pattern Name": "PS5 w/ $100 PlayStation Store GC",
            "Style": "PlayStation\u00ae5 console (slim)"
          }
        }
      ],
      "videos": [
        "https://m.media-amazon.com/S/vse-vms-transcoding-artifact-us-east-1-prod/8af0ddf1-55f5-4e71-9463-39602c3edbae/default.jobtemplate.hls.m3u8",
        "https://m.media-amazon.com/S/vse-vms-transcoding-artifact-us-east-1-prod/50938d5c-2a9b-427a-b766-21b7cd63502e/default.jobtemplate.hls.m3u8"
      ]
    }
  },
  "success": true
}

Production Code

get_amazon_product.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_product(api_key, asin, marketplaceId, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Product with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-product-lookup"
    params = {
        "api_key": api_key,
        
        "asin": asin,
        
        "marketplaceId": marketplaceId,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Product")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_product(
            api_key="YOUR_API_KEY",
            
            asin="Product ASIN 'B08N5WRWNW'",
            
            marketplaceId="Marketplace ID 'A1PA6795UKMFR9'",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_product(api_key, asin, marketplaceId, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-product-lookup"
      params = {
        "api_key" => api_key,
        
        "asin" => asin,
        
        "marketplaceId" => marketplaceId,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Product")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_product(
    "YOUR_API_KEY",
    
    "Product ASIN 'B08N5WRWNW'",
    
    "Marketplace ID 'A1PA6795UKMFR9'",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonProduct(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-product-lookup";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Product`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonProduct("YOUR_API_KEY", {
            
            asin: "Product ASIN 'B08N5WRWNW'",
            
            marketplaceId: "Marketplace ID 'A1PA6795UKMFR9'",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonProduct(String apiKey, String asin, String marketplaceId, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("asin", asin);
        
        params.put("marketplaceId", marketplaceId);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-product-lookup?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Product");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonProduct(
                "YOUR_API_KEY",
                
                "Product ASIN 'B08N5WRWNW'",
                
                "Marketplace ID 'A1PA6795UKMFR9'",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonProduct(apiKey string, asin string, marketplaceId string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("asin", asin)
    
    params.Add("marketplaceId", marketplaceId)
    

    reqURL := "https://sellermagnet-api.com/amazon-product-lookup?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Product", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonProduct(
        "YOUR_API_KEY",
        
        "Product ASIN 'B08N5WRWNW'",
        
        "Marketplace ID 'A1PA6795UKMFR9'",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Analyze multiple offers for a product to identify the best price or seller, perfect for price tracking or arbitrage applications.

GET /amazon-product-offers

Get Amazon Product Offers

List offers for a product, including price, seller, condition, and inventory details.

Parameters

ParameterTypeRequiredDescription
asin text Required Product ASIN (e.g., 'B08N5WRWNW')
marketplaceId text Required Marketplace ID (e.g., 'A1PA6795UKMFR9')
geo_location text Optional Detailed Geo Location ZIP CODE
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "asin": "B0CL61F39H",
    "buyBox": {
      "condition": "New",
      "deliveryDate": "2025-06-28",
      "fulfillmentType": "FBA",
      "inventory": 30,
      "positivePercentage": 0,
      "priceWithoutShipping": 499,
      "sellerId": "Amazon",
      "sellerName": "Amazon",
      "shippingPrice": 0,
      "totalPrice": 499,
      "totalReviews": 0
    },
    "currency": {
      "code": "USD",
      "name": "United States Dollar",
      "symbol": "$"
    },
    "marketplaceId": "ATVPDKIKX0DER",
    "offers": [
      {
        "condition": "New",
        "deliveryDate": "2025-06-28",
        "fulfillmentType": "FBA",
        "inventory": 30,
        "positivePercentage": 0,
        "priceWithoutShipping": 499,
        "sellerId": "Amazon",
        "sellerName": "Amazon",
        "shippingPrice": 0,
        "totalPrice": 499,
        "totalReviews": 0
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-07-07",
        "fulfillmentType": "FBM",
        "inventory": 10,
        "positivePercentage": 78,
        "priceWithoutShipping": 409.99,
        "sellerId": "A17J18A7XABQI9",
        "sellerName": "PRICE 2 SAVE",
        "shippingPrice": 0,
        "totalPrice": 409.99,
        "totalReviews": 6892
      },
      {
        "condition": "Used - Good",
        "deliveryDate": "2025-06-26",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 87,
        "priceWithoutShipping": 409.99,
        "sellerId": "A1YU28SVL05CUG",
        "sellerName": "premier liquidation",
        "shippingPrice": 9.84,
        "totalPrice": 419.83,
        "totalReviews": 1177
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-06-30",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 40,
        "priceWithoutShipping": 418.99,
        "sellerId": "A2NBVGK6C0HCUA",
        "sellerName": "Fix N Plug",
        "shippingPrice": 3.99,
        "totalPrice": 422.98,
        "totalReviews": 30
      },
      {
        "condition": "Used - Good",
        "deliveryDate": "2025-06-30",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 94,
        "priceWithoutShipping": 423.99,
        "sellerId": "AZZMAGMBAQU46",
        "sellerName": "VG1shop (Serial # Recorded)",
        "shippingPrice": 3.99,
        "totalPrice": 427.98,
        "totalReviews": 163
      },
      {
        "condition": "Used - Acceptable",
        "deliveryDate": "2025-06-28",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 0,
        "priceWithoutShipping": 433.85,
        "sellerId": "Amazon",
        "sellerName": "Amazon Resale",
        "shippingPrice": 0,
        "totalPrice": 433.85,
        "totalReviews": 0
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-07-01",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 73,
        "priceWithoutShipping": 419.99,
        "sellerId": "AO9EU0V84CET9",
        "sellerName": "StarEdge Electronics",
        "shippingPrice": 15.75,
        "totalPrice": 435.74,
        "totalReviews": 154
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-06-27",
        "fulfillmentType": "FBM",
        "inventory": 2,
        "positivePercentage": 74,
        "priceWithoutShipping": 441.49,
        "sellerId": "A2E7NH3SLWCOH4",
        "sellerName": "Tech for Less",
        "shippingPrice": 0,
        "totalPrice": 441.49,
        "totalReviews": 56746
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-06-27",
        "fulfillmentType": "FBM",
        "inventory": 1,
        "positivePercentage": 84,
        "priceWithoutShipping": 443.7,
        "sellerId": "A3JEKQLX9Y2C9L",
        "sellerName": "SaveCentral",
        "shippingPrice": 0,
        "totalPrice": 443.7,
        "totalReviews": 7483
      },
      {
        "condition": "Used - Like New",
        "deliveryDate": "2025-06-27",
        "fulfillmentType": "FBM",
        "inventory": 2,
        "positivePercentage": 80,
        "priceWithoutShipping": 439.99,
        "sellerId": "A1KOYPV53GXGUI",
        "sellerName": "JRS GAMES",
        "shippingPrice": 3.99,
        "totalPrice": 443.98,
        "totalReviews": 81
      },
      {
        "condition": "Used - Very Good",
        "deliveryDate": "2025-06-28",
        "fulfillmentType": "FBA",
        "inventory": 8,
        "positivePercentage": 82,
        "priceWithoutShipping": 444.99,
        "sellerId": "A3853PJW50SJG8",
        "sellerName": "Wardyga Management Services LLC",
        "shippingPrice": 0,
        "totalPrice": 444.99,
        "totalReviews": 60
      }
    ],
    "productLink": "https://www.amazon.com/dp/B0CL61F39H",
    "productMainImage": "https://m.media-amazon.com/images/I/31kTNmpm6vL.jpg",
    "productTitle": "PlayStation\u00ae5 console (slim)"
  },
  "success": true
}

Production Code

get_amazon_product_offers.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_product_offers(api_key, asin, marketplaceId, geo_location, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Product Offers with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-product-offers"
    params = {
        "api_key": api_key,
        
        "asin": asin,
        
        "marketplaceId": marketplaceId,
        
        "geo_location": geo_location,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Product Offers")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_product_offers(
            api_key="YOUR_API_KEY",
            
            asin="Product ASIN 'B08N5WRWNW'",
            
            marketplaceId="Marketplace ID 'A1PA6795UKMFR9'",
            
            geo_location="geo_location",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_product_offers(api_key, asin, marketplaceId, geo_location, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-product-offers"
      params = {
        "api_key" => api_key,
        
        "asin" => asin,
        
        "marketplaceId" => marketplaceId,
        
        "geo_location" => geo_location,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Product Offers")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_product_offers(
    "YOUR_API_KEY",
    
    "Product ASIN 'B08N5WRWNW'",
    
    "Marketplace ID 'A1PA6795UKMFR9'",
    
    "geo_location",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonProductOffers(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-product-offers";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Product Offers`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonProductOffers("YOUR_API_KEY", {
            
            asin: "Product ASIN 'B08N5WRWNW'",
            
            marketplaceId: "Marketplace ID 'A1PA6795UKMFR9'",
            
            geo_location: "geo_location",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonProductOffers(String apiKey, String asin, String marketplaceId, String geo_location, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("asin", asin);
        
        params.put("marketplaceId", marketplaceId);
        
        params.put("geo_location", geo_location);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-product-offers?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Product Offers");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonProductOffers(
                "YOUR_API_KEY",
                
                "Product ASIN 'B08N5WRWNW'",
                
                "Marketplace ID 'A1PA6795UKMFR9'",
                
                "geo_location",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonProductOffers(apiKey string, asin string, marketplaceId string, geo_location string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("asin", asin)
    
    params.Add("marketplaceId", marketplaceId)
    
    params.Add("geo_location", geo_location)
    

    reqURL := "https://sellermagnet-api.com/amazon-product-offers?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Product Offers", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonProductOffers(
        "YOUR_API_KEY",
        
        "Product ASIN 'B08N5WRWNW'",
        
        "Marketplace ID 'A1PA6795UKMFR9'",
        
        "geo_location",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Retrieve a list of Amazon marketplaces to configure region-specific API requests or display marketplace options in your app.

GET /amazon-get-marketplaces

Get Amazon Marketplaces

Retrieve a list of supported Amazon marketplaces.

Parameters

ParameterTypeRequiredDescription
api_key text Required Your API key

Response Example

200 OK application/json
{
  "marketplaces": [
    {
      "country": "Germany",
      "id": "A1PA6795UKMFR9",
      "name": "Amazon.de"
    }
  ]
}

Production Code

get_amazon_marketplaces.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_marketplaces(api_key, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Marketplaces with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-get-marketplaces"
    params = {
        "api_key": api_key,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Marketplaces")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_marketplaces(
            api_key="YOUR_API_KEY",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_marketplaces(api_key, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-get-marketplaces"
      params = {
        "api_key" => api_key,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Marketplaces")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_marketplaces(
    "YOUR_API_KEY",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonMarketplaces(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-get-marketplaces";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Marketplaces`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonMarketplaces("YOUR_API_KEY", {
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonMarketplaces(String apiKey, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-get-marketplaces?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Marketplaces");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonMarketplaces(
                "YOUR_API_KEY",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonMarketplaces(apiKey string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    

    reqURL := "https://sellermagnet-api.com/amazon-get-marketplaces?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Marketplaces", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonMarketplaces(
        "YOUR_API_KEY",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Curate lists of top-selling products in a category to power recommendation engines or trend analysis dashboards.

GET /amazon-bestsellers

Get Amazon Bestsellers

Fetch top-selling products in a specific category.

Parameters

ParameterTypeRequiredDescription
category_id text Required Category ID (e.g., 'electronics')
marketplaceId text Required Marketplace ID (e.g., 'A1PA6795UKMFR9')
count number Optional Number of results (max 50, default 30)
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "bestsellers": [
      {
        "asin": "B0B7SFSN99",
        "mainImage": "https://images-eu.ssl-images-amazon.com/images/I/81AZ+P-42vL._AC_UL300_SR300,200_.jpg",
        "price": {
          "currency_code": "EUR",
          "currency_name": "Euro",
          "currency_symbol": "\u20ac",
          "price": 16.68
        },
        "productImages": [
          "https://images-eu.ssl-images-amazon.com/images/I/81AZ+P-42vL._AC_UL300_SR300,200_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/81AZ+P-42vL._AC_UL600_SR600,400_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/81AZ+P-42vL._AC_UL900_SR900,600_.jpg"
        ],
        "productLink": "https://www.amazon.de/Sterntaler-Unisex-Schirmm%C3%BCtze-Nackenschutz-Kinderm%C3%BCtze/dp/B0B7SFSN99/ref=zg_bs_g_12419321031_d_sccl_1/260-5378242-6478342?psc=1",
        "productTitle": "Sterntaler Schirmm\u00fctze Nacken - Unisex Baby- und Kinder M\u00fctze mit Nackenschutz und einsteckbaren Ohrenklappen - UV-Schutz 50+ Sommerm\u00fctze zum Binden - Popeline (Bio) Kopfbedeckung",
        "rank": 1,
        "reviewAmount": 5152,
        "reviewRating": 4.6
      },
      {
        "asin": "B0154K62CK",
        "mainImage": "https://images-eu.ssl-images-amazon.com/images/I/51r4mejhPuL._AC_UL300_SR300,200_.jpg",
        "productImages": [
          "https://images-eu.ssl-images-amazon.com/images/I/51r4mejhPuL._AC_UL300_SR300,200_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/51r4mejhPuL._AC_UL600_SR600,400_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/51r4mejhPuL._AC_UL900_SR900,600_.jpg"
        ],
        "productLink": "https://www.amazon.de/Sterntaler-Unisex-Flapper-Bindeb%C3%A4ndern-Nackenschutz/dp/B0154K62CK/ref=zg_bs_g_12419321031_d_sccl_2/260-5378242-6478342?psc=1",
        "productTitle": "Sterntaler Sonnenhut - Unisex Sommerhut - UV-Schutz 50+ M\u00fctze mit breiter Krempe und Gr\u00f6\u00dfenregulierung - Nackenschutz - Bindeb\u00e4nder - Baby und Kinder Kopfbedeckung aus Popeline (Bio)",
        "rank": 2,
        "reviewAmount": 4646,
        "reviewRating": 4.7
      },
      {
        "asin": "B08F1W2857",
        "mainImage": "https://images-eu.ssl-images-amazon.com/images/I/719-LFYpdJL._AC_UL300_SR300,200_.jpg",
        "productImages": [
          "https://images-eu.ssl-images-amazon.com/images/I/719-LFYpdJL._AC_UL300_SR300,200_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/719-LFYpdJL._AC_UL600_SR600,400_.jpg",
          "https://images-eu.ssl-images-amazon.com/images/I/719-LFYpdJL._AC_UL900_SR900,600_.jpg"
        ],
        "productLink": "https://www.amazon.de/T%C3%B6pfchen-Trainingshose-T%C3%B6pfchentraining-Unterw%C3%A4sche-T%C3%B6pfchen-Trainingshosen/dp/B08F1W2857/ref=zg_bs_g_12419321031_d_sccl_3/260-5378242-6478342?psc=1",
        "productTitle": "FLYISH DIRECT T\u00f6pfchen Trainingshose, Kinder T\u00f6pfchentraining Unterw\u00e4sche f\u00fcr Jungen und M\u00e4dchen, Kinder T\u00f6pfchen-Trainingshosen, 3T",
        "rank": 3,
        "reviewAmount": 4915,
        "reviewRating": 4.1
      }
    ],
    "categoryId": "12419321031",
    "link": "https://www.amazon.de/gp/bestsellers/fashion/12419321031?pg=1"
  },
  "success": true
}

Production Code

get_amazon_bestsellers.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_bestsellers(api_key, category_id, marketplaceId, count, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Bestsellers with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-bestsellers"
    params = {
        "api_key": api_key,
        
        "category_id": category_id,
        
        "marketplaceId": marketplaceId,
        
        "count": count,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Bestsellers")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_bestsellers(
            api_key="YOUR_API_KEY",
            
            category_id="Category ID 'electronics'",
            
            marketplaceId="Marketplace ID 'A1PA6795UKMFR9'",
            
            count="30",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_bestsellers(api_key, category_id, marketplaceId, count, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-bestsellers"
      params = {
        "api_key" => api_key,
        
        "category_id" => category_id,
        
        "marketplaceId" => marketplaceId,
        
        "count" => count,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Bestsellers")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_bestsellers(
    "YOUR_API_KEY",
    
    "Category ID 'electronics'",
    
    "Marketplace ID 'A1PA6795UKMFR9'",
    
    "30",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonBestsellers(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-bestsellers";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Bestsellers`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonBestsellers("YOUR_API_KEY", {
            
            category_id: "Category ID 'electronics'",
            
            marketplaceId: "Marketplace ID 'A1PA6795UKMFR9'",
            
            count: "30",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonBestsellers(String apiKey, String category_id, String marketplaceId, String count, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("category_id", category_id);
        
        params.put("marketplaceId", marketplaceId);
        
        params.put("count", count);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-bestsellers?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Bestsellers");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonBestsellers(
                "YOUR_API_KEY",
                
                "Category ID 'electronics'",
                
                "Marketplace ID 'A1PA6795UKMFR9'",
                
                "30",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonBestsellers(apiKey string, category_id string, marketplaceId string, count string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("category_id", category_id)
    
    params.Add("marketplaceId", marketplaceId)
    
    params.Add("count", count)
    

    reqURL := "https://sellermagnet-api.com/amazon-bestsellers?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Bestsellers", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonBestsellers(
        "YOUR_API_KEY",
        
        "Category ID 'electronics'",
        
        "Marketplace ID 'A1PA6795UKMFR9'",
        
        "30",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Leverage this endpoint to extract relevant Amazon data for your specific use case with production-ready code.

GET /amazon-deals

Get Amazon Deals

List categories with active Amazon deals.

Parameters

ParameterTypeRequiredDescription
marketplaceId text Required Marketplace ID (e.g., 'A1PA6795UKMFR9')
api_key text Required Your API key
category_id text Optional Category ID (e.g., 'electronics')
geo_location text Optional Detailed Geo Location ZIP CODE

Response Example

200 OK application/json
{
  "data": {
    "deals": [
      {
        "asin": "B094YCTK6P",
        "basisPrice": "18.69",
        "coupon_savings": null,
        "dealEndTime": "2025-07-08T16:15:00.000Z",
        "dealId": "5675cf93",
        "dealLink": "https://www.amazon.de/dp/B094YCTK6P",
        "dealPrice": {
          "priceCurrency": "EUR",
          "priceTotal": 15.89
        },
        "dealStartTime": "2025-07-08T04:15:00.000Z",
        "image_url": "https://images-eu.ssl-images-amazon.com/images/I/717dw8J-hbL.jpg",
        "productTitle": "IceUnicorn Krabbelschuhe Baby Lauflernschuhe Jungen M\u00e4dchen Weicher Leder Babyhausschuhe Kleinkind Rutschfeste Lederschuhe Baby",
        "savings_percentage": 15
      },
      {
        "asin": "B07TT3DDCV",
        "basisPrice": "25.99",
        "coupon_savings": null,
        "dealEndTime": "2025-07-11T21:59:59.000Z",
        "dealId": "b6dfba81",
        "dealLink": "https://www.amazon.de/dp/B07TT3DDCV",
        "dealPrice": {
          "priceCurrency": "EUR",
          "priceTotal": 17.9
        },
        "dealStartTime": "2025-07-07T22:00:00.000Z",
        "image_url": "https://images-eu.ssl-images-amazon.com/images/I/81sqngrRBRL.jpg",
        "productTitle": "Playshoes Unisex Kinder Matschhose Regenlatzhose Ungef\u00fcttert Wind-und wasserdichte Regenhose Regenbekleidung",
        "savings_percentage": 31
      },
      {
        "asin": "B0B31KTXP6",
        "basisPrice": "33.0",
        "coupon_savings": null,
        "dealEndTime": "2025-07-11T21:59:59.000Z",
        "dealId": "783116c9",
        "dealLink": "https://www.amazon.de/dp/B0B31KTXP6",
        "dealPrice": {
          "priceCurrency": "EUR",
          "priceTotal": 21.8
        },
        "dealStartTime": "2025-07-07T22:00:00.000Z",
        "image_url": "https://images-eu.ssl-images-amazon.com/images/I/412p-qTjLFL.jpg",
        "productTitle": "adidas Unisex Kinder Tensaur Hook and Loop Shoes Laufschuhe",
        "savings_percentage": 34
      }
    ]
  },
  "success": true
}

Production Code

get_amazon_deals.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_get_amazon_deals(api_key, marketplaceId, category_id, geo_location, max_retries=3, timeout=10):
    """Fetch data from Get Amazon Deals with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-deals"
    params = {
        "api_key": api_key,
        
        "marketplaceId": marketplaceId,
        
        "category_id": category_id,
        
        "geo_location": geo_location,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Get Amazon Deals")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_get_amazon_deals(
            api_key="YOUR_API_KEY",
            
            marketplaceId="Marketplace ID 'A1PA6795UKMFR9'",
            
            category_id="Category ID 'electronics'",
            
            geo_location="geo_location",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_get_amazon_deals(api_key, marketplaceId, category_id, geo_location, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-deals"
      params = {
        "api_key" => api_key,
        
        "marketplaceId" => marketplaceId,
        
        "category_id" => category_id,
        
        "geo_location" => geo_location,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Get Amazon Deals")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_get_amazon_deals(
    "YOUR_API_KEY",
    
    "Marketplace ID 'A1PA6795UKMFR9'",
    
    "Category ID 'electronics'",
    
    "geo_location",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchGetAmazonDeals(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-deals";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Get Amazon Deals`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchGetAmazonDeals("YOUR_API_KEY", {
            
            marketplaceId: "Marketplace ID 'A1PA6795UKMFR9'",
            
            category_id: "Category ID 'electronics'",
            
            geo_location: "geo_location",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchGetAmazonDeals(String apiKey, String marketplaceId, String category_id, String geo_location, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("marketplaceId", marketplaceId);
        
        params.put("category_id", category_id);
        
        params.put("geo_location", geo_location);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-deals?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Get Amazon Deals");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchGetAmazonDeals(
                "YOUR_API_KEY",
                
                "Marketplace ID 'A1PA6795UKMFR9'",
                
                "Category ID 'electronics'",
                
                "geo_location",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchGetAmazonDeals(apiKey string, marketplaceId string, category_id string, geo_location string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("marketplaceId", marketplaceId)
    
    params.Add("category_id", category_id)
    
    params.Add("geo_location", geo_location)
    

    reqURL := "https://sellermagnet-api.com/amazon-deals?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Get Amazon Deals", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchGetAmazonDeals(
        "YOUR_API_KEY",
        
        "Marketplace ID 'A1PA6795UKMFR9'",
        
        "Category ID 'electronics'",
        
        "geo_location",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}
Use Case

Leverage this endpoint to extract relevant Amazon data for your specific use case with production-ready code.

GET /amazon-product-search-estimated-sells

Amazon Product Search Estimated Sells

Retrieve estimated sales data for an Amazon product by ASIN.

Parameters

ParameterTypeRequiredDescription
asin text Required Product ASIN (e.g., "B08N5WRWNW")
marketplaceId text Required Marketplace ID (e.g., "A1PA6795UKMFR9")
api_key text Required Your API key

Response Example

200 OK application/json
{
  "data": {
    "asin": "B08N5WRWNW",
    "estimated_monthly_sales": 121
  },
  "success": true
}

Production Code

amazon_product_search_estimated_sells.py
Python
Ruby
Javascript
Java
Go
Curl
import requests
import time
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def fetch_amazon_product_search_estimated_sells(api_key, asin, marketplaceId, max_retries=3, timeout=10):
    """Fetch data from Amazon Product Search Estimated Sells with retry logic and error handling."""
    url = "https://sellermagnet-api.com/amazon-product-search-estimated-sells"
    params = {
        "api_key": api_key,
        
        "asin": asin,
        
        "marketplaceId": marketplaceId,
        
    }

    for attempt in range(max_retries):
        try:
            logger.info(f"Attempt {attempt + 1} to fetch Amazon Product Search Estimated Sells")
            response = requests.get(url, params=params, timeout=timeout)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"Attempt {attempt + 1} failed: {e}")
            if attempt + 1 == max_retries:
                raise Exception(f"Failed after {max_retries} attempts: {e}")
            time.sleep(2 ** attempt)  # Exponential backoff
    return {}

# Example usage
if __name__ == "__main__":
    try:
        result = fetch_amazon_product_search_estimated_sells(
            api_key="YOUR_API_KEY",
            
            asin="Product ASIN "B08N5WRWNW"",
            
            marketplaceId="Marketplace ID "A1PA6795UKMFR9"",
            
        )
        logger.info(f"Response: {result}")
    except Exception as e:
        logger.error(f"Error: {e}")
require 'httparty'
require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::INFO

module SellerMagnetAPI
  class << self
    def fetch_amazon_product_search_estimated_sells(api_key, asin, marketplaceId, max_retries: 3, timeout: 10)
      url = "https://sellermagnet-api.com/amazon-product-search-estimated-sells"
      params = {
        "api_key" => api_key,
        
        "asin" => asin,
        
        "marketplaceId" => marketplaceId,
        
      }

      max_retries.times do |attempt|
        begin
          logger.info("Attempt #{attempt + 1} to fetch Amazon Product Search Estimated Sells")
          response = HTTParty.get(url, query: params, timeout: timeout)
          return response.parsed_response if response.success?
        rescue StandardError => e
          logger.error("Attempt #{attempt + 1} failed: #{e.message}")
          raise if attempt + 1 == max_retries
          sleep(2 ** attempt)
        end
      end
    end
  end
end

# Example usage
begin
  result = SellerMagnetAPI.fetch_amazon_product_search_estimated_sells(
    "YOUR_API_KEY",
    
    "Product ASIN "B08N5WRWNW"",
    
    "Marketplace ID "A1PA6795UKMFR9"",
    
  )
  logger.info("Response: #{result}")
rescue StandardError => e
  logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");

async function fetchAmazonProductSearchEstimatedSells(apiKey, params, maxRetries = 3) {
    const url = "https://sellermagnet-api.com/amazon-product-search-estimated-sells";

    for (let attempt = 0; attempt < maxRetries; attempt++) {
        try {
            console.log(`Attempt ${attempt + 1} to fetch Amazon Product Search Estimated Sells`);
            const qs = new URLSearchParams({ api_key: apiKey, ...params });
            const res = await fetch(`${url}?${qs}`, { timeout: 10000 });
            if (!res.ok) throw new Error(`HTTP ${res.status}`);
            return await res.json();
        } catch (err) {
            console.error(`Attempt ${attempt + 1} failed:`, err.message);
            if (attempt + 1 === maxRetries) throw err;
            await new Promise(r => setTimeout(r, 2 ** attempt * 1000));
        }
    }
}

// Example usage
(async () => {
    try {
        const data = await fetchAmazonProductSearchEstimatedSells("YOUR_API_KEY", {
            
            asin: "Product ASIN "B08N5WRWNW"",
            
            marketplaceId: "Marketplace ID "A1PA6795UKMFR9"",
            
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error:", err.message);
    }
})();
import java.net.http.*;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public class SellerMagnetAPIClient {
    private static final Logger LOGGER = Logger.getLogger(SellerMagnetAPIClient.class.getName());
    private final HttpClient client = HttpClient.newBuilder().build();

    public String fetchAmazonProductSearchEstimatedSells(String apiKey, String asin, String marketplaceId, int maxRetries) throws Exception {
        Map<String, String> params = new HashMap<>();
        params.put("api_key", apiKey);
        
        params.put("asin", asin);
        
        params.put("marketplaceId", marketplaceId);
        

        String query = params.entrySet().stream()
            .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" +
                      URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
            .collect(Collectors.joining("&"));

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://sellermagnet-api.com/amazon-product-search-estimated-sells?" + query))
            .timeout(java.time.Duration.ofSeconds(10))
            .GET().build();

        for (int attempt = 0; attempt < maxRetries; attempt++) {
            try {
                LOGGER.info("Attempt " + (attempt + 1) + " to fetch Amazon Product Search Estimated Sells");
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                if (response.statusCode() >= 200 && response.statusCode() < 300) return response.body();
            } catch (Exception e) {
                LOGGER.severe("Attempt " + (attempt + 1) + " failed: " + e.getMessage());
                if (attempt + 1 == maxRetries) throw e;
                Thread.sleep((long) Math.pow(2, attempt) * 1000);
            }
        }
        throw new Exception("Failed after " + maxRetries + " attempts");
    }

    public static void main(String[] args) {
        var client = new SellerMagnetAPIClient();
        try {
            String response = client.fetchAmazonProductSearchEstimatedSells(
                "YOUR_API_KEY",
                
                "Product ASIN "B08N5WRWNW"",
                
                "Marketplace ID "A1PA6795UKMFR9"",
                
                3
            );
            LOGGER.info("Response: " + response);
        } catch (Exception e) {
            LOGGER.severe("Error: " + e.getMessage());
        }
    }
}
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "math"
    "net/http"
    "net/url"
    "time"
)

func FetchAmazonProductSearchEstimatedSells(apiKey string, asin string, marketplaceId string, maxRetries int) ([]byte, error) {
    client := &http.Client{Timeout: 10 * time.Second}
    params := url.Values{}
    params.Add("api_key", apiKey)
    
    params.Add("asin", asin)
    
    params.Add("marketplaceId", marketplaceId)
    

    reqURL := "https://sellermagnet-api.com/amazon-product-search-estimated-sells?" + params.Encode()

    for attempt := 0; attempt < maxRetries; attempt++ {
        log.Printf("Attempt %d to fetch Amazon Product Search Estimated Sells", attempt+1)
        resp, err := client.Get(reqURL)
        if err != nil {
            log.Printf("Attempt %d failed: %v", attempt+1, err)
            if attempt+1 == maxRetries {
                return nil, fmt.Errorf("failed after %d attempts: %v", maxRetries, err)
            }
            time.Sleep(time.Duration(math.Pow(2, float64(attempt))) * time.Second)
            continue
        }
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        return body, nil
    }
    return nil, fmt.Errorf("failed after %d attempts", maxRetries)
}

func main() {
    data, err := FetchAmazonProductSearchEstimatedSells(
        "YOUR_API_KEY",
        
        "Product ASIN "B08N5WRWNW"",
        
        "Marketplace ID "A1PA6795UKMFR9"",
        
        3,
    )
    if err != nil {
        log.Fatalf("Error: %v", err)
    }
    fmt.Println(string(data))
}

Start Integrating in Minutes

Four simple steps from sign-up to production-ready Amazon data integration.

1

Sign Up

Create a free account and receive 500 API credits instantly. Sign Up Now

2

Authenticate

Include your API key as a query parameter (api_key=YOUR_API_KEY) in every request.

3

Test the API

Try the /amazon-product-lookup endpoint with a sample ASIN (e.g., B0CX23V2ZK).

4

Explore Endpoints

Copy the production-ready examples above into your codebase and start building.

Get Started Free

Frequently Asked Questions

Common questions about using our code examples and integrating the API.

Yes. All code examples include production-ready patterns like retry logic with exponential backoff, proper error handling, HTTP timeouts, and structured logging. Simply replace the placeholder API key with yours.

We provide code examples in Python, Ruby, JavaScript (Node.js), Java, Go, and cURL. Each example follows language-specific best practices and conventions.

All code examples demonstrate proper error handling. Check the HTTP status code: 200 indicates success, 429 means rate-limited (retry after a delay), and 5xx codes indicate server errors. The response body always includes an error message for non-200 responses.

Sign up for a free account to receive 500 credits and generate your first API key. API keys are managed from the dashboard settings page.

Yes. Every code example implements exponential backoff with jitter for 429 (rate-limited) responses. The retry logic automatically waits and retries the request, ensuring your integration handles rate limits gracefully without manual intervention.

Start Integrating Amazon Data Today

Copy any code example above and start building in minutes. Every snippet is production-ready with error handling and retry logic built in.

500 free API credits • No credit card required • Cancel anytime