Cannabis License Scraper - National Aggregator avatar

Cannabis License Scraper - National Aggregator

Pricing

Pay per event

Go to Apify Store
Cannabis License Scraper - National Aggregator

Cannabis License Scraper - National Aggregator

National cannabis license database. Federates state cannabis boards into one normalized dataset: license number, type, status, business name, address, expiration. For cannabis B2B sales: software, payments, packaging, labs, insurance, M&A intel.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Cannabis License Scraper - National License Aggregator

Aggregate state cannabis-control-board license rosters into one normalized dataset. Returns license number, type, status, business name, geocoded address, owner contact, equity flags, and adult-use vs medical authorization across roughly 6,500 active US cannabis licensees.


Cannabis License Aggregator Features

  • Federates six jurisdictions out of the box. New York OCM (adult-use), New York hemp, Massachusetts CCC, Connecticut DCP, Boulder County Colorado, and Utah DOH.
  • Normalizes a dozen distinct status codes and license-type taxonomies into a single nine-value enum, so you can filter license_status = 'active' and have it mean the same thing in every state.
  • Round-robin pagination across jurisdictions. You see records from every requested state before any one dominates the budget.
  • Filters by license type (retailer, cultivator, manufacturer, processor, testing-lab, microbusiness, distributor, delivery, hemp), active-only status, adult-use only, or medical only.
  • Flags social-equity / minority-owned licensees where the source state publishes that signal.
  • Pure API access — no browser, no proxies, no CAPTCHA. Just JSON from public open-data portals.

Who Uses Cannabis License Data?

  • Cannabis B2B sales (seed-to-sale, payments, packaging) — Pull active retailers and manufacturers by state, feed them into a CRM, run an outbound campaign by Friday.
  • Testing labs and ancillary services — Identify cultivators and processors by state with cultivation-tier and environment fields where available.
  • Cannabis-only insurance and finance — Active-license filter plus expiration date plus operational status — the inputs an underwriting model actually needs.
  • M&A intelligence and market research — Track license issuance, expirations, and equity-program participation across states without rebuilding the same scraper six times.
  • Compliance and license verification — Cross-reference a business name or license number against the source state's official roster.

How the Aggregator Works

  1. Pick jurisdictions by slug (ny-ocm, ma-ccc, ct-dcp, ...) or by state code (NY, MA, CT). Leave both empty to pull from every supported jurisdiction.
  2. Optionally filter by license type, active-only, adult-use, or medical. The filter runs after normalization, so license_type = 'retailer' matches dispensaries in NY, retailers in MA, hybrid retailers in CT, and pharmacies in UT in one query.
  3. The aggregator round-robins across jurisdictions, fetching a page from each in turn. Snapshot-style sources (Massachusetts) are loaded once and sliced client-side.
  4. Records come back in a single flat schema, ready for a warehouse, a CRM, or a CSV export.

Input

{
"jurisdictions": ["ny-ocm", "ma-ccc"],
"licenseTypes": ["retailer"],
"onlyActive": true,
"maxItems": 500
}
FieldTypeDefaultDescription
jurisdictionsarray[string](all)Jurisdiction slugs. See supported list below.
statesarray[string]2-letter state codes. Expands to every supported jurisdiction in the state.
licenseTypesarray[string]Filter to specific normalized types: retailer, cultivator, manufacturer, processor, testing-lab, microbusiness, distributor, delivery, hemp.
onlyActivebooleanfalseDrop expired, suspended, revoked, surrendered, denied, and pending licenses.
onlyAdultUsebooleanfalseFilter to recreational / adult-use licensees only.
onlyMedicalbooleanfalseFilter to medical licensees only. Hybrid licensees pass both adult-use and medical filters.
maxItemsinteger15Maximum records to return across all jurisdictions.
proxyConfigurationobject(off)Optional Apify proxy. Not needed for any supported portal.

Supported Jurisdictions

SlugJurisdictionStateRecords (approx.)
ny-ocmNew York Office of Cannabis Management (Adult-Use)NY2,800
ny-hempNew York OCM (Cannabinoid Hemp)NY2,700
ma-cccMassachusetts Cannabis Control CommissionMA960
ct-dcpConnecticut DCP (Hybrid + Medical)CT44
co-boulderBoulder County, ColoradoCO33
ut-dohUtah Department of Health (Medical Pharmacies)UT10

Example: pull every active retailer in New York

{
"states": ["NY"],
"licenseTypes": ["retailer"],
"onlyActive": true,
"maxItems": 1000
}

Example: cultivators across all jurisdictions, active only

{
"licenseTypes": ["cultivator"],
"onlyActive": true,
"maxItems": 500
}

Cannabis License Output Fields

{
"license_number": "OCM-RETL-25-000306",
"business_name": "100 North 3rd Ltd",
"dba_name": "7 Leaf Clover",
"license_type": "retailer",
"license_type_raw": "Adult-Use Retail Dispensary License",
"license_status": "active",
"license_status_raw": "Active",
"license_issued_date": "2025-03-24",
"license_effective_date": "2025-03-24",
"license_expiration_date": "2027-03-24",
"application_number": "OCMRETL-2023-000090",
"primary_contact_name": "Jennifer Babaian",
"phone": "",
"email": "",
"website": "",
"address": "132 Metropolitan Ave",
"city": "Brooklyn",
"state": "NY",
"zip": "11249",
"county": "Kings",
"region": "Brooklyn",
"lat": null,
"lng": null,
"is_adult_use": true,
"is_medical": false,
"is_social_equity": true,
"priority_status": "Women-Owned Business, Minority-Owned Business",
"operational_status": "Active",
"commence_operations_date": "",
"cultivation_environment": "",
"cultivation_tier": "",
"license_fee_amount": null,
"source_jurisdiction": "ny-ocm",
"source_state": "NY",
"source_url": "https://data.ny.gov/Government-Finance/Current-OCM-Licenses/jskf-tt3q"
}
FieldTypeDescription
license_numberstringState-assigned license number. Primary key within the source.
business_namestringLegal business / entity name.
dba_namestringDoing-business-as / trade name when distinct from legal name.
license_typestringNormalized type: retailer, cultivator, manufacturer, processor, testing-lab, microbusiness, distributor, delivery, hemp, other.
license_type_rawstringRaw type string from the source — useful when you need the state's original taxonomy.
license_statusstringNormalized status: active, expired, suspended, revoked, pending, inactive, surrendered, denied, other.
license_status_rawstringRaw status string from the source.
license_issued_datestringDate the license was originally issued (YYYY-MM-DD).
license_effective_datestringDate the current term took effect (YYYY-MM-DD).
license_expiration_datestringDate the license expires (YYYY-MM-DD).
application_numberstringOriginal application identifier when supplied.
primary_contact_namestringPrimary contact / responsible party name when supplied.
phonestringBusiness phone number when published.
emailstringBusiness email when published (Massachusetts only, in practice).
websitestringBusiness website URL when published.
addressstringEstablishment street address.
citystringEstablishment city.
statestringTwo-letter state code.
zipstringZIP / postal code.
countystringCounty when published.
regionstringSub-state region label (e.g. NY OCM exposes Brooklyn, Hudson Valley).
latnumberLatitude (WGS84) when published.
lngnumberLongitude (WGS84) when published.
is_adult_usebooleantrue when the license authorizes recreational / adult-use sales.
is_medicalbooleantrue when the license authorizes medical cannabis activities.
is_social_equitybooleantrue when the licensee qualifies under a social-equity / minority-owned program.
priority_statusstringEquity / priority program label from the source state.
operational_statusstringOperational status (e.g. Active, Operating, Non-Operational).
commence_operations_datestringDate the licensee commenced operations (Massachusetts publishes this).
cultivation_environmentstringIndoor, Outdoor, or mixed — when the source publishes it.
cultivation_tierstringCanopy tier (state-specific).
license_fee_amountnumberLicense fee paid in USD when published.
source_jurisdictionstringSlug of the jurisdiction that produced this record.
source_statestringTwo-letter source state code.
source_urlstringURL of the source dataset on the state open-data portal.

FAQ

How do I scrape cannabis licenses across multiple US states?

Cannabis License Aggregator ships with six state-level jurisdictions and normalizes them into a single schema. Pick jurisdictions by slug, by state code, or leave both empty to hit every supported portal in one run.

How much does Cannabis License Aggregator cost to run?

Cannabis License Aggregator runs on pay-per-event pricing: $0.10 per actor start plus $0.00125 per record. A full sweep of every supported jurisdiction (~6,500 records) is about $8.

Does Cannabis License Aggregator need proxies?

No. All supported sources are public state-government open-data portals (Socrata SODA and direct JSON snapshots) designed for third-party consumption. The actor defaults to direct requests.

Can I filter to only active licenses?

Yes. onlyActive: true drops every record whose normalized status is anything other than active — that means no expired, no suspended, no revoked, no pending applications. This is what you want for outbound sales lists.

What's the difference between license_type and license_type_raw?

license_type is the normalized value — one of nine canonical categories — so a query for retailer matches dispensaries in NY, retailers in MA, hybrid retailers in CT, and pharmacies in UT. license_type_raw is whatever the source state shipped, for when you need the original taxonomy.

Which states are coming next?

The most-requested additions are California (BCC), Washington (LCB), Oregon (OLCC), Illinois, and Michigan. California publishes licensee data behind CloudFront, Washington publishes only Excel files, and Oregon publishes PDFs. Each requires a per-state adapter. File a request for the state you need.


Need More Features?

Need a state that isn't in the registry, owner-history fields, or violations data? File an issue or get in touch.

Why Use the Cannabis License Aggregator?

  • One schema, six jurisdictions — Query once, get normalized results from NY, MA, CT, CO, and UT. No per-state ETL.
  • Built for cannabis B2B saleslicenseTypes filter, onlyActive status, and the social-equity flag cover the screens that seed-to-sale, payments, packaging, and insurance vendors ask for first.
  • Cheap to run — $0.00125 per record. A national sweep is coffee money, not a budget line item.