Retailers Endpoint
Search for cannabis dispensaries across the US and Canada. Find retailers by location, name, or the services they offer.
Request
GET https://api.cannmenus.com/v1/retailers
Parameters
- Name
id- Type
- number
- Description
Get a specific retailer by ID.
id=10600
- Name
search- Type
- string
- Description
Search across name, city, and address fields.
search=420
- Name
name- Type
- string
- Description
Search by retailer name (prefix match).
name=Rise
- Name
state- Type
- string
- Description
Filter by US state or Canadian province (exact match). Use full name.
state=California
- Name
states- Type
- string
- Description
Filter by multiple states (comma-separated).
states=California,Colorado,Oregon
- Name
city- Type
- string
- Description
Filter by city name (prefix match). Best used with
state.city=Los Angeles
- Name
zipcode- Type
- string
- Description
Filter by US ZIP code or Canadian postal code.
zipcode=90210
- Name
lat- Type
- number
- Description
Latitude for location-based search. Must be used with
lnganddistance.
- Name
lng- Type
- number
- Description
Longitude for location-based search. Must be used with
latanddistance.
- Name
distance- Type
- number
- Description
Radius in miles from lat/lng.
- Name
is_active- Type
- boolean
- Description
Filter by active status.
is_active=true
- Name
is_medical- Type
- boolean
- Description
Filter for medical dispensaries.
is_medical=true
- Name
is_recreational- Type
- boolean
- Description
Filter for recreational dispensaries.
is_recreational=true
- Name
delivery_enabled- Type
- boolean
- Description
Filter for dispensaries offering delivery.
delivery_enabled=true
- Name
pickup_enabled- Type
- boolean
- Description
Filter for dispensaries offering pickup/preorder.
pickup_enabled=true
- Name
page- Type
- number
- Description
Page number. Default:
1. 20 results per page.
Example Requests
Search by Location
Find dispensaries near downtown Los Angeles:
curl "https://api.cannmenus.com/v1/retailers?state=California&lat=34.0522&lng=-118.2437&distance=5&page=1" \
-H "X-Token: YOUR_API_TOKEN"
Search by Name
Find retailers with "rise" in the name in Illinois:
curl "https://api.cannmenus.com/v1/retailers?state=Illinois&name=rise&is_active=true&page=1" \
-H "X-Token: YOUR_API_TOKEN"
Delivery Dispensaries
Find dispensaries offering delivery in California:
curl "https://api.cannmenus.com/v1/retailers?state=California&delivery_enabled=true&page=1" \
-H "X-Token: YOUR_API_TOKEN"
Medical-Only Dispensaries
curl "https://api.cannmenus.com/v1/retailers?state=Florida&is_medical=true&page=1" \
-H "X-Token: YOUR_API_TOKEN"
Response
{
"data": [
{
"id": 10600,
"dispensary_name": "Rise Dispensary Joliet",
"is_active": true,
"cann_dispensary_slug": "rise-dispensary-joliet",
"website_url": "https://risecannabis.com",
"contact_phone": "(815) 338-1234",
"contact_email": "info@risecannabis.com",
"physical_address": "2130 W Jefferson St",
"city": "Joliet",
"state": "Illinois",
"zip_code": "60435",
"country": "USA",
"latitude": 41.5267,
"longitude": -88.1338,
"serves_medical_users": true,
"serves_recreational_users": true,
"google_place_id": "ChIJrTLr-GyuEmsRBfy61i59si0",
"license_number": "DISP.000123",
"payment_methods": {
"cash_only": false,
"credit_card": {"accepted": true},
"debit_card": true
},
"online_services_offered": {"delivery": true, "pickup": true},
"ratings": {"average": 4.5},
"reviews_count": {"total": 100},
"brand_ids": [789, 1042, 5163]
}
],
"pagination": {
"total_records": 45,
"current_page": 1,
"total_pages": 3,
"next_page": 2,
"prev_page": null
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | number | Unique retailer identifier (use for Products endpoint retailers parameter) |
dispensary_name | string | Retailer name |
is_active | boolean | Whether retailer is currently active |
cann_dispensary_slug | string | URL-friendly retailer identifier |
website_url | string | Retailer website URL |
contact_phone | string | Contact phone number |
contact_email | string | Contact email address |
physical_address | string | Street address |
city | string | City |
state | string | State or province |
zip_code | string | ZIP or postal code |
country | string | Country |
latitude | number | Latitude coordinate |
longitude | number | Longitude coordinate |
serves_medical_users | boolean | Whether retailer serves medical patients |
serves_recreational_users | boolean | Whether retailer serves recreational customers |
google_place_id | string | Google Maps Place ID for this location |
license_number | string | State cannabis license number |
payment_methods | object | Accepted payment methods |
online_services_offered | object | Available online services (delivery, pickup) |
ratings | object | Customer rating data |
reviews_count | object | Review count data |
brand_ids | array | IDs of brands carried by this retailer |
Common Workflows
Get All Products for a Retailer
First, find the retailer:
import requests
API_URL = "https://api.cannmenus.com/v1"
headers = {"X-Token": "YOUR_API_TOKEN"}
# Find the retailer
response = requests.get(
f"{API_URL}/retailers",
headers=headers,
params={"state": "Illinois", "name": "rise", "is_active": True, "page": 1}
)
retailer = response.json()["data"][0]
retailer_id = retailer["id"]
print(f"Found: {retailer['dispensary_name']} (ID: {retailer_id})")
Then, fetch their products:
# Get all products from this retailer
response = requests.get(
f"{API_URL}/products",
headers=headers,
params={"states": "Illinois", "retailers": retailer_id, "page": 1}
)
products = response.json()["data"]
print(f"Found {len(products)} product SKUs")
Find Nearest Dispensary with Delivery
# Find dispensaries near user that offer delivery
response = requests.get(
f"{API_URL}/retailers",
headers=headers,
params={
"lat": 41.8781,
"lng": -87.6298,
"distance": 10,
"delivery_enabled": True,
"page": 1
}
)
for retailer in response.json()["data"]:
print(f"{retailer['dispensary_name']} - {retailer['physical_address']}, {retailer['city']}")
