To get Amazon Australia product data, call the SellerMagnet API with marketplaceId=A39IBJ37TRP1C6: the request goes to amazon.com.au and prices come back in AUD. Offers, product lookup, search, deals, bestsellers and seller feedback all answer for amazon.com.au. Price history, sales estimates and the ASIN converter do not; they reject amazon.com.au with a free 400. Unlike amazon.se, listedSinceDate from /amazon-product-lookup works normally on amazon.com.au, because the backend's "Date First Available" label matching does recognise the English-language label.
Key Takeaways
- amazon.com.au is marketplace A39IBJ37TRP1C6 and is priced in AUD.
- Six endpoints answer on amazon.com.au; statistics, estimated sales and the converter return a free 400 and no data, the same gate amazon.se and amazon.ie hit.
listedSinceDateis populated normally on amazon.com.au: the label-matching list has an English entry, so the English "Date First Available" label on amazon.com.au matches, unlike the Swedish label on amazon.se.- amazon.com.au has its own bestseller category tree; it is not aliased to another marketplace.
- The default delivery postcode (geo_location) for amazon.com.au is 2601; pass a different Australian postcode to check a different area.
What is different about the Amazon Australia API?
The request format is the same as for every other store: GET, query parameters, the key in the X-Api-Key header. What changes are a few values, the endpoint coverage and the default delivery postcode. The API resolves the amazon.com.au domain itself and reads prices in Australian dollars, so the decimal values you get back are plain numbers in AUD.
| Item | amazon.com.au |
|---|---|
| Marketplace ID | A39IBJ37TRP1C6 |
| Store | amazon.com.au |
| Currency | AUD (Australian Dollar) |
| Default geo_location (postcode) | 2601 (Canberra) |
| listedSinceDate | populated normally (English date phrase matched) |
| Bestseller category tree | amazon.com.au's own tree |
| History endpoints | free 400, no data |
The amazon.com.au entry of /amazon-get-marketplaces (data is keyed by marketplace ID)
{
"A39IBJ37TRP1C6": {
"marketplace_domain": "amazon.com.au",
"marketplace_name": "Amazon AU",
"currency_code": "AUD",
"currency_name": "Australian Dollar",
"currency_symbol": "A$",
"geo_location": "2601"
}
}
Which endpoints work on amazon.com.au?
Six of the ten endpoints only check that the marketplace ID is valid, so they answer on all 23 marketplaces, amazon.com.au included. The three history endpoints read a data source that covers only 11 marketplaces and turn every other one away before the credit is taken: amazon.com.au gets a 400 with the message "This endpoint is not available for the requested marketplace" followed by the list of supported stores. That call costs nothing, but it returns no data either.

