C

Syntalic — Data Analytics for Agentic Commerce — MPP Grade C

Preview responses and set spending limits for this service through use.mpp.land Free budget controls, response samples, and reliability routing.

On-chain Activity

71 Total txs
0 7d txs
$0.00 7d volume
$0.82 Total volume
1 Unique payers
0 Unique clients
7-day activity ▁▁▁▁▁▁▁

Compliance Checks

All paid ops declare 402 response MUST 10pt
All x-payment-info valid MUST 10pt
- Challenge has Cache-Control: no-store MUST 5pt
- Challenge digest on POST SHOULD 3pt
- Challenge has expires SHOULD 3pt
- Challenge has Problem Details SHOULD 2pt
- Challenge has required params MUST 5pt
- Challenge has WWW-Authenticate MUST 5pt
Challenge returns 402 MUST 10pt
Correct Content-Type MUST 5pt
Has Cache-Control on discovery SHOULD 5pt
Has input schemas SHOULD 5pt
Has llms.txt SHOULD 5pt
Has /openapi.json at root MUST 10pt
Has required top-level fields MUST 10pt
Served over HTTPS MUST 10pt
Uses standard categories SHOULD 2pt
2 issues
  • OpenAPI doc exceeds 64KB limit (158299 bytes)
  • Endpoint GET /v1/shopper/best-price returned 400 (expected 402)

Paid Operations (13)

GET /v1/shopper/best-price 0.01 USDC.e
Find the best price for a product across retailers

Find the lowest current price for a product across retailers in US and Canada. Cross-retailer comparison is entity-matched (barcode-anchored resolution links the same physical product across platforms). Returns the cheapest option plus other retailer prices for comparison. Every price row is labeled match_type: 'entity' (verified same product) or 'title' (text match — may be a variant on broad queries); pass strict=true to restrict the comparison to entity-verified rows only. Comparison rows carry observed_at so mixed-vintage prices are distinguishable.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
q query string No Search query (product name, keyword, or brand + model). Required unless `product_uid` or `entity_uid` is supplied.
product_uid query string No Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text.
entity_uid query string No Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
limit query integer No Max results to return (default 10, min 1, max 50)
strict query boolean No When true, restrict the comparison to entity-verified listings of the matched product (match_type 'entity' only). Default false also includes title-match rows — useful for broad queries, but may mix product variants.

Response Schema (200)

FieldTypeDescription
best_price object -
country string -
currency string -
meta object -
other_prices array[object] -
query string -
GET /v1/shopper/price-history 0.01 USDC.e
Get price history for a product over time

Get historical price observations for a product within a date range. Returns current price, period low/high/avg, trend (rising/falling/stable), good-deal flag, and an observation time-series for charting.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
q query string No Search query (product name, keyword, or brand + model). Required unless `product_uid` or `entity_uid` is supplied.
product_uid query string No Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text.
entity_uid query string No Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
from query string No Start date (ISO 8601, defaults to 30 days ago)
to query string No End date (ISO 8601, defaults to now)

Response Schema (200)

FieldTypeDescription
condition string -
country string -
currency string -
current_price number -
entity_uid string -
insufficient_history boolean -
is_good_deal boolean -
member_count integer -
meta object -
observation_count integer -
observations array[object] -
period_avg number -
period_high number -
period_low number -
product_name string -
product_uid string -
query string -
retailer string -
scope string -
trend string -
window object -
GET /v1/shopper/deal-finder 0.01 USDC.e
Find discounted products in a category

Discover discounted in-stock products in a category above a minimum discount threshold (discount = current price below the retailer's list price). Quality-gated: unbranded listings, sub-$5 items, and discounts above 70% (the inflated-list-price spam signature) are excluded. Ranked by discount depth weighted by log(price), so meaningful discounts on real products outrank deep cuts on trinkets. Each deal carries observed_at (when its price was seen).

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string Yes Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring).
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
min_discount_pct query integer No Minimum discount percentage (default 10)
limit query integer No Max results to return (default 20, min 1, max 50)

Response Schema (200)

FieldTypeDescription
category string -
country string -
currency string -
deals array[object] -
meta object -
total_deals_found integer -
GET /v1/shopper/price-drop-alert 0.01 USDC.e
Check for recent price drops on a product

