Dutchie Menu Scraper
Pricing
from $2.50 / 1,000 results
Dutchie Menu Scraper
[๐ฐ $2.5 / 1K] Extract full product menus from any Dutchie dispensary. Paste dispensary URLs to get every product and price variant โ name, brand, category, strain type, THC/CBD potency, weight/size, price, active specials, images, and stock status.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract the full product menu of any Dutchie dispensary โ every product broken out to the individual price variant, with brand, category, strain type, THC/CBD potency, size, live price, active specials, and stock status. Built for cannabis retail analysts, brand managers, and dispensary operators who need live menu and pricing data across stores without checking each storefront by hand.
Why This Scraper?
- Every price variant as its own row โ a flower listing sold in 1g, 3.5g, 7g, and 28g becomes four separate rows, each with its own size, price, and special. No unpacking a single blob of comma-separated prices.
- 11 product categories, filtered at the source โ Flower, Pre-Rolls, Vaporizers, Concentrates, Edibles, Tinctures, Topicals, CBD, Seeds, Accessories, and Apparel; pick any subset and only those products come back.
- Recreational and medical menus โ many dispensaries publish two separate menus at different prices; choose Recreational, Medical, or the store default, and every row is tagged with the menu it came from.
- Live specials with the actual deal name โ catches sale-price markdowns, BOGO, and spend-threshold promotions, and labels each discounted variant with the real deal name (e.g. "Green Wednesday 20% Off").
- THC and CBD potency on every product โ plus the potency unit (percentage for flower, milligrams for edibles) so you can compare like-for-like across categories.
- Strain type and brand on each row โ Indica, Sativa, or Hybrid classification alongside brand and subcategory for clean product-level analysis.
- Regular price, special price, and stock split into separate fields โ numeric
priceandspecialPrice(never one merged number), plusinStockand on-handquantitywhen the store publishes it. - Optional full product descriptions โ flip one switch to pull each product's complete long description, or leave it off for the fastest full-menu pull.
- Bulk multi-dispensary input โ paste any number of dispensary URLs and get one combined dataset, where every row carries its store's name, slug, and URL.
Use Cases
Competitive Pricing Intelligence
- Track a rival dispensary's per-gram flower pricing across every weight tier
- Compare the same brand's variant prices store-to-store in your market
- Benchmark your shelf prices against the local competition
- Detect price changes and fresh markdowns by re-running on a schedule
Brand & Product Market Research
- Map which brands and strains have the widest menu distribution
- Analyze category mix (flower vs. vape vs. edible) across a region
- Track new product launches and variant availability over time
- Study THC/CBD potency ranges and pricing by category
Promotion & Deal Monitoring
- Snapshot every active special with
offersOnlyto see who is discounting what - Capture deal names and special prices for promotion calendars
- Watch competitor BOGO and spend-threshold offers as they go live
Menu & Inventory Monitoring
- Track in-stock vs. out-of-stock status across a store's full catalog
- Monitor on-hand quantity where dispensaries publish it
- Spot menu additions and removals between runs
Data Products for Cannabis SaaS
- Power pricing dashboards, menu-comparison tools, and market reports
- Enrich dispensary databases with live product and pricing data
- Feed retail-analytics and category-management platforms
Getting Started
Scrape a Full Menu
The simplest run โ one dispensary URL, entire menu:
{"startUrls": ["https://dutchie.com/dispensary/quincy-cannabis-quincy-retail-rec"]}
Filter by Category and Menu Type
Pull only flower and pre-rolls from the recreational menu, up to 500 products:
{"startUrls": ["https://dutchie.com/dispensary/quincy-cannabis-quincy-retail-rec"],"menuType": "rec","categories": ["Flower", "Pre-Rolls"],"maxProductsPerDispensary": 500}
Multi-Store, Deals Only, with Descriptions
Track medical-menu specials across two stores with full descriptions:
{"startUrls": ["https://dutchie.com/dispensary/quincy-cannabis-quincy-retail-rec","https://dutchie.com/dispensary/resinate-worcester"],"menuType": "med","categories": ["Vaporizers", "Concentrate", "Edible"],"offersOnly": true,"includeDescriptions": true,"maxProductsPerDispensary": 0}
Input Reference
Dispensaries
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array of URLs | [] | One or more Dutchie dispensary URLs (e.g. https://dutchie.com/dispensary/<store-slug>). Paste the full address from your browser. The complete menu is collected for each store. |
Menu Selection & Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
menuType | select | Store default | Which menu to read when a store offers both: Store default, Recreational (adult-use), or Medical. |
categories | multi-select | All categories | Restrict to chosen categories: Flower, Pre-Rolls, Vaporizers, Concentrates, Edibles, Tinctures, Topicals, CBD, Seeds, Accessories, Apparel. Leave empty for everything. |
offersOnly | boolean | Off | Only collect products with an active deal or special price โ ideal for promotion tracking. |
Collection Options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxProductsPerDispensary | integer | 0 (all) | Cap the products collected per store. 0 collects the entire menu. Collection stops at a page boundary once the cap is reached, so a small cap can return a few more than requested โ never fewer, never a half-filled page. |
includeDescriptions | boolean | Off | Also collect each product's full text description. Looks up products individually, so large menus take noticeably longer. Leave off for the fastest results. |
Output
Each row is a single product price-variant. Here's a representative result:
{"dispensaryName": "Quincy Cannabis Co.","dispensarySlug": "quincy-cannabis-quincy-retail-rec","dispensaryUrl": "https://dutchie.com/dispensary/quincy-cannabis-quincy-retail-rec","menuType": "rec","productId": "5f8c1e2b9a3d4c0012ab34cd","productName": "Blue Dream","brand": "Coastal Cultivars","category": "Flower","subcategory": "Bud","strainType": "Hybrid","thcContent": "24.6%","cbdContent": "0.1%","potencyUnit": "Percentage","variantSize": "3.5g","displayPrice": "$45.00","price": 45,"specialPrice": 36,"onSpecial": true,"specialName": "Green Wednesday 20% Off","description": "A sativa-dominant hybrid with sweet berry aromas and an uplifting, creative high.","imageUrl": "https://images.dutchie.com/abc123/blue-dream.jpg","productUrl": "https://dutchie.com/dispensary/quincy-cannabis-quincy-retail-rec/product/blue-dream","inStock": true,"quantity": 42,"scrapedAt": "2026-07-25T14:30:00Z"}
Dispensary & Run
| Field | Type | Description |
|---|---|---|
dispensaryName | string | Store name |
dispensarySlug | string | Store slug taken from the URL |
dispensaryUrl | string | Canonical dispensary URL |
menuType | string | Which menu the row came from (rec or med) |
scrapedAt | string | ISO 8601 timestamp of collection |
Product Identity
| Field | Type | Description |
|---|---|---|
productId | string | Dutchie product identifier |
productName | string | Product title |
brand | string | Brand name |
category | string | Top-level category (Flower, Vaporizers, Edible, โฆ) |
subcategory | string | Sub-category (e.g. Bud, Disposables) |
Cannabis Attributes
| Field | Type | Description |
|---|---|---|
strainType | string | Indica, Sativa, Hybrid, or CBD |
thcContent | string | THC potency as shown (e.g. "24.6%") |
cbdContent | string | CBD potency as shown |
potencyUnit | string | Potency unit โ Percentage or Milligrams |
Pricing & Specials
| Field | Type | Description |
|---|---|---|
variantSize | string | The variant weight/size for this row (1/8oz, 1g, 3.5g, 1000mg, โฆ) |
displayPrice | string | Human-readable price as shown (e.g. "$45.00") |
price | number | Numeric regular price |
specialPrice | number | Numeric discounted price when on special (else null) |
onSpecial | boolean | Whether an active deal applies to this variant |
specialName | string | Name of the deal/special (nullable) |
Availability & Media
| Field | Type | Description |
|---|---|---|
inStock | boolean | Whether the variant is currently available |
quantity | number | On-hand quantity when the store exposes it (nullable) |
imageUrl | string | Primary product image URL |
productUrl | string | Canonical product URL |
description | string | Full product description (populated only when Include Product Descriptions is on) |
Tips for Best Results
- Start with a cap โ set
maxProductsPerDispensaryto 50-100 on your first run to preview a store's data shape before pulling the whole menu. - Compare rec vs. med on the same product โ run a store once with
menuType: "rec"and again with"med"; medical menus are often priced differently, so the same product can carry two different prices worth tracking. - Snapshot promotions with
offersOnlyโ turn it on to pull only products that currently have an active deal. Each variant row keeps its ownonSpecialflag and deal name, so you can see exactly which sizes are discounted โ perfect for monitoring competitor promotions without pulling the full catalog. - Leave descriptions off for speed โ
includeDescriptionsfetches each product individually and slows large menus; enable it only when you need the long-form copy. - Remember one row per variant โ a single flower listing can expand into 4-5 rows (1g/3.5g/7g/28g), so size your product cap with that fan-out in mind.
- Filter categories to stay focused โ selecting only the categories you care about returns a leaner, cleaner dataset.
- Re-run on a schedule for price tracking โ pricing and specials change daily; a recurring run builds a time series you can diff for markdowns and new products.
Pricing
From $2.50 per 1,000 results โ the lowest per-result rate for live Dutchie menu data. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.30 | $0.28 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |
A "result" is one product price-variant row in your dataset. No compute or time-based charges โ you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications on new results
- Webhooks โ Trigger custom APIs on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This actor collects publicly listed dispensary menu data for legitimate market research, competitive analysis, and business intelligence. Cannabis is regulated differently across jurisdictions โ use this data only for lawful, licensed, or research purposes, and comply with all applicable local, state, and federal laws as well as Dutchie's Terms of Service. Do not use it to facilitate sales to minors or any activity prohibited where you operate.