Home / Blog / Is the Amazon Product API Free? SellerMagnet Pricing Explained

Is the Amazon Product API Free? SellerMagnet Pricing Explained

New accounts get 150 free credits after e-mail verification, and every request after that costs exactly 1 credit, win or lose, with one exception: a 500 error is refunded. How billing actually works endpoint by endpoint, which errors are free and which are billed, and how to estimate a monthly credit budget before you write a line of monitoring code.

October 17, 2026
4 min read
SellerMagnet Team
Share & Bookmark
Terminal-style hero showing a pricing check: 150 free credits, 1 credit per request, 500 refunded

Yes, there is a free tier: new SellerMagnet API accounts get 150 free credits once the e-mail address is verified, and every endpoint costs exactly 1 credit per request after that, whether the answer is a hit or a miss. The one exception is a server-side 500 error, which is refunded automatically. There is no per-endpoint pricing difference and no batch discount: a lookup, a search and a full statistics history call all cost the same single credit.

Key Takeaways

  • 150 free credits on signup after e-mail verification; 1 credit per request after that.
  • A 404 (product not found) is billed the same as a 200; a 500 is refunded automatically.
  • Gate errors (missing parameter, unknown marketplaceId, bad key, rate limit) are never billed.
  • Endpoint errors raised after validation (bad count, invalid category ID) ARE billed.
  • Current plan tiers and pay-as-you-go pricing are listed live on /pricing.

What does the Amazon Product API cost?

Plan shape (exact tier prices change; check /pricing for current numbers).
PlanWhat you getGood for
Free150 credits (after e-mail verification)test the endpoints, small scripts
Paid planssee /pricing for current tiersrecurring credit allowance, scales with usage
Pay-as-you-go top-upbuy credits directlyno recurring commitment

Which errors are billed and which are free?

The order inside the API matters: the API key is checked, then the request parameters are validated, then a per-key concurrency slot is claimed, then the credit is deducted atomically, and only then does the real fetch happen. Anything rejected before that deduction step is free; anything that gets past it is billed, even if the end result is an error.

Status codes, billing, and what the code should do about each (October 2026).
ResponseBilled?Why
200 successYesthe thing you asked for
404 not foundYesAmazon answered; the page just isn't there
Endpoint 400 (bad count, bad category ID, malformed ASIN on statistics/estimate)Yesvalidated inside the view, after the credit is taken
Gate 400 (missing/blank parameter, unknown marketplaceId)Norejected before billing
401 (bad key, or 0 credits left)Nonever reaches the view
403 (credits hit 0 mid-request)Norace during a burst, refused
429 (per-key concurrency cap)Noretry after the Retry-After header
500 (server error)Refundedcredits_used = 0 in the usage log
502 / 503 (upstream/circuit breaker)Yesretryable, but still billed per attempt
Terminal sequence diagram of a request through the key check, parameter validation, billing and fetch
Everything before the credit-deduction step is free; a 500 after it is refunded, not charged.
Terminal table figure of monthly credit cost for four ASIN-tracking plan sizes
A 500-ASIN plan checked every 6 hours needs roughly 61,800 credits a month.

How do I estimate a monthly credit budget?

Multiply the number of tracked ASINs by how many times a day you refresh them and by 30, then add a small margin for retries on 502/503 and billed 404s. A credit budget that ignores retries runs out mid-month on any plan with real traffic.

Two calls, one free and one billed

# Gate 400: missing marketplaceId -> free, no credit spent
curl -s "https://sellermagnet-api.com/api/amazon-product-lookup?asin=B0CLTBHXWQ&api_key=$SELLERMAGNET_API_KEY"

# Endpoint 400: count above 50 on bestsellers -> billed, credit spent
curl -s "https://sellermagnet-api.com/api/amazon-bestsellers?category_id=electronics&marketplaceId=ATVPDKIKX0DER&count=200&api_key=$SELLERMAGNET_API_KEY"

cost_estimate.py - price a monitoring plan before building it

"""Estimate the monthly credit cost of a product-tracking plan on the SellerMagnet API.

1 credit = 1 request, billed on every call that reaches the view (free-gate 400s,
401 and 429 are not billed; 500 is refunded). This script prices a plan: N ASINs,
refreshed with /amazon-product-lookup K times per day, with retries on 5xx.
"""
import os
import time

