Dutchie Menu Scraper avatar

Dutchie Menu Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Dutchie Menu Scraper

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

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 price and specialPrice (never one merged number), plus inStock and on-hand quantity when 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 offersOnly to 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

ParameterTypeDefaultDescription
startUrlsarray 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.
ParameterTypeDefaultDescription
menuTypeselectStore defaultWhich menu to read when a store offers both: Store default, Recreational (adult-use), or Medical.
categoriesmulti-selectAll categoriesRestrict to chosen categories: Flower, Pre-Rolls, Vaporizers, Concentrates, Edibles, Tinctures, Topicals, CBD, Seeds, Accessories, Apparel. Leave empty for everything.
offersOnlybooleanOffOnly collect products with an active deal or special price โ€” ideal for promotion tracking.

Collection Options

ParameterTypeDefaultDescription
maxProductsPerDispensaryinteger0 (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.
includeDescriptionsbooleanOffAlso 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

FieldTypeDescription
dispensaryNamestringStore name
dispensarySlugstringStore slug taken from the URL
dispensaryUrlstringCanonical dispensary URL
menuTypestringWhich menu the row came from (rec or med)
scrapedAtstringISO 8601 timestamp of collection

Product Identity

FieldTypeDescription
productIdstringDutchie product identifier
productNamestringProduct title
brandstringBrand name
categorystringTop-level category (Flower, Vaporizers, Edible, โ€ฆ)
subcategorystringSub-category (e.g. Bud, Disposables)

Cannabis Attributes

FieldTypeDescription
strainTypestringIndica, Sativa, Hybrid, or CBD
thcContentstringTHC potency as shown (e.g. "24.6%")
cbdContentstringCBD potency as shown
potencyUnitstringPotency unit โ€” Percentage or Milligrams

Pricing & Specials

FieldTypeDescription
variantSizestringThe variant weight/size for this row (1/8oz, 1g, 3.5g, 1000mg, โ€ฆ)
displayPricestringHuman-readable price as shown (e.g. "$45.00")
pricenumberNumeric regular price
specialPricenumberNumeric discounted price when on special (else null)
onSpecialbooleanWhether an active deal applies to this variant
specialNamestringName of the deal/special (nullable)

Availability & Media

FieldTypeDescription
inStockbooleanWhether the variant is currently available
quantitynumberOn-hand quantity when the store exposes it (nullable)
imageUrlstringPrimary product image URL
productUrlstringCanonical product URL
descriptionstringFull product description (populated only when Include Product Descriptions is on)

Tips for Best Results

  • Start with a cap โ€” set maxProductsPerDispensary to 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 own onSpecial flag 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 โ€” includeDescriptions fetches 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.

ResultsNo discountBronzeSilverGold
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

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.