ParseForge Scrapers

Weedmaps Dispensary & Menu Scraper

parseforge/weedmaps-scraper

Lead generationE-commerceAutomation

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.

Run this scraper See the API call
Total users
36
Monthly active
1
Total runs
334
Bookmarked
0
Rating
1.0 (1)
Last modified
12 days ago

Overview

ParseForge

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 and website URL
Hours of operation Open and close times for each day of the week
Service types Storefront, delivery, or pickup
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
Residential proxy support 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,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}

A larger pull:

{
  "maxItems": 200,
  "state": "california",
  "retailerServices": "storefront",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}

Pricing

Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.60
1,000 results $15.99
10,000 results $159.90

New Apify accounts start with $5 in free credit.

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

  1. Create a free Apify account with $5 in credit.
  2. Open the Weedmaps Dispensary & Menu Scraper.
  3. Set your inputs and any filters, then click Start.
  4. 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 listing page. Also verify that your proxy configuration uses residential proxies.

The run is very slow.

Weedmaps pages load slowly under residential proxies. Reduce maxItems or narrow your location to a single city 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 fails with a proxy error.

Weedmaps blocks datacenter IPs. Make sure your proxy configuration uses Apify Residential proxies or another residential proxy provider.

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, website, hours, service type, and product menu items with names, categories, and prices.
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 the direct Weedmaps URL into the Start URL field and the Actor will scrape that one page.
What proxy does it use? Residential proxies are required for Weedmaps. The Actor defaults to Apify Residential proxies. You can change this 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.

Related actors

Browse the full ParseForge collection for more scrapers.

πŸ†˜ 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.

Input

FieldTypeWhat it doesDefault
startUrl string Paste a Weedmaps URL (e.g. https://weedmaps.com/dispensaries/in/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 Residential proxies required for Weedmaps. {"useApifyProxy":true,"apifyProxyGroups"

Pricing

from $11.99 per 1,000 results

Charged forWhat it isPrice 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.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
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 '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

Rated 1.0 out of 5 across 1 review. Read them on Apify.

Issues

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.

Related scrapers

Run Weedmaps Dispensary & Menu Scraper on Apify All scrapers