import requests

BASE = "https://sellermagnet-api.com/api"
RETRYABLE = {500, 502, 503}


def get_with_retry(endpoint, params, max_attempts=4):
    """Billed attempts: every try except a free 401/429 counts. 500 is refunded."""
    session = requests.Session()
    session.headers["X-Api-Key"] = os.environ["SELLERMAGNET_API_KEY"]
    billed = 0
    for attempt in range(1, max_attempts + 1):
        resp = session.get(f"{BASE}/{endpoint}", params=params, timeout=120)
        if resp.status_code in (401, 429):
            return None, billed  # not billed, don't retry a bad key or a rate limit
        if resp.status_code == 500:
            time.sleep(min(2 ** attempt, 20))
            continue  # refunded, so it does not add to billed
        billed += 1
        if resp.status_code in (502, 503) and attempt < max_attempts:
            time.sleep(min(2 ** attempt, 20))
            continue
        body = resp.json() if resp.headers.get("content-type", "").startswith("application/json") else {}
        return body, billed
    return None, billed


def monthly_credits(num_asins: int, checks_per_day: int, retry_rate: float) -> dict:
    """retry_rate = fraction of calls that need one extra billed retry (502/503/404)."""
    base_calls = num_asins * checks_per_day * 30
    extra_from_retries = round(base_calls * retry_rate)
    total = base_calls + extra_from_retries
    return {"base_calls": base_calls, "extra_from_retries": extra_from_retries, "total_credits": total}


if __name__ == "__main__":
    plans = [
        ("50 ASINs, daily", 50, 1),
        ("50 ASINs, every 6h", 50, 4),
        ("500 ASINs, daily", 500, 1),
        ("500 ASINs, every 6h", 500, 4),
    ]
    for name, asins, checks in plans:
        result = monthly_credits(asins, checks, retry_rate=0.03)
        print(f"{name}: {result}")

Output for four example plans

50 ASINs, daily: {'base_calls': 1500, 'extra_from_retries': 45, 'total_credits': 1545}
50 ASINs, every 6h: {'base_calls': 6000, 'extra_from_retries': 180, 'total_credits': 6180}
500 ASINs, daily: {'base_calls': 15000, 'extra_from_retries': 450, 'total_credits': 15450}
500 ASINs, every 6h: {'base_calls': 60000, 'extra_from_retries': 1800, 'total_credits': 61800}
The same estimator applied to four common plan sizes (3% retry margin).
ASINs trackedCheck frequencyCredits / month
50 ASINsdaily1,545 / month
50 ASINsevery 6 h6,180 / month
500 ASINsdaily15,450 / month
500 ASINsevery 6 h61,800 / month

Validate before you call

A malformed ASIN on /amazon-product-statistics and /amazon-product-search-estimated-sells is billed, and an unknown category_id on /amazon-bestsellers is billed too. Checking format and known values client-side before the call is free money saved, not just a faster failure.

Frequently Asked Questions

Is the Amazon product API free?

There is a free tier: 150 credits after e-mail verification, enough to test every endpoint. Beyond that each request costs 1 credit; see /pricing for paid tiers and pay-as-you-go top-ups.

Does a failed request still cost a credit?

It depends where it failed. A 404 (not found), a billed endpoint 400, or a 502/503 all cost a credit. A gate 400, 401 or 429 never reaches billing. A 500 is billed then automatically refunded.

Is there a discount for bulk requests?

No. There is no batch endpoint at all: each ASIN, seller or search is its own request at the same flat 1-credit rate, with no bulk discount built into the price per call.

How do I avoid wasting credits on bad requests?

Validate ASIN format, category IDs and count limits locally before calling, since those checks are billed when the API itself rejects them. Caching responses per endpoint TTL also avoids paying twice for the same answer.

Where do I see current plan prices?

Live tier pricing and the pay-as-you-go top-up rate are shown on the site's /pricing page, since prices change independently of this guide.

Bottom line: budget by multiplying tracked ASINs by daily checks by 30, add a small retry margin, and remember that only gate errors and successful refunds are free. Start on the 150 free credits, see the real call volume your use case needs, then pick a plan on /pricing. For the request/response shape itself, see the product data without SP-API guide, and cache responses to avoid paying for the same answer twice.

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