# Weedmaps Scraper (`solidcode/weedmaps-scraper`) Actor

\[💰 $0.5 / 1K] Extract cannabis dispensary, delivery, and doctor listings from Weedmaps. Search by city, state, or ZIP, or paste Weedmaps URLs, then filter by license type, deals, and online ordering. Get names, addresses, contacts, ratings, hours, payment methods, and licensing details.

- **URL**: https://apify.com/solidcode/weedmaps-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Weedmaps Scraper

Pull cannabis business listings from Weedmaps at scale — dispensaries, delivery services, and doctors with names, full addresses, phone, email, ratings, today's hours, license type, payment methods, online-ordering availability, and live deals. Search by city, state, or ZIP, or paste any Weedmaps browse URL. Built for cannabis market researchers, dispensary lead-generation teams, and delivery brands who need a clean, structured directory of licensed retailers without clicking through Weedmaps map pages one listing at a time.

### Why This Scraper?

- **Three listing types in one actor** — dispensaries, delivery services, and doctors, switchable from a single dropdown. Most competing scrapers cover storefront dispensaries only.
- **Medical vs. recreational license filtering** — restrict a run to medical-only or recreational (adult-use) retailers, or pull both, so you only pay for the licensing class you need.
- **Verified contact data on every listing** — business phone, email, and the Weedmaps profile URL captured per row for outreach and CRM enrichment.
- **Latitude and longitude on every row** — search by city, state, or a 5-digit ZIP and get precise coordinates for mapping and territory analysis.
- **Live operational signals** — current open-now status, today's hours with timezone, and online-ordering availability split into pickup and delivery with an ETA window in minutes.
- **Deal intelligence** — filter to listings running active promotions, then read up to 4 deal titles plus a total deal count per listing to spot promotable retailers.
- **Four-way payment-method breakdown** — cash, debit, credit, and ACH acceptance flags on each listing, so you can segment retailers by how they take payment.
- **Menu size and review count as popularity signals** — every row carries a menu-item count and a review count without bloating the dataset with thousands of child rows.
- **Four stacking filters plus paste-URL support** — combine license type, open-now, online-ordering, and has-deals, or drop in a `/dispensaries/in/...` browse link and the actor honors the location and filters baked into it.

### Use Cases

**Market Research**
- Map dispensary and delivery density across a city, state, or ZIP
- Compare medical vs. recreational retailer coverage by market
- Track which retailers offer online ordering for pickup or delivery
- Size local markets by menu count and review volume

**Lead Generation**
- Build outreach lists of licensed retailers with phone, email, and profile URL
- Target delivery services in specific ZIP codes
- Segment prospects by payment methods accepted (cash, debit, credit, ACH)
- Find doctors and clinics for medical-cannabis referral programs

**Competitive Intelligence**
- Monitor which competitors are running active deals and read their deal titles
- Track ratings and review counts across rival storefronts
- Compare today's hours and open-now availability in a trade area
- Watch online-ordering ETAs to benchmark fulfillment speed

**Location & Territory Analysis**
- Plot retailers on a map using per-row latitude and longitude
- Plan delivery zones around a ZIP using a 50-mile search radius
- Identify underserved areas by retailer count per location
- Cross-reference license type with geography for expansion planning

### Getting Started

#### Search a Single City

The simplest run — one location, default dispensaries:

```json
{
    "searchLocations": ["Los Angeles, CA"],
    "maxResults": 50
}
````

#### Recreational Retailers with Deals

```json
{
    "searchLocations": ["Denver", "80202"],
    "listingType": "dispensaries",
    "licenseType": "recreational",
    "hasDealsOnly": true,
    "maxResults": 200
}
```

#### Delivery Services, Open Now, Online Ordering

```json
{
    "searchLocations": ["Sacramento, CA", "San Diego, CA"],
    "listingType": "deliveries",
    "openNow": true,
    "onlineOrderingOnly": true,
    "maxResults": 500,
    "onlyUniqueListings": true
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchLocations` | string\[] | `["Los Angeles, CA"]` | Cities, states, or ZIP codes to search (e.g. "Los Angeles, CA", "Denver", "90210"). Each location runs its own search. |
| `startUrls` | string\[] | `[]` | Paste Weedmaps browse URLs (e.g. `https://weedmaps.com/dispensaries/in/united-states/california/los-angeles`). Location and filters baked into the URL are respected. |
| `listingType` | select | `Dispensaries (storefronts)` | Which kind of business to collect: Dispensaries (storefronts), Deliveries, or Doctors. Applies to location searches. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `licenseType` | select | `Any license type` | Limit to Medical only, Recreational (adult-use), or any license type. |
| `openNow` | boolean | `false` | Only return businesses that are currently open. |
| `onlineOrderingOnly` | boolean | `false` | Only return businesses that accept online orders for pickup or delivery. |
| `hasDealsOnly` | boolean | `false` | Only return businesses currently running deals or promotions. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum listings to collect per location or URL. Set to 0 for all available results. The actor keeps the whole final page, so a small cap may return a few extra. |
| `onlyUniqueListings` | boolean | `true` | Return each business once even if it appears across several searches. Turn off to keep every copy. |

### Output

Each listing is one flat row. Here's a representative result:

```json
{
    "id": "123456",
    "name": "Green Thumb Dispensary",
    "type": "dispensary",
    "licenseType": "recreational",
    "rating": 4.7,
    "reviewsCount": 1284,
    "address": "123 Sunset Blvd",
    "city": "Los Angeles",
    "state": "CA",
    "zipCode": "90028",
    "country": "United States",
    "latitude": 34.0982,
    "longitude": -118.3267,
    "phone": "+13105551234",
    "email": "hello@greenthumb.example",
    "website": "https://weedmaps.com/dispensaries/green-thumb-dispensary",
    "url": "https://weedmaps.com/dispensaries/green-thumb-dispensary",
    "openNow": true,
    "todaysHours": "6:00am - 9:45pm",
    "timezone": "America/Los_Angeles",
    "minAge": 21,
    "retailerServices": ["storefront", "pickup", "delivery"],
    "menuItemsCount": 412,
    "verifiedMenuItemsCount": 388,
    "distanceMiles": 3.37,
    "acceptsCreditCards": false,
    "acceptsDebitCards": true,
    "acceptsCashlessPayments": true,
    "acceptsAch": false,
    "onlineOrderingEnabled": true,
    "pickupEnabled": true,
    "deliveryEnabled": true,
    "etaMin": 30,
    "etaMax": 60,
    "topDeals": ["20% off all flower", "Buy 2 carts get 1 free"],
    "dealsCount": 7,
    "hasFeaturedDeal": true,
    "searchLocation": "Los Angeles, CA",
    "scrapedAt": "2026-06-26T14:30:00+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Stable Weedmaps listing identifier |
| `name` | string | Business name |
| `type` | string | Listing type (dispensary, delivery, doctor) |
| `licenseType` | string | License classification of the listing |
| `rating` | number | Average star rating |
| `reviewsCount` | number | Total number of reviews |
| `menuItemsCount` | number | Number of items on the listing's menu |
| `verifiedMenuItemsCount` | number | Number of verified menu items (a freshness/quality signal) |
| `distanceMiles` | number | Distance in miles from the center of your search location |
| `url` | string | Weedmaps listing URL |
| `searchLocation` | string | The location or URL this row came from |
| `scrapedAt` | string | ISO timestamp of data extraction |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | Street address |
| `city` | string | City |
| `state` | string | State |
| `zipCode` | string | ZIP code |
| `country` | string | Country |
| `latitude` | number | Latitude |
| `longitude` | number | Longitude |

#### Contact

| Field | Type | Description |
|-------|------|-------------|
| `phone` | string | Business phone number |
| `email` | string | Business email (when published) |
| `website` | string | Weedmaps profile URL |

#### Hours & Access

| Field | Type | Description |
|-------|------|-------------|
| `openNow` | boolean | Whether the business is currently open |
| `todaysHours` | string | Today's opening hours |
| `timezone` | string | Business timezone |
| `minAge` | number | Minimum age to enter or order |
| `retailerServices` | string\[] | Service tags (storefront, pickup, delivery) |

#### Payments & Ordering

| Field | Type | Description |
|-------|------|-------------|
| `acceptsCashlessPayments` | boolean | Accepts cashless payments |
| `acceptsDebitCards` | boolean | Accepts debit cards |
| `acceptsCreditCards` | boolean | Accepts credit cards |
| `acceptsAch` | boolean | Accepts ACH transfers |
| `onlineOrderingEnabled` | boolean | Online ordering available |
| `pickupEnabled` | boolean | Pickup orders available |
| `deliveryEnabled` | boolean | Delivery orders available |
| `etaMin` | number | Lower bound of order ETA in minutes |
| `etaMax` | number | Upper bound of order ETA in minutes |

#### Deals

| Field | Type | Description |
|-------|------|-------------|
| `topDeals` | string\[] | Up to 4 active deal titles |
| `dealsCount` | number | Total number of active deals |
| `hasFeaturedDeal` | boolean | Whether the listing has a featured deal |

### Tips for Best Results

- **Run one listing type per job** — dispensaries, deliveries, and doctors each get their own run. Launch them separately and merge the datasets afterward for a full local picture.
- **Combine open-now and has-deals to surface promotable retailers** — pairing these two filters returns only listings that are both live right now and actively discounting, the sharpest list for partnership or competitive outreach.
- **Search by city or ZIP for the most complete coverage** — results are centered within about 50 miles of each location, so a single statewide search won't cover a large state edge-to-edge. List a state's major cities (Los Angeles, San Francisco, San Diego, Sacramento for California) instead of one bare state name, and use a single ZIP to center the search on a precise point for delivery-zone planning.
- **Start small to validate** — set `maxResults` to 25–50 on your first run to confirm the fields match your needs, then scale up.
- **Filter by license type to cut noise** — set Medical or Recreational so you only collect (and pay for) the licensing class you actually need.
- **Mix locations and URLs in one run** — list several cities and ZIPs together, or paste a `/deliveries/in/...` browse link; results are deduplicated by listing when Only Unique Listings is on.
- **Expect counts, not raw menus** — `menuItemsCount` and `reviewsCount` are at-a-glance totals per listing, keeping rows lightweight rather than expanding into thousands of product or review rows.

### Pricing

**From $0.50 per 1,000 results** — flat pay-per-result, one of the most affordable cannabis directory scrapers available. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.06 | $0.06 | $0.05 | $0.05 |
| 1,000 | $0.60 | $0.56 | $0.53 | $0.50 |
| 10,000 | $6.00 | $5.60 | $5.30 | $5.00 |
| 100,000 | $60.00 | $56.00 | $53.00 | $50.00 |

A "result" is any listing row in the output 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 integrations on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available cannabis business-listing data for legitimate market research, lead generation, and competitive analysis. The data covers businesses, not consumers. Users are responsible for complying with Weedmaps' Terms of Service and with all applicable local, state, and federal laws — including cannabis advertising, marketing, and data-handling regulations in their jurisdiction. Do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

## `searchLocations` (type: `array`):

Cities, states, or ZIP codes to search, such as 'Los Angeles, CA', 'Denver', or '90210'. Each location runs its own search. Results are centered within about 50 miles of each location, so a city or ZIP gives the most focused, complete results — a bare state name (e.g. 'California') returns listings near the state's center, not the entire state, so list its major cities for full coverage. Leave empty if you are pasting Weedmaps URLs below.

## `startUrls` (type: `array`):

Paste Weedmaps listing URLs to scrape them exactly as shown on the site, for example https://weedmaps.com/dispensaries/in/united-states/california/los-angeles or a single listing page. Any location or filters baked into the URL are respected.

## `listingType` (type: `string`):

Which kind of cannabis business to collect. Only applies to location searches — pasted URLs use their own type.

## `licenseType` (type: `string`):

Limit results to medical-only, recreational (adult-use), or both. Leave on 'Any' to include every license type.

## `openNow` (type: `boolean`):

Only return businesses that are currently open.

## `onlineOrderingOnly` (type: `boolean`):

Only return businesses that accept online orders for pickup or delivery.

## `hasDealsOnly` (type: `boolean`):

Only return businesses that are currently running deals or promotions.

## `maxResults` (type: `integer`):

Maximum number of listings to collect per location or URL. Set to 0 to collect all available results. Results are fetched in pages: the actor stops once your cap is reached but always keeps the whole final page, so a small cap can return a few more than you asked for.

## `onlyUniqueListings` (type: `boolean`):

When on, each business is returned once even if it appears across several searches. Deduplicates by the Weedmaps listing ID. Turn off to keep every copy.

## Actor input object example

```json
{
  "searchLocations": [
    "Los Angeles, CA"
  ],
  "startUrls": [],
  "listingType": "dispensaries",
  "licenseType": "",
  "openNow": false,
  "onlineOrderingOnly": false,
  "hasDealsOnly": false,
  "maxResults": 100,
  "onlyUniqueListings": true
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped listings with key fields like name, type, rating, city, state, phone, and whether they are open now.

## `detail` (type: `string`):

Complete listing data including full address, coordinates, contacts, hours, online ordering, payment methods, deal summaries, and licensing details.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchLocations": [
        "Los Angeles, CA"
    ],
    "startUrls": [],
    "listingType": "dispensaries",
    "licenseType": "",
    "openNow": false,
    "onlineOrderingOnly": false,
    "hasDealsOnly": false,
    "maxResults": 100,
    "onlyUniqueListings": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/weedmaps-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchLocations": ["Los Angeles, CA"],
    "startUrls": [],
    "listingType": "dispensaries",
    "licenseType": "",
    "openNow": False,
    "onlineOrderingOnly": False,
    "hasDealsOnly": False,
    "maxResults": 100,
    "onlyUniqueListings": True,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/weedmaps-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchLocations": [
    "Los Angeles, CA"
  ],
  "startUrls": [],
  "listingType": "dispensaries",
  "licenseType": "",
  "openNow": false,
  "onlineOrderingOnly": false,
  "hasDealsOnly": false,
  "maxResults": 100,
  "onlyUniqueListings": true
}' |
apify call solidcode/weedmaps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/weedmaps-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Weedmaps Scraper",
        "description": "[💰 $0.5 / 1K] Extract cannabis dispensary, delivery, and doctor listings from Weedmaps. Search by city, state, or ZIP, or paste Weedmaps URLs, then filter by license type, deals, and online ordering. Get names, addresses, contacts, ratings, hours, payment methods, and licensing details.",
        "version": "1.0",
        "x-build-id": "W99Vg2ttLQNzA4Fb3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~weedmaps-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-weedmaps-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~weedmaps-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-weedmaps-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~weedmaps-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-weedmaps-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchLocations": {
                        "title": "Search Locations",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Cities, states, or ZIP codes to search, such as 'Los Angeles, CA', 'Denver', or '90210'. Each location runs its own search. Results are centered within about 50 miles of each location, so a city or ZIP gives the most focused, complete results — a bare state name (e.g. 'California') returns listings near the state's center, not the entire state, so list its major cities for full coverage. Leave empty if you are pasting Weedmaps URLs below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Weedmaps URLs",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Paste Weedmaps listing URLs to scrape them exactly as shown on the site, for example https://weedmaps.com/dispensaries/in/united-states/california/los-angeles or a single listing page. Any location or filters baked into the URL are respected.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingType": {
                        "title": "Listing Type",
                        "enum": [
                            "dispensaries",
                            "deliveries",
                            "doctors"
                        ],
                        "type": "string",
                        "description": "Which kind of cannabis business to collect. Only applies to location searches — pasted URLs use their own type.",
                        "default": "dispensaries"
                    },
                    "licenseType": {
                        "title": "License Type",
                        "enum": [
                            "",
                            "medical",
                            "recreational"
                        ],
                        "type": "string",
                        "description": "Limit results to medical-only, recreational (adult-use), or both. Leave on 'Any' to include every license type.",
                        "default": ""
                    },
                    "openNow": {
                        "title": "Open Now Only",
                        "type": "boolean",
                        "description": "Only return businesses that are currently open.",
                        "default": false
                    },
                    "onlineOrderingOnly": {
                        "title": "Online Ordering Only",
                        "type": "boolean",
                        "description": "Only return businesses that accept online orders for pickup or delivery.",
                        "default": false
                    },
                    "hasDealsOnly": {
                        "title": "Has Deals Only",
                        "type": "boolean",
                        "description": "Only return businesses that are currently running deals or promotions.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results per Search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of listings to collect per location or URL. Set to 0 to collect all available results. Results are fetched in pages: the actor stops once your cap is reached but always keeps the whole final page, so a small cap can return a few more than you asked for.",
                        "default": 100
                    },
                    "onlyUniqueListings": {
                        "title": "Only Unique Listings",
                        "type": "boolean",
                        "description": "When on, each business is returned once even if it appears across several searches. Deduplicates by the Weedmaps listing ID. Turn off to keep every copy.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
