Syntalic — Data Analytics for Agentic Commerce — MPP Grade C
On-chain Activity
Compliance Checks
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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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
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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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
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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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
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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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
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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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 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
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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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)
| Field | Type | Description |
|---|---|---|
| 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)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
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 |