Home / Blog / Amazon Netherlands Product API: amazon.nl Data in EUR, No Price History

Amazon Netherlands Product API: amazon.nl Data in EUR, No Price History

Get Amazon Netherlands product data with an API: marketplace ID A1805IZSGTT6HS queries amazon.nl and returns EUR prices. Why price history does not work on amazon.nl but listedSinceDate does (unlike amazon.se), which endpoints answer, and a tested Python script that compares the same ASINs on amazon.nl and amazon.de.

November 01, 2026
5 min read
SellerMagnet Team
Share & Bookmark
Terminal running a Python script that compares the same ASIN on amazon.nl and amazon.de, both in EUR

To get Amazon Netherlands product data, call the SellerMagnet API with marketplaceId=A1805IZSGTT6HS: the request goes to amazon.nl and prices come back in EUR. Offers, product lookup, search, deals, bestsellers and seller feedback all answer for amazon.nl. Price history, sales estimates and the ASIN converter do not; they reject amazon.nl with a free 400, the same gate that blocks amazon.se and amazon.ie. Unlike amazon.se, listedSinceDate from /amazon-product-lookup works normally on amazon.nl, because the backend's label-matching list recognises the Dutch "Date First Available" phrase.

Key Takeaways

  • amazon.nl is marketplace A1805IZSGTT6HS and is priced in EUR.
  • Six endpoints answer on amazon.nl; statistics, estimated sales and the converter return a free 400 and no data, the same as amazon.se and amazon.ie.
  • listedSinceDate IS populated on amazon.nl: the backend's label-matching list has a Dutch phrase, unlike the Swedish list which has none.
  • amazon.nl has its own bestseller category tree; it is not aliased to another marketplace.
  • Comparing amazon.nl with amazon.de costs 2 credits per ASIN, and both prices stay in EUR.

What is different about the Amazon Netherlands 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 and the endpoint coverage. The API resolves the amazon.nl domain itself and reads prices in the EU decimal format, so the decimal values you get back are plain numbers in EUR, the same currency as amazon.de.

amazon.nl at a glance.
Itemamazon.nl
Marketplace IDA1805IZSGTT6HS
Storeamazon.nl
CurrencyEUR (Euro)
Default postcode1012
listedSinceDatepopulated normally (Dutch date phrase matched)
First-party seller IDA17D2BRD4YMT0X
Bestseller category treeamazon.nl's own tree
History endpointsfree 400, no data

The amazon.nl entry of /amazon-get-marketplaces (data is keyed by marketplace ID)

{
  "A1805IZSGTT6HS": {
    "marketplace_domain": "amazon.nl",
    "marketplace_name": "Amazon NL",
    "currency_code": "EUR",
    "currency_name": "Euro",
    "currency_symbol": "€",
    "geo_location": "1012"
  }
}

Which endpoints work on amazon.nl?

Six of the ten endpoints only check that the marketplace ID is valid, so they answer on all 23 marketplaces, amazon.nl 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.nl 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.

Terminal-theme table of which SellerMagnet API endpoints answer for amazon.nl and what each costs
Six endpoints answer on amazon.nl; the three history endpoints return a free 400.

Does listedSinceDate work on amazon.nl?

Yes, and that is the opposite of 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 German, English, Spanish, Italian, Japanese, Portuguese, French and Polish, and also a Dutch fragment that matches the amazon.nl label. Because the phrase is recognised, listedSinceDate comes back populated on amazon.nl just like on amazon.de. Do not assume every EU marketplace behaves the same way here: the Swedish list has no matching entry, so the identical field is always null on amazon.se even though the information is on the page.

How do I compare amazon.nl with amazon.de in Python?

The script below reads listedSinceDate for one ASIN on both stores to show that both work, then reads the live offers of three ASINs on each store side by side. 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.

nl_vs_de.py - the same ASINs on amazon.nl and amazon.de