Check whether a product's current price is below its rolling average within a configurable lookback window. Returns current price vs. the average across the window plus the lowest-seen price and date. Response field `avg_price_last_30d` is a fixed name for backwards compatibility; the value is always computed across the configured `lookback_days` window.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
q query string No Search query (product name, keyword, or brand + model). Required unless `product_uid` or `entity_uid` is supplied.
product_uid query string No Stable product identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should pin to this listing instead of re-resolving free text.
entity_uid query string No Stable cross-retailer entity identifier returned by a prior Syntalic shopper response. When supplied, the endpoint should resolve within the same physical-product entity.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
lookback_days query integer No Days to look back for price drops (default 30). Backwards-compatible alias for matching `last_N_days` windows.

Response Schema (200)

FieldTypeDescription
avg_price_last_30d number -
condition string -
country string -
currency string -
current_price number -
entity_uid string -
insufficient_history boolean -
is_price_drop boolean -
lowest_seen number -
lowest_seen_date string (date) -
member_count integer -
meta object -
observation_count integer -
price_vs_avg_pct number -
product_name string -
product_uid string -
query string -
retailer string -
scope string -
window object -
GET /v1/marketing/competitive-landscape 0.01 USDC.e
View all products and pricing in a category

View every product and its current pricing within a category across retailers. Sortable by price (rating/review sorts are accepted for compatibility and fall back to price ordering). Each item carries a condition label (new/refurbished/used) so refurb listings are distinguishable. Offset-cursor paginated.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string Yes Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring).
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
sort_by query string No Sort order (rating/reviews accepted for compatibility; fall back to price_asc)
cursor query integer No Pagination cursor — pass the previous response's next_cursor
limit query integer No Max results to return (default 20, min 1, max 50)

Response Schema (200)

FieldTypeDescription
category string -
country string -
currency string -
has_more boolean -
items array[object] -
meta object -
next_cursor integer -
resolved object -
GET /v1/marketing/brand-tracker 0.01 USDC.e
Track a brand's pricing and presence over time

Track a brand's average/min/max price, product count, in-stock count, and promo count day-by-day across a date range. Brand input matches case-insensitively and across normalization variants (jbl == JBL, tplink == TP-Link). Each point reports insufficient_sample when its basket is under sample_threshold products, plus stable_avg_price computed over only the products priced on every day of the series — use stable_avg_price for trend reads; the all-products average moves with basket composition.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
brand query string Yes Brand name (e.g., Sony, Samsung, Nike)
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
from query string No Start date (ISO 8601, defaults to 30 days ago)
to query string No End date (ISO 8601, defaults to now)

Response Schema (200)

FieldTypeDescription
brand string -
country string -
currency string -
insufficient_sample boolean True when any series point has a basket below sample_threshold.
insufficient_sample_points integer -
meta object -
retailer string -
sample_threshold integer -
stable_basket_size integer Products priced in every period of the series (the basis of stable_avg_price). Null for single-point series.
time_series array[object] -
window object -
GET /v1/marketing/promo-intelligence 0.01 USDC.e
Analyze promotional activity in a category

Analyze promotional activity within a category - promo frequency, average and max discount depth - over a date range. Pivot the breakdown with `aggregate_by`: default `brand` ranks brands within the category; `retailer` ranks retailers (use together with `brand=<name>` to answer 'which retailers run the deepest promos on Brand X in Category Y'). The response key mirrors the dimension: `brands: [...]` or `retailers: [...]`.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string Yes Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring).
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
brand query string No Optional brand filter — limit aggregation to products of this brand (case-insensitive)
aggregate_by query string No Group-by dimension. `brand` (default) ranks brands within the category. `retailer` ranks retailers — pair with `brand` to answer 'which retailers run the deepest promos on Brand X'.
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
from query string No Start date (ISO 8601, defaults to 30 days ago)
to query string No End date (ISO 8601, defaults to now)

Response Schema (200)

FieldTypeDescription
aggregate_by string -
brand string -
brands array[object] -
category string -
country string -
currency string -
meta object -
resolved object -
retailer string -
retailers array[object] -
window object -
GET /v1/marketing/share-of-shelf 0.01 USDC.e
See brand market share within a category

