# cannastack > Agent-native cannabis data. Dispensary menus, prices, deals, and strain availability across the US, priced like an API call via x402. $0.02 per request, settled in USDC. No keys, no contracts. ## How to use - Every paid endpoint is a single `POST` with JSON body. An unpaid request returns HTTP 402 with payment requirements in the `payment-required` header. - Pay per request via x402 micropayments on Abstract (eip155:2741), settled in USDC. Route the call through an x402-capable client (x402 fetch shim, AgentCash, or any wallet that speaks x402). The same URL serves both 402 and 200. - US locations only. Provide a city name, "City, ST", or street address. - Geocoding and the underlying menu data come from Weedmaps; live-fallback kicks in when a metro is not yet in the database. ## Endpoints ### strain-finder (POST https://cannastack.0x402.sh/api/strain-finder) Price: $0.02 USDC. Search a strain across every dispensary menu within range. Sorted cheapest first. Parameters: - `strain` (string, required): Strain name. Partial match supported. - `location` (string, required): City, address, or "City, ST". US only. - `radius` (number, optional): Search radius in miles. Default 15, max 50. Example request: ```json { "strain": "Blue Dream", "location": "Denver, CO", "radius": 15 } ``` ### price-compare (POST https://cannastack.0x402.sh/api/price-compare) Price: $0.02 USDC. Compare prices for a category across every dispensary in range. Returns min/max/avg. Parameters: - `category` (string, required): flower, edibles, vape, concentrates, pre-rolls, drinks, tinctures, topicals, wellness - `location` (string, required): City, address, or "City, ST". US only. - `genetics` (string, optional): Filter by genetics: sativa, indica, hybrid - `radius` (number, optional): Search radius in miles. Default 15, max 50. - `limit` (number, optional): Max products to return. Default 50, max 100. Example request: ```json { "category": "flower", "location": "Seattle, WA", "genetics": "sativa", "limit": 50 } ``` ### deal-scout (POST https://cannastack.0x402.sh/api/deal-scout) Price: $0.02 USDC. Find dispensaries with active deals. Optionally filter by category. Parameters: - `location` (string, required): City, address, or "City, ST". US only. - `category` (string, optional): Filter deals to one category (flower, vape, etc.) - `radius` (number, optional): Search radius in miles. Default 15, max 50. Example request: ```json { "location": "Las Vegas, NV", "category": "flower" } ``` ### price-history (POST https://cannastack.0x402.sh/api/price-history) Price: $0.02 USDC. Track price changes over time for a strain or dispensary. Returns trend up/down/stable. Parameters: - `strain` (string, optional): Strain name (provide this OR dispensary) - `dispensary` (string, optional): Dispensary name (provide this OR strain) - `location` (string, optional): Optional: scope to a city - `category` (string, optional): Filter by category - `days` (number, optional): Lookback window in days. Default 30, max 365. Example request: ```json { "strain": "Gelato 42", "days": 30 } ``` ## Discovery - OpenAPI: https://cannastack.0x402.sh/openapi.json - x402 manifest: https://cannastack.0x402.sh/.well-known/x402.json - HTML docs: https://cannastack.0x402.sh/docs - Status: https://cannastack.0x402.sh/status (and JSON at https://cannastack.0x402.sh/api/analytics)