Why does listedSinceDate work on amazon.com.au but not amazon.se?
productInfo.listedSinceDate is set by matching the page's "Date First Available" label text against a single hardcoded phrase list shared by every marketplace. That list has an entry for English, among others, and amazon.com.au shows the same English-language label as amazon.com, so the match succeeds and listedSinceDate comes back populated like on any other English-language store. amazon.se shows the label in Swedish, which has no entry in that list, so the same field is always null there. Treat listedSinceDate as reliable on amazon.com.au, but check the Amazon Sweden guide before relying on it for every marketplace.
How do I compare amazon.com.au with amazon.com in Python?
The script below reads listedSinceDate for one ASIN on both stores, then reads the live offers of three ASINs on each store side by side, and prints each store's default delivery postcode. It skips anything that is not a 10-character ASIN before paying, because the offers endpoint bills a malformed ASIN like any other request, and it stops the whole run on a 401/403 instead of looping. It uses sellermagnet.py (ApiError, new_session) and retry.py (get_with_retry) from the Python quickstart.
au_vs_us.py - the same ASINs on amazon.com.au and amazon.com
"""Amazon Australia (amazon.com.au) product check: history coverage and default delivery postcode, next to amazon.com.
amazon.com.au is marketplace A39IBJ37TRP1C6, priced in AUD. Two things to know before building on it:
1. amazon.com.au is NOT one of the 11 marketplaces with full price-history support (the SellerMagnetAPILambda
config has no amazon.com.au entry in its history-domain map), so /amazon-product-statistics, estimated sales
and the ASIN converter all answer it with a free 400 "This endpoint is not available for the requested
marketplace", the same gate amazon.se and amazon.ie hit.
2. Unlike amazon.se, amazon.com.au does NOT have a listedSinceDate gap: productInfo.listedSinceDate comes from
matching the page's "Date First Available" label against a shared, hardcoded phrase list
(SellerMagnetAPILambda language_translation.py date_phrases), and that list has an English entry
("date first available"), the same label amazon.com.au and amazon.com both show. So listedSinceDate is
populated normally on amazon.com.au, exactly like on amazon.com.
Helpers: sellermagnet.py and retry.py from https://sellermagnet-api.com/blog/amazon-product-api-python
"""
import re
import requests
from retry import get_with_retry
from sellermagnet import ApiError, new_session
MARKETS = {"AU": "A39IBJ37TRP1C6", "US": "ATVPDKIKX0DER"} # amazon.com.au (AUD), amazon.com (USD)
HISTORY_MARKETS = {"ATVPDKIKX0DER", "A2EUQ1WTGCTBG2", "A1AM78C64UM0Y8", "A2Q3Y263D00KWC", "A1F83G8C2ARO7P",
"A1PA6795UKMFR9", "A13V1IB3VIYZZH", "APJ6JRA9NG5V4", "A1RKKUPIHCS9HS", "A21TJRUUN4KGV",
"A1VC38T7YXB528"} # the 11 marketplaces with full statistics, estimated sales, converter
DEFAULT_POSTCODES = {"A39IBJ37TRP1C6": "2601", "ATVPDKIKX0DER": "20001"} # geo_location default per store
ASINS = ["B0CL61F39H", "B0IEONLY01", "B0NOOFFER1", "not-an-asin"]
MAX_FAILED = 3 # 502/503 are billed on every attempt: stop after 3 calls that keep failing
def history_allowed(marketplace_id):
return marketplace_id in HISTORY_MARKETS
def product_info(session, asin, marketplace_id):
"""Read productInfo directly (not through lookup()): we need listedSinceDate, which lookup() drops."""
from sellermagnet import get # the quickstart's low-level helper, used by lookup() internally
return get(session, "amazon-product-lookup", asin=asin, marketplaceId=marketplace_id)["productInfo"]
def featured(data):
"""(price, currency, holder, unique sellers) from one offers answer; price None when nothing is featured."""
box, offers = data.get("buyBox") or {}, data.get("offers") or []
sellers = len({o.get("sellerId") for o in offers if o.get("sellerId")}) # a seller can be listed twice
currency = (data.get("currency") or {}).get("code", "")
if data.get("buyBoxSuppressed") or not box.get("totalPrice"):
return None, currency, "no featured offer", sellers
if box.get("sellerId") == "Amazon":
holder = f"Amazon ({box.get('amazonSellerId') or 'no first-party ID'})"
else:
holder = f"{box.get('fulfillmentType', '?')} seller {box.get('sellerId', '?')}"
return round(box["totalPrice"], 2), currency, holder, sellers # buyBox.totalPrice is not rounded upstream
def main():
session = new_session()
failed = 0
for code, marketplace in MARKETS.items():
note = "history endpoints answer" if history_allowed(marketplace) else \
"history endpoints skipped (free 400)"
print(f"{code} {marketplace}: {note}, default geo_location {DEFAULT_POSTCODES[marketplace]}")
print("\nlookup: listedSinceDate")
for code, marketplace in MARKETS.items():
try:
info = product_info(session, "B0CL61F39H", marketplace)
except ApiError as err:
if err.status in (401, 403): # key or credits: every other call fails the same way
print(f"stopped: {err}")
return
print(f"{code:<5} error {err}")
continue
since = info.get("listedSinceDate") or "null"
print(f"{code:<5} listedSinceDate={since}")
print(f"\n{'asin':<11} {'store':<5} {'featured':>10} {'cur':<4} {'sellers':>7} holder / note")
for raw in ASINS:
asin = raw.strip().upper()
if not re.fullmatch(r"[A-Z0-9]{10}", asin):
print(f"{raw:<11} {'-':<5} {'-':>10} {'-':<4} {'-':>7} skipped: not an ASIN (offers would bill it)")
continue
for code, marketplace in MARKETS.items():
if failed >= MAX_FAILED:
print(f"stopped after {MAX_FAILED} failed calls")
return
try:
data = get_with_retry(session, "amazon-product-offers", asin=asin, marketplaceId=marketplace)
except ApiError as err:
if err.status in (401, 403): # key or credits: every other call fails the same way
print(f"stopped: {err}")
return
label = "not listed in this store (billed 404)" if err.status == 404 else f"error {err}"
print(f"{asin:<11} {code:<5} {'-':>10} {'-':<4} {'-':>7} {label}")
failed += err.status >= 500
continue
except (requests.ConnectionError, requests.Timeout) as err:
print(f"{asin:<11} {code:<5} {'-':>10} {'-':<4} {'-':>7} error {type(err).__name__}")
failed += 1
continue
price, currency, holder, sellers = featured(data)
shown = f"{price:.2f}" if price is not None else "-"
print(f"{asin:<11} {code:<5} {shown:>10} {currency:<4} {sellers:>7} {holder}")
if __name__ == "__main__":
main()
Output (illustrative data: two stores, a billed 404, a retried 502 and a skipped input)
AU A39IBJ37TRP1C6: history endpoints skipped (free 400), default geo_location 2601
US ATVPDKIKX0DER: history endpoints answer, default geo_location 20001
lookup: listedSinceDate
AU listedSinceDate=2023-07-14
US listedSinceDate=2022-11-02
asin store featured cur sellers holder / note
B0CL61F39H AU 89.00 AUD 1 FBA seller FBA01
B0CL61F39H US 59.99 USD 1 FBA seller FBA01
B0IEONLY01 AU 35.00 AUD 1 FBM seller FBM03
B0IEONLY01 US - - - not listed in this store (billed 404)
B0NOOFFER1 AU - AUD 0 no featured offer
B0NOOFFER1 US 12.50 USD 1 FBM seller FBM07
not-an-asin - - - - skipped: not an ASIN (offers would bill it)
calls= 9
- sellers counts distinct seller IDs: the offers list can show the same seller twice (different delivery date or condition), so
len(offers)overcounts. - default geo_location differs per store (2601 for amazon.com.au, 20001 for amazon.com): pass your own
geo_locationpostcode on/amazon-product-offersto check a specific area instead of the default. - not listed in this store (billed 404): the offers endpoint answers an unknown ASIN with 404 "Invalid product" and charges the credit. The ASIN may well exist on the other store.
- no featured offer with 0 sellers is a listing without offers on that page, not an error. Confirm a stock-out with a second check before acting on it.

