Product Advertising API is deprecated: the Amazon PA-API 403
Calls to Amazon's PA-API 5 now return 403 AccessDenied. What changed, how the Creators API that replaces it differs, and why old keys stop working.
Product Advertising API is deprecated. Please migrate to Creators API using the migration guide at https://affiliate-program.amazon.com/creatorsapi/docs/en-us/migrating-to-creatorsapi-from-paapi. Short answer
Amazon product requests that return the deprecation message with 403 AccessDenied need migration to the Creators API. The replacement requires new credentials and changes to authentication, endpoints and parameter names.
Diagnosis checked 2026-11-12; sources below.Why it happens
PA-API 5 is deprecated: requests return HTTP 403 with AccessDeniedException. The replacement is the Creators API, which needs new OAuth 2.0 credentials; the old PA-API access keys do not work with it. Source: PA-API 5 deprecation notice.
Do this now
- If the data is yours or your use fits the official terms, switch to the official route: Amazon Creators API (replaced the Product Advertising API) and Selling Partner API (Limited access). No per-call price is published for the Creators API.
- For product prices and details at volume, run a hosted route instead of patching your own requests: Amazon Multi-Domain Product Price & Detail Scraper. The request below runs it with its published example input through the Apify API (your token, billed at the Store price).
- Compare every route, with fields and prices, on the Amazon page.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"productUrls": [],
"asins": [
"B09X7MPX8L"
],
"searchTerms": [],
"searchUrls": [],
"bestsellerUrls": [],
"marketplace": "auto",
"domains": [],
"language": "auto",
"currency": "auto",
"deliveryCountry": "auto",
"minRating": "any",
"dealsOnly": False,
"primeOnly": False,
"condition": "any",
"stock": "any",
"sortBy": "relevance",
"maxItems": 1,
"maxPages": 1,
"includeDetails": True,
"includeSponsored": True,
"includeVariants": False,
"includeTopReviews": False,
"includeFailed": True,
"failOnEmpty": True,
"rateLimitDelay": 0,
"proxyConfiguration": {
"useApifyProxy": True
},
"proxyCountry": "AUTO"
}
run = client.actor("nimbryxo-studio/amazon-multi-domain-product-price-and-detail").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"productUrls": [],
"asins": [
"B09X7MPX8L"
],
"searchTerms": [],
"searchUrls": [],
"bestsellerUrls": [],
"marketplace": "auto",
"domains": [],
"language": "auto",
"currency": "auto",
"deliveryCountry": "auto",
"minRating": "any",
"dealsOnly": false,
"primeOnly": false,
"condition": "any",
"stock": "any",
"sortBy": "relevance",
"maxItems": 1,
"maxPages": 1,
"includeDetails": true,
"includeSponsored": true,
"includeVariants": false,
"includeTopReviews": false,
"includeFailed": true,
"failOnEmpty": true,
"rateLimitDelay": 0,
"proxyConfiguration": {
"useApifyProxy": true
},
"proxyCountry": "AUTO"
};
const run = await client.actor("nimbryxo-studio/amazon-multi-domain-product-price-and-detail").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~amazon-multi-domain-product-price-and-detail/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"productUrls":[],"asins":["B09X7MPX8L"],"searchTerms":[],"searchUrls":[],"bestsellerUrls":[],"marketplace":"auto","domains":[],"language":"auto","currency":"auto","deliveryCountry":"auto","minRating":"any","dealsOnly":false,"primeOnly":false,"condition":"any","stock":"any","sortBy":"relevance","maxItems":1,"maxPages":1,"includeDetails":true,"includeSponsored":true,"includeVariants":false,"includeTopReviews":false,"includeFailed":true,"failOnEmpty":true,"rateLimitDelay":0,"proxyConfiguration":{"useApifyProxy":true},"proxyCountry":"AUTO"}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=nimbryxo-studio/amazon-multi-domain-product-price-and-detail",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
Open Amazon Multi-Domain Product Price & Detail Scraper in Apify Store
Routes that work for Amazon data
The official route first, then the catalogue Actors that fit this problem (product prices and details), by their published fields. Store figures are the publisher's public numbers.
| Route | Core fields | Price / 1K | Success, 30 days | Link |
|---|---|---|---|---|
| Limited accessAmazon Creators API (replaced the Product Advertising API) and Selling Partner API | not compared | below | Official docs | |
| Amazon Multi-Domain Product Price & Detail Scraper | 5/8 | $0.99 | 96% of 25 runs | Open in Apify Store |
| Amazon Search, Category & Seller Listings Extractor | 5/8 | $0.99 | 8 runs, too few to rate | Open in Apify Store |
| Amazon Best Sellers & Rankings Scraper | 6/8 | $0.99 | 8 runs, too few to rate | Open in Apify Store |
Official price: No per-call price is published for the Creators API. Compare all 20 Amazon routes.
The facts behind the error
| Fact | Value |
|---|---|
| What it means | HTTP 403 with com.amazon.paapi5#AccessDeniedException and code AccessDenied: PA-API 5 is deprecated |
| Replacement | Creators API, Amazon's REST API for publishers, influencers and affiliate partners |
| Old credentials | PA-API AWS access keys and secret keys do not work with the Creators API; new credentials are required |
| Authentication | OAuth 2.0 with a credential ID and secret; bearer tokens are valid for 1 hour |
| Endpoint | Requests move from webservices.amazon.com/paapi5 to creatorsapi.amazon/catalog/v1 |
| Parameters | Request and response parameters changed from PascalCase to lowerCamelCase |
Recognize the deprecation response
Read the error message alongside AccessDenied. When it explicitly says Product Advertising API is deprecated, follow the migration guide; retrying the same request or rotating old PA-API keys will not address the stated cause.
Replace the authentication flow
Creators API uses OAuth with a new credential ID and secret. Replace the old AWS request signing with bearer-token authentication and arrange token renewal so requests can continue after a token expires.
Update requests and response handling
Move requests to the Creators API catalog endpoint and update parameter names from PascalCase to lowerCamelCase. Review response parsing as well as request construction, because the naming change affects both directions.
When to stop fighting the error
Stop patching PA-API once the response explicitly reports deprecation. Move product prices and details retrieval to Creators API, and plan the credential, authentication and parameter changes as a single migration.
Website pages
Questions people ask
Will generating another PA-API access key fix this error?
New PA-API access keys will not fix a deprecation response. Creators API requires its own credentials.
Can the existing secret key authenticate Creators API requests?
The old PA-API secret key does not work with Creators API. Create the replacement credentials and implement its OAuth authentication flow.
Is changing the endpoint enough?
An endpoint change covers only part of the migration. Authentication and request and response parameter names also change.
Where should the migration start?
Start with Amazon's official migration guide for moving from PA-API to Creators API. Use it to update credential handling, request construction and response parsing together.
Sources
Every dated claim on this page comes from the public sources below. Check the source before you make a business decision on it.
- PA-API 5 deprecation notice — checked 2026-11-11
- Migrating to Creators API from PA-API — checked 2026-11-11
- Creators API introduction — checked 2026-11-11
Get Amazon data with a catalogue Actor
Amazon Multi-Domain Product Price & Detail Scraper returns 5 of 8 core Amazon fields at $0.99 per 1,000 results. Compare all 20 Amazon routes.