amazon-global-prices▌
amazon.com/amazon-global-prices-nf9q4d · updated May 21, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Compare an Amazon product (query or ASIN) across multiple country storefronts (.com, .co.uk, .de, .co.jp, .fr, .it, .es, .ca, .com.au, .com.mx) and return per-country price, currency, title, and product URL in local currency. Handles the storefront-TLD-selects-catalog-but-not-currency trap by explicitly setting delivery address + language/currency preference on each storefront before extracting prices.
| name | amazon-global-prices |
| title | Amazon Global Price Comparison |
| description | >- Compare an Amazon product (query or ASIN) across multiple country storefronts (.com, .co.uk, .de, .co.jp, .fr, .it, .es, .ca, .com.au, .com.mx) and return per-country price, currency, title, and product URL in local currency. Handles the storefront-TLD-selects-catalog-but-not-currency trap by explicitly setting delivery address + language/currency preference on each storefront before extracting prices. |
| website | amazon.com |
| category | shopping |
| tags | - amazon - shopping - price-comparison - international - read-only - stagehand |
| source | 'browserbase: agent-runtime 2026-05-20' |
| updated | '2026-05-20' |
| recommended_method | browser |
| alternative_methods | - method: browser rationale: >- No public Amazon API exposes per-country listing prices. Each storefront must be visited, have its delivery address + language/currency preference set (otherwise prices display in USD with Global Store import fees, not local currency), then parsed from search-results or /dp/<ASIN> HTML. Stagehand extract with a Zod schema is the recommended extraction layer; raw HTML regex on data-asin blocks is the fallback. |
| verified | true |
| proxies | true |
Amazon Global Price Comparison
Purpose
Given a product query (or ASIN) and a list of country codes, return the same product's price in each country's local Amazon storefront, in the local currency. For each country, the skill returns { country, storefront, currency, price, price_raw, title, asin, url }. Read-only — never adds to cart, never submits an order.
When to Use
- Cross-border price-shopping for an electronics/book/grocery item (US vs UK vs DE vs JP vs CA, etc.).
- Arbitrage research: where is product X cheapest after setting delivery to a local address?
- Daily/weekly price-watch monitoring across regions for one ASIN.
- Any flow that needs local-currency, locally-delivered prices rather than the "international shopper, prices in USD with import deposit" default that Amazon shows to US-IP visitors of foreign storefronts.
Workflow
The per-storefront flow is browser-driven — there is no public Amazon API the marketplace exposes for this. Two non-obvious things this skill must get right:
- Storefront TLD selects the catalog (
.de,.co.uk,.co.jp, …) but does NOT select the currency. Currency follows the delivery address set on that storefront's session, not the IP and not the TLD. A freshamazon.desession opened from any non-EU IP defaults to "Deliver to United States" and prices the catalog in USD with Global Store import fees baked in, not EUR. This is the single most common failure mode and must be corrected before extracting prices. - Browserbase
proxies.geolocation.countryis not reliably honored. A session created withproxies: [{type: "browserbase", geolocation: {country: "DE"}}]still routes through AWS Oregon (US) IPs in our testing — the storefront sees a US IP regardless. So--proxiesis useful for general anti-bot evasion, but do not rely on the proxy alone to get local pricing. Always set the delivery address explicitly.
1. Create a Browserbase session per country (or one session reused sequentially)
SID=$(browse cloud sessions create --keep-alive --verified --proxies \
| node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s).id))")
export BROWSE_SESSION="$SID"
--verified + --proxies gives stealth + the residential-proxy pool. Parallel sessions (one per country) are preferred for throughput; sequential session-reuse works but each storefront needs its own location/language setup because preferences are cookie-scoped per TLD.
2. For each country, set delivery location and currency on its storefront
Amazon storefronts cookie-scope language + currency + ship-to address per TLD. Do the setup once per storefront per session, then search. Skipping this step yields USD prices on amazon.de/.co.uk/.co.jp/etc. and is the #1 source of bad data.
| Country | TLD | Postal code (working) | Currency | Language code |
|---|---|---|---|---|
| US | amazon.com | (default — no setup) | USD | en_US |
| UK | amazon.co.uk | SW1A 1AA | GBP | en_GB |
| DE | amazon.de | 10115 | EUR | de_DE |
| FR | amazon.fr | 75001 | EUR | fr_FR |
| IT | amazon.it | 20121 | EUR | it_IT |
| ES | amazon.es | 28001 | EUR | es_ES |
| JP | amazon.co.jp | 100-0001 | JPY | ja_JP |
| CA | amazon.ca | M5H 2N2 | CAD | en_CA |
| AU | amazon.com.au | 2000 | AUD | en_AU |
| MX | amazon.com.mx | 01000 | MXN | es_MX |
Steps (verified flow for amazon.de, structure is identical across non-US TLDs):
browse open "https://www.amazon.de/" --remote --session "$SID"
browse wait load --remote --session "$SID"
browse wait timeout 1500 --remote --session "$SID"
# Cookie banner — only first visit. Snapshot and click the Accept button if present.
# Look for: button: Accept (dialog "Cookies and Advertising Choices")
# Skip if no dialog.
# Open delivery-location modal — header has a button labeled "Deliver to <country>"
browse snapshot --remote --session "$SID" # find ref of "button: Deliver to <X>"
browse click "@<ref>" --remote --session "$SID"
browse wait timeout 1500 --remote --session "$SID"
# Modal exposes "or enter a postal code in <Country>" textbox + Apply button
browse snapshot --remote --session "$SID" # find textbox ref + Apply button ref
browse fill "@<textbox-ref>" "10115" --remote --session "$SID"
browse wait timeout 500 --remote --session "$SID"
browse click "@<apply-ref>" --remote --session "$SID"
browse wait timeout 2500 --remote --session "$SID"
# Set language + currency via preferences page (avoids USD-display-in-English)
browse open "https://www.amazon.de/customer-preferences/edit?language=de_DE" \
--remote --session "$SID"
browse wait load --remote --session "$SID"
browse snapshot --remote --session "$SID" # find "radio: Deutsch - DE", "radio: € - EUR …", "button: Save changes"
browse click "@<deutsch-radio>" --remote --session "$SID"
browse click "@<eur-radio>" --remote --session "$SID"
browse click "@<save-changes>" --remote --session "$SID"
browse wait timeout 2500 --remote --session "$SID"
After this, the session is configured for German prices in EUR. Verify by reading glow-ingress-line2 from the page HTML — it should show a city in the target country, not "United States".
3. Search and extract
browse open "https://www.amazon.de/s?k=$(printf %s "$QUERY" | jq -sRr @uri)" \
--remote --session "$SID"
browse wait load --remote --session "$SID"
browse wait timeout 2500 --remote --session "$SID"
browse get html body --remote --session "$SID" > /tmp/page.json
OR open the product detail page if you already have the ASIN: https://www.amazon.{tld}/dp/{ASIN}.
Parse the search-results HTML. Each card is wrapped in <div data-asin="B0XXXXXXXX" data-component-type="s-search-result" ...>. Within each block, harvest:
| Field | Source |
|---|---|
| asin | data-asin attribute |
| title | <h2><span>{title}</span></h2> or aria-label="…" on the <h2> (look for class="a-size-medium ... a-text-normal") |
| price (display) | <span class="a-offscreen">…</span> — full formatted string, e.g. "226,07 €", "$159.99", "£199.99", "¥34,980" |
| currency symbol | <span class="a-price-symbol">…</span> — € / £ / $ / ¥. NOTE: when currency is mis-set to USD on a foreign storefront, this span contains the literal string "USD" instead of $ — this is the canary for "you forgot to set delivery+currency." |
| price (numeric) | <span class="a-price-whole">{whole}</span><span class="a-price-fraction">{frac}</span> |
| url | <a class="a-link-normal …" href="/-/en/Amazon/dp/B0…/ref=sr_1_…">… — strip ?… query, prepend storefront origin |
Stagehand extract with Zod schema (alternative to manual HTML parsing — recommended for production):
import { Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod";
const result = await stagehand.page.extract({
instruction:
"Extract the first non-sponsored, non-Amazon-Device search result " +
"that matches the product query. Return ASIN, title, currency symbol, " +
"numeric price (combine whole + fraction), and product detail page URL.",
schema: z.object({
asin: z.string().regex(/^B0[A-Z0-9]{8}$/),
title: z.string(),
currency: z.enum(["USD","EUR","GBP","JPY","CAD","AUD","MXN"]),
price: z.number().positive(),
price_raw: z.string(),
url: z.string().url(),
}),
});
Stagehand's extract reads the rendered DOM (not just the raw HTML), so it transparently handles the lazy-loaded a-price blocks that sometimes are absent from the initial browse get html body snapshot. Pair with the location+currency setup above.
4. Normalize and aggregate
For each country, normalize the a-price-symbol + numeric whole/fraction into ISO-4217 currency codes (€ → EUR, £ → GBP, ¥ → JPY, $ → USD on amazon.com/amazon.ca/amazon.com.au — disambiguate by TLD), and floating-point price. Concatenate into a single result envelope.
5. Release sessions
browse cloud sessions update "$SID" --status REQUEST_RELEASE
Site-Specific Gotchas
- Storefront TLD selects catalog, NOT currency. amazon.de from a US IP defaults to "Deliver to United States" and displays USD (with Global Store import fees) regardless of TLD. Always set the delivery address per storefront before reading prices. The
a-price-symbolspan literally contains the string"USD"(not$) on a mis-configured foreign storefront — use that as a self-check before emitting results. - Browserbase proxy
geolocation.countryis not reliably honored:proxies: [{type: "browserbase", geolocation: {country: "DE"}}]still routed through AWS Oregon IPs in our 2026-05-20 testing —ipinfo.io/jsonreturnedcountry: US, city: Boardmanfrom the proxied session. Setting the storefront's delivery address explicitly is the only reliable path to local-currency prices. Don't trust the proxy country flag. - Preferences are cookie-scoped per TLD, NOT shared across storefronts. A session that has been set up for amazon.de (Berlin + EUR) still defaults to "United States / USD" when opening amazon.co.uk — you must run the setup flow once per storefront. Parallel sessions (one per country) avoid this serialization.
- First search result is often an Amazon Device (Kindle, Echo, Fire TV) with no price displayed — the
data-cy="price-recipe"block is empty and the card shows a "Learn More" CTA instead of a price. Skip and use the next result that matches the query. This is consistent across .com / .de / .co.uk / .co.jp. - Sponsored results are interleaved. Amazon mixes third-party sponsored listings (e.g. JBL/HyperX in a Sony search) ahead of the literal match. Filter by matching query tokens against the title before emitting. Sponsored cards have the same
data-asinstructure — there's no cheap "is-sponsored" attribute on the outer div; the<span>Sponsored</span>label appears nested inside. - Markdown body extraction (
browse get markdown body) often drops the<span class="a-offscreen">price text — the markdown converter strips visually-hidden spans. Usebrowse get html bodyand regex ondata-asinblocks, or use Stagehandextractagainst the live DOM. a-offscreenmay contain the title instead of the price when the price block hasn't rendered yet — Amazon usesa-offscreenfor multiple screen-reader fallbacks. Always cross-checka-price-symbol+a-price-whole+a-price-fractionagainsta-offscreen— ifa-offscreendoesn't start with a currency symbol/code, ignore it.- Cookie consent banner blocks DOM interaction on first visit for EU storefronts (DE/UK/FR/IT/ES). Snapshot for
dialog: Cookies and Advertising Choicesand clickbutton: Accept(or Decline — both unblock the page). The banner does NOT auto-dismiss on navigation; it must be clicked. /customer-preferences/edit?language=<lc>is the canonical language+currency setter. The query-string-only trick (https://www.amazon.de/?language=de_DE¤cy=EUR) does NOT persist preferences — it sets one-shot URL params that don't survive navigation. The preferences page is the only reliable persistent setter we found.- Postal codes — accept format varies. DE/FR/IT/ES/JP/AU accept numeric ZIPs. UK requires alphanumeric postcode with space (
SW1A 1AA). CA requires alphanumeric with space (M5H 2N2). MX accepts numeric. JP accepts numeric with optional dash (100-0001or1000001). amazon.comdefaults to USD without setup. Don't run the location/currency flow on amazon.com unless you actually need a non-US delivery zip — it works out of the box.- Amazon shows "Deliver to" location in the header via
<span id="glow-ingress-line2">…</span>— read this to verify the location was applied correctly. If it still says "United States" after you tried to set DE, the modal click didn't take and the session will yield USD prices. - Product detail page (
/dp/{ASIN}) is more reliable for single-ASIN price lookup than search — it skips the sponsored-result filtering and the "first result is a device with no price" problem. Use/dp/when you already have an ASIN. - JPY prices have no decimal fraction —
a-price-fractionis absent on amazon.co.jp. Treata-price-wholeas the full integer price. - EU price formatting uses comma as decimal separator:
226,07 €(not226.07 €). Normalize before parsing to float. - Each storefront-setup adds ~6–10 seconds of wall time (load home → accept cookies → open modal → fill ZIP → apply → load prefs → click 3 radios → save → reload). Budget ~15 seconds per country including the actual search. For 5 countries, sequential = ~75s, parallel = ~15s.
- Don't trust the inferred currency from TLD alone for amazon.com vs amazon.ca vs amazon.com.au — all three use
$asa-price-symbol. Map currency by TLD, never by symbol:.com → USD,.ca → CAD,.com.au → AUD,.com.mx → MXN. Same for¥:.co.jp → JPY(not CNY).
Expected Output
{
"success": true,
"query": "Sony WH-1000XM5",
"results": [
{
"country": "US",
"storefront": "amazon.com",
"currency": "USD",
"price": 328.00,
"price_raw": "$328.00",
"title": "Sony WH-1000XM5 Wireless Industry Leading Noise Canceling Headphones",
"asin": "B09Y2MYL5C",
"url": "https://www.amazon.com/dp/B09Y2MYL5C"
},
{
"country": "DE",
"storefront": "amazon.de",
"currency": "EUR",
"price": 226.07,
"price_raw": "226,07 €",
"title": "Sony WH-1000XM5 Kabelloser Premium-Kopfhörer mit Noise Cancelling",
"asin": "B0BXM22X99",
"url": "https://www.amazon.de/dp/B0BXM22X99"
},
{
"country": "UK",
"storefront": "amazon.co.uk",
"currency": "GBP",
"price": 199.99,
"price_raw": "£199.99",
"title": "Sony WH-1000XM5 Wireless Noise Cancelling Headphones",
"asin": "B09Y2MYL5C",
"url": "https://www.amazon.co.uk/dp/B09Y2MYL5C"
},
{
"country": "JP",
"storefront": "amazon.co.jp",
"currency": "JPY",
"price": 34980,
"price_raw": "¥34,980",
"title": "ソニー ワイヤレスノイズキャンセリングヘッドホン WH-1000XM5",
"asin": "B0B2GHTL3X",
"url": "https://www.amazon.co.jp/dp/B0B2GHTL3X"
}
],
"error_reasoning": null
}
Per-country failure mode (continues other countries):
{
"country": "DE",
"error": "currency_misconfigured",
"detail": "After delivery-location setup, a-price-symbol still returned 'USD' — verify postal code applied (glow-ingress-line2 was still 'United States'). No price emitted for this country."
}
Other documented per-country error reasons:
"captcha"— Amazon CAPTCHA wall (rare with--verified --proxies; document if hit)"no_results"— search returned zero matches in the storefront (e.g. product not sold there)"only_amazon_device_results"— all top-N matches were Amazon Devices with no price; need a more specific query"sponsored_only"— top-N were all sponsored 3rd-party items not matching the query"location_modal_not_found"— couldn't find thebutton: Deliver to <X>ref (Amazon A/B test variant)
Full-flow failure:
{ "success": false, "query": "…", "results": [], "error_reasoning": "Session creation failed: …" }
How to use amazon-global-prices on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add amazon-global-prices
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches amazon-global-prices from GitHub repository amazon.com/amazon-global-prices-nf9q4d and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate amazon-global-prices. Access the skill through slash commands (e.g., /amazon-global-prices) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
Task Automation & Efficiency
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Knowledge Enhancement
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Quality Improvement
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client with skill support
- ›Clear understanding of task or problem to solve
- ›Willingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Installation Steps
- 1.Install skill using provided installation command
- 2.Test with simple use case relevant to your work
- 3.Evaluate output quality and relevance
- 4.Iterate on prompts to improve results
- 5.Integrate into regular workflow if valuable
Common Pitfalls
- ⚠Expecting perfect results without iteration
- ⚠Not providing enough context in prompts
- ⚠Using skill for tasks outside its intended scope
- ⚠Accepting outputs without review and validation
Best Practices▌
✓ Do
- +Start with clear, specific prompts
- +Provide relevant context and constraints
- +Review and refine all outputs before using
- +Iterate to improve output quality
- +Document successful prompt patterns
✗ Don't
- −Don't use without understanding skill limitations
- −Don't skip validation of outputs
- −Don't share sensitive information in prompts
- −Don't expect skill to replace human judgment
💡 Pro Tips
- ★Be specific about desired format and style
- ★Ask for multiple options to choose from
- ★Request explanations to understand reasoning
- ★Combine AI efficiency with human expertise
When to Use This▌
✓ Use When
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid When
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path▌
- 1Familiarize yourself with skill capabilities and limitations
- 2Start with low-risk, non-critical tasks
- 3Progress to more complex and valuable use cases
- 4Build expertise through regular use and experimentation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.7★★★★★56 reviews- ★★★★★Aisha Yang· Dec 24, 2024
amazon-global-prices is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Mei Brown· Dec 24, 2024
Useful defaults in amazon-global-prices — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Nikhil Jain· Dec 20, 2024
amazon-global-prices reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Aditi Shah· Dec 16, 2024
We added amazon-global-prices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Chaitanya Patil· Dec 8, 2024
Keeps context tight: amazon-global-prices is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Hassan Agarwal· Dec 8, 2024
I recommend amazon-global-prices for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Piyush G· Nov 27, 2024
amazon-global-prices has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Aanya Wang· Nov 27, 2024
amazon-global-prices reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Mia Rao· Nov 19, 2024
We added amazon-global-prices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Aditi Kapoor· Nov 15, 2024
Solid pick for teams standardizing on skills: amazon-global-prices is focused, and the summary matches what you get after install.
showing 1-10 of 56