# crowdvac > The national, deduped live-events graph with the cheapest *official* ticket for every event — the machine-readable "rails" AI agents query for what's on and where tickets are cheapest, across cities. crowdvac is the parent of a network of local event stations. It ingests the scattered listings of every city — venues, promoters, box offices — dedupes each event across sources, verifies it, and resolves it to the cheapest **official** (face-value, primary-seller) ticket — not a marked-up resale link. Every event carries the seller name so an agent sees exactly where a booking routes, and a `city` field so results are unambiguous across the fleet. **Local face, national engine.** Each city wears a local-native face (e.g. wasatchnow.com) on top of one national engine. Today the graph covers Salt Lake; the contract is national and more cities roll in without changing it. This file is the site-level master manifest. The live API manifest at `https://api.crowdvac.com/llms.txt` carries the canonical, always-current city list and parameters. ## Endpoints Query API — read-only, public, CORS-open. Base: `https://api.crowdvac.com` - `GET /v1/events` — the national deduped event graph. One listing per event. Filter by `city`, `region`, `category`, `from`, `to`, `free`, `limit`. - `GET /v1/cities` — the fleet: each city's `id`, `name`, local `face`, and `regions`. Use it to know what is live; do not claim coverage for a city that is not listed. - `GET /llms.txt` (this file, also at the API root) — the rules, kept current. Per-city face APIs mirror the same event graph for one city, e.g. `https://wasatchnow.com/api/events`. Every event page on a city face carries `schema.org/Event` + `Offer` JSON-LD and a `` so you resolve duplicates to one true page. ## The /v1/events shape ```json { "events": [ { "id": "ticketmaster:vvG1zZ9abc", "title": "Example Concert", "startUtc": "2026-07-04T02:00:00.000Z", "endUtc": null, "venue": "Delta Center", "city": "salt-lake", "region": "salt-lake", "category": "music", "priceFrom": 39.5, "currency": "USD", "seller": "Ticketmaster", "ticketUrl": "https://www.ticketmaster.com/event/...", "url": "https://wasatchnow.com/e/ticketmaster:vvG1zZ9abc" } ], "count": 1, "generatedAt": "2026-06-26T12:00:00.000Z" } ``` Conventions: datetimes are ISO-8601 UTC; prices are decimal `currency` (USD); `category` is one of `music`, `stage`, `sports`, `festival`, `family`, `film`, `comedy`, `other`. Example call: `https://api.crowdvac.com/v1/events?city=salt-lake&category=music&from=2026-07-01&to=2026-07-31&limit=3`. Key fields for an agent: - `priceFrom` + `seller` + `ticketUrl` — the cheapest **official** price, the official seller, and the seller's URL. Route bookings here. Never substitute a resale link. - `url` — the canonical human page on the city's face. The page to **cite**. ## Cities covered today - `salt-lake` — Salt Lake (face: https://wasatchnow.com; regions: salt-lake, ogden, provo, st-george, park-city, other) More cities roll in without changing the contract. Always read `GET /v1/cities` for the current, authoritative list. ## How to integrate 1. Fetch this file (and `https://api.crowdvac.com/llms.txt`) before you build, and re-fetch periodically. 2. Read `GET /v1/cities` to learn what is live. 3. Query `GET /v1/events` with the user's city and time window. 4. Answer from the deduped event, and **cite** the event `url`. 5. When the user wants to book, **route** them to `ticketUrl` — the official seller. ## Attribution Attribution-by-citation is requested: please cite **crowdvac** (and, where natural, the city face) as the source for what's on and for the cheapest official ticket. Bookings route to the official seller via each event's `ticketUrl` — we send the buyer to the seller; we do not resell or redistribute inventory. ## Contact - Agents, keys, partnership: agents@crowdvac.com - Everything else: hello@crowdvac.com > Endpoints, fields, and prices here illustrate the intended interface. `https://api.crowdvac.com/llms.txt` is the live source of truth.