Apexon DOCS

APEXON API PLATFORM

CatalogAIO API documentation

Amazon catalog data behind one clean REST surface: product details, offers, reviews, search, suggestions, and best sellers across 22 storefronts — plus drop-in path aliases for popular marketplace Amazon APIs.

base URL
https://catalog.apexon.dev
  • Interactive explorer — Swagger UI at catalog.apexon.dev/docs, ReDoc at catalog.apexon.dev/redoc.
  • Machine-readable spec — OpenAPI at catalog.apexon.dev/openapi.json for generating clients, mocks, and tests.
  • 22 storefronts — pick a market per request with domain=amazon.de or country=DE; see Storefronts.
  • Drop-in aliases — OpenWeb/Axesso-style and Scout-style paths answer alongside the native /v1 surface.
Unofficial API. CatalogAIO is not affiliated with, endorsed by, or sponsored by Amazon. Data is sourced from publicly reachable catalog pages and may change without notice — see the disclaimer.

Quickstart

Grab a key (subscribe on the marketplace, or request a direct key), then make your first calls. Health is public; everything else needs the key.

health — public
curl https://catalog.apexon.dev/health
list all storefronts
curl https://catalog.apexon.dev/v1/markets \
  -H "X-API-Key: $CATALOGAIO_KEY"
product details — German storefront
curl "https://catalog.apexon.dev/v1/product/B08N5WRWNW?domain=amazon.de" \
  -H "X-API-Key: $CATALOGAIO_KEY"
search
curl "https://catalog.apexon.dev/v1/search?query=wireless+earbuds&page=1" \
  -H "X-API-Key: $CATALOGAIO_KEY"
offers / buy box
curl https://catalog.apexon.dev/v1/product/B08N5WRWNW/offers \
  -H "X-API-Key: $CATALOGAIO_KEY"
200 OK · abridged
{
  "success": true,
  "data": {  },
  "request_id": "9f3c1a2b8d4e"
}

Every response also carries X-Request-Id, X-Cache, and X-RateLimit-* headers — see Responses & headers.

Authentication

CatalogAIO issues its own keys, prefixed ca_live_. Keys are product-scoped: a FinMarkets fm_live_ or LineSnap ls_ key will not authenticate here, and vice versa. Send a key any of these ways — first match wins:

MethodHowUse when
X-API-Key headerX-API-Key: <key>Direct keys — the recommended default.
Bearer tokenAuthorization: Bearer <key>Clients that standardize on Authorization headers.
RapidAPIX-RapidAPI-Key: <key>Sent automatically when you call through the RapidAPI gateway.
Query param?api_key=<key>Quick tests only — keys in URLs end up in logs.

Gateway traffic is verified by the platform: RapidAPI injects X-RapidAPI-Proxy-Secret alongside your X-RapidAPI-Key, and the secret is what vouches for the request. The rules, exactly as enforced:

  • A valid direct key always works — with or without gateway headers present.
  • Wrong proxy secret → 403 — presenting an X-RapidAPI-Proxy-Secret that does not match is rejected as forbidden.
  • Rapid key without the secret → 401 — an X-RapidAPI-Key arriving outside the gateway (no valid proxy secret) is unauthorized.

Meta routes (/, /health, /legal/*, /docs, /redoc, /openapi.json) are public; /metrics is operator-only — it 403s without a valid metrics token or API key; every data route requires a key.

Responses & headers

Unlike FinMarkets' upstream-shaped pass-through, CatalogAIO wraps every successful response in a stable envelope — the payload lives under data and the shape per endpoint is visible in the interactive explorer:

success envelope
{
  "success": true,
  "data": { … endpoint payload … },
  "request_id": "9f3c1a2b8d4e"
}

Standard headers

HeaderMeaning
X-Request-IdUnique id for the request — include it in support emails.
X-PlanThe plan your key resolved to (public on unauthenticated routes).
X-CacheHIT, MISS, or STALE — cached, fetched fresh, or served from cache within a bounded age while upstream fetching is suspended; a STALE response also carries Warning: 110.
X-Response-Time-msServer-side processing time in milliseconds.
X-RateLimit-Limit / -Remaining / -ResetWhere you stand against your per-minute limit.
X-API-BaseThe canonical public base URL of the service.

Errors

Errors always return the same machine-readable envelope — never an HTML error page:

error envelope
{
  "success": false,
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded",
    "status": 429,
    "retry_after_seconds": 18
  },
  "request_id": "9f3c1a2b8d4e"
}
CodeStatusMeaning
unauthorized401Missing or invalid key.
forbidden403Invalid RapidAPI proxy secret, or a disabled route.
plan_upgrade_required403Endpoint is not included in the caller's plan. error.details names the feature and the plan required.
not_found404Unknown route, or the storefront has no such resource (e.g. unknown ASIN).
validation_error400 / 422Bad parameters — error.details lists each problem.
rate_limited429Per-minute limit reached — honor retry_after_seconds.
quota_exceeded429Monthly plan quota used up — upgrade or wait for reset.
upstream_error502The catalog source failed; safe to retry with backoff.
service_unavailable503The catalog source is temporarily unavailable; retry shortly.
internal_error500Our fault — the request_id helps us find it.

Rate limits & plans

Plans cap both monthly volume and burst rate. Requests-per-minute is enforced live and surfaced via X-RateLimit-*; the monthly quota resets at the start of each calendar month. A 429 tells you which limit you hit via error.details.limit_type. Core covers search, product details, autocomplete and markets; offers, reviews and best sellers require PRO or above and otherwise return 403 plan_upgrade_required.

PlanPriceRequests / monthRate limitEndpoints
BASIC$050030 / minCore
PRO$12.99/mo25,000120 / minAll
ULTRA$34.99/mo100,000300 / minAll
MEGA$89/mo500,000600 / minAll

Caching & freshness

Successful GET responses are cached server-side so repeat calls skip the storefront round-trip entirely. Cache windows are tuned per route family — offers and search refresh on the shortest intervals; product details and reviews a little longer; best sellers longest. The X-Cache header on every response tells you whether you got a cached copy.

Data is collected from publicly reachable catalog pages on a best-effort basis; it may be incomplete, delayed, or unavailable without notice, and it is not commercial advice.

Storefronts

Every data endpoint accepts domain= (e.g. amazon.de) or country= (e.g. DE) per request — no account-level region setting. Country codes are normalized: uk is accepted and mapped to gb / amazon.co.uk, and common aliases like usaus and irlie work too. GET /v1/markets returns this list with aliases and marketplace ids.

StorefrontDomainCodeMarketplace id
Australiaamazon.com.auauA39IBJ37TRP1C6
Belgiumamazon.com.bebeAMEN7PMS3EDWL
Brazilamazon.com.brbrA2Q3Y263D00KWC
Canadaamazon.cacaA2EUQ1WTGCTBG2
Egyptamazon.egegARBP9OOSHTCHU
Franceamazon.frfrA13V1IB3VIYZZH
Germanyamazon.dedeA1PA6795UKMFR9
Indiaamazon.ininA21TJRUUN4KGV
Irelandamazon.ieieA28R8C7NBKEWEA
Italyamazon.ititAPJ6JRA9NG5V4
Japanamazon.co.jpjpA1VC38T7YXB528
Mexicoamazon.com.mxmxA1AM78C64UM0Y8
Netherlandsamazon.nlnlA1805IZSGTT6HS
Polandamazon.plplA1C3SOZRARQ6R3
Saudi Arabiaamazon.sasaA17E79C6D8DWNP
Singaporeamazon.sgsgA19VAU5U5O7RUS
Spainamazon.esesA1RKKUPIHCS9HS
Swedenamazon.seseA2NODRKZP88ZB9
Turkeyamazon.com.trtrA33AVAJ2PDY3EV
United Arab Emiratesamazon.aeaeA2VIGQ35RCS4UG
United Kingdomamazon.co.ukgbA1F83G8C2ARO7P
United Statesamazon.comusATVPDKIKX0DER

Endpoint reference

The native surface lives under /v1. Path parameters are shown in braces; query parameters list their defaults where one exists. Full request/response schemas are in the interactive explorer.

Meta

EndpointQuery paramsNotes
GET/Service descriptor: name, version, doc links.
GET/healthLiveness + upstream reachability. Public.
GET/metricsBasic service counters (may be disabled).
GET/legal/termsTerms of use (public).
GET/legal/disclaimerAmazon non-affiliation disclaimer (public).
EndpointQuery paramsNotes
GET/v1/searchquery (required) · domain=amazon.com · country · page=1 · categoryKeyword search; pages 1–20, optional department alias (e.g. electronics).
GET/v1/suggestionsprefix (required) · domain=amazon.com · country · limit=10Autocomplete suggestions; limit 1–15.
GET/v1/bestsellersdomain=amazon.com · country · category · type=zgbsBest sellers; type zgbs | new-releases | movers-and-shakers.

Products

EndpointQuery paramsNotes
GET/v1/product/{asin}domain=amazon.com · countryFull product detail for one ASIN.
GET/v1/product/{asin}/offersdomain=amazon.com · countryBuy-box / offer listing.
GET/v1/product/{asin}/reviewsdomain=amazon.com · country · page=1 · sort_by=recentCustomer reviews; sort recent | helpful, pages 1–20.
GET/v1/product/{asin}/historydomain=amazon.comReserved — returns an empty series (points: []) until the history collector ships. Do not build on it yet.

Markets

EndpointQuery paramsNotes
GET/v1/marketsAll 22 storefronts with domains, country codes, aliases, and marketplace ids.

Marketplace aliases

If you are swapping in from an OpenWeb/Axesso-style Amazon data API, these paths answer with the same engine, envelope, auth, and headers. They take country instead of domain (default US) and pass the ASIN as a query parameter.

EndpointQuery paramsNotes
GET/searchquery (required) · country=US · page=1 · categoryAlias of /v1/search.
GET/product-detailsasin (required) · country=USAlias of /v1/product/{asin}.
GET/product-offersasin (required) · country=USAlias of /v1/product/{asin}/offers.
GET/product-reviewsasin (required) · country=US · page=1Alias of /v1/product/{asin}/reviews.
GET/best-sellerscountry=US · categoryAlias of /v1/bestsellers.

Scout-style aliases

Scout-shaped paths for drop-in swaps. These serve the US storefront.

EndpointQuery paramsNotes
GET/Amazon-Search-Dataquery (required) · page=1Scout alias of /v1/search.
GET/Amazon-Product-Dataasin (required)Scout alias of /v1/product/{asin}.
GET/Amazon-Bestsellers-DatacategoryScout alias of /v1/bestsellers.