Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If you are an eligible Amazon seller or developer, use Amazon’s Product Pricing API rather than treating retail-page scraping as a supported route. Amazon documents the API for seller pricing workflows, but the reviewed official sources do not establish that automated scraping of retail pages is permitted, reliable, or suitable. The right method depends on your account access and whether you need a seller offer, a Featured Offer, or another specific price measure.

Choose the right way to retrieve a price

“Amazon price” can mean different things: a seller’s offer, its shipping-inclusive landed price, the Featured Offer, or the price shown to a retail customer. These values can differ by marketplace, condition, customer type, and time. Decide which value you need before writing Python code.

Method What the official sources establish Who it may fit Important limitation
Browser-page scraping The reviewed official sources do not establish that automated retail-page scraping is permitted or stable. A use case that has separately verified applicable terms and access requirements. Do not assume a browser script is endorsed, durable, or a general-purpose pricing interface.
Seller-facing SP-API Amazon describes the Product Pricing API as retrieving catalog pricing and offer information for automated seller pricing solutions. Eligible sellers and developers with the authorization and role required for the operation. Operation, marketplace, role, and response schema determine what data you can access.
Affiliate-facing API An official search result describes an Offers resource with price, availability, and savings. Potentially affiliate-oriented projects, subject to current access and terms. Current availability and eligibility were not established; verify Amazon’s current official affiliate API documentation.

For seller workflows, begin with the Amazon Product Pricing API documentation. Amazon marks v2022-05-01 as the current version in its overview. The legacy v0 getListingOffers reference is specific to offers for one seller SKU listing, so check the current endpoint and model reference before adopting an older operation.

Check SP-API eligibility and access first

SP-API is a REST API for seller or vendor workflows. Amazon’s onboarding guidance expects basic REST API knowledge and programming experience. Creating a developer profile requires a Professional selling account and primary-account-user status, and Amazon evaluates profile details. Authorization depends on the application type: a selling partner authorizes a public application, while a private application can be self-authorized. Roles control access to individual operations.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Review the SP-API onboarding guide and the current Product Pricing API reference.
  2. Confirm that your selling account meets Amazon’s developer-profile requirements in its SP-API information for sellers.
  3. Register a developer profile and application, obtain the required authorization, and request or verify the role required by the operation.
  4. Confirm the target marketplace and the operation’s current version and input schema before building a client.

The Product Pricing API overview identifies getCompetitiveSummary and getFeaturedOfferExpectedPriceBatch as requiring the Pricing role in North America (NA), Europe (EU), and the Far East (FE). That role and regional detail applies to those listed operations; do not assume every operation has the same access requirements.

Choose an endpoint and define what “price” means

For a seller SKU’s offers

The legacy v0 getListingOffers operation returns the lowest-priced offers for one SKU listing. Its required inputs are SellerSKU, MarketplaceId, and ItemCondition. Accepted conditions are New, Used, Collectible, Refurbished, and Club. CustomerType can be Consumer or Business; it defaults to Consumer.

This operation is not a universal lookup for any ASIN or a guarantee of one canonical retail price. It concerns offers for a particular seller listing. An offer’s listing price, shipping, landed price, Featured Offer status, and availability are distinct fields or concepts. Inspect the selected operation’s response schema and preserve those distinctions in your application.

For competitive and Featured Offer data

The current Product Pricing API overview describes operations for competitive summaries and expected Featured Offer pricing. It also describes operation-specific batch use cases: up to 40 SKUs for Featured Offer Expected Price and up to 20 ASINs for featured offers. These are not generic limits for every endpoint; verify the chosen operation’s current reference before constructing a batch request.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For affiliate-oriented access

The reviewed official search result mentions an Offers resource with price, availability, and savings, but it does not establish current access, terms, or eligibility for the affiliate API. Verify those details in Amazon’s current official documentation before building around it.

Build the Python client around Amazon’s current authentication requirements

SP-API requests require Amazon’s documented authorization and request-signing process. The reviewed endpoint material is not enough to provide a complete, correct authentication implementation here, so the code below deliberately separates request construction from authentication. Do not paste it into production expecting it to work without implementing the current authentication flow described by Amazon. Avoid putting credentials or tokens directly in source code.

Use the exact host, path, required headers, and signing procedure specified in the current reference for your operation and marketplace. The legacy getListingOffers input names below illustrate the values to validate; they are not a substitute for current endpoint documentation.

import os
import requests

# Supply the endpoint host and path from the current Amazon reference.
# Implement Amazon's current SP-API authorization/signing process before use.
SP_API_URL = os.environ["SP_API_URL"]

params = {
    "MarketplaceId": os.environ["AMAZON_MARKETPLACE_ID"],
    "ItemCondition": "New",
    "CustomerType": "Consumer",
}