"""Amazon Netherlands (amazon.nl) product check: price history gate and listedSinceDate, next to amazon.de.

amazon.nl is marketplace A1805IZSGTT6HS, priced in EUR. Two things to know:

1. amazon.nl is NOT one of the 11 marketplaces with full price-history support (the SellerMagnetAPI config
   has no amazon.nl 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 that blocks amazon.se and amazon.ie.
2. Unlike amazon.se, /amazon-product-lookup's productInfo.listedSinceDate DOES work on amazon.nl: the shared
   date-phrase match list (SellerMagnetAPILambda language_translation.py date_phrases) has a Dutch entry
   ("beschikbaarheid"), so the label on the amazon.nl page is recognised and the field gets populated like on
   amazon.de.

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 = {"NL": "A1805IZSGTT6HS", "DE": "A1PA6795UKMFR9"}   # amazon.nl (EUR), amazon.de (EUR)
HISTORY_MARKETS = {"ATVPDKIKX0DER", "A2EUQ1WTGCTBG2", "A1AM78C64UM0Y8", "A2Q3Y263D00KWC", "A1F83G8C2ARO7P",
                   "A1PA6795UKMFR9", "A13V1IB3VIYZZH", "APJ6JRA9NG5V4", "A1RKKUPIHCS9HS", "A21TJRUUN4KGV",
                   "A1VC38T7YXB528"}   # the 11 marketplaces with full statistics, estimated sales, converter
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}")

    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)

NL A1805IZSGTT6HS: history endpoints skipped (free 400)
DE A1PA6795UKMFR9: history endpoints answer

lookup: listedSinceDate
NL    listedSinceDate=2023-07-19
DE    listedSinceDate=2024-03-11

asin        store   featured cur  sellers  holder / note
B0CL61F39H  NL        249.00 EUR        2  FBA seller A1NLSELLER01
B0CL61F39H  DE        229.99 EUR        3  Amazon (A3JWKAKR8XB7XF)
B0IEONLY01  NL         99.00 EUR        1  FBM seller A3NLSELLER03
B0IEONLY01  DE             - -          -  not listed in this store (billed 404)
B0NOOFFER1  NL             -            0  no featured offer
B0NOOFFER1  DE         15.99 EUR        1  FBM seller A4DESELLER04
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.
  • listedSinceDate populated on both NL and DE confirms the field is not broken on EU stores in general; amazon.se is the exception, not the rule.
  • 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.
Terminal-theme sequence of one ASIN checked on amazon.nl and amazon.de, listedSinceDate populated on both
Two lookup calls per ASIN; listedSinceDate comes back populated on both amazon.nl and amazon.de.

Does amazon.nl use its own bestseller category tree?

Yes. amazon.ie borrows the UK category tree because it has none of its own; amazon.nl is not in that alias list, so category_id for amazon.nl must come from amazon.nl's own tree (category explorer). An ID from another marketplace's tree, a German one for example, fails with "Invalid CategoryId", a billed 400.

What does an amazon.nl 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.nl 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 Netherlands marketplace ID?

A1805IZSGTT6HS. Pass it as marketplaceId and the request goes to amazon.nl, with prices in EUR. A country code like "NL" or a domain like "amazon.nl" is rejected with a free 400 Invalid marketplaceId.

Can I get Amazon Netherlands price history?

Not from this API. The statistics, estimated sales and converter endpoints cover only 11 marketplaces and answer amazon.nl with a free 400, the same as amazon.se and amazon.ie. Store your own offers snapshots if you need a history.

Does listedSinceDate work on amazon.nl?

Yes, unlike on amazon.se. The backend matches the page's "Date First Available" label against a hardcoded phrase list that includes a Dutch fragment, so the label on amazon.nl is recognised and listedSinceDate comes back populated, the same as on amazon.de.

Does amazon.nl use its own bestseller category tree?

Yes. Unlike amazon.ie, which borrows the UK category tree, amazon.nl is not in the alias list, so category IDs must come from amazon.nl's own tree; an ID from another marketplace's tree is a billed 400.

What is Amazon's first-party seller ID on amazon.nl?

A17D2BRD4YMT0X. A buy box held by that ID (or shown as the generic "Amazon" seller) means Amazon itself is the featured seller on that listing, not a third party.

Bottom line: use A1805IZSGTT6HS for amazon.nl, expect EUR, keep history calls for the 11 covered stores, and trust listedSinceDate on amazon.nl the same way you would on amazon.de. 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.

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