Scrape Weedmaps dispensary listings and product menus by state, city, or direct URL. Returns name, address, phone, hours, service type, and menu items. Export to CSV, JSON, Excel, or XML.
- Total users
- 38
- Monthly active
- 3
- Total runs
- 353
- Bookmarked
- 0
- Rating
- 1.0 (1)
- Last modified
- 1 hours ago
This scraper was last updated on .
What does the Weedmaps Dispensary & Menu Scraper return?
Weedmaps Dispensary & Menu Scraper
Scrape Weedmaps dispensaries and menus from any US city or state, up to a million listings per run. Every dispensary comes with its name, address, phone, hours, product menu, and service types. No API key needed. Export to CSV, JSON, Excel, or XML.
Weedmaps lists thousands of dispensaries, delivery services, and pickup locations across the US, but there is no public API to pull structured data at scale. This Actor reads the public Weedmaps directory directly, filtered by state, city, service type, or a custom URL, and returns each dispensary as a flat row with its full menu.
| Who uses it | What they scrape Weedmaps for |
|---|---|
| Cannabis market researchers | Which dispensaries operate in a given region and what products they stock |
| Competitive intelligence analysts | Track pricing, product variety, and service types across local competitors |
| Lead generation teams | Build a contact list of dispensaries for outreach or partnership |
| Supply chain planners | Map the retail landscape before entering a new state or city |
What it does
This Actor collects Weedmaps dispensary listings by state, city, or direct URL, and returns each one as a flat row with name, address, contact info, hours, and product menu items.
- π Location-based scraping: Pick a state and optionally a city from the dropdown, or paste any Weedmaps URL to scrape that exact page.
- π Service type filter: Narrow results to storefront, delivery, or pickup only.
- π¦ Full menu extraction: Each dispensary row includes product names, categories, and prices when available.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Weedmaps data
π Map the cannabis retail landscape.
A market researcher runs the Actor on all cities in a state to count dispensaries, compare service types, and identify underserved areas.
π΅οΈ Monitor competitor menus and pricing.
A dispensary owner scrapes nearby competitors weekly to track new products, price changes, and promotions.
π Build a dispensary lead list.
A sales team scrapes dispensaries in target states to collect phone numbers and addresses for cold outreach.
πΊοΈ Plan expansion into new markets.
A cannabis brand runs the Actor on several cities to evaluate retail density and service mix before choosing a location.
Why choose this scraper
| What you get | |
|---|---|
| Name & address | Dispensary name, street, city, state, zip, and coordinates |
| Contact info | Phone number, email, and website URL |
| Hours of operation | Today's hours plus open and close times for each day of the week |
| Service types | Storefront, delivery, or pickup |
| Licence & compliance | Licence type, licence number, recreational flag, and minimum age |
| On-site details | Payment methods accepted, ATM, and wheelchair access |
| Product menu | Product names, categories, and prices when listed |
How it compares
This Actor focuses on Weedmaps dispensary and menu scraping with a simple state/city dropdown and full menu extraction, unlike broader cannabis registry monitors or simpler listing scrapers.
| Feature | ParseForge | Cannabis Dispensary Monitor | Weedmaps Dispensary Scraper πΏ | Weedmaps Dispensary Scraper |
|---|---|---|---|---|
| Full product menu extraction | Yes | Not listed | Yes | Not listed |
| Filter by service type (storefront/delivery/pickup) | Yes | Not listed | Not listed | Not listed |
| State-wide scrape without city selection | Yes | Yes | Not listed | Not listed |
| Direct URL input for single page | Yes | Not listed | Not listed | Not listed |
| Automatic residential fallback when blocked | Yes | Not listed | Not listed | Not listed |
| Change detection across runs | Not listed | Yes | Not listed | Not listed |
| Canadian province coverage | Not listed | Yes | Not listed | Not listed |
Configure the run
Drive the Actor from a state and city dropdown, or a direct Weedmaps URL, and filter by service type as each listing is read so only matching dispensaries reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"maxItems": 10,
"state": "california",
"retailerServices": "storefront",
"proxyConfiguration": {
"useApifyProxy": true
}
}
A larger pull:
{
"maxItems": 200,
"state": "california",
"retailerServices": "storefront",
"proxyConfiguration": {
"useApifyProxy": true
}
}
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Weedmaps Dispensary & Menu Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Weedmaps through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/weedmaps-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the state and city are spelled correctly in the dropdown. If using a Start URL, make sure it is a valid Weedmaps dispensary or city page. A run that finds nothing says so in the run status and charges nothing, and it tells you whether Weedmaps answered with an empty list or blocked the request.
The run is very slow.
A state-wide scrape pages through every listing in the state. Narrow the location to a single city, or set a radius, to speed up the run.
I see duplicate dispensaries.
Some dispensaries appear in multiple categories or nearby cities. The Actor does not deduplicate by default. You can remove duplicates in post-processing using the dispensary name and address.
Product menu data is missing.
Not all dispensaries list their menu on Weedmaps. The Actor only returns menu items when they are publicly visible on the page.
The run says Weedmaps blocked it.
Weedmaps runs bot protection that occasionally challenges an exit IP. The Actor retries on a fresh IP and switches to residential proxies on its own when a block repeats, so most runs recover without you doing anything. If a run still ends blocked, nothing is charged for it: run it again, or leave the proxy on Apify Residential from the start.
FAQ
| Question | Answer |
|---|---|
| Do I need a Weedmaps API key? | No. The Actor reads public Weedmaps pages directly. No login or API key is required. |
| Can I scrape all dispensaries in a state? | Yes. Select a state and leave the city field empty to scrape every city in that state. The Actor returns all available dispensaries up to your maxItems limit. |
| What data does each row contain? | Each row includes the dispensary name, address, phone, email, website, weekly hours, licence details, service type, and the product menu item with its name, category, brand, and price. |
| Does it scrape product menus? | Yes. When a dispensary has a menu on Weedmaps, the Actor extracts product names, categories, and prices. |
| What is the maxItems limit? | Free users are limited to 100 items. Paid users can set up to 1,000,000. The Actor stops when it reaches the limit or when no more dispensaries are found. |
| Can I scrape a single dispensary page? | Yes. Paste a dispensary URL such as https://weedmaps.com/dispensaries/nug-oakland into Start URL and the Actor returns that dispensary and its menu. A city URL such as https://weedmaps.com/dispensaries/in/united-states/california/oakland scrapes that whole city. |
| What proxy does it use? | Apify Proxy on datacenter by default. If Weedmaps blocks an exit IP twice, the Actor switches itself to residential for the rest of the run. You can pin residential from the start in Advanced Options. |
| How long does a run take? | It depends on the number of dispensaries. A single city with 10 dispensaries finishes in under a minute. A full state scrape may take several minutes. |
| Can I filter by delivery only? | Yes. Set the Retailer Services filter to Delivery to return only dispensaries that offer delivery. |
| What export formats are supported? | You can export the dataset as CSV, JSON, Excel, or XML from the Apify dataset page. |
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Weedmaps, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
What input does the Weedmaps Dispensary & Menu Scraper accept?
| Field | Type | What it does | Default |
|---|---|---|---|
| startUrl | string | Paste a Weedmaps dispensary URL (e.g. https://weedmaps.com/dispensaries/in/united-states/california/los-angeles). Overrides state/city below. | not set |
| maxItems | integer | Free users: limited to 100. Paid users: optional, max 1,000,000. Note: a city may have fewer dispensaries than maxItems, the scraper returns all available and stops. | 10 |
| state | string (52 options) | US state slug. Used when no city is selected below. | california |
| city | string (4094 options) | Select a US city. Leave empty for state-wide scraping. | not set |
| radius | string | Override radius (e.g. 10mi, 25mi, 50mi). Leave empty to use Weedmaps' suggested radius for that city. Bigger = includes nearby cities. | not set |
| retailerServices | string (4 options) | Filter dispensaries by service type. | storefront |
| proxyConfiguration | object | Apify Proxy is used to reach Weedmaps. Datacenter is enough in most runs; the Actor switches to residential on its own if Weedmaps blocks the exit IP. | {"useApifyProxy":true} |
How much does the Weedmaps Dispensary & Menu Scraper cost?
from $11.99 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged once when the run starts. | $0.005 |
| Result Item | Charged once per result collected. | $0.01199 to $0.01599 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
How do I call the Weedmaps Dispensary & Menu Scraper API?
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~weedmaps-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"maxItems": 10,
"state": "california",
"retailerServices": "storefront",
"proxyConfiguration": {
"useApifyProxy": true
}
}' What example inputs can I use?
Use these inputs to see how a run is configured.
{
"maxItems": 10,
"state": "california",
"retailerServices": "storefront",
"proxyConfiguration": {
"useApifyProxy": true
}
} What do users say about the Weedmaps Dispensary & Menu Scraper?
Rated 1.0 out of 5 across 1 review. Read them on Apify.
How do I report an issue with the Weedmaps Dispensary & Menu Scraper?
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
What related scrapers can I use?
Run Weedmaps Dispensary & Menu Scraper on Apify All scrapers
