Cannabis Market Report
Cannabis market intelligence reports built from 7 federal and economic data sources in one automated run. Enter a state, company, or multi-state operator (MSO) and get a structured regulatory risk assessment, federal rescheduling momentum score, MSO compliance exposure map, and market viability rating — delivered as machine-readable JSON within 60 seconds.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| analysis-run | Full intelligence analysis run | $0.30 |
Example: 100 events = $30.00 · 1,000 events = $300.00
Documentation
Cannabis market intelligence reports built from 7 federal and economic data sources in one automated run. Enter a state, company, or multi-state operator (MSO) and get a structured regulatory risk assessment, federal rescheduling momentum score, MSO compliance exposure map, and market viability rating — delivered as machine-readable JSON within 60 seconds.
This actor aggregates data from the Federal Register, U.S. Congress bill tracker, OpenCorporates, Bureau of Labor Statistics, Federal Reserve Economic Data (FRED), CFPB consumer complaints, and regulatory website change monitoring — all running in parallel. Four independent scoring models combine into a single composite score with one of four verdicts: FAVORABLE, PROCEED_WITH_CAUTION, HIGH_RISK, or DO_NOT_ENTER. No manual research required, no subscription to expensive data platforms.
What data can you extract?
| Data Point | Source | Example |
|---|---|---|
| 📊 Composite score | All 7 sources combined | 62 (0–100 scale) |
| ⚖️ Market entry verdict | Scoring engine | PROCEED_WITH_CAUTION |
| 🏛️ State regulatory risk score | Federal Register + CFPB | 38 — MODERATE |
| 📜 Federal rescheduling momentum | Congress bill tracker + DEA filings | 45 — BUILDING |
| 🏢 MSO compliance exposure | OpenCorporates entity map | 32 — MODERATE |
| 📈 Market viability score | BLS + FRED economic data | 58 — VIABLE |
| ⚠️ Risk signals | All sources | "2 enforcement actions — active regulatory crackdown" |
| 💡 Actionable recommendations | Scoring engine | "Engage state-level cannabis counsel before operations" |
| 📋 Enforcement actions count | Federal Register | 2 actions in the past 12 months |
| 🏛️ Congressional bills count | Congress bill search | 4 rescheduling/legalization bills |
| 🏢 Corporate entity count | OpenCorporates | 8 registered entities |
| 📉 Inactive entity count | OpenCorporates | 1 dissolved/inactive entity |
Why use Cannabis Market Report?
Manual cannabis market research is expensive and slow. A compliance attorney charges $300–500/hour. Subscribing to platforms like New Frontier Data or BDS Analytics costs $5,000–25,000/year. Even then, you get industry-wide reports, not targeted analysis for the specific state, company, or operator you're evaluating.
This actor automates the entire intelligence-gathering process. It queries seven government and financial databases simultaneously, runs four independent scoring algorithms, and returns a structured report in under 60 seconds for approximately $0.10 per run.
The Apify platform adds capabilities that static reports cannot offer:
- Scheduling — run weekly or monthly to track how scores change as legislation advances
- API access — trigger reports from Python, JavaScript, or any HTTP client inside your due diligence pipeline
- Proxy rotation — access government data sources at scale without rate-limit interruptions
- Monitoring — set Slack or email alerts when a verdict changes from PROCEED_WITH_CAUTION to HIGH_RISK
- Integrations — push reports automatically to Google Sheets, HubSpot, Zapier, Make, or custom webhooks
Features
- 7 federal and economic sources queried in parallel — Federal Register, Congress bill tracker, OpenCorporates, BLS employment data, FRED economic data, CFPB consumer complaints, and regulatory website change monitoring, all running concurrently to minimize run time
- State regulatory risk model — scores 0–100 from Federal Register enforcement actions (up to 35 points), proposed cannabis rules (up to 25 points), consumer complaint volume as an enforcement proxy (up to 20 points), and regulatory portal website changes indicating rules in flux (up to 20 points)
- Federal rescheduling momentum model — tracks DEA/HHS controlled substance filings (up to 30 points), congressional rescheduling and legalization bills including SAFE Banking (up to 40 points), state tax revenue indicators (up to 15 points), and overall legislative acceleration (up to 15 points)
- MSO compliance exposure model — maps multi-state corporate complexity across jurisdictions (up to 30 points), flags dissolved or inactive entities (up to 25 points), penalizes presence in states where cannabis remains illegal (up to 25 points), and flags opaque multi-layered structures (up to 20 points)
- Market viability model — combines BLS employment and wage series (up to 30 points), FRED GDP and consumer spending indicators (up to 30 points), favorable bill count as a legislative tailwind proxy (up to 25 points), and baseline market openness (up to 15 points)
- Composite scoring formula — market viability weighted 30%, state regulatory risk inverted at 25%, MSO compliance inverted at 25%, federal rescheduling momentum at 20%
- Four-verdict output — FAVORABLE (score ≥70), PROCEED_WITH_CAUTION (45–69), HIGH_RISK (25–44), DO_NOT_ENTER (below 25 or if MSO exposure is CRITICAL or state risk is EXTREME)
- Hard override logic — CRITICAL MSO exposure or EXTREME state regulatory risk force a DO_NOT_ENTER verdict regardless of composite score
- Named signals — each sub-model emits human-readable signal strings explaining what drove the score
- Targeted recommendations — up to 5 specific action items generated based on score thresholds, including when to retain cannabis counsel, when to clean up inactive entities, and when to monitor federal rescheduling timelines
- Raw source data included — up to 20 Federal Register records, 20 congressional bills, 25 corporate entities, 15 BLS series, 15 FRED series, 10 website changes, and 15 CFPB complaints included in the output for independent review
- Up to 1,000 records per source — the actor fetches up to 1,000 items per sub-actor call, with the most relevant records sliced into the final report
Use cases for cannabis market intelligence reports
Cannabis license applicants and entrepreneurs
You are about to apply for a cultivation, processing, or dispensary license. The application fee alone can run $5,000–50,000, and that's before attorney fees, buildout costs, and working capital. This actor gives you a state regulatory risk score and market viability score before you commit. If the verdict is HIGH_RISK or DO_NOT_ENTER, you know to pause and investigate further — before the application fee is non-refundable.
Multi-state operator compliance audits
MSOs operating across 5, 10, or 15 states carry a complex web of corporate registrations, license obligations, and varying state regulations. This actor queries OpenCorporates for every entity associated with the MSO name, counts inactive or dissolved entities, flags presence in states where cannabis remains illegal, and scores overall compliance exposure. Use it quarterly to catch housekeeping issues before a state regulator does.
Investor and venture capital due diligence
Cannabis investors need to screen deals quickly. Manual regulatory due diligence on a single target can take a week of attorney time. This actor delivers a structured risk profile in 60 seconds: state regulatory environment, federal rescheduling tailwinds, corporate entity hygiene, and economic market fundamentals. Use it to triage inbound deal flow before spending billable hours on promising targets only.
Cannabis compliance and legal teams
Compliance officers and cannabis attorneys need to monitor federal rescheduling momentum and new state-level enforcement actions. Schedule this actor to run weekly for each state where a client operates. When the federal rescheduling momentum score crosses from BUILDING to STRONG, or when a new enforcement action appears in the Federal Register, get an automated alert — without manually scanning government websites.
Policy analysis and market research
Researchers and policy analysts comparing regulatory environments across states can run this actor for all 50 states and compare composite scores, state risk levels, and viability ratings in a structured dataset. Track how scores change over time as legislation advances or stalls. Export directly to Google Sheets or a BI tool for visualization.
Cannabis M&A and acquisition screening
Before acquiring a dispensary chain or cannabis brand, acquirers need to understand the target's compliance exposure. The MSO compliance model maps every corporate entity, counts dissolved entities that could carry latent liability, and flags jurisdictions where the target operates illegally. Pair with the Company Deep Research actor for a full pre-acquisition intelligence package.
How to run a cannabis market intelligence report
- Enter your query — Type the name of a state, city, cannabis company, or MSO in the
queryfield. Examples:"Colorado","Curaleaf","Illinois recreational","Trulieve Florida". This is the only required field. - Optionally specify a state — If your query is a company name, add the
statefield (e.g.,"California") to sharpen the BLS and FRED economic data lookups to that specific state market. - Select a license type — Choose
recreational,medical,hemp, orcannabis(the default) to filter Congressional bill and Federal Register queries to your market segment. - Click Start and wait — The actor runs all 7 data sources in parallel. Most runs complete in under 60 seconds. Download your report as JSON, CSV, or Excel from the Dataset tab.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | — | State name, cannabis company name, or MSO to analyze. Examples: "Colorado", "Curaleaf", "Illinois recreational" |
state | string | No | Same as query | US state for targeted BLS employment and FRED economic data lookups. Use when query is a company name. Examples: "California", "NY" |
licenseType | string | No | "cannabis" | Market segment filter for Federal Register and Congress queries. Options: "recreational", "medical", "hemp", "cannabis" |
Input examples
State market entry assessment:
{
"query": "Illinois",
"state": "Illinois",
"licenseType": "recreational"
}
Multi-state operator compliance audit:
{
"query": "Curaleaf",
"state": "Florida",
"licenseType": "medical"
}
Hemp market analysis:
{
"query": "Colorado",
"licenseType": "hemp"
}
Input tips
- The
queryfield drives all sub-actor searches — make it specific."Illinois recreational"produces more targeted results than"Illinois"alone. - Add
statewhen analyzing a company — without it, economic data lookups default to the company name as the state query, which may return sparse BLS/FRED results. - Use
licenseTypeto filter legislation — setting"medical"narrows congressional bill searches to medical cannabis legislation, reducing noise from recreational or hemp bills. - Run multiple queries in sequence — to compare markets, trigger one run per state via the API and collect results into a single dataset for comparison.
- Schedule weekly for monitoring — scores change as legislation advances. A state can move from BUILDING to STRONG federal momentum within days of a committee vote.
Output example
{
"query": "Illinois",
"state": "Illinois",
"licenseType": "recreational",
"generatedAt": "2026-03-20T09:14:22.000Z",
"compositeScore": 58,
"verdict": "PROCEED_WITH_CAUTION",
"recommendations": [
"Monitor federal rescheduling — may unlock banking and interstate commerce",
"Conduct state-by-state compliance audit for multi-state operations",
"Engage state-level cannabis counsel before operations"
],
"stateRegulatoryRisk": {
"score": 44,
"regulationCount": 9,
"enforcementActions": 3,
"complaintCount": 6,
"riskLevel": "ELEVATED",
"signals": [
"3 enforcement actions — active regulatory crackdown",
"2 proposed rules — more regulation incoming"
]
},
"federalRescheduling": {
"score": 52,
"billCount": 5,
"regulationCount": 3,
"momentum": "BUILDING",
"signals": [
"5 rescheduling/legalization bills in Congress",
"1 bill(s) advanced past introduction",
"3 DEA/HHS rescheduling-related regulations"
]
},
"msoCompliance": {
"score": 36,
"entityCount": 12,
"jurisdictionCount": 6,
"inactiveEntities": 2,
"exposureLevel": "ELEVATED",
"signals": [
"Operations across 6 jurisdictions — complex multi-state compliance",
"2 dissolved/inactive entities — corporate housekeeping issues"
]
},
"marketViability": {
"score": 64,
"economicStrength": 14,
"employmentGrowth": 21,
"viabilityLevel": "ATTRACTIVE",
"signals": [
"Strong employment and wage indicators — robust consumer market",
"Positive economic indicators — market can support cannabis retail",
"3 favorable cannabis bills — legislative tailwind"
]
},
"allSignals": [
"3 enforcement actions — active regulatory crackdown",
"2 proposed rules — more regulation incoming",
"5 rescheduling/legalization bills in Congress",
"1 bill(s) advanced past introduction",
"3 DEA/HHS rescheduling-related regulations",
"Operations across 6 jurisdictions — complex multi-state compliance",
"2 dissolved/inactive entities — corporate housekeeping issues",
"Strong employment and wage indicators — robust consumer market",
"3 favorable cannabis bills — legislative tailwind"
],
"dataSources": {
"federalRegister": [ { "title": "Cannabis Enforcement Policy — Proposed Rule", "type": "proposed_rule" } ],
"congressBills": [ { "title": "SAFE Banking Act", "status": "Committee" } ],
"corporateEntities": [ { "company_status": "Active", "jurisdiction_code": "il" } ],
"blsEconomicData": [ { "seriesID": "SMU17000009000000001", "value": "42300" } ],
"fredEconomicData": [ { "seriesID": "ILRGSP", "value": "1021.4" } ],
"websiteChanges": [],
"consumerComplaints": [ { "product": "Payday loan", "issue": "Payment processing" } ]
}
}
Output fields
| Field | Type | Description |
|---|---|---|
query | string | The input query used to generate the report |
state | string | The state used for economic data lookups |
licenseType | string | The market segment filter applied |
generatedAt | string | ISO 8601 timestamp of report generation |
compositeScore | number | Overall score 0–100 combining all four models |
verdict | string | FAVORABLE, PROCEED_WITH_CAUTION, HIGH_RISK, or DO_NOT_ENTER |
recommendations | array | Up to 5 specific action items based on score thresholds |
allSignals | array | All human-readable signal strings from all four models |
stateRegulatoryRisk.score | number | State-level regulatory pressure score 0–100 |
stateRegulatoryRisk.regulationCount | number | Number of Federal Register records matched |
stateRegulatoryRisk.enforcementActions | number | Count of enforcement/penalty/violation actions |
stateRegulatoryRisk.complaintCount | number | CFPB consumer complaint volume |
stateRegulatoryRisk.riskLevel | string | LOW, MODERATE, ELEVATED, HIGH, or EXTREME |
stateRegulatoryRisk.signals | array | Named signals explaining the state risk score |
federalRescheduling.score | number | Federal rescheduling momentum score 0–100 |
federalRescheduling.billCount | number | Count of rescheduling/legalization/SAFE Banking bills |
federalRescheduling.regulationCount | number | Count of DEA/HHS controlled substance filings |
federalRescheduling.momentum | string | STALLED, SLOW, BUILDING, STRONG, or IMMINENT |
federalRescheduling.signals | array | Named signals explaining rescheduling momentum |
msoCompliance.score | number | MSO compliance exposure score 0–100 |
msoCompliance.entityCount | number | Total corporate entities found in OpenCorporates |
msoCompliance.jurisdictionCount | number | Number of distinct jurisdictions across all entities |
msoCompliance.inactiveEntities | number | Count of dissolved/inactive/struck-off entities |
msoCompliance.exposureLevel | string | LOW, MODERATE, ELEVATED, HIGH, or CRITICAL |
msoCompliance.signals | array | Named signals explaining MSO compliance exposure |
marketViability.score | number | Market economic viability score 0–100 |
marketViability.economicStrength | number | Raw FRED economic indicator contribution |
marketViability.employmentGrowth | number | Raw BLS employment indicator contribution |
marketViability.viabilityLevel | string | NON_VIABLE, MARGINAL, VIABLE, ATTRACTIVE, or PRIME |
marketViability.signals | array | Named signals explaining market viability |
dataSources.federalRegister | array | Up to 20 Federal Register records matched |
dataSources.congressBills | array | Up to 20 congressional bill records matched |
dataSources.corporateEntities | array | Up to 25 OpenCorporates entity records |
dataSources.blsEconomicData | array | Up to 15 BLS economic data series |
dataSources.fredEconomicData | array | Up to 15 FRED economic data series |
dataSources.websiteChanges | array | Up to 10 regulatory portal change records |
dataSources.consumerComplaints | array | Up to 15 CFPB complaint records |
How much does it cost to run a cannabis market intelligence report?
Cannabis Market Report uses pay-per-run pricing — you pay approximately $0.10 per report. Compute costs are included. The actor calls 7 sub-actors in parallel, each allocated 256 MB memory with a 120-second timeout.
| Scenario | Reports | Cost per report | Total cost |
|---|---|---|---|
| Quick test | 1 | $0.10 | $0.10 |
| Small batch | 10 | $0.10 | $1.00 |
| State comparison (all legal rec states) | 22 | $0.10 | $2.20 |
| Medium portfolio | 50 | $0.10 | $5.00 |
| Enterprise (full state coverage) | 200 | $0.10 | $20.00 |
You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached.
Compare this to subscribing to New Frontier Data at $5,000–25,000/year, or paying a cannabis attorney $300–500/hour for manual research. Most users running weekly monitoring for 5–10 markets spend under $5/month with no subscription commitment.
Run cannabis market intelligence reports using the API
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/cannabis-market-report").call(run_input={
"query": "Illinois",
"state": "Illinois",
"licenseType": "recreational"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"Verdict: {item['verdict']} | Score: {item['compositeScore']} | Signals: {len(item['allSignals'])}")
for rec in item.get("recommendations", []):
print(f" -> {rec}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/cannabis-market-report").call({
query: "Illinois",
state: "Illinois",
licenseType: "recreational"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`Verdict: ${item.verdict} | Score: ${item.compositeScore}`);
console.log(`Federal momentum: ${item.federalRescheduling.momentum}`);
console.log(`MSO exposure: ${item.msoCompliance.exposureLevel}`);
item.recommendations.forEach(r => console.log(` -> ${r}`));
}
cURL
# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~cannabis-market-report/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "Illinois", "state": "Illinois", "licenseType": "recreational"}'
# Fetch results (replace DATASET_ID from the run response above)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"
How Cannabis Market Report works
Phase 1: Parallel data collection across 7 federal sources
The actor fires all 7 sub-actor calls simultaneously using Promise.allSettled. Each sub-actor receives a query string tuned to the cannabis context — for example, the Federal Register search receives "{query} cannabis marijuana regulation {licenseType}" while the Congress bill search receives "cannabis {state} regulation {licenseType}" and OpenCorporates receives the raw entity name. Sub-actors run with 256 MB memory allocations and 120-second timeouts. Promise.allSettled ensures the report is generated even if one or two sources return empty results — failed calls return empty arrays rather than failing the entire run.
Phase 2: Four independent scoring models
Each model operates on a named slice of the collected data:
State Regulatory Risk reads the federal-register-search array and counts titles containing "enforcement", "penalty", or "violation" as enforcement actions (5 points each, capped at 35). Proposed rules add 3 points each. The cfpb-consumer-complaints array contributes up to 20 points at 2 points per complaint. The website-change-monitor array contributes up to 20 points at 5 points per change event. Total is capped at 100.
Federal Rescheduling Momentum scans bill titles for "reschedul", "deschedul", "legali", and "safe banking" to identify rescheduling-related bills (5 points each). Bills that have passed or advanced to committee add 8 points each. Federal Register entries mentioning "controlled substance", "marijuana", or "cannabis" in the context of DEA/HHS activity add 8 points each, capped at 30.
MSO Compliance Exposure queries the opencorporates-search array to build a Set of unique jurisdiction codes. Each unique jurisdiction adds 4 points (capped at 30). Dissolved, inactive, or struck-off entities add 2 points each plus a ratio-based penalty. Entities in states where cannabis is illegal (ID, WY, KS, SC, IN, WI, TN, GA, TX, NC) add 8 points each.
Market Viability reads BLS series IDs containing "emp" (employment) and "wage" at 3 and 2 points respectively, and FRED series IDs containing "gdp" (5 points), "pce" or "consumer" (3 points), and "tax" (3 points).
Phase 3: Composite scoring and verdict generation
The composite score is: (viability × 0.30) + (federal × 0.20) + ((100 − stateRisk) × 0.25) + ((100 − msoExposure) × 0.25). State risk and MSO exposure are inverted so that lower risk improves the composite. After the mathematical verdict is assigned, a hard override checks for CRITICAL MSO exposure or EXTREME state risk and forces DO_NOT_ENTER regardless. Recommendations are generated conditionally: state risk ≥60 triggers a counsel recommendation, momentum of STRONG or IMMINENT triggers a banking/interstate commerce note, jurisdiction count ≥5 triggers a multi-state audit recommendation, viability score <40 triggers a market economics warning, and inactive entity count ≥2 triggers a corporate cleanup recommendation.
Phase 4: Output assembly
The final report packages the four scoring model results, the composite score, all signals aggregated into a single allSignals array, all recommendations, and raw source data sliced to practical limits (20/20/25/15/15/10/15 records respectively). The entire object is pushed to Apify's dataset storage.
Tips for best results
- Be specific in your query.
"Trulieve Florida medical"returns more targeted Federal Register and Congress results than"Trulieve"alone. The query string is passed directly to all 7 sub-actors as search terms. - Always set
statewhen analyzing a company. The BLS and FRED lookups usestateas the geographic anchor. If you enter only a company name without a state, economic data defaults to searching by company name, which yields sparse results. - Use
licenseTypeas a legislative filter. Setting"medical"narrows congressional bill searches. If you are evaluating a hemp extraction company, set"hemp"to avoid recreational legalization bills skewing the federal momentum score. - Compare markets by running a batch. Trigger one run per state via the API and collect all results into a single dataset. Sort by
compositeScoreto rank markets. Pair with B2B Lead Gen Suite to then build prospect lists in your top-ranked states. - Schedule weekly for market monitoring. Congressional activity and Federal Register publications can shift scores significantly within a week. A market that scores PROCEED_WITH_CAUTION today can become FAVORABLE after a committee vote or a DEA scheduling notice.
- Treat raw source data as primary evidence. The
dataSourcesobject contains the actual Federal Register records, bills, and corporate entities that drove the score. Before acting on a HIGH_RISK verdict, read the actual enforcement action titles indataSources.federalRegisterto assess relevance. - Pair with Company Deep Research for M&A. This actor produces a regulatory and market risk profile. For a full acquisition package, follow up with Company Deep Research to add financial history, key personnel, news sentiment, and competitive positioning.
- Inactive entities are a lagging indicator. The MSO model penalizes dissolved and inactive entities, but these records in OpenCorporates can be months behind actual corporate filings. Always verify entity status directly with the relevant state secretary of state before a compliance deadline.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| Company Deep Research | Run after a HIGH_RISK verdict to get full intelligence on the target company before investing or acquiring |
| B2B Lead Gen Suite | After scoring all 22 recreational states, use this actor to build prospect lists of dispensaries and operators in your top-ranked markets |
| Website Contact Scraper | Scrape contact information from cannabis company and regulator websites identified during the market research phase |
| SEC EDGAR Filing Analyzer | Cross-reference publicly traded MSOs (Curaleaf, Trulieve, Green Thumb) with their SEC filings for financial risk context |
| WHOIS Domain Lookup | Verify domain registration details for cannabis companies identified in the OpenCorporates entity results |
| Regulatory Change Tracker | Set up continuous monitoring for the specific state regulatory portals flagged in dataSources.websiteChanges |
| Waterfall Contact Enrichment | Enrich key personnel at cannabis companies identified via the MSO compliance model with verified contact details |
Limitations
- Federal Register coverage is U.S.-only. This actor covers the U.S. federal and state cannabis landscape exclusively. Canadian, European, or international cannabis regulatory analysis requires different data sources.
- OpenCorporates data has a lag. Corporate registrations, dissolution records, and status changes can take weeks or months to appear in OpenCorporates after filing with a state secretary of state. Do not rely solely on this model for time-sensitive legal due diligence.
- CFPB complaints are a proxy, not a direct measure. Consumer complaints in the CFPB database relate primarily to financial products. High complaint volume in a state is treated as an enforcement friction signal, but the complaints are not cannabis-specific. A high complaint count may reflect other industries.
- Congressional bill status updates are periodic. The Congress.gov data accessed by the bill search sub-actor may not reflect votes or status changes from the past 24–72 hours. For real-time legislative tracking, supplement with a direct Congress.gov watch.
- The actor does not access state regulatory agency databases directly. State cannabis control boards, licensing databases, and enforcement dockets are not queried. The state risk score is derived from federal-level signals only.
- Company name searches depend on name matching. If an MSO operates under multiple legal entity names, only entities matching the
querystring are found in OpenCorporates. Subsidiaries with dissimilar names may be missed. - Economic indicators are general-purpose, not cannabis-specific. BLS and FRED data reflect state economic conditions broadly, not cannabis industry employment or tax revenue in isolation. States with strong general economies will score higher on market viability regardless of cannabis-specific conditions.
- This is not legal advice. The scores and verdicts are based on publicly available data and algorithmic models. They do not constitute legal, financial, or regulatory compliance advice. Consult licensed cannabis counsel before making operational, investment, or compliance decisions.
Integrations
- Zapier — trigger a cannabis market report automatically when a new deal enters your CRM pipeline, and push the verdict and score back to the deal record
- Make — build a weekly monitoring workflow that runs reports for all your operating states, compares scores to the prior week, and sends a summary digest
- Google Sheets — export multi-state comparison runs directly to a spreadsheet, with composite scores, verdicts, and viability levels in columns for sorting and filtering
- Apify API — integrate cannabis market reports into your due diligence or underwriting platform using standard REST calls with JSON input and output
- Webhooks — receive a POST notification with the full report JSON the moment each run finishes, without polling
- LangChain / LlamaIndex — feed the structured report output into an LLM pipeline for natural language summarization, Q&A over regulatory findings, or automated memo generation
Troubleshooting
- Composite score looks lower than expected for a legal recreational state. Check
dataSources.federalRegister— if the Federal Register search matched enforcement actions for unrelated industries, the state regulatory risk score will be inflated. The query includes the state name, which can match non-cannabis federal rules. Try making yourquerymore specific, such as"Colorado cannabis recreational"rather than just"Colorado". - MSO compliance score is HIGH despite the company being well-regulated. The model penalizes multi-jurisdictional presence structurally — operating in more states always increases the raw score. A HIGH exposure level on a large, compliant MSO reflects complexity, not necessarily non-compliance. Read the
msoCompliance.signalsarray to identify the specific driver: it is usually jurisdictionCount or a small number of inactive entities that can be explained. - Federal rescheduling momentum shows STALLED even though there is recent legislative activity. The Congress bill search sub-actor returns results based on keyword matching and publication recency. If no bills containing "reschedul", "deschedul", "legali", or "safe banking" were returned in this run, the score will be low. Check
dataSources.congressBillsto confirm whether bills were returned, and if not, try rerunning with a broaderquery. - Run times are longer than 60 seconds. The actor calls 7 sub-actors in parallel, each with a 120-second timeout. If one sub-actor is slow due to external API latency, the run will wait for it. Typical runs complete in 45–75 seconds. If a run consistently exceeds 120 seconds, check the Apify run log for which sub-actor is timing out.
- Empty
dataSourcesarrays for one or more sources. The actor usesPromise.allSettled, so a failed sub-actor returns an empty array rather than failing the run. The corresponding scoring model will contribute 0 or near-0 to the composite score. Check the run log to see if any sub-actor returned an error, and rerun to see if it was a transient failure.
Responsible use
- This actor queries only publicly available government and financial databases: Federal Register, Congress.gov, OpenCorporates, BLS, FRED, and CFPB.
- Output is intended for research, due diligence, and market analysis — not for identifying or targeting individuals.
- Do not use this actor to build databases intended to circumvent cannabis regulations or licensing requirements.
- The scores and verdicts are analytical outputs, not legal determinations. Regulatory compliance requires licensed legal counsel in each applicable jurisdiction.
- For guidance on web scraping legality, see Apify's guide.
FAQ
How does Cannabis Market Report calculate the composite score? The composite is a weighted average of four models: market viability contributes 30%, federal rescheduling momentum contributes 20%, and state regulatory risk and MSO compliance exposure each contribute 25% — but both are inverted, so lower risk improves the score. A score of 70 or above produces a FAVORABLE verdict. Between 45 and 69 produces PROCEED_WITH_CAUTION. Between 25 and 44 produces HIGH_RISK. Below 25 — or if MSO exposure is CRITICAL or state regulatory risk is EXTREME — the verdict is forced to DO_NOT_ENTER.
What data sources does this actor query? Seven sources: Federal Register (federal cannabis regulations and enforcement actions), Congress bill tracker (rescheduling, legalization, and SAFE Banking bills), OpenCorporates (corporate entity registrations and status), Bureau of Labor Statistics (employment and wage series), Federal Reserve FRED (GDP and consumer spending indicators), CFPB consumer complaints database, and a regulatory website change monitor for state cannabis portals.
Can I analyze a cannabis company instead of a state?
Yes. Enter the company name as the query field — for example, "Curaleaf" or "Green Thumb Industries". The actor searches all data sources using that name. The MSO compliance model is particularly useful for company queries, as it maps every corporate entity registered under that name and counts dissolved or inactive entities.
How accurate is the federal rescheduling momentum score? The score reflects the current volume and advancement stage of bills in Congress plus DEA/HHS regulatory activity. It is a directional signal, not a prediction. Bills that have passed committee or been enrolled contribute more to the score than bills merely introduced. For real-time legislative tracking, supplement with a direct watch on Congress.gov.
Can I run cannabis market intelligence reports for all 50 states?
Yes. Trigger 50 separate runs via the API — one per state — and collect results into a single dataset. At $0.10 per run, a full 50-state sweep costs approximately $5.00. Sort by compositeScore to rank markets.
How long does a typical cannabis market report run take? Most runs complete in 45–75 seconds. The actor runs all 7 sub-actors in parallel, so total time is determined by the slowest sub-actor, not the sum of all sub-actor times. Each sub-actor has a 120-second timeout.
How is this different from New Frontier Data or BDS Analytics? New Frontier Data and BDS Analytics produce static industry reports covering broad market trends. This actor produces a targeted, structured, machine-readable report for a specific state, company, or operator — on demand, at $0.10 per run — using live government data rather than survey data or market research estimates. It is designed for programmatic integration into due diligence workflows, not for reading as a PDF.
Does this actor provide real-time regulatory updates? It captures the latest available data from each source at the time of each run. Federal Register and Congress.gov data is typically current within 24–72 hours. OpenCorporates entity data can lag by days to weeks. For continuous monitoring, schedule the actor to run daily or weekly and track score changes over time.
Is it legal to scrape cannabis regulatory data? All data sources queried by this actor — Federal Register, Congress.gov, BLS, FRED, CFPB, and OpenCorporates — are public government or open-access databases. Accessing them programmatically is legal and consistent with their intended use as public information resources. See Apify's guide on web scraping legality for more context.
What does a DO_NOT_ENTER verdict mean?
It means the composite score is below 25, or the MSO compliance model returned a CRITICAL exposure level, or the state regulatory risk model returned an EXTREME risk level. At least one of these hard thresholds was breached. Read allSignals to understand the specific drivers — a CRITICAL MSO exposure, for example, typically means the target has entities in states where cannabis is illegal combined with high corporate complexity.
Can I schedule this actor to monitor a market over time?
Yes. Use the Apify scheduler to run this actor on a daily, weekly, or monthly cadence. Each run produces a new dataset record with a generatedAt timestamp, allowing you to track how scores evolve as federal legislation advances or state enforcement activity changes. Combine with Apify webhooks to receive alerts when a verdict changes.
What happens if one of the 7 sub-actors fails during a run?
The actor uses Promise.allSettled rather than Promise.all, so a single sub-actor failure does not abort the run. The failed source returns an empty array, contributing 0 points to the relevant scoring model. The composite score is still generated from the remaining sources. Check the run log to identify which source failed and rerun if the missing data is material.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Bulk Email Verifier
Verify email deliverability at scale. MX record validation, SMTP mailbox checks, disposable and role-based detection, catch-all flagging, and confidence scoring. No external API costs.
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Website Tech Stack Detector
Detect 100+ web technologies on any website. Identifies CMS, frameworks, analytics, marketing tools, chat widgets, CDNs, payment systems, hosting, and more. Batch-analyze multiple sites with version detection and confidence scoring.
Ready to try Cannabis Market Report?
Start for free on Apify. No credit card required.
Open on Apify Store