Measure each brand's market share within a category by product count. Shows digital shelf dominance. Brand rows are merged across source variants ('JBL'/'jbl', 'TP-Link'/'tplink') with one canonical display label; placeholder brands (null, 'no', 'Generic') are excluded.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string Yes Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring).
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)

Response Schema (200)

FieldTypeDescription
brands array[object] -
category string -
country string -
currency string -
meta object -
resolved object -
total_products integer -
GET /v1/marketing/price-positioning 0.01 USDC.e
Analyze a brand's price positioning vs competitors

Compare a brand's average current price to the category average/median and classify positioning as premium, mid-range, or value.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:10000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:10000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
brand query string Yes Brand name (e.g., Sony, Samsung, Nike)
country query string No Country (us or ca)
category query string No Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring).
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)

Response Schema (200)

FieldTypeDescription
brand string -
brand_avg_price number -
category string -
category_avg_price number -
category_median_price number -
country string -
currency string -
meta object -
positioning string -
price_index number -
product_count integer -
resolved object -
GET /v1/analyst/inflation 0.02 USDC.e
Track price inflation trends in a category or department

Track category-level price inflation with configurable daily, weekly, or monthly granularity. Period-over-period change_pct uses matched-pairs methodology: only products priced in both consecutive periods count, aggregated as the geometric mean of price relatives (Jevons), so basket-composition shifts don't masquerade as inflation. Each period reports matched_basket_size and method ('matched', or 'naive' avg-vs-avg fallback when fewer than 10 products match); overall_change_pct chains the per-period changes. The catalog refresh cadence is monthly, so granularity=monthly gives the most stable matched baskets.

Amount
0.02 (raw 20000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:20000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:20000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string No Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring). For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
department query string No Top-level department (root category), e.g. 'Electronics', 'Beauty', 'Home & Kitchen'. Case-insensitive; matched against the category tree's root segment. For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
from query string No Start date (ISO 8601, defaults to 30 days ago)
to query string No End date (ISO 8601, defaults to now)
granularity query string No Time granularity for the series

Response Schema (200)

FieldTypeDescription
category string -
country string -
currency string -
department string -
granularity string -
meta object -
method string -
overall_change_pct number -
resolved object -
time_series array[object] -
window object -
GET /v1/analyst/price-dispersion 0.02 USDC.e
Analyze price spread across retailers for a category or department

Analyze the spread of current prices within a category - mean, stddev, coefficient of variation, and percentiles (p10..p90) with IQR outlier exclusion. The population is representativeness-filtered: refurbished/used listings, accessory/parts subtrees, and rows under a category-aware price floor are excluded from headline stats, with the counts disclosed in `excluded`.

Amount
0.02 (raw 20000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:20000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:20000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string No Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring). For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
department query string No Top-level department (root category), e.g. 'Electronics', 'Beauty', 'Home & Kitchen'. Case-insensitive; matched against the category tree's root segment. For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)

Response Schema (200)

FieldTypeDescription
avg_price number -
category string -
coeff_of_variation number -
country string -
currency string -
department string -
excluded object Transparency counts: rows in scope but excluded from the headline statistics by the representativeness policy.
max_price number -
meta object -
min_price number -
outliers_excluded integer -
percentiles object -
product_count integer -
representative_floor number -
resolved object -
std_dev number -
GET /v1/analyst/retailer-index 0.02 USDC.e
Price index for a specific retailer over time

Compute a normalized price index (retailer avg / category avg) for a specific retailer day-by-day versus its category baseline. Points report insufficient_sample below sample_threshold products plus stable_avg_price over the products priced every day — read trends from the stable series.

Amount
0.02 (raw 20000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:20000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:20000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
retailer query string Yes Retailer platform key (e.g., amazon, walmart)
country query string No Country (us or ca)
category query string No Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring). For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
department query string No Top-level department (root category), e.g. 'Electronics', 'Beauty', 'Home & Kitchen'. Case-insensitive; matched against the category tree's root segment. For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
time_window query string No Historical window preset. Explicit `from`/`to` takes precedence and is reported as `custom`; `time_window=custom` requires both `from` and `to`. Date-only ranges use UTC calendar boundaries with inclusive `from` and exclusive `to`.
from query string No Start date (ISO 8601, defaults to 30 days ago)
to query string No End date (ISO 8601, defaults to now)

Response Schema (200)

FieldTypeDescription
category string -
country string -
currency string -
department string -
insufficient_sample boolean True when any series point has a basket below sample_threshold.
insufficient_sample_points integer -
meta object -
resolved object -
retailer string -
sample_threshold integer -
stable_basket_size integer Products priced in every period of the series (the basis of stable_avg_price). Null for single-point series.
time_series array[object] -
window object -
GET /v1/analyst/category-summary 0.02 USDC.e
High-level summary statistics for a category or department

High-level category statistics - product/brand/retailer counts, pricing (avg/min/max/median), promo rate, in-stock rate, and top brands. Headline stats are representativeness-filtered (no refurb/used, no accessory/parts subtrees, category-aware price floor) with exclusion counts disclosed in `excluded`; brand_count and top_brands merge brand variants on the canonical key and exclude placeholders.

Amount
0.02 (raw 20000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: methods: [map[amount:20000 currency:0x20c000000000000000000000b9537d11c60e8b50 decimals:6 intent:charge method:tempo role:primary settlement:Tempo Allegro USDC.e]] price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[amount:20000 currency:USDC intent:charge method:tempo recipient:0xe2e662cF219025AFC0C9Bf850b6a2B0a0b5517fe]]]

Parameters

NameInTypeRequiredDescription
category query string No Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring). For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
department query string No Top-level department (root category), e.g. 'Electronics', 'Beauty', 'Home & Kitchen'. Case-insensitive; matched against the category tree's root segment. For analyst endpoints, supply either `category` or `department`; both may be supplied to narrow the scope.
country query string No Country (us or ca)
retailer query string No Filter to a specific retailer platform (long-tail specialty stores are also present; any platform key is accepted)

Response Schema (200)

FieldTypeDescription
avg_rating number -
brand_count integer -
category string -
country string -
currency string -
department string -
excluded object Transparency counts: rows in scope but excluded from the headline statistics by the representativeness policy.
in_stock_rate_pct number -
meta object -
pricing object -
product_count integer -
promo_rate_pct number -
representative_floor number -
resolved object -
retailer_count integer -
top_brands array[object] -

Payment Methods

Methods
tempo
Intents
charge
Currencies (discovery)
USDC.e
Multiple Challenges
No

Security

TLS Version
TLSv1.3
Challenge ID Unique
-
Challenge ID Length
-
Digest Binding
-

Uptime

Discovery
Reachable (323ms)
Challenge
Reachable (278ms)
Last Checked

Schema Completeness

Paid Operations
13
With Input Schema
0
With Description
13
13 missing schema
  • GET /v1/shopper/best-price
  • GET /v1/shopper/price-history
  • GET /v1/shopper/deal-finder
  • GET /v1/shopper/price-drop-alert
  • GET /v1/marketing/competitive-landscape
  • GET /v1/marketing/brand-tracker
  • GET /v1/marketing/promo-intelligence
  • GET /v1/marketing/share-of-shelf
  • GET /v1/marketing/price-positioning
  • GET /v1/analyst/inflation
  • GET /v1/analyst/price-dispersion
  • GET /v1/analyst/retailer-index
  • GET /v1/analyst/category-summary

Documentation

Homepage
-
API Reference
-
llms.txt
-

Discovery

OpenAPI URL
https://api.syntalic.com/openapi.json
OpenAPI Version
3.1.0
Service Version
1.0.0
Document Size
158299 bytes
Document Hash
90d169aea2f11d0ee3c45bc0c01069cee464f80ba8f2c3649061947695bf46bf

Version History (10 snapshots)

Grade: F (13%) → C (73%)
Grade: C (73%) → F (13%)
  • document hash changed (no semantic differences detected)
Grade: B (88%) → C (73%)
  • document hash changed (no semantic differences detected)
Grade: A (93%) → B (88%)
Scan snapshots
Date Grade Score Response Status
2026-06-11 A 93% 362ms Up
2026-06-12 A 93% 338ms Up
2026-06-13 C 73% 643ms Up
2026-06-14 C 73% 452ms Up
2026-06-15 C 73% 332ms Up
2026-06-16 C 73% 451ms Up
2026-06-17 C 73% 448ms Up
2026-06-18 C 73% 418ms Up
2026-06-19 C 73% 548ms Up
2026-06-20 C 73% 440ms Up