A Python wrapper for Amazon's product APIs. This package supports both the legacy Product Advertising API 5.0 and the new Amazon Creators API.
Important
Migration Advisory: The amazon_paapi module is deprecated. Amazon is transitioning from the Product Advertising API (PAAPI) to the new Creators API. Please migrate to the amazon_creatorsapi module for new projects. See the Migration Guide for more information.
- π― Simple object-oriented interface for easy integration
- π Product search by keywords, categories, or browse nodes
- π¦ Product details via ASIN or Amazon URL
- π Item variations support (size, color, etc.)
- π° OffersV2 support for enhanced pricing and offer details
- π 20+ countries supported
- π‘οΈ Built-in throttling to avoid API rate limits
- π Full type hints for better IDE support
pip install python-amazon-paapi --upgradefrom amazon_creatorsapi import AmazonCreatorsApi, Country
# Initialize with your Creators API credentials
api = AmazonCreatorsApi(
credential_id="your_credential_id",
credential_secret="your_credential_secret",
version="2.2",
tag="your-affiliate-tag",
country=Country.US,
)
# Get product information by ASIN
items = api.get_items(["B01N5IB20Q"])
print(items[0].item_info.title.display_value)
# Or use Amazon URLs directly
items = api.get_items(["https://www.amazon.com/dp/B01N5IB20Q"])items = api.get_items(["B01N5IB20Q", "B01F9G43WU"])
for item in items:
print(item.images.primary.large.url)results = api.search_items(keywords="nintendo switch")
for item in results.items:
print(item.item_info.title.display_value)# Using ASIN
variations = api.get_variations("B01N5IB20Q")
# Or using Amazon URL
variations = api.get_variations("https://www.amazon.com/dp/B01N5IB20Q")
for item in variations.items:
print(item.detail_page_url)nodes = api.get_browse_nodes(["667049031"])
for node in nodes:
print(node.display_name)from amazon_creatorsapi import get_asin
asin = get_asin("https://www.amazon.com/dp/B01N5IB20Q")items = api.get_items(["B01N5IB20Q"])
item = items[0]
if item.offers_v2 and item.offers_v2.listings:
listing = item.offers_v2.listings[0]
print(listing.price.money.amount)
print(listing.merchant_info.name)Throttling value represents the wait time in seconds between API calls, being the default value 1 second. Use it to avoid reaching Amazon request limits.
amazon = AmazonCreatorsApi(ID, SECRET, VERSION, TAG, COUNTRY, throttling=4) # Makes 1 request every 4 seconds
amazon = AmazonCreatorsApi(ID, SECRET, VERSION, TAG, COUNTRY, throttling=0) # No wait time between requestsAll SDK models are re-exported through amazon_creatorsapi.models for convenient access:
from amazon_creatorsapi.models import (
Item,
Condition,
SortBy,
GetItemsResource,
SearchItemsResource,
)
# Use Condition enum for filtering
items = api.get_items(["B01N5IB20Q"], condition=Condition.NEW)
# Use SortBy enum for search ordering
results = api.search_items(keywords="laptop", sort_by=SortBy.PRICE_LOW_TO_HIGH)
# Specify which resources to retrieve
from amazon_creatorsapi.models import GetItemsResource
resources = [GetItemsResource.ITEMINFO_TITLE, GetItemsResource.OFFERS_LISTINGS_PRICE]
items = api.get_items(["B01N5IB20Q"], resources=resources)- π Full Documentation
- π Changelog
- π¬ Telegram Support Group
Contributions are welcome! To get started:
- Install uv package manager
- Clone and set up the project:
git clone https://github.com/sergioteula/python-amazon-paapi.git
cd python-amazon-paapi
uv sync
uv run pre-commit install- Copy
.env.templateto.envand add your API credentials for integration tests.
Pre-commit hooks will automatically run Ruff, mypy, and tests before each commit.
MIT License Β© 2026 Sergio Abad