Cannabis License Verifier — 10 States, No Login, $20/1k
Pricing
from $20.00 / 1,000 verifications
Cannabis License Verifier — 10 States, No Login, $20/1k
Verify a list of cannabis licensees by license number or business name against official regulator data (CA, NY, MA, WA, CO, NV, MD, ME, CT, FL) and get normalised status, expiry, type and address back per query. No login. MCP-ready for AI agents. $20 per 1,000 verifications.
Pricing
from $20.00 / 1,000 verifications
Rating
0.0
(0)
Developer
Khrystyna Skotte
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Cannabis License Verifier — batch check license status in 12 US states
Give it a list of cannabis licensees (license numbers and/or business names) and get back, for each one,
whether it exists in the official state regulator data, its normalised status
(active, inactive, expired, suspended, revoked, pending), the raw regulator status, license type,
issue/expiry dates and premises address. Built for compliance, KYC/onboarding, banking, insurance and
supply-chain teams that need to re-verify a vendor or customer list — not download a whole state.
No browser, no proxies, no login: every source is a public regulator API, open-data feed or published spreadsheet, fetched live on each run.
Supported states
| State | Source (fetched live) | Coverage | Status detail | Freshness |
|---|---|---|---|---|
| CA | Dept. of Cannabis Control search API (search.cannabis.ca.gov) | All ~21k licenses incl. surrendered/expired/revoked | Full raw status + status date | Refreshed daily by DCC |
| NY | Office of Cannabis Management on data.ny.gov | ~3k current OCM licenses | Active / Inactive / In-Process / Under review | Weekly |
| MA | Cannabis Control Commission open-data extract | ~950 approved licenses | Active / Payment Pending + suspension/revocation dates | Weekly |
| WA | LCB retailer spreadsheet + producer/processor renewals on data.wa.gov | ~1.4k retailers, producers, processors | ACTIVE / CLOSED / EXPIRED / TITLE CERTIFICATE | Weekly (LCB) |
| CO | MED licensed-facility lists (all 9 facility types) | ~600 current facilities | Current licensees only (Licensed) + expiry date | Monthly |
| NV | Cannabis Compliance Board establishment list | ~640 active, conditional, surrendered/revoked | Active / Conditional / Surrendered / Revoked | Monthly |
| MD | Maryland Cannabis Administration data-dashboard workbook | ~210 growers, processors, dispensaries, ancillary | Current licensees only (Licensed) + start/expiry | Monthly |
| ME | Office of Cannabis Policy adult-use workbook + medical establishments & caregivers | ~1.9k | Active / Conditional / Pending | Monthly |
| CT | Dept. of Consumer Protection establishments on data.ct.gov | ~115 | Current licensees only (Licensed) | Weekly |
| FL | OMMU licensed MMTC table | ~50 MMTC license holders | Initial Licensure / Dispensing Authorization | As published |
| MI | Cannabis Regulatory Agency Accela portal, full "Download results" CSV export (adult-use + medical facility modules) | ~10k records incl. void/closed/suspended/revoked | Active / Active - Late Renewal / License Void / Closed / Suspended / Revoked + disciplinary-action flag | Live (exported from the CRA portal on every run) |
| OH | Division of Cannabis Control license lists (dispensary, cultivator, processor, testing-lab workbooks) | ~320 current dual-use licenses | Current licensees only (Licensed) + issue/expiry; legacy MMCP numbers also match | As published (list dated in the file, updated roughly weekly) |
States where the list contains only current licensees (CO, MD, CT, OH) return status: "active" with a
statusRaw that says so; a license that has lapsed simply won't match there (matched: false).
Not supported (and why): OR (OLCC moved its license table into a Socrata story with no public tabular feed as of Sep 2026), MO (Tableau only), AZ (regulator PDF last updated 2021), IL (PDF updated Jan 2026, layout too unstable for verification), NM (feed has no license numbers or status), MN / VT / NJ (browser-only portals), RI (blocks cloud requests).
Michigan rows carry the CRA record number (AU-R-…, GR-C-…, PC-…), the Accela status verbatim and a
; disciplinary action on file suffix in statusRaw when the CRA has public disciplinary documents for that
license; the export has no issue date. Ohio rows use the dual-use license number (CCD…, CCC…, CCP…, CCL…); a
query with the legacy medical-program number (MMCP…) still matches the same record.
Input
{"queries": [{ "state": "CA", "licenseNumber": "C10-0000651-LIC" },{ "state": "ME", "businessName": "The Cannabis Cabin LLC" },{ "state": "NY", "businessName": "7 Leaf Clover" },{ "state": "WA", "licenseNumber": "414884" },{ "state": "MI", "licenseNumber": "AU-R-001610" },{ "state": "OH", "businessName": "Ancient Roots LLC" },{ "businessName": "Curaleaf" }],"states": [],"matchMode": "fuzzy","maxResultsPerQuery": 3,"maxItems": 10}
| Field | Default | Notes |
|---|---|---|
queries | 3 sample lookups | Each object: state (2-letter), licenseNumber and/or businessName. Omit state to search every supported state. If both are given the license number is used. |
states | [] (all) | Only process queries for these states. |
matchMode | fuzzy | fuzzy ignores case, punctuation and entity suffixes (LLC, Inc, Corp…) and tolerates small typos; exact requires the normalised name / license number to match exactly. |
maxResultsPerQuery | 3 | Cap on candidate rows per query (multi-location operators often hold several licenses under one name). |
maxItems | 10 | Cap on total result rows. |
License numbers are matched on alphanumerics only, so c10-0000651, C10 0000651 and C10-0000651-LIC
all resolve to the same California license (confidence 0.95 when a state suffix is missing, 1.0 on exact).
Output
One row per match, or one row with matched: false when nothing in the state's data matches the query.
An unmatched result is a valid verification outcome (the licensee is not on the regulator's list) and is charged
like a match. Rows whose note reports an unsupported state or an unreachable source are not charged.
{"query": { "state": "CA", "licenseNumber": "C10-0000651-LIC" },"state": "CA","matched": true,"matchConfidence": 1,"matchedOn": "licenseNumber","licenseNumber": "C10-0000651-LIC","businessName": "Psgc, Inc.","dbaName": "Atomic Budz","licenseType": "Commercial - Retailer","status": "active","statusRaw": "Active","issueDate": "2019-11-08","expirationDate": "2026-11-07","address": "36063 Cathedral Canyon Dr","city": "Cathedral CTY","zip": "92234","county": "Riverside","sourceUrl": "https://search.cannabis.ca.gov/","note": null,"checkedAt": "2026-09-28T18:58:01.354Z"}
matchConfidence is 0–1: 1 = exact normalised match, 0.95 = license number without state suffix,
0.6–0.95 = fuzzy name match (Dice similarity / whole-word containment). matchedOn tells you whether the hit
was on licenseNumber, businessName or dbaName.
Status normalisation
status | Raw regulator values mapped here |
|---|---|
active | Active, ACTIVE (ISSUED), Active (renewal on file), Open, Licensed, Approved, Limited Operations, Initial Licensure, Dispensing Authorization |
pending | Pending, Conditional, Pending Conditional, In-Process, Payment Pending, PCA / Amendment Under Review, Provisional |
inactive | Inactive, Surrendered, Canceled, CLOSED (PERMANENT/TEMPORARY), Not Operating, Former Title Certificate, Withdrawn, Denied |
expired | Expired |
suspended | Suspended |
revoked | Revoked |
unknown | anything else — statusRaw always keeps the original text |
Pricing
Pay-per-event: a small start fee plus one event per verification row (matched or unmatched). A 500-line vendor list checked across the supported states costs a few dollars — versus a per-state data dump you would still have to join yourself.
Tips
- Sources are downloaded once per run and cached in memory, so batches of hundreds of queries are fast; California is queried per lookup through the DCC search API and needs no bulk download.
- Use
matchMode: "exact"for automated re-checks of a list you already resolved once (store the returnedlicenseNumberand verify by number from then on). - Query without
stateto find out where an operator is licensed — each state hit comes back as its own row.