listedSinceDate on /amazon-product-lookup is Amazon's own "Date First Available" label, parsed to YYYY-MM-DD - the date the ASIN was created, not necessarily when the product first shipped or went on sale. It is null when the page has no such label, or when the label is in a language the extraction does not match yet; on amazon.co.jp an ambiguous date (day and month both 12 or lower) can come back with day and month swapped.
Key Takeaways
- listedSinceDate comes from productInfo on /amazon-product-lookup, already parsed to YYYY-MM-DD when a label matches.
- Matched labels cover English, German, Spanish, Italian, Portuguese, French, Dutch, Polish and Japanese; Swedish, Turkish and Arabic are not matched yet - the field is null there.
- Date First Available is when the ASIN was created, not when the product actually started shipping or went on sale.
- On amazon.co.jp, a day-first parse of an ambiguous Japanese date (day and month both 12 or lower) can silently swap them; a day above 12 is unambiguous.
- /amazon-product-statistics has its own listedSince/trackingSince fields, which mark where that endpoint's OWN history starts, not the product's real creation date.
How do I read the creation date for an ASIN?
Call /amazon-product-lookup and read productInfo.listedSinceDate. No extra parameter is needed; the field is simply present (a string) or null in the same response you would read for title and price.
A raw call for comparison (uses .get so a non-200 body never raises)
curl -s "https://sellermagnet-api.com/api/amazon-product-lookup?asin=B0CL61F39H&marketplaceId=ATVPDKIKX0DER" \
-H "X-Api-Key: $SELLERMAGNET_API_KEY" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('data',{}).get('productInfo',{}).get('listedSinceDate'))"
listing_age.py - read Date First Available and handle the null/caveat cases
"""Read Date First Available and flag the two known caveats (null label, JP day/month ambiguity)."""
import datetime as dt
import requests
from retry import get_with_retry
from sellermagnet import ApiError, new_session
JAPAN_MARKETPLACE = "A1VC38T7YXB528"
session = new_session()
def listing_age(asin: str, marketplace_id: str = "ATVPDKIKX0DER") -> dict:
try:
data = get_with_retry(session, "amazon-product-lookup", asin=asin, marketplaceId=marketplace_id)
except ApiError as err:
return {"error": f"lookup failed ({err.status}): {err}"}
except (requests.ConnectionError, requests.Timeout) as err:
return {"error": f"network error: {err}"}
raw = data["productInfo"].get("listedSinceDate")
if raw is None:
return {"listedSinceDate": None, "note": "no label matched on this marketplace, or none on the page"}
try:
created = dt.date.fromisoformat(raw)
except ValueError:
return {"listedSinceDate": raw, "note": "unparsable date string, show raw value"}
note = ""
if marketplace_id == JAPAN_MARKETPLACE and created.day <= 12 and created.month <= 12:
# day-first parsing cannot tell "2024/3/5" (5 March) from "2024/5/3" (3 May): both parse the same way
note = "amazon.co.jp: day and month are both 12 or lower, so they may be swapped - verify before date math"
weeks_old = (dt.date.today() - created).days // 7
return {"listedSinceDate": raw, "weeks_old": weeks_old, "note": note}
if __name__ == "__main__":
print(listing_age("B0CL61F39H"))
print(listing_age("B0CL61F39H", marketplace_id="A2NODRKZP88ZB9"))
print(listing_age("B07ZZK3VPB", marketplace_id=JAPAN_MARKETPLACE))
Example output across three calls, from python listing_age.py (illustrative data)
{'listedSinceDate': '2021-03-15', 'weeks_old': 292, 'note': ''}
{'listedSinceDate': None, 'note': 'no label matched on this marketplace, or none on the page'}
{'listedSinceDate': '2024-05-03', 'weeks_old': 129, 'note': 'amazon.co.jp: day and month are both 12 or lower, so they may be swapped - verify before date math'}
| Language | Matched phrase (substring) | Result |
|---|---|---|
| English | date first available | matches |
| German | im angebot von | matches |
| Spanish | producto en amazon / fecha de lanzamiento | matches |
| Italian | disponibile su amazon | matches |
| Portuguese | data de lançamento | matches |
| French | date de mise en / date de mise sur amazon | matches |
| Dutch | beschikbaarheid | matches |
| Polish | pierwszej dostępności | matches |
| Japanese | 発売日 (Hatsubaibi) | matches, ambiguous days may swap |
| Swedish / Turkish / Arabic | (no phrase) | field returns null |

Do not build hard date math on an ambiguous Japanese date
The extraction pipeline parses Japanese Hatsubaibi dates (format YYYY/M/D) day-first. When both the day and the month are 12 or lower the two numbers are genuinely ambiguous and dayfirst parsing can silently swap them: 2024/3/5 (5 March) can come back as 2024-05-03 (3 May), with no way to tell from the output alone. A date whose day is above 12, like 2024/3/15, is unambiguous and parses correctly. For anything date-sensitive on amazon.co.jp, show the raw string to a human rather than feeding listedSinceDate straight into date arithmetic.
Is this the same as listedSince on the statistics endpoint?
No. /amazon-product-statistics has its own listedSince (and trackingSince) fields, and they mark where THAT endpoint's own price/rank history starts, not when the product itself was created - a product first tracked in 2024 can have a 2019 listedSinceDate on the lookup endpoint. Use listedSinceDate from the lookup for the product's real age, and the statistics fields only to know how far back a price or rank chart goes; the price history guide and the sales rank history guide both rely on that history-start distinction.
What can I use the listing age for?
Listing age is a cheap signal for sourcing and research: a very young ASIN on an established niche can mean a new entrant worth watching, and a very old one that still sells well can mean a durable product worth sourcing. It is one input among several, not a verdict by itself - pair it with current rank and review count from the same lookup call before drawing a conclusion.

Frequently Asked Questions
What does Date First Available actually mean?
The date the ASIN was created in Amazon's catalog, not necessarily when the product first shipped or went on sale.
Why is listedSinceDate sometimes null?
Either the page has no such label at all, or the label is in a language the extraction does not match yet (Swedish, Turkish and Arabic, as of now).
Can I trust the exact day and month on amazon.co.jp?
Only when the day is above 12. When both the day and the month are 12 or lower the date is ambiguous and day-first parsing can silently swap them; show the raw value for anything date-sensitive.
Is listedSinceDate the same as listedSince on the statistics endpoint?
No. listedSinceDate is the product's real creation date; the statistics endpoint's listedSince/trackingSince mark where that endpoint's own history starts, which can be much later.
Bottom line: listedSinceDate on the product lookup is the closest thing to a listing's real birthday, matched across most but not all marketplace languages, with one open caveat on Japan. Every field is on the product lookup page.