Amazon MCP Server - Product Data for AI Agents
Pricing
from $3.00 / 1,000 read operations
Amazon MCP Server - Product Data for AI Agents
Amazon MCP server for Claude, ChatGPT and Cursor. Search products and read live prices, buy-box offers, public reviews and bestseller rankings across US, UK, French and German stores, with no Amazon API key. Not affiliated with Amazon. By MrBridge (mr-bridge.com)
Pricing
from $3.00 / 1,000 read operations
Rating
0.0
(0)
Developer
MrBridge
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Amazon MCP Server
Status: public beta. Five tools, live and tested end to end against real Amazon pages. Interfaces may still change between builds, and the CHANGELOG.md says what did.
This project is not affiliated with, endorsed by, or sponsored by Amazon. "Amazon" is a trademark of Amazon.com, Inc. This is an independent tool that reads publicly visible pages.
An Apify Actor running in Standby mode that exposes public Amazon catalog data to AI agents through the Model Context Protocol. Your assistant calls a tool, gets clean typed JSON back, and can reason over it directly. It is a low-latency per-call data service, not a bulk exporter.
Quick Start
In Claude Desktop, ChatGPT, Cursor, Windsurf, Claude Code, or another MCP-compatible client, add this Streamable HTTP endpoint as a custom connector:
https://mrbridge--amazon-mcp-server.apify.actor/mcp?token=YOUR_APIFY_TOKEN
Replace YOUR_APIFY_TOKEN with your Apify API token. If your client can set
headers, send Authorization: Bearer YOUR_APIFY_TOKEN and use the bare /mcp URL
instead: a token in a query string ends up in logs and browser history.
The five tools appear once the Standby server starts. The first request after an idle period takes a few seconds while the container wakes. Then ask your assistant something like "what does ASIN B08N5WRWNW cost on Amazon UK right now?"
Or run it once, without a client
The Actor also accepts a conventional run. Fill in the Input form, start it, and it
performs a single read, writes one result to the dataset and finishes. Two
operations are available this way, amazon_search and amazon_bestsellers, which
is what makes the Actor usable as a saved Task or on a schedule.
Product, offers and reviews stay on the MCP endpoint. They bill per action, and writing their results to the dataset would bill the same call a second time.
Prefer to read the HTTP contract directly? The Actor page renders an interactive OpenAPI description of the endpoint, with request examples and documented responses.
Tools
| Tool | Input | Marketplaces | Returns |
|---|---|---|---|
amazon_search | query, marketplace, page | US, UK, DE | products with ASIN, title, price, rating, image, URL |
amazon_product | ASIN or product URL, marketplace | US, UK, FR, DE | title, brand, live price, availability, features, images, category, rating, buy-box seller |
amazon_offers | ASIN, marketplace | US, UK, FR, DE | the buy-box offer: price, seller, availability |
amazon_reviews | ASIN, marketplace | US, UK, FR, DE | publicly visible reviews, stripped of reviewer identity |
amazon_bestsellers | category, marketplace | US, UK, FR, DE | ranked product list |
Marketplaces in v1: US, UK, FR, DE, with one exception. amazon_search is not
offered on FR. That is a measurement, not a policy: on 2026-08-01 amazon.fr answered
/s with an AWS WAF challenge while the product and best-seller pages came back
clean through the same proxy country, and five spaced searches on 2026-08-09 all
failed. Asking for it returns UNSUPPORTED_MARKETPLACE immediately, with no request
made and nothing charged. The other four tools read a product page or a ranking
page, so they work normally on FR.
The same coverage is published as a machine-readable MCP resource,
amazon://marketplaces, so a client can read it rather than trust this table.
Best sellers category slugs do not carry across storefronts. electronics resolves
on US, UK and FR, while the same department on DE is ce-de. A slug is not a
translation of its label either: the "Informatique" department on amazon.fr is
computers. Amazon serves an empty page rather than a 404 for a slug that does not
exist, which this server reports as NOT_FOUND.
Prices are marketplace-local and are never converted between currencies. Every response echoes back its marketplace, currency, fetch timestamp, whether the data came from cache or from a live fetch, and whether the call was charged. Every price you receive is fetched live: nothing that carries a price is served from cache.
What this server will not do
Being explicit about the limits is more useful than discovering them mid-session.
- It does not solve CAPTCHAs. When Amazon challenges every attempt, the tool
returns a structured
BLOCKED_CAPTCHAerror and you are not charged. - It does not read anything behind a login. Amazon serves its dedicated
reviews page only to signed-in users, so reviews come from the ones displayed
publicly on the product page, with a
reviewsTruncatedflag. There is no pagination, because there is no second page to read without signing in. - It returns one offer, not the whole market. Amazon loads competing seller
offers dynamically, behind a redirect.
amazon_offersreturns the buy-box offer and setsoffersTruncated. - French coverage is partial, in one specific way. Amazon France puts its
search surface behind an AWS WAF challenge, so
amazon_searchis not offered on FR at all: it returnsUNSUPPORTED_MARKETPLACEimmediately, without fetching. It never returnsBLOCKED_CAPTCHA, because no request is made. The other four tools read the product page or a ranking page, which answer normally on FR. Any fetch on any marketplace can still meet a challenge and come back asBLOCKED_CAPTCHA. You are not charged for either outcome. - It does not return reviewer identities. Display names, profile links, avatars
and badges are dropped before the data leaves the server. Each response lists
what was removed in
redactedFields. - It does not rehost images. You get image URLs pointing at Amazon.
- It does not run a browser. Amazon's catalog pages are server-rendered, so a browser would add cost and latency for nothing.
Errors are data, not crashes
A valid call that fails comes back as a structured tool error your agent can act
on: INVALID_INPUT, NOT_FOUND, UNSUPPORTED_MARKETPLACE, BLOCKED_CAPTCHA,
RATE_LIMITED, GEO_MISMATCH, PARSE_ERROR, PROXY_ERROR, UPSTREAM_API_ERROR,
LOGIN_REQUIRED. None of them is billed, and each one says whether retrying is
worth anything.
Arguments that are not valid in the first place are refused by MCP itself, with
-32602, before any of that runs. A wrong type, a number outside its range, a
string past its maximum length, a category that is not a plain slug, or a property
the tool does not declare all land there. Nothing is fetched and nothing is
charged. The two layers answer different questions: -32602 means the call was
never well-formed, the taxonomy above means the call was fine and the world did not
cooperate.
UNSUPPORTED_MARKETPLACE is the one that never changes on a retry: the tool and
the storefront both exist, we just do not serve them together. Today that means
amazon_search on FR.
Pricing
Pay-per-event. Every call falls into one of two categories, and each is billed once per successful call that actually returned something:
- Read Operation covers
amazon_searchandamazon_bestsellers, which list a catalogue page. - Action Operation covers
amazon_product,amazon_offersandamazon_reviews, which each read a full product page.
A third event, Actor Start, is charged by Apify when the Standby container starts. It is not a per-call charge and this server never fires it from code.
Nothing is charged for a failed call, a page Amazon blocked, invalid input, a tool
and marketplace combination this server does not serve, or an empty result. Every
response says which case it was in its charged field, and carries a requestId
that also appears on the billing receipt, so a charge can always be traced back to
the exact call that produced it.
Platform usage is billed to you as well. In the current configuration you pay the per-event prices above plus your own Apify platform usage for the run, rather than a single all-inclusive event price. Both appear on your Apify bill.
Current rates for all three events, across every plan tier, are on the Pricing tab. They are not repeated here: Apify renders them from the Actor's own configuration, and a copy in this file would go stale the first time a price changes.
You can cap the spend of any run with ACTOR_MAX_TOTAL_CHARGE_USD from the Apify
Console. It bounds the total for the run across every event. Once the cap is
reached the server stops returning paid results rather than serving them free, so
the cap is a real ceiling.
Connecting
In Claude Desktop, ChatGPT, Cursor, Windsurf, Claude Code, or another MCP-compatible client, add this Streamable HTTP endpoint as a custom connector:
https://mrbridge--amazon-mcp-server.apify.actor/mcp?token=YOUR_APIFY_TOKEN
Replace YOUR_APIFY_TOKEN with your Apify API token. Clients that can set headers
should send the token as a bearer header instead and use the bare /mcp URL, which
keeps it out of logs and browser history.
The five Amazon tools become available once the Standby server starts. The first request after an idle period may take a few seconds while the container wakes.
The Actor works two ways. As an MCP server it takes no run input and serves tool
calls on the endpoint above. As a conventional run it reads the Input form and
performs a single operation, amazon_search or amazon_bestsellers, writing one
result to the dataset and finishing. Product, offers and reviews are available on
the MCP endpoint only.
FAQ
Do I need an Amazon API key? No. There is no key to get: Amazon's Product Advertising API is affiliate-gated and forbids this kind of use, which is why this server reads publicly visible pages instead. Your Apify token is the only credential involved.
Why did my first call take several seconds? Standby stops the container after five idle minutes. The next call wakes it, and that one pays the cold start. Calls after it are fast until the next idle period.
Why is amazon_search refused on FR when the other tools accept it?
Amazon France guards its search surface specifically. The refusal is immediate and
free rather than a slow failure. See the coverage note above.
Can I get all the offers for a product, not just the buy box?
Not in v1. Amazon loads competing offers dynamically, so the server-rendered page
carries only the buy box. Responses say so with offersTruncated: true.
Can I page through all the reviews?
No. Amazon serves its paginated reviews page only to signed-in users, and this
server does not sign in. You get the reviews visible to anyone, with
reviewsTruncated: true.
Are prices converted between marketplaces? Never. Every price is local to its storefront, and the response tells you which currency it is in. Comparing across marketplaces is your conversion to make.
Something is broken or a field stopped coming back. Where do I report it?
Open an issue on the
Issues tab.
Quote the requestId from the response: it ties your call to the server-side
record of it.
More tools
Built by Mr Bridge. See also the MCP servers, scrapers, and AI workflows catalogues.