Product

THE product endpoint (unified 2026-07-23). One call: current snapshot (price, BSR, rating, buy-box — cache-or-live via mode + max_age_days) plus observed_at, the FULL price-change timeline (price_history, seller-stamped, back to first observation) with a 30-day convenience view, the full in/out-of-stock timeline (stock_history, with stock_state + stock_observed_since), the Amazon-reported bought-past-month badge (bought_past_month int + raw text — measured, not modeled; Amazon marketplaces only), the current all-seller snapshot, and brand stats. country=walmart returns the intelligence blocks (numeric item ID). Partial live scrapes are never billed. Walmart products also carry (2026-09-20, additive) image_url / images[], description, category_path + breadcrumbs[], highlights[] (name/value spec pairs as shown on the PDP), warnings[] (compliance text, e.g. Prop 65), upc, model_number, color, rating / review_count / rating_observed_at (null when the page showed none), was_price / discount_pct, additional_offer_count, per-seller shipping_cost (a cost, 0 = free; never a landed price), and in_stock / as_of beside the unchanged stock_state / observed_at. gtin= resolves Walmart barcodes to item IDs. LIVE Walmart (2026-10-18): country=walmart&mode=live reads the walmart.com product page right now (typically 8-15 s) - price, stock, rating, the featured seller and the sellers the page lists, plus the PDP content above - laid over our stored history for the item (history_available says whether we held any). 2 credits; a partial page (title, no price, in stock), an item walmart.com does not have (404) and a failed or busy fetch (503) are never billed. mode=auto on Walmart works like Amazon: the stored record when observed within max_age_days (0.5), else a live read (2); mode=cache never fetches. A failed live read on an item we hold answers the stored record as source=cache_after_live_fail (0.5) with a note. One product page per call: the cheapest other seller Walmart shows only on a second page is not fetched (additional_offer_count says how many there are). location names the store walmart.com priced the page for (postal_code, city, state, store_id): each read can land on another store, and fresh grocery is priced per store. buybox_price_points_hot (2026-10-14): every all-offers-page observation of the last 30 days {ts, price, seller, seller_id, fulfillment, offer_count}, newest last — sub-daily for hot-lane ASINs (observed every few hours), the walk's and on-demand observations for the rest; null when none. tracking: the hot lane's state for the ASIN {hot, interval_min, rate, source, last_fetched_at, next_due_at}, null when the ASIN is not in the lane. Both on every Amazon answer, included in the record; history_only carries buybox_price_points_hot. The cache snapshot's as_of and the fresh flag behind mode=auto follow the latest observation we hold (not only the nightly summary), so a hot-lane fetch makes the record fresh. buybox_state (2026-10-14, §86): what the lane's newest all-offers read saw — in_stock | no_buybox (offers, but no featured offer) | out_of_stock (no offers) — with buybox_state_observed_at; when that read is newer than the daily history's last point it decides stock_state / in_stock and stock_state_source names it. stock_state, in_stock and the tri-state out_of_stock always agree (2026-10-15). buybox_condition (2026-10-15): new | used | null (no featured offer) with buybox_condition_source (product_page | offers_page) and buybox_condition_detail (the pinned offer's condition text, used_only_buybox, or the used storefront's name — Amazon Resale / Warehouse / Retourenkauf …, which win the buy box like any seller and read as Amazon retail before): live = measured on the fetch; cache = the pinned offer's stored condition at the row's observation, else the storefront name. On LIVE answers variation_status (page_is_sibling | page_is_other | null) + page_asin say when Amazon served another ASIN's page for the one asked (cache answers carry both as null); the stock keys describe the ASIN asked for, the content fields the page served.