Does amazon.com.au use its own bestseller category tree?
Yes. amazon.ie borrows the UK category tree because it has none of its own; amazon.com.au is not in that alias list, so category_id for amazon.com.au must come from amazon.com.au's own tree (category explorer). An ID from another marketplace's tree, a US one for example, fails with "Invalid CategoryId", a billed 400.
What does an amazon.com.au check cost?
1 credit per request, as on every store. The comparison script costs 2 credits per ASIN (one lookup call per store), plus each billed retry: a 502 or 503 is charged on every attempt, a 500 without Retry-After is refunded. The 404 for an ASIN that a store does not have is billed; an invalid marketplace ID and the history endpoints' amazon.com.au 400 are free. The example run made 9 calls, 2 for the listedSinceDate check, 6 for three ASINs and 1 retried 502. For the whole picture across stores, see API marketplace coverage and the marketplace IDs list.
Frequently Asked Questions
What is the Amazon Australia marketplace ID?
A39IBJ37TRP1C6. Pass it as marketplaceId and the request goes to amazon.com.au, with prices in AUD. A country code like "AU" or a domain like "amazon.com.au" is rejected with a free 400 Invalid marketplaceId.
Can I get Amazon Australia price history?
Not from this API. The statistics, estimated sales and converter endpoints cover only 11 marketplaces and answer amazon.com.au with a free 400, the same gate amazon.se and amazon.ie hit. Store your own offers snapshots if you need a history.
Is listedSinceDate populated on amazon.com.au?
Yes, normally. The backend matches the page's "Date First Available" label against a shared phrase list, and that list has an English entry, the same label amazon.com.au and amazon.com both show. This is different from amazon.se, where no Swedish phrase is in the list and the field is always null.
Does amazon.com.au use its own bestseller category tree?
Yes. Unlike amazon.ie, which borrows the UK category tree, amazon.com.au is not in that alias list, so category IDs must come from amazon.com.au's own tree; an ID from another marketplace's tree is a billed 400.
What is the default geo_location for amazon.com.au?
2601 (Canberra), used for delivery-date and availability fields when a request omits geo_location. Pass a different Australian postcode in that parameter to check availability for another area; the response marks the pin that was actually used.
Does the API hold an Australian seller account?
No. SellerMagnet reads public amazon.com.au pages; it does not sell on the marketplace or hold an Australian Seller Central account, so results come from the same public listing every shopper on amazon.com.au sees.
Bottom line: use A39IBJ37TRP1C6 for amazon.com.au, expect AUD, keep history calls for the 11 covered stores, and remember amazon.com.au's own category tree and 2601 default postcode. To compare prices across more stores, see comparing Amazon prices across marketplaces; the offers endpoint page lists every field, and a free account includes 150 credits.