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
Complete Code Examples for Every Endpoint
Browse production-ready integration snippets with retry logic, structured logging, and error handling for each API endpoint.
Fetch detailed analytics for an Amazon product, such as sales trends and ranking, to inform pricing or inventory decisions.
/amazon-product-statistics
Amazon Product Statistics
Retrieve detailed statistics for an Amazon product, including sales rank and review counts.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Convert ASIN to EAN or vice versa to manage cross-marketplace product listings or integrate with external databases.
/amazon-asin-converter
Amazon ASIN Converter
Convert between ASIN and EAN identifiers for Amazon products.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"data": {
"asin": "B0CLTBHXWQ",
"eanList": [
"0711719577294"
],
"listedSince": "2023-12-30 01:00:00",
"productTitle": "Playstation 5 Console Edizione Digital Slim"
},
"success": true
}
Production Code
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))
}
Retrieve seller feedback to evaluate supplier reliability or monitor competitor performance for sourcing platforms.
/amazon-seller-review
Get Amazon Seller Review
Fetch review details for a specific Amazon seller.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Access product details like price, images, and descriptions to build product comparison tools or enrich e-commerce catalogs.
/amazon-product-lookup
Get Amazon Product
Retrieve detailed product information for a given ASIN.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Analyze multiple offers for a product to identify the best price or seller, perfect for price tracking or arbitrage applications.
/amazon-product-offers
Get Amazon Product Offers
List offers for a product, including price, seller, condition, and inventory details.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Retrieve a list of Amazon marketplaces to configure region-specific API requests or display marketplace options in your app.
/amazon-get-marketplaces
Get Amazon Marketplaces
Retrieve a list of supported Amazon marketplaces.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
text | Required | Your API key |
Response Example
{
"marketplaces": [
{
"country": "Germany",
"id": "A1PA6795UKMFR9",
"name": "Amazon.de"
}
]
}
Production Code
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))
}
Implement a product search feature to display relevant Amazon products based on user queries, suitable for affiliate marketing.
/amazon-search
Search Amazon
Search Amazon products by keyword.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q |
text | Required | Search query (e.g., "phone") |
marketplaceId |
text | Required | Marketplace ID (e.g., "A1PA6795UKMFR9") |
count |
number | Optional | Number of results (max 50, default 30) |
geo_location |
text | Optional | Detailed Geo Location ZIP CODE |
api_key |
text | Required | Your API key |
Response Example
{
"data": {
"searchResults": [
{
"asin": "B0CL5KNB9M",
"discount_info": "",
"link": "https://www.amazon.com/dp/B0CL5KNB9M",
"listingPrice": {
"price": {
"currency_code": "USD",
"currency_name": "United States Dollar",
"currency_symbol": "$",
"total": "449.00"
}
},
"mainImage": "https://m.media-amazon.com/images/I/51fM0CKG+HL._AC_UY218_.jpg",
"on_sale": false,
"position": 1,
"productTitle": "PlayStation\u00ae5 Digital Edition (slim)",
"reviewAmount": 7209,
"reviewRating": 4.7,
"sponsored": false
},
{
"asin": "B0DGY63Z2H",
"discount_info": "",
"link": "https://www.amazon.com/dp/B0DGY63Z2H",
"listingPrice": {
"price": {
"currency_code": "USD",
"currency_name": "United States Dollar",
"currency_symbol": "$",
"total": "699.00"
}
},
"mainImage": "https://m.media-amazon.com/images/I/61vR3ovb2UL._AC_UY218_.jpg",
"on_sale": false,
"position": 2,
"productTitle": "PlayStation 5 Pro Console",
"reviewAmount": 1373,
"reviewRating": 4.4,
"sponsored": false
},
{
"asin": "B0CV4JW8XM",
"discount_info": "",
"link": "https://www.amazon.com/dp/B0CV4JW8XM",
"listingPrice": {
"price": {
"currency_code": "USD",
"currency_name": "United States Dollar",
"currency_symbol": "$",
"total": "77.16"
}
},
"mainImage": "https://m.media-amazon.com/images/I/81BjQjGll8L._AC_UY218_.jpg",
"on_sale": false,
"position": 3,
"productTitle": "PlayStation Stellar Blade",
"reviewAmount": 405,
"reviewRating": 4.7,
"sponsored": false
}
]
},
"success": true
}
Production Code
import requests
import time
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def fetch_search_amazon(api_key, q, marketplaceId, count, geo_location, max_retries=3, timeout=10):
"""Fetch data from Search Amazon with retry logic and error handling."""
url = "https://sellermagnet-api.com/amazon-search"
params = {
"api_key": api_key,
"q": q,
"marketplaceId": marketplaceId,
"count": count,
"geo_location": geo_location,
}
for attempt in range(max_retries):
try:
logger.info(f"Attempt {attempt + 1} to fetch Search Amazon")
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_search_amazon(
api_key="YOUR_API_KEY",
q="Search query "phone"",
marketplaceId="Marketplace ID "A1PA6795UKMFR9"",
count="30",
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_search_amazon(api_key, q, marketplaceId, count, geo_location, max_retries: 3, timeout: 10)
url = "https://sellermagnet-api.com/amazon-search"
params = {
"api_key" => api_key,
"q" => q,
"marketplaceId" => marketplaceId,
"count" => count,
"geo_location" => geo_location,
}
max_retries.times do |attempt|
begin
logger.info("Attempt #{attempt + 1} to fetch Search Amazon")
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_search_amazon(
"YOUR_API_KEY",
"Search query "phone"",
"Marketplace ID "A1PA6795UKMFR9"",
"30",
"geo_location",
)
logger.info("Response: #{result}")
rescue StandardError => e
logger.error("Error: #{e.message}")
end
const fetch = require("node-fetch");
async function fetchSearchAmazon(apiKey, params, maxRetries = 3) {
const url = "https://sellermagnet-api.com/amazon-search";
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
console.log(`Attempt ${attempt + 1} to fetch Search Amazon`);
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 fetchSearchAmazon("YOUR_API_KEY", {
q: "Search query "phone"",
marketplaceId: "Marketplace ID "A1PA6795UKMFR9"",
count: "30",
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 fetchSearchAmazon(String apiKey, String q, String marketplaceId, String count, String geo_location, int maxRetries) throws Exception {
Map<String, String> params = new HashMap<>();
params.put("api_key", apiKey);
params.put("q", q);
params.put("marketplaceId", marketplaceId);
params.put("count", count);
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-search?" + query))
.timeout(java.time.Duration.ofSeconds(10))
.GET().build();
for (int attempt = 0; attempt < maxRetries; attempt++) {
try {
LOGGER.info("Attempt " + (attempt + 1) + " to fetch Search Amazon");
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.fetchSearchAmazon(
"YOUR_API_KEY",
"Search query "phone"",
"Marketplace ID "A1PA6795UKMFR9"",
"30",
"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 FetchSearchAmazon(apiKey string, q string, marketplaceId string, count 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("q", q)
params.Add("marketplaceId", marketplaceId)
params.Add("count", count)
params.Add("geo_location", geo_location)
reqURL := "https://sellermagnet-api.com/amazon-search?" + params.Encode()
for attempt := 0; attempt < maxRetries; attempt++ {
log.Printf("Attempt %d to fetch Search Amazon", 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 := FetchSearchAmazon(
"YOUR_API_KEY",
"Search query "phone"",
"Marketplace ID "A1PA6795UKMFR9"",
"30",
"geo_location",
3,
)
if err != nil {
log.Fatalf("Error: %v", err)
}
fmt.Println(string(data))
}
Curate lists of top-selling products in a category to power recommendation engines or trend analysis dashboards.
/amazon-bestsellers
Get Amazon Bestsellers
Fetch top-selling products in a specific category.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Leverage this endpoint to extract relevant Amazon data for your specific use case with production-ready code.
/amazon-deals
Get Amazon Deals
List categories with active Amazon deals.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"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
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))
}
Leverage this endpoint to extract relevant Amazon data for your specific use case with production-ready code.
/amazon-product-search-estimated-sells
Amazon Product Search Estimated Sells
Retrieve estimated sales data for an Amazon product by ASIN.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
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
{
"data": {
"asin": "B08N5WRWNW",
"estimated_monthly_sales": 121
},
"success": true
}
Production Code
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.
Authenticate
Include your API key as a query parameter (api_key=YOUR_API_KEY) in every request.
Test the API
Try the /amazon-product-lookup endpoint with a sample ASIN (e.g., B0CX23V2ZK).
Explore Endpoints
Copy the production-ready examples above into your codebase and start building.
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