seller_sku = os.environ["AMAZON_SELLER_SKU"]
url = f"{SP_API_URL.rstrip('/')}/products/pricing/v0/listings/{seller_sku}/offers"

# Add the authorization and signing headers required by Amazon's current docs.
headers = {
    "Accept": "application/json",
    # "Authorization": ...,  # Use the current documented SP-API flow.
}

response = requests.get(url, params=params, headers=headers, timeout=30)

if response.status_code == 429:
    raise RuntimeError("Amazon throttled the request; reduce request frequency.")
if response.status_code in (500, 503):
    raise RuntimeError(f"Temporary Amazon service error: {response.status_code}")
response.raise_for_status()

payload = response.json()
print(payload)

This is a request-shape illustration, not a complete runnable SP-API client: authentication, signing, host selection, and any current operation changes must come from Amazon’s current documentation. In particular, the legacy v0 reference may not match the current operation or model you should use. Keep authentication in a maintained client or a narrowly scoped module rather than scattering signing logic through application code.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Handle limits, errors, and changing data

The legacy v0 getListingOffers reference gives a default usage plan of 1 request per second with a burst of 2. Amazon notes that some sellers may have a higher applied limit and that a response rate-limit header can indicate the effective usage plan. Treat the documented figure as the default for this operation only, not a universal SP-API limit.

  • 401: The endpoint reference associates this with malformed or invalid authorization. Check that the request is signed and that its authorization data is correctly formed.
  • 403: The reference lists access denied, unauthorized or expired token, and invalid signature as possible causes. Check application authorization, role access, token validity, and signing inputs.
  • 429: The request frequency exceeded the applicable limit. Reduce concurrency and pace requests according to the effective limit indicated for your operation.
  • 500 or 503: The reference documents service errors. Handle these as failures rather than interpreting them as missing offers; use a retry policy appropriate to your application and Amazon’s current guidance.

These are documented error categories, not a tested retry recipe. Record the request time, marketplace, operation, response status, and relevant rate-limit information without logging secrets. Pricing notifications are described as complementary event-driven signals to on-demand pulls; where appropriate, use them to avoid relying only on repeated polling. Store retrieval timestamps alongside the returned values so consumers know when the data was obtained.

When browser automation is—and is not—the right fallback

A browser can render a page, but the reviewed official sources do not establish that automated scraping of Amazon retail pages is permitted, stable, or an appropriate substitute for seller or affiliate APIs. This article therefore does not present a headless-browser recipe as an endorsed method. Before pursuing browser automation, independently verify the terms, permissions, and technical access that apply to your use case. A page-rendered number may also be a customer-facing display rather than the seller offer or API field your application needs.

If your task is to capture a page you are authorized to access—for example, to document your own site’s appearance—a screenshot API can avoid maintaining a browser installation. ScreenshotNeo is a website screenshot API and MCP server; it is not an Amazon pricing API and does not grant permission to scrape Amazon.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Or skip the browser setup

For an authorized page-capture task, ScreenshotNeo takes a URL in one GET request and returns a screenshot or PDF. See the ScreenshotNeo API documentation for parameters and output options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
  • It accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off.
  • Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; responses identify the page verdict and billing status in headers.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
  • The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is on every plan.

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common implementation failures

Authorization succeeds in one environment but not another

Compare the application authorization, token status, role access, marketplace, and signature inputs across environments. A 403 can indicate access or signature problems, not just a missing permission.

Requests work briefly, then return 429

Reduce concurrency and use measured pacing. Check the response’s rate-limit header for the effective plan; the legacy operation’s 1-request-per-second default with burst 2 is not guaranteed to be your account’s limit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The returned value does not match a storefront display

Check whether you are comparing a seller offer with a Featured Offer or customer-facing price. Also align marketplace, condition, and customer type, and inspect whether shipping or availability affects the comparison.

The old endpoint example does not match the current API

getListingOffers is documented under legacy v0, whereas Amazon’s overview marks v2022-05-01 as the current Product Pricing API version. Recheck the operation name, request model, response schema, and required role in the current reference before changing production code.

Frequently Asked Questions

Can Python retrieve Amazon prices without a seller account?

The reviewed sources establish the seller-facing SP-API route, not a general-purpose public retail-price endpoint. An affiliate Offers resource is mentioned, but its current availability and access terms need to be verified with Amazon.

Does getListingOffers return an ASIN’s single Amazon price?

No. The legacy operation describes the lowest-priced offers for one seller SKU listing; it should not be treated as one universal price for an ASIN.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I use a screenshot service to extract Amazon prices?

A screenshot service captures page output; it is not a pricing API and does not establish permission to scrape a retail page. Use only for a page-capture task you are authorized to perform.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.