PDP content (2026-08-09, Amazon marketplaces): description + description_source (product_description = prose, feature_bullets = "About this item", aplus = brand marketing — bullets read very differently from prose), the full image gallery (images[], ≤20 originals), feature_bullets[], breadcrumbs[] (full category path), the variations matrix (variations[] with child_asin + dimension_values + availability, variation_count, parent_asin — an EMPTY variations is normal, most ASINs have no variants; per-variant PRICE is NOT included, Amazon only sends it on selection), featured reviews (reviews[], ≤50 — the accumulated set Amazon shows a logged-out visitor, NOT the full review history; the count varies per fetch because Amazon does not always render the section; date_raw is verbatim and carries the review country + a localised month name — parse downstream, keep the country), and a tri-state out_of_stock (true = out of stock: Amazon's dedicated out-of-stock buybox on the page, or the newest offers read found no offer - it always agrees with stock_state; false = in stock, null = unknown). bought_past_month null means NO BADGE — Amazon only badges higher-velocity listings — never "we missed it". content_observed_at null with empty arrays means content has not been captured for this ASIN yet. The "Customers say" AI summary/aspect chips are NOT available (lazy-loaded after our snapshot). No extra charge for any content field.

2026-09-27 (additive, Amazon marketplaces, no extra charge): dimensions (item weight + package dimensions as printed plus parsed value/unit and metric weight_g / *_cm), deal_history (list price, savings and coupon/promotion text as segments of consecutive observations, with parsed coupon_amount / coupon_percent and a current view), bought_past_month_history (the badge as segments; null = page observed without a badge), rating_history (one point per observed day: rating_count + rating, with ratings_gained_30d / 90d), and variation_coverage (the variation matrix as last observed with, per child, whether we track it and its latest 30-day price — current state, not history). With offer_history=true every point also carries the offer's shipping (cost), fba and prime for that day, and each series row fba_days / fba_last / shipping_last (null on legacy-era days before 2026-04-17). Explicit null on Walmart. Also since 2026-09-27: sales_estimate is null whenever the bought-past-month badge is present (the badge is the measured figure; the estimate is served only for unbadged listings), and reviews[] lists the marketplace's own reviews (is_local true) before the other-countries set.

get/v1/product

Request

  • Base URL: https://api.logimu.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.logimu.com/v1/product
  • Auth: none declared

Query parameters

asinstring nullable

Amazon ASIN (or numeric item ID for country=walmart). Provide either asin or gtin.

gtinstring nullable

GTIN / UPC / EAN / ISBN-13 barcode (8, 12, 13 or 14 digits; punctuation and leading zeros are tolerated). Resolved to an ASIN in the requested marketplace, cheapest evidence first: the barcode on a listing we observe there, a print book's ISBN-10, the same product's barcode on another Amazon marketplace, and - with mode=auto (the default) or mode=live - Amazon's own search for the barcode (organic results only, never sponsored; the one whose listing carries the barcode wins; adds ~10-20 s the first time, then cached 60 days). gtin_resolution says which step answered, how confident it is, and whether the barcode is printed on that listing (barcode_verified true / false / null). A barcode can legitimately map to several ASINs - the best match is returned and every match is listed in gtin_matches. The lookup is included in the product's price; a barcode nothing resolves is a 404 and never billed. country=walmart resolves against the UPC of observed walmart.com listings and returns numeric item IDs.

countrystring

Marketplace: us, uk, de, ca, au, fr, it, es, jp, mx, br, walmart.

modestring
max_age_daysinteger
bsr_historyboolean

Attach the full per-category BSR rank history (both eras, era-tagged daily points, legacy top-100 segments flagged censored). Included in the record - no extra credits. Amazon marketplaces only.

offer_historyboolean

Attach the buy-box owner timeline + per-seller price series (daily points from our multi-seller offer stream; US buy-box depth to Dec 2024). Every observed seller is listed; point series for the 10 most-observed sellers, 500 points each, by default - widen with history_sellers / history_points. Also attaches buybox_price_history: the lowest buy-box price of every observed day, Amazon US from Nov 2023 (the legacy daily snapshot), every point labelled with its source. Included in the record - no extra credits. Amazon marketplaces only.

history_onlyboolean

Return ONLY the stored history series - bsr_history, offer_history and buybox_price_history - with no snapshot, content, current_sellers or brand stats, for 0.05 credit (Amazon marketplaces, served from stored observations: mode=live is refused). The cheap lane for price / rank tracking at volume; history_sellers / history_points still shape the offer series. Not billed when nothing is stored for the ASIN.

full_offersboolean

Return the COMPLETE seller list instead of the buy box + first page (~10 offers). Only affects a live scrape (mode=live, or mode=auto when the cache is stale). Adds roughly 15-20s. NOT billed extra - still one call. Use it for unauthorized-seller, MAP and hijacker work, where sellers deeper than the top 10 are the whole point; leave it off for repricing and sourcing, where the buy box plus top offers is enough.

history_sellersinteger

With offer_history: how many of the most-observed sellers carry a point series (default 10, max 50). Every observed seller is always listed as a summary row (name, seller_id, first/last seen, days_observed, buybox_days, points_total).

history_pointsinteger

With offer_history: points per series - the most recent N observed days (default 500, max 20,000; one point per observed day, so the observation depth is the real bound). Wider series are included too - no extra credits (the points beyond the default 10 sellers x 500 are still disclosed as offer_history.points_extra, with extra_credits 0).

marketplacestring nullable

Alias for country, accepting /v1/search-style values (amazon-de, amazon-us, … or bare de/us/walmart).

include_usedboolean

Include used, refurbished, open-box and collectible offers in current_sellers (and, with offer_history, one series per seller+condition_class). Default false keeps the new-condition list unchanged. Every seller row always carries condition (the marketplace's own label) and condition_class (new, used_like_new, used_very_good, used_good, used_acceptable, used, refurbished, open_box, collectible, unknown); current_sellers always carries used_offer_count, lowest_new (the cheapest new offer - the list is buy-box first, not price-sorted) and lowest_used (the cheapest second-hand offer of the snapshot) whether or not you opt in. Applies to cached, live and historical data alike. Not billed extra.

trackboolean

Answer AND track (2026-10-14): after this answer the ASIN is pinned into our hot lane, which re-reads its all-offers page every interval for 30 days and adds every read to buybox_price_points_hot - the same as POST /v1/track. 0 extra credits: the record is billed as usual and the tracking draws on the plan's daily tracked-snapshot allowance. The answer is served even when the tracking is refused; the track block says what happened (status active / refused, granted_interval, allowance). Amazon only.

intervalstring nullable

With track=true: 1h, 2h, 4h (default), 12h or 24h.

Headers

x-api-keystring nullable
authorizationstring nullable

Response

Successful Response

unknown required

Changes

No recorded changes to this operation across all 1 revision of this API.