# Syntalic > Real-time competitive pricing data across US and Canadian e-commerce retailers, served to AI agents via x402 micropayments. - [Introduction](https://crushrewards.dev/docs/introduction.md): Real-time competitive pricing data for AI agents — pay per query, no API keys. - [MCP Server](https://crushrewards.dev/docs/integrate/mcp.md): Use Syntalic in Claude Code, Cursor, or any MCP-compatible client. - [AgentCash](https://crushrewards.dev/docs/integrate/agentcash.md): Pay for Syntalic through the AgentCash CLI in three commands. - [pay.sh](https://crushrewards.dev/docs/integrate/pay-sh.md): Use Syntalic from any agent that has the pay CLI attached. - [Direct HTTP](https://crushrewards.dev/docs/integrate/http.md): Make paid HTTP requests to the API with an x402 client wrapper. - [Payments overview](https://crushrewards.dev/docs/payments/overview.md): Two payment protocols, three integration paths. - [x402 (USDC)](https://crushrewards.dev/docs/payments/x402.md): Pay per request in USDC on Solana or Base via the x402 protocol. - [MPP / Tempo](https://crushrewards.dev/docs/payments/mpp.md): Hosted micropayments via Tempo for agents that can't sign on-chain transactions. - [MCP Tools](https://crushrewards.dev/docs/reference/mcp-tools.md): What you can ask Syntalic through Claude Code, Cursor, or any MCP client. - [Pricing tiers](https://crushrewards.dev/docs/reference/pricing.md): Three personas, two price points, thirteen endpoints. - [Coverage](https://crushrewards.dev/docs/reference/coverage.md): Which retailers, which countries, and how fresh the data is. - [Auth & rate limits](https://crushrewards.dev/docs/reference/auth-and-rate-limits.md): How requests are authenticated and rate-limited. - [OpenAPI 3.1 discovery document](https://crushrewards.dev/docs/api-reference/public/openapi-31-discovery-document.md): Free machine-readable contract. Not a paid resource — agents and scanners should fetch this without a payment challenge. - [Catalog coverage and freshness stats](https://crushrewards.dev/docs/api-reference/public/catalog-coverage-and-freshness-stats.md): Zero-cost aggregate discovery endpoint with catalog coverage, category tree counts, retailer count, and latest priced-data timestamp. - [Browse public category taxonomy](https://crushrewards.dev/docs/api-reference/public/browse-public-category-taxonomy.md): Zero-cost aggregate category discovery endpoint. Returns category path nodes and rolled-up product counts; row-level product data remains on paid endpoints. - [List retailers (platforms) in the catalog](https://crushrewards.dev/docs/api-reference/public/list-retailers-platforms-in-the-catalog.md): Zero-cost aggregate discovery endpoint. One row per platform with served product count, countries seen, and freshest observation; row-level product data remains on paid endpoints. - [List brands in the catalog](https://crushrewards.dev/docs/api-reference/public/list-brands-in-the-catalog.md): Zero-cost aggregate discovery endpoint. One row per normalized brand with a display label and served product count; optional q prefix-matches the normalized key (JBL == jbl). - [Catalog coverage map (depth/quality per cell)](https://crushrewards.dev/docs/api-reference/public/catalog-coverage-map-depthquality-per-cell.md): Zero-cost aggregate discovery endpoint. Coverage + freshness per (platform, country, category_root): priced/recent/known-brand product counts and quality_status (serving/thin/unmanaged/empty), so an agent can gauge whether a paid query will hit deep data. Row-level product data remains on paid endpo… - [Find the best price for a product across retailers](https://crushrewards.dev/docs/api-reference/shopper/find-the-best-price-for-a-product-across-retailers.md): Returns a nullable `gpc` block identifying the resolved product's GS1 GPC product type (code, title, full ancestry, and how exact the mapping is) — null when the product's category has no GPC mapping. Find the lowest current price for a product across retailers in US and Canada. Cross-retailer compa… - [Get price history for a product over time](https://crushrewards.dev/docs/api-reference/shopper/get-price-history-for-a-product-over-time.md): 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. Includes a nullable gpc block for the resolved product (fail-soft). - [Find discounted products in a category](https://crushrewards.dev/docs/api-reference/shopper/find-discounted-products-in-a-category.md): 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… - [Check for recent price drops on a product](https://crushrewards.dev/docs/api-reference/shopper/check-for-recent-price-drops-on-a-product.md): 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 alway… - [View all products and pricing in a category](https://crushrewards.dev/docs/api-reference/marketing/view-all-products-and-pricing-in-a-category.md): 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, plus a nullable gp… - [Track a brand's pricing and presence over time](https://crushrewards.dev/docs/api-reference/marketing/track-a-brands-pricing-and-presence-over-time.md): 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_thres… - [Analyze promotional activity in a category](https://crushrewards.dev/docs/api-reference/marketing/analyze-promotional-activity-in-a-category.md): 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=` to answer 'which retailers run… - [See brand market share within a category](https://crushrewards.dev/docs/api-reference/marketing/see-brand-market-share-within-a-category.md): 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. - [Analyze a brand's price positioning vs competitors](https://crushrewards.dev/docs/api-reference/marketing/analyze-a-brands-price-positioning-vs-competitors.md): Compare a brand's average current price to the category average/median and classify positioning as premium, mid-range, or value. - [Measure out-of-stock rates by retailer or category](https://crushrewards.dev/docs/api-reference/marketing/measure-out-of-stock-rates-by-retailer-or-category.md): Out-of-stock rate by retail chain or by category root - an on-shelf availability read rather than a pricing one. Answers 'which retailers are running out of stock', 'what is the stockout rate in this category', and 'is my brand actually on shelf'. Pivot with aggregate_by: 'seller' (default) ranks ch… - [Find which retail chains carry a brand or category](https://crushrewards.dev/docs/api-reference/marketing/find-which-retail-chains-carry-a-brand-or-category.md): Which retail CHAINS carry a brand or a category, ranked by how many distinct priced products each lists, with that chain's average and median price. Answers 'who stocks this brand', 'where can I find it', and 'which retailers carry the most of this category'. Grouped on the retailer chain, never on… - [Break a brand's assortment down by category](https://crushrewards.dev/docs/api-reference/marketing/break-a-brands-assortment-down-by-category.md): What a brand actually sells: a count of its distinct priced products under each category root, ranked. Answers 'what is this brand's product mix' and 'which categories does it really compete in' - useful before a positioning or shelf question, so the comparison targets the category the brand is dens… - [Rank creators by mention volume in a category](https://crushrewards.dev/docs/api-reference/social/rank-creators-by-mention-volume-in-a-category.md): Creators ranked by mention volume within a CPG category, with follower tier, reach, organic share, engagement rate and momentum. Answers 'who is talking about this category', 'which creators drive the conversation', and 'who is new this window'. Handles are public identifiers; no contact details, no… - [Share of social conversation by brand](https://crushrewards.dev/docs/api-reference/social/share-of-social-conversation-by-brand.md): Share of social conversation by brand inside a category, or inside one subcategory, with movement. Pass `subcategory` to switch axis: absent gives the category root plus its subcategories, present gives that subcategory plus its siblings. Pass `brand` to filter to one. `mentions` is the event count… - [Show which subcategories own a category's conversation](https://crushrewards.dev/docs/api-reference/social/show-which-subcategories-own-a-categorys-conversation.md): Which subcategories own a category's conversation, and how concentrated it is: mentions, share, growth, the leading brand, top-2 concentration, and the share of mentions carried by a single creator. A creator_top_pct at or above 60 means one voice carries the subcategory, which is a different fact f… - [Rank brands by conversation momentum in a category](https://crushrewards.dev/docs/api-reference/social/rank-brands-by-conversation-momentum-in-a-category.md): Brands ranked by MOVEMENT in a category's conversation — new entrants first, then the biggest risers and fallers by mention growth. This is the trend view over the same rows brand-share ranks by volume: one dataset, two questions, deliberately not two copies. Each row carries its prior-window base a… - [Emerging conversation topics in a category](https://crushrewards.dev/docs/api-reference/social/emerging-conversation-topics-in-a-category.md): Emerging and shifting conversation topics inside a category: theme, the product types it spans, post volume, view-weighted reach, growth against the prior window, and a status of new, rising, falling or flat. Topics come from the corpus enrichment's theme extraction — market fact, not a tenant view.… - [Attention by product type within a category](https://crushrewards.dev/docs/api-reference/social/attention-by-product-type-within-a-category.md): Attention by product type within a category or one subcategory: which types own the conversation and how that mix is shifting. `share_pct` is the type's share of MENTION COUNTS in scope — the same mention-not-view rule every social endpoint holds, because Instagram stills report no plays. Movement f… - [Weekly mentions/views time series for one subject](https://crushrewards.dev/docs/api-reference/social/weekly-mentionsviews-time-series-for-one-subject.md): Weekly mentions and views time series for one subject — a brand, a category, or a subcategory — for charting and modelling. Weeks, not days: the corpus refresh is weekly, and a daily grain would imply precision the pipeline does not have. Coverage counts the WEEKS the series actually has and says so… - [Rank brands by share-of-conversation vs share-of-shelf gap](https://crushrewards.dev/docs/api-reference/social/rank-brands-by-share-of-conversation-vs-share-of-shelf-gap.md): Brands ranked by the GAP between share of social conversation and share of shelf inside one category. Over-indexed attention with under-distribution is the ranging signal a retail buyer wants and the deck slide a challenger brand wants - one endpoint, two customer types. Requires BOTH corpora bound… - [New shelf arrivals vs the conversation around their brand](https://crushrewards.dev/docs/api-reference/social/new-shelf-arrivals-vs-the-conversation-around-their-brand.md): New shelf arrivals in the window set against the conversation around their brand: which launches landed with traction and which landed in silence. SILENT LAUNCHES ARE RETURNED, FLAGGED - most launches are silent, so filtering them out answers a different and much less useful question. Mentions are B… - [Rank the biggest price movers in a category or brand](https://crushrewards.dev/docs/api-reference/analyst/rank-the-biggest-price-movers-in-a-category-or-brand.md): Per-product price-change leaderboard: the biggest droppers and gainers in a category or for a brand. Each product's change is LIKE-FOR-LIKE between two matched bands - the best price now versus the best price a window ago - over win = 7, 30 (default) or 90 days, which is the same comparison the Synt… - [Measure how concentrated a category is](https://crushrewards.dev/docs/api-reference/analyst/measure-how-concentrated-a-category-is.md): How concentrated or fragmented a category is: HHI on the standard 0-10,000 scale, CR4 (the combined share of the four largest brands), the effective number of brands, and a plain-language label. Answers 'is this category competitive or dominated', 'how many real players are there', and 'what is the… - [Track price inflation trends in a category or department](https://crushrewards.dev/docs/api-reference/analyst/track-price-inflation-trends-in-a-category-or-department.md): Track category-level price inflation with configurable daily, weekly, or monthly granularity. PREFER lfl_change_pct: the like-for-like change over the whole window, computed per product between the first and last period and summarised as a trimmed mean, with lfl_matched / lfl_rising / lfl_stable / l… - [Analyze price spread across retailers for a category or department](https://crushrewards.dev/docs/api-reference/analyst/analyze-price-spread-across-retailers-for-a-category-or-department.md): 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… - [Price index for a specific retailer over time](https://crushrewards.dev/docs/api-reference/analyst/price-index-for-a-specific-retailer-over-time.md): 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. - [Price band and tiers for a category node](https://crushrewards.dev/docs/api-reference/analyst/price-band-and-tiers-for-a-category-node.md): The price architecture of one shelf: the comparability window that defines 'similarly priced' there, and the shelf's price tiers. Scoped by ladder NODE (a category path like 'electronics/headphones'), because a band is a property of one shelf. The window is derived in log space from the shelf's own… - [High-level summary statistics for a category or department](https://crushrewards.dev/docs/api-reference/analyst/high-level-summary-statistics-for-a-category-or-department.md): 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 `exclud… - [Map Amazon browse node ids to GS1 GPC codes](https://crushrewards.dev/docs/api-reference/reference/map-amazon-browse-node-ids-to-gs1-gpc-codes.md): Map Amazon browse node ids or product-type phrases to GS1 GPC codes. Accepts up to 100 comma-separated browse_id values or q phrases per request (not both). Each browse result carries GPC ancestry, match_precision (SKOS-style), match_source (self | inherited), assurance_state, and browse_node { name… - [Map GS1 GPC codes back to Amazon browse nodes](https://crushrewards.dev/docs/api-reference/reference/map-gs1-gpc-codes-back-to-amazon-browse-nodes.md): Reverse the crosswalk: given GS1 GPC codes, return the Amazon browse nodes mapped onto them. Accepts up to 100 comma-separated gpc_code values. browse_node_count is the true total per code; browse_ids is capped per code (see ids_per_code_cap in the response) because a coarse segment can carry thousa… - [GS1 GPC attribute schema for one or more bricks](https://crushrewards.dev/docs/api-reference/reference/gs1-gpc-attribute-schema-for-one-or-more-bricks.md): Return the GPC attribute schema for one or more bricks - attribute names and their allowed value sets. Accepts up to 100 comma-separated gpc_code values. Use this to discover which attributes GS1 defines for a product category (for example Formation, If Organic) and the controlled vocabulary each on… ## OpenAPI Specs - [openapi](https://api.syntalic.com/openapi.json)