Home / Blog / Amazon Seller ID Lookup via API: Find a Seller's Name and Storefront

Amazon Seller ID Lookup via API: Find a Seller's Name and Storefront

Turn an Amazon seller ID such as A2I59UVTUWUFH0 into a name, feedback numbers and storefront links: where seller IDs appear in API responses, which IDs belong to Amazon itself, and a cached lookup that pays for each ID once.

September 27, 2026
4 min read
SellerMagnet Team
Share & Bookmark
Blueprint flow from a seller ID found in offer data through a cached lookup to the seller's name and storefront links

To look up an Amazon seller ID, call /api/amazon-seller-review with the ID and the marketplace: the answer carries the seller's name in sellerFullName plus feedback counts per period, for one credit. The profile and storefront pages follow a fixed URL pattern, so they need no call at all. Skip Amazon's own seller IDs - Amazon has no feedback page and that lookup is a billed 404 - and cache every answer, because a seller's name rarely changes.

Key Takeaways

  • One call to /amazon-seller-review turns a seller ID into sellerFullName and feedback counts, for one credit.
  • The seller profile is amazon.<tld>/sp?seller=ID and the storefront is amazon.<tld>/s?me=ID - no API call needed.
  • Amazon itself appears as "Amazon" in offers and under its own seller ID, such as ATVPDKIKX0DER, in history data: do not look those up.
  • A seller ID that no longer exists returns a billed 404; cache it so you pay for it once.
  • Seller IDs come from offers, the featured offer and the Buy Box history - one listing can give you several.

Where do Amazon seller IDs come from?

Seller IDs - also called merchant IDs or merchant tokens - are the codes Amazon uses in offer links: uppercase letters and digits, usually 13 or 14 characters, such as A2I59UVTUWUFH0. Several endpoints return them, so a competitor list usually starts with IDs, not names. The offer listing guide and the Buy Box history guide explain the fields.

Endpoints that return seller IDs (September 2026).
EndpointFieldWhich sellers
/amazon-product-offersoffers[].sellerIdEvery seller on the first offer page
/amazon-product-lookupbuyBoxInfo.sellerIdThe featured offer's seller
/amazon-product-statisticsbuyBoxSellerIdHistoryEvery past Buy Box holder
/amazon-product-statisticsoffers (keys)Live New-condition sellers

How do I get a seller's name from a seller ID?

The function below returns name, lifetime ratings and the share of positive ratings over the last 365 days, plus the two links. It answers Amazon's own IDs locally and skips placeholders such as -1/-2 from the Buy Box history or N/A from a lookup - the API does not check the ID format, so any value would be a billed call. It caches every answer including a 404 for 30 days, and re-raises other errors so a temporary 502 is retried later instead of being stored. get(), new_session() and ApiError come from the Python quickstart.

seller_lookup.py - seller ID to name, feedback and links

"""Seller ID -> name, feedback and storefront links, cached so each ID is paid for once a month."""
import json
import re
from datetime import date, timedelta
from pathlib import Path

from sellermagnet import ApiError, get, new_session

CACHE = Path("sellers.json")
SELLER_ID = re.compile(r"[A-Z0-9]{10,20}")          # merchant token: uppercase letters and digits
DOMAINS = {"ATVPDKIKX0DER": "amazon.com", "A1F83G8C2ARO7P": "amazon.co.uk", "A1PA6795UKMFR9": "amazon.de",
           "A13V1IB3VIYZZH": "amazon.fr", "APJ6JRA9NG5V4": "amazon.it", "A1RKKUPIHCS9HS": "amazon.es"}
AMAZON_IDS = {"ATVPDKIKX0DER", "A3P5ROKL5A1OLE", "A3JWKAKR8XB7XF", "A1X6FK5RDHNB96", "A11IL2PNWYJU7H",
              "A1AT7YVPFBWXBL"}  # Amazon's own seller ID on each store above - add both when you add a store


def links(seller_id: str, marketplace_id: str) -> dict:
    domain = DOMAINS[marketplace_id]
    return {"profile": f"https://www.{domain}/sp?seller={seller_id}",
            "storefront": f"https://www.{domain}/s?me={seller_id}"}


def seller(seller_id: str, marketplace_id: str) -> dict:
    if seller_id == "Amazon" or seller_id in AMAZON_IDS:
        return {"sellerId": seller_id, "name": "Amazon", "first_party": True}   # no feedback page: a billed 404
    if not SELLER_ID.fullmatch(seller_id):
        return {"sellerId": seller_id, "name": None, "no_seller": True}         # "-1", "-2", "N/A" placeholders
    urls = links(seller_id, marketplace_id)                                      # unknown store: fail before paying
    cache = json.loads(CACHE.read_text()) if CACHE.exists() else {}
    key = f"{marketplace_id}:{seller_id}"
    entry = cache.get(key)
    if not entry or date.fromisoformat(entry["fetched"]) < date.today() - timedelta(days=30):
        try:
            d = get(new_session(), "amazon-seller-review", sellerId=seller_id, marketplaceId=marketplace_id)
            fb = d.get("feedback") or {}
            n = lambda k: (fb.get(k) or {}).get("365d") or 0
            total = n("positiveRating") + n("neutralRating") + n("negativeRating")
            entry = {"name": d.get("sellerFullName"), "ratings_lifetime": d.get("sellerTotalReviewAmount"),
                     "positive_365d_pct": round(100 * n("positiveRating") / total) if total else None}
        except ApiError as err:
            if err.status != 404:
                raise                                     # 5xx: do not cache, try again later
            entry = {"name": None, "not_found": True}     # 404 is billed: remember it
        entry["fetched"] = date.today().isoformat()
        cache[key] = entry
        CACHE.write_text(json.dumps(cache, indent=1))
    return {"sellerId": seller_id, **entry, **urls}


if __name__ == "__main__":
    for sid in ["A2I59UVTUWUFH0", "A11IL2PNWYJU7H", "-1", "A2I59UVTUWUFH0"]:   # the repeat comes from the cache
        print(seller(sid, "APJ6JRA9NG5V4"))

Example output (illustrative values)

{'sellerId': 'A1EXAMPLE00000', 'name': 'Example Shop', 'ratings_lifetime': 1535,
 'positive_365d_pct': 79, 'fetched': '2026-09-27', 'profile': 'https://www.amazon.it/sp?seller=A1EXAMPLE00000',
 'storefront': 'https://www.amazon.it/s?me=A1EXAMPLE00000'}
{'sellerId': 'A11IL2PNWYJU7H', 'name': 'Amazon', 'first_party': True}
{'sellerId': '-1', 'name': None, 'no_seller': True}
Blueprint table of the endpoints and fields that return Amazon seller IDs
Four places a seller ID can come from.

Which seller IDs belong to Amazon itself?

Amazon sells as a first-party seller with its own ID per store - ATVPDKIKX0DER on amazon.com, A3JWKAKR8XB7XF on amazon.de, A3P5ROKL5A1OLE on amazon.co.uk. The offers endpoint labels that offer sellerId: "Amazon" and puts the real ID in amazonSellerId; the Buy Box history uses the ID directly. Amazon has no seller feedback page, so the lookup for those IDs is a billed 404 - the function answers them without a call. The full table per marketplace is in the Buy Box history guide.

Which links can I build without an API call?

Two URL patterns give the seller profile at /sp?seller=ID and the list of products a seller offers at /s?me=ID. Use the domain of the store where you found the ID: the ID is the same wherever the seller sells, but profile and feedback are per store, and a seller active on amazon.it may not sell on amazon.com.

Blueprint table of the seller profile link, the storefront link and the feedback endpoint
Two links for free, the feedback numbers for one credit.

How do I find a seller's ID in the first place?

On a product page, the "Sold by" link of an offer contains it after seller=. Your own ID is the Merchant Token in Seller Central under Settings, Account Info. The API goes from ID to name, not the other way round: there is no search for sellers by name, so collect IDs from offers and history first.

Can I look up one seller from the command line?

Yes. For a single ID, curl and jq print the name and the last-365-days counts.

Seller name and 365-day feedback counts with curl and jq

curl -sG "https://sellermagnet-api.com/api/amazon-seller-review" \
  -H "X-Api-Key: $SELLERMAGNET_API_KEY" --max-time 120 \
  --data-urlencode "sellerId=A2I59UVTUWUFH0" \
  --data-urlencode "marketplaceId=APJ6JRA9NG5V4" \
  | jq -r 'if .success then (.data | "\(.sellerFullName): \(.feedback.reviewsCount["365d"]) ratings in 365 days, \(.feedback.negativeRating["365d"]) negative")
           else error(.message) end'

What the counts mean, and how to turn them into a risk signal, is covered in the seller feedback guide.

Frequently Asked Questions

How do I find an Amazon seller's name from the seller ID?

Call /amazon-seller-review with the seller ID and marketplace. sellerFullName in the answer is the name shown on the seller's profile; one call costs one credit.

What is the URL of a seller's storefront?

amazon.<tld>/s?me=SELLERID lists the products the seller offers; amazon.<tld>/sp?seller=SELLERID is the profile with feedback.

Why does looking up Amazon's own seller ID fail?

Amazon as a seller has no feedback page, so the lookup returns a 404 that is billed. Recognise Amazon's IDs, or the value "Amazon", and skip the call.

Is a seller ID the same on every marketplace?

Yes, one ID per seller account. Feedback is per store, so look it up with the marketplace where you found the ID.

How often should I refresh a cached seller?

Feedback changes; names rarely do. The function refreshes an entry after 30 days; change the number to suit you.

Bottom line: seller IDs come free with offer and history data, Amazon's own IDs need no lookup, and one cached call per remaining ID gives the name and feedback. The seller feedback page lists every field, and a free account includes 150 credits.

Ready to Extract Amazon Data at Scale?

Start building with SellerMagnet API today. Real-time product data, competitive pricing, and review analytics at your fingertips.

150 free API credits • No credit card required • Cancel anytime