Weedmaps Dispensary Scraper — Locations, Hours & Menus
Pricing
from $0.80 / 1,000 dispensary results
Weedmaps Dispensary Scraper — Locations, Hours & Menus
Extract cannabis dispensaries, storefronts, and deliveries from Weedmaps with locations, addresses, operating hours, phone numbers, ratings, reviews, license details, and menus.
Pricing
from $0.80 / 1,000 dispensary results
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
11 days ago
Last modified
Categories
Share
Weedmaps Dispensary Scraper
Extract structured cannabis dispensary and delivery data from Weedmaps without logins or cookies. Retrieve comprehensive store profiles, street addresses, phone numbers, contact emails, operating hours, geolocation coordinates, licenses, customer ratings, review counts, active deals, and menu items across the United States and Canada.
Free users: verified Apify Free plan users receive up to 5 delivered records per run. Upgrade to an Apify paid tier for higher volume.
Features
- Storefront & Delivery Coverage: Scrape both physical dispensary storefronts and delivery services.
- Accurate Contact Leads: Extract business phone numbers, contact emails, and direct website URLs.
- Location & Geocoding: Full street address, city, state, postal code, and precise GPS latitude/longitude coordinates.
- Compliance & Licensing: Adult-use (recreational), medical, and hybrid license classifications.
- Hours & Service Options: Today's operating hours, current open status, curbside pickup availability, and accepted payment types (cash, debit, cashless).
- Ratings & Reviews: Customer star rating, total review count, and Weedmaps ranking metrics.
- Deals & Menus: Active promotional deals, menu item counts, and optional detailed menu item extraction.
- Flexible Search Modes: Provide Weedmaps city/region URLs, direct dispensary profile URLs, or search by location query (e.g.
Los Angeles, CAorDenver, CO).
Use Cases
- Cannabis Market Intelligence: Map local dispensary density, market saturation, and competitor footprint across legal states.
- B2B Lead Generation: Build outreach lists for ancillary cannabis software, packaging, equipment, and consulting vendors.
- Brand Distribution Audits: Monitor retailer networks and verify where specific cannabis brands are stocked.
- Regulatory & Compliance Tracking: Track licensed cannabis dispensaries, license numbers, and operating jurisdictions.
- Retail Price & Promotion Monitoring: Analyze active promotional deals, discounts, and regional menu pricing.
Input Parameters
| Field | Type | Description | Default |
|---|---|---|---|
startUrls | Array | Weedmaps URLs to crawl. Supports region listing pages (e.g. /dispensaries/in/united-states/california/los-angeles) or individual dispensary pages (e.g. /dispensaries/stiiizy). | [{"url": "https://weedmaps.com/dispensaries/in/united-states/california/los-angeles"}] |
location | String | City, region, or state to search (e.g. Denver, CO, Los Angeles, CA, Detroit). Used when startUrls is empty. | "Los Angeles, CA" |
maxResults | Integer | Maximum dispensary records to deliver (1 - 5,000). Free plan is capped at 5 results. | 20 |
maxPagesPerLocation | Integer | Maximum pagination pages to crawl per region URL (1 - 50). Each page has ~30 dispensaries. | 5 |
scrapeMenuItems | Boolean | Whether to fetch menu item details for each dispensary. | false |
maxMenuItemsPerDispensary | Integer | Max menu items to extract per dispensary when scrapeMenuItems is enabled (1 - 200). | 20 |
proxyConfiguration | Object | Proxy configuration. US residential proxies are used by default for reliability. | { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" } |
Output Example
Each dispensary result delivered to the default dataset contains clean, normalized fields:
{"id": 65841,"name": "STIIIZY Downtown LA","slug": "stiiizy","url": "https://weedmaps.com/dispensaries/stiiizy","type": "dispensary","wmid": 770072967,"address": "728 E Commercial St","city": "Los Angeles","state": "California","zipCode": "90012","country": "United States","latitude": 34.052206,"longitude": -118.232052,"phoneNumber": "(323) 929-4201","email": "retail.dtla@stiiizy.com","website": null,"rating": 4.8,"reviewsCount": 8398,"ranking": 4.75,"licenseType": "hybrid","retailerServices": ["storefront","pickup"],"hasCurbsidePickup": false,"openNow": true,"todaysHours": "6:00am - 9:45pm","minAge": 21,"menuItemsCount": 2067,"verifiedMenuItemsCount": 1827,"hasSaleItems": true,"hasFeaturedDeal": true,"topDeals": [{"id": 1398219,"title": "30% off First Time Customers","brandName": "STIIIZY","slug": "stiiizy-downtown-la-30-off-first-time-customers"}],"topDealsCount": 4,"avatarImageUrl": "https://images.weedmaps.com/dispensaries/000/065/841/avatar/1783453209-46.png","socialEquity": false,"acceptsCreditCards": false,"acceptsDebitCards": true,"acceptsCashlessPayments": true,"introBody": "ALL PRICES ARE OUT THE DOOR *Tax included* We accept Debit Cards & Cash Payments","scrapedAt": "2026-09-30T12:00:00.000Z"}
Pricing (Pay Per Event)
This Actor charges under transparent Pay per event pricing with no hidden compute surcharges. Platform usage pass-through is disabled (isPPEPlatformUsagePaidByUser = false).
Event Pricing Tiers
| Event Name | Event Title | FREE Tier | BRONZE Tier (2.5% off) | SILVER Tier (5% off) | GOLD Tier (20% off) |
|---|---|---|---|---|---|
apify-actor-start | Actor start | $0.005 | $0.005 | $0.005 | $0.005 |
apify-default-dataset-item | Dispensary Result | $0.001 | $0.000975 | $0.00095 | $0.0008 |
Representative Run Costs
- 20 Dispensary Records (FREE list price): $0.005 (start) + (20 × $0.001) = $0.025
- 100 Dispensary Records (FREE list price): $0.005 (start) + (100 × $0.001) = $0.105
- 1,000 Dispensary Records (GOLD tier): $0.005 (start) + (1,000 × $0.0008) = $0.805
How to Run
Via Apify Console
- Open the Actor on Apify.
- Select your desired search location or enter start URLs.
- Click Start to execute the run.
- Export your results in JSON, CSV, Excel, or NDJSON.
Via Apify Python Client
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("muhammadafzal/weedmaps-dispensary-scraper").call(run_input={"location": "Denver, CO","maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["phoneNumber"], item["address"])
Via Apify JavaScript / Node.js Client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('muhammadafzal/weedmaps-dispensary-scraper').call({location: 'Denver, CO',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Limitations & Integrity
- Anti-bot & Geo-fencing: Weedmaps enforces geo-restrictions and Fastly WAF protections. Residential proxies within legal jurisdictions (US) are used to maintain high reliability.
- Menu Scraping Overhead: Enabling
scrapeMenuItemsfetches individual storefront menus and takes longer per dispensary than storefront directory extraction. - Truthful Data Guarantee: The Actor never fabricates records. Nonexistent locations or empty query regions return truthful empty results with informative diagnostics.