Weedmaps Cannabis Dispensary Scraper
Pricing
from $6.00 / 1,000 results
Weedmaps Cannabis Dispensary Scraper
Scrape cannabis dispensaries and delivery services from Weedmaps by location. Get name, license type, address, phone, rating, reviews, coordinates and services. Export to JSON, CSV or Excel.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Weedmaps Cannabis Dispensary Scraper
Here is one real result, with every field the actor returns (the long description is trimmed with an ellipsis, every value real):
{"id": 29191,"name": "SUNSET","slug": "sunset-herbal-corner-2-2","type": "dispensary","licenseType": "hybrid","retailerServices": ["storefront", "pickup"],"rating": 5,"reviewsCount": 3770,"phone": "(818) 762-2282","email": "sunsetherbalcorner@gmail.com","website": "https://weedmaps.com/dispensaries/sunset-herbal-corner-2-2","address": "11503 Burbank Blvd","city": "North Hollywood","state": "California","zip": "91601","country": "United States","latitude": 34.172486,"longitude": -118.38277,"timezone": "America/Los_Angeles","online": null,"url": "https://weedmaps.com/dispensaries/sunset-herbal-corner-2-2","licenses": null,"description": "Welcome to Sunset! Proudly serving since 2007, Sunset is your trusted neighborhood dispensary now under new management ...","openNow": false,"todaysHours": "6:00am - 10:00pm","menuItemsCount": 2125,"verifiedMenuItemsCount": 2037,"menuId": 840608498,"onlineOrdering": true,"hasCurbsidePickup": true,"hasSaleItems": true,"promoCode": "CELEBRATEJULY4EARLY","acceptsCreditCards": false,"acceptsDebitCards": false,"acceptsCashlessPayments": true,"acceptsAch": false,"minAge": 18,"packageLevel": "listing_plus","bestOfWeedmaps": false,"endorsementCount": 2037,"isPublished": true,"logo": "https://images.weedmaps.com/dispensaries/000/029/191/avatar/1786575688-1.png","aiProfileSummary": null,"aiCategories": null,"aiPrimaryCategory": null,"source": "Weedmaps","observedAt": "2026-08-14T07:03:10.159Z","error": null}
The most complete Weedmaps cannabis retailer scraper available. It returns every field the Weedmaps listing exposes for each dispensary, delivery service or doctor, including phone, email, website, coordinates, rating, review count, menu size, payment options and promos, plus optional AI add-ons, and gives you a location and retailer-type filter to target exactly the retailers you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches Weedmaps around the latitude and longitude you provide, applies your retailer-type filter, and writes one normalized record per cannabis retailer to the run's dataset. Each record carries the retailer name, license type, full address and coordinates, phone, email and website, rating and review count, opening hours, menu size, payment options, active promo code and logo. Missing source values are returned as null.
Choose the kind of retailer with retailerService: storefront dispensaries, delivery services, or doctors. Optional AI add-ons (withAiProfileSummary, withAiCategorize) add a plain-English profile summary and a category classification per retailer. They are paid add-ons, charged only when they return usable output.
Quickstart
Open the actor, paste this into the input, and press Run. It returns three storefront dispensaries near Los Angeles.
{"latitude": "34.0522","longitude": "-118.2437","retailerService": "storefront","maxDispensaries": 3}
Every input field is optional; latitude and longitude default to Los Angeles. Change the coordinates to search any area.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxDispensaries | integer | no | 10 | Maximum number of cannabis retailers to collect (1 to 1000000). |
latitude | string | no | 34.0522 | Center latitude of the area to search. Defaults to Los Angeles. |
longitude | string | no | -118.2437 | Center longitude of the area to search. Defaults to Los Angeles. |
retailerService | enum | no | storefront | Which kind of retailer to return. One of storefront, delivery, doctor. |
withAiProfileSummary | boolean | no | false | AI plain-English profile summary per retailer. Paid add-on, billed only when a summary is produced. |
withAiCategorize | boolean | no | false | AI categorization (storefront/delivery/medical/recreational and product categories). Paid add-on, billed only when a classification is produced. |
Output reference
One dataset item per retailer. Types: string, integer, number, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
id | integer | Weedmaps retailer ID. |
name | string | Retailer name. |
slug | string | Weedmaps URL slug. |
type | string | Listing type, for example dispensary. |
licenseType | string | License type, for example hybrid, medical, recreational. |
retailerServices | string[] | Services offered, for example storefront, pickup, delivery. |
rating | number | Average star rating. |
reviewsCount | integer | Number of reviews. |
phone | string | Contact phone, or null. |
email | string | Contact email, or null. |
website | string | Retailer website URL. |
address | string | Street address. |
city | string | City. |
state | string | State. |
zip | string | ZIP / postal code. |
country | string | Country. |
latitude | number | Retailer latitude. |
longitude | number | Retailer longitude. |
timezone | string | IANA timezone. |
online | boolean | Whether the retailer is currently online, or null. |
url | string | Weedmaps listing URL. |
licenses | string[] | State license numbers, or null. |
description | string | Retailer description text. |
openNow | boolean | Whether the retailer is open at run time. |
todaysHours | string | Today's opening hours. |
menuItemsCount | integer | Number of menu items. |
verifiedMenuItemsCount | integer | Number of verified menu items. |
menuId | integer | Weedmaps menu ID. |
onlineOrdering | boolean | Whether online ordering is available. |
hasCurbsidePickup | boolean | Whether curbside pickup is offered. |
hasSaleItems | boolean | Whether the retailer has items on sale. |
promoCode | string | Active promo code, or null. |
acceptsCreditCards | boolean | Whether credit cards are accepted. |
acceptsDebitCards | boolean | Whether debit cards are accepted. |
acceptsCashlessPayments | boolean | Whether cashless payments are accepted. |
acceptsAch | boolean | Whether ACH payments are accepted. |
minAge | integer | Minimum entry age. |
packageLevel | string | Weedmaps listing package tier. |
bestOfWeedmaps | boolean | Whether the retailer holds a Best of Weedmaps award. |
endorsementCount | integer | Number of endorsements. |
isPublished | boolean | Whether the listing is published. |
logo | string | Logo image URL. |
aiProfileSummary | string | AI profile summary, or null unless withAiProfileSummary is on. |
aiCategories | string[] | AI category tags, or null unless withAiCategorize is on. |
aiPrimaryCategory | string | AI primary category, or null. |
source | string | Data source. Weedmaps. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"latitude":"34.0522","longitude":"-118.2437","retailerService":"storefront","maxDispensaries":3,"withAiProfileSummary":true,"withAiCategorize":true}). The AI fields are populated because this run enabled them, and the long description is trimmed with an ellipsis:
{"id": 29191,"name": "SUNSET","slug": "sunset-herbal-corner-2-2","type": "dispensary","licenseType": "hybrid","retailerServices": ["storefront", "pickup"],"rating": 5,"reviewsCount": 3770,"phone": "(818) 762-2282","email": "sunsetherbalcorner@gmail.com","website": "https://weedmaps.com/dispensaries/sunset-herbal-corner-2-2","address": "11503 Burbank Blvd","city": "North Hollywood","state": "California","zip": "91601","country": "United States","latitude": 34.172486,"longitude": -118.38277,"timezone": "America/Los_Angeles","url": "https://weedmaps.com/dispensaries/sunset-herbal-corner-2-2","description": "Welcome to Sunset! Proudly serving since 2007 ...","openNow": false,"todaysHours": "6:00am - 10:00pm","menuItemsCount": 2125,"verifiedMenuItemsCount": 2037,"onlineOrdering": true,"hasCurbsidePickup": true,"promoCode": "CELEBRATEJULY4EARLY","acceptsCashlessPayments": true,"minAge": 18,"aiProfileSummary": "Sunset is a highly-rated cannabis dispensary in North Hollywood, California, offering over 2,100 menu items with online ordering and curbside pickup, serving customers since 2007.","aiCategories": ["storefront", "delivery", "recreational"],"aiPrimaryCategory": "storefront","source": "Weedmaps","observedAt": "2026-08-14T07:03:10.159Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~cannabis-dispensary-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"latitude":"34.0522","longitude":"-118.2437","retailerService":"storefront","maxDispensaries":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~cannabis-dispensary-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"latitude":"40.7128","longitude":"-74.0060","retailerService":"delivery","maxDispensaries":100}'
Apify CLI:
apify call scrapers_lat/cannabis-dispensary-scraper \--input '{"latitude":"37.7749","longitude":"-122.4194","retailerService":"doctor"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per retailer record returned (
resultevent). See the pricing tab for the current per-result price. - AI add-ons are billed separately.
withAiProfileSummaryandwithAiCategorizeeach charge only when they return usable output, and are available to paying users. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxDispensaries.
FAQ and troubleshooting
How do I search a different city?
Change latitude and longitude to the center of the area you want. The actor collects retailers around that point.
Can I get delivery services or doctors instead of storefronts?
Yes. Set retailerService to delivery or doctor.
Does it include phone and email?
Yes, when Weedmaps publishes them. Missing contact fields are returned as null.
A run returned 0 records. Why?
There may be no listed retailers of that type near the coordinates. Try a denser urban area or a different retailerService. Zero-result runs are not charged.
Why are the AI fields null?
They only populate when you enable withAiProfileSummary or withAiCategorize. Otherwise they stay null.
Is this an official Weedmaps tool? No. This actor is independent and has no affiliation with Weedmaps. It reads only data that is publicly available on Weedmaps listings. Use the results in accordance with the source's terms.
Related scrapers
- Yelp Business Scraper: US local businesses with reviews and contacts.
- Google Maps Business Scraper: Places with address, phone and rating.
- Capterra Software Reviews Scraper: Software vendors and reviews.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Weedmaps. Accesses only publicly available listing data. Use in accordance with the source's terms.
