Spaces:
Sleeping
Sleeping
from typing import Dict, Optional | |
from agent.tools.data_providers.RapidDataProviderBase import RapidDataProviderBase, EndpointSchema | |
class AmazonProvider(RapidDataProviderBase): | |
def __init__(self): | |
endpoints: Dict[str, EndpointSchema] = { | |
"search": { | |
"route": "/search", | |
"method": "GET", | |
"name": "Amazon Product Search", | |
"description": "Search for products on Amazon with various filters and parameters.", | |
"payload": { | |
"query": "Search query (supports both free-form text queries or a product asin)", | |
"page": "Results page to return (default: 1)", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"sort_by": "Return the results in a specific sort order (RELEVANCE, LOWEST_PRICE, HIGHEST_PRICE, REVIEWS, NEWEST, BEST_SELLERS)", | |
"product_condition": "Return products in a specific condition (ALL, NEW, USED, RENEWED, COLLECTIBLE)", | |
"is_prime": "Only return prime products (boolean)", | |
"deals_and_discounts": "Return deals and discounts in a specific condition (NONE, ALL_DISCOUNTS, TODAYS_DEALS)", | |
"category_id": "Find products in a specific category / department (optional)", | |
"category": "Filter by specific numeric Amazon category (optional)", | |
"min_price": "Only return product offers with price greater than a certain value (optional)", | |
"max_price": "Only return product offers with price lower than a certain value (optional)", | |
"brand": "Find products with a specific brand (optional)", | |
"seller_id": "Find products sold by specific seller (optional)", | |
"four_stars_and_up": "Return product listings with ratings of 4 stars & up (optional)", | |
"additional_filters": "Any filters available on the Amazon page but not part of this endpoint's parameters (optional)" | |
} | |
}, | |
"product-details": { | |
"route": "/product-details", | |
"method": "GET", | |
"name": "Amazon Product Details", | |
"description": "Get detailed information about specific Amazon products by ASIN.", | |
"payload": { | |
"asin": "Product ASIN for which to get details. Supports batching of up to 10 ASINs in a single request, separated by comma.", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"more_info_query": "A query to search and get more info about the product as part of Product Information, Customer Q&As, and Customer Reviews (optional)", | |
"fields": "A comma separated list of product fields to include in the response (field projection). By default all fields are returned. (optional)" | |
} | |
}, | |
"products-by-category": { | |
"route": "/products-by-category", | |
"method": "GET", | |
"name": "Amazon Products by Category", | |
"description": "Get products from a specific Amazon category.", | |
"payload": { | |
"category_id": "The Amazon category for which to return results. Multiple category values can be separated by comma.", | |
"page": "Page to return (default: 1)", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"sort_by": "Return the results in a specific sort order (RELEVANCE, LOWEST_PRICE, HIGHEST_PRICE, REVIEWS, NEWEST, BEST_SELLERS)", | |
"min_price": "Only return product offers with price greater than a certain value (optional)", | |
"max_price": "Only return product offers with price lower than a certain value (optional)", | |
"product_condition": "Return products in a specific condition (ALL, NEW, USED, RENEWED, COLLECTIBLE)", | |
"brand": "Only return products of a specific brand. Multiple brands can be specified as a comma separated list (optional)", | |
"is_prime": "Only return prime products (boolean)", | |
"deals_and_discounts": "Return deals and discounts in a specific condition (NONE, ALL_DISCOUNTS, TODAYS_DEALS)", | |
"four_stars_and_up": "Return product listings with ratings of 4 stars & up (optional)", | |
"additional_filters": "Any filters available on the Amazon page but not part of this endpoint's parameters (optional)" | |
} | |
}, | |
"product-reviews": { | |
"route": "/product-reviews", | |
"method": "GET", | |
"name": "Amazon Product Reviews", | |
"description": "Get customer reviews for a specific Amazon product by ASIN.", | |
"payload": { | |
"asin": "Product asin for which to get reviews.", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"page": "Results page to return (default: 1)", | |
"sort_by": "Return reviews in a specific sort order (TOP_REVIEWS, MOST_RECENT)", | |
"star_rating": "Only return reviews with a specific star rating (ALL, 5_STARS, 4_STARS, 3_STARS, 2_STARS, 1_STARS, POSITIVE, CRITICAL)", | |
"verified_purchases_only": "Only return reviews by reviewers who made a verified purchase (boolean)", | |
"images_or_videos_only": "Only return reviews containing images and / or videos (boolean)", | |
"current_format_only": "Only return reviews of the current format (product variant - e.g. Color) (boolean)" | |
} | |
}, | |
"seller-profile": { | |
"route": "/seller-profile", | |
"method": "GET", | |
"name": "Amazon Seller Profile", | |
"description": "Get detailed information about a specific Amazon seller by Seller ID.", | |
"payload": { | |
"seller_id": "The Amazon Seller ID for which to get seller profile details", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"fields": "A comma separated list of seller profile fields to include in the response (field projection). By default all fields are returned. (optional)" | |
} | |
}, | |
"seller-reviews": { | |
"route": "/seller-reviews", | |
"method": "GET", | |
"name": "Amazon Seller Reviews", | |
"description": "Get customer reviews for a specific Amazon seller by Seller ID.", | |
"payload": { | |
"seller_id": "The Amazon Seller ID for which to get seller reviews", | |
"country": "Sets the Amazon domain, marketplace country, language and currency (default: US)", | |
"star_rating": "Only return reviews with a specific star rating or positive / negative sentiment (ALL, 5_STARS, 4_STARS, 3_STARS, 2_STARS, 1_STARS, POSITIVE, CRITICAL)", | |
"page": "The page of seller feedback results to retrieve (default: 1)", | |
"fields": "A comma separated list of seller review fields to include in the response (field projection). By default all fields are returned. (optional)" | |
} | |
} | |
} | |
base_url = "https://real-time-amazon-data.p.rapidapi.com" | |
super().__init__(base_url, endpoints) | |
if __name__ == "__main__": | |
from dotenv import load_dotenv | |
load_dotenv() | |
tool = AmazonProvider() | |
# Example for product search | |
search_result = tool.call_endpoint( | |
route="search", | |
payload={ | |
"query": "Phone", | |
"page": 1, | |
"country": "US", | |
"sort_by": "RELEVANCE", | |
"product_condition": "ALL", | |
"is_prime": False, | |
"deals_and_discounts": "NONE" | |
} | |
) | |
print("Search Result:", search_result) | |
# Example for product details | |
details_result = tool.call_endpoint( | |
route="product-details", | |
payload={ | |
"asin": "B07ZPKBL9V", | |
"country": "US" | |
} | |
) | |
print("Product Details:", details_result) | |
# Example for products by category | |
category_result = tool.call_endpoint( | |
route="products-by-category", | |
payload={ | |
"category_id": "2478868012", | |
"page": 1, | |
"country": "US", | |
"sort_by": "RELEVANCE", | |
"product_condition": "ALL", | |
"is_prime": False, | |
"deals_and_discounts": "NONE" | |
} | |
) | |
print("Category Products:", category_result) | |
# Example for product reviews | |
reviews_result = tool.call_endpoint( | |
route="product-reviews", | |
payload={ | |
"asin": "B07ZPKN6YR", | |
"country": "US", | |
"page": 1, | |
"sort_by": "TOP_REVIEWS", | |
"star_rating": "ALL", | |
"verified_purchases_only": False, | |
"images_or_videos_only": False, | |
"current_format_only": False | |
} | |
) | |
print("Product Reviews:", reviews_result) | |
# Example for seller profile | |
seller_result = tool.call_endpoint( | |
route="seller-profile", | |
payload={ | |
"seller_id": "A02211013Q5HP3OMSZC7W", | |
"country": "US" | |
} | |
) | |
print("Seller Profile:", seller_result) | |
# Example for seller reviews | |
seller_reviews_result = tool.call_endpoint( | |
route="seller-reviews", | |
payload={ | |
"seller_id": "A02211013Q5HP3OMSZC7W", | |
"country": "US", | |
"star_rating": "ALL", | |
"page": 1 | |
} | |
) | |
print("Seller Reviews:", seller_reviews_result) | |