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.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionamazon-global-pricesExecute the skills CLI command in your project's root directory to begin installation:
Fetches amazon-global-prices from amazon.com/amazon-global-prices-nf9q4d and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate amazon-global-prices. Access via /amazon-global-prices in your agent's command palette.
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 environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| 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 |
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.
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:
.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 fresh amazon.de session 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.proxies.geolocation.country is not reliably honored. A session created with proxies: [{type: "browserbase", geolocation: {country: "DE"}}] still routes through AWS Oregon (US) IPs in our testing — the storefront sees a US IP regardless. So --proxies is useful for general anti-bot evasion, but do not rely on the proxy alone to get local pricing. Always set the delivery address explicitly.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.
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".
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.
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.
browse cloud sessions update "$SID" --status REQUEST_RELEASE
a-price-symbol span literally contains the string "USD" (not $) on a mis-configured foreign storefront — use that as a self-check before emitting results.geolocation.country is not reliably honored: proxies: [{type: "browserbase", geolocation: {country: "DE"}}] still routed through AWS Oregon IPs in our 2026-05-20 testing — ipinfo.io/json returned country: US, city: Boardman from 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.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.data-asin structure — there's no cheap "is-sponsored" attribute on the outer div; the <span>Sponsored</span> label appears nested inside.browse get markdown body) often drops the <span class="a-offscreen"> price text — the markdown converter strips visually-hidden spans. Use browse get html body and regex on data-asin blocks, or use Stagehand extract against the live DOM.a-offscreen may contain the title instead of the price when the price block hasn't rendered yet — Amazon uses a-offscreen for multiple screen-reader fallbacks. Always cross-check a-price-symbol + a-price-whole + a-price-fraction against a-offscreen — if a-offscreen doesn't start with a currency symbol/code, ignore it.dialog: Cookies and Advertising Choices and click button: 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.SW1A 1AA). CA requires alphanumeric with space (M5H 2N2). MX accepts numeric. JP accepts numeric with optional dash (100-0001 or 1000001).amazon.com defaults 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.<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./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.a-price-fraction is absent on amazon.co.jp. Treat a-price-whole as the full integer price.226,07 € (not 226.07 €). Normalize before parsing to float.$ as a-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).{
"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 the button: Deliver to <X> ref (Amazon A/B test variant)Full-flow failure:
{ "success": false, "query": "…", "results": [], "error_reasoning": "Session creation failed: …" }
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ 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.
amazon.com/search-products-5170mf
ruwangi.com/ruwangi-parfum-laki-laki-ko0z5t
robdefeo/agent-skills
booking.com/search-hotels-asq6cc
claude-office-skills/skills
nav.com/get-smb-funding-2s1rpm
amazon-global-prices is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in amazon-global-prices — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
amazon-global-prices reduced setup friction for our internal harness; good balance of opinion and flexibility.
We added amazon-global-prices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Keeps context tight: amazon-global-prices is the kind of skill you can hand to a new teammate without a long onboarding doc.
I recommend amazon-global-prices for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
amazon-global-prices has been reliable in day-to-day use. Documentation quality is above average for community skills.
amazon-global-prices reduced setup friction for our internal harness; good balance of opinion and flexibility.
We added amazon-global-prices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
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