GET
/utility/gtin-to-asin
1 credit
Amazon GTIN to ASIN API
Reverse lookup: turn a UPC/EAN/GTIN into the matching ASIN, with the full matched product record and any secondary matches.
Try it
You are not signed in, so this runs against sample data and costs nothing.
Create a free account to run it against your own key.
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
|
gtin
required |
string | — | UPC, EAN or GTIN. |
| marketplace | string | US | Two-letter marketplace code (US, UK, DE, FR, IT, ES, CA, JP, IN, AU, …). |
| zip | string | — | Delivery postcode. Without one, many listings report “cannot be shipped to your location” and come back with no price or images. Always send it for price-accurate data. |
Request
curl -sS "https://amazoncrawler.com/v1/utility/gtin-to-asin?gtin=097855137692&marketplace=US&zip=10001" \
-H "x-api-key: YOUR_API_KEY"
import requests
API_KEY = "YOUR_API_KEY"
response = requests.get(
"https://amazoncrawler.com/v1/utility/gtin-to-asin",
params={
"gtin": "097855137692",
"marketplace": "US",
"zip": "10001",
},
headers={"x-api-key": API_KEY},
timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
const API_KEY = "YOUR_API_KEY";
const url = new URL("https://amazoncrawler.com/v1/utility/gtin-to-asin");
const params = {
gtin: "097855137692",
marketplace: "US",
zip: "10001",
};
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
const response = await fetch(url, {
headers: { "x-api-key": API_KEY },
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data);
<?php
$apiKey = 'YOUR_API_KEY';
$query = http_build_query([
'gtin' => '097855137692',
'marketplace' => 'US',
'zip' => '10001',
]);
$ch = curl_init("https://amazoncrawler.com/v1/utility/gtin-to-asin?$query");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["x-api-key: $apiKey"],
CURLOPT_TIMEOUT => 30,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("https://amazoncrawler.com/v1/utility/gtin-to-asin")
q := u.Query()
q.Set("gtin", "097855137692")
q.Set("marketplace", "US")
q.Set("zip", "10001")
u.RawQuery = q.Encode()
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]any
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}
Response
{
"asin": "B07CMS5Q6P",
"gtin": "097855137692",
"note": null,
"match": {
"url": "https://www.amazon.com/dp/B07CMS5Q6P",
"asin": "B07CMS5Q6P",
"badge": "Best Seller",
"image": "https://m.media-amazon.com/images/I/51sg9BLSMTL.jpg",
"price": {
"amount": 29.99,
"display": "$29.99",
"currency": "USD",
"list_price": 49.99
},
"prime": false,
"title": "Logitech G305 Lightspeed Wireless Gaming Mouse - Black",
"rating": 4.6,
"delivery": "FREE delivery Mon, Aug 10",
"position": 4,
"sponsored": false,
"reviews_count": 39364,
"bought_past_month": "10K+ bought in past month"
},
"marketplace": "US",
"other_matches": [
"B0BQN7LSQ4",
"B0B4MQS3ZW"
]
}
Errors
Beyond the shared error codes, this endpoint returns
422 when a parameter fails validation — the
detail array names the field.
{
"detail": [
{
"loc": ["query", "gtin"],
"msg": "Field required",
"type": "missing",
"input": null
}
]
}