Free REST API for cannabis strain data, scientific studies, and medical conditions.
All endpoints return JSON with a consistent structure:
{
"data": [...], // Array or object
"meta": { // Pagination info (list endpoints)
"total": 11121,
"page": 1,
"limit": 20,
"pages": 557
}
}/api/v1/statsGet database statistics including total counts and averages.
{"data":{"strains":{"total":11121,"indica":3245,"sativa":2891,"hybrid":4985,"avg_thc":18.5},"studies":{"total":12304},"breeders":268,"conditions":312}}/api/v1/strainsSearch and filter cannabis strains. Returns paginated results.
| Name | Type | Description |
|---|---|---|
| q | string | Search by name or genetics |
| type | string | "indica", "sativa", or "hybrid" |
| breeder | string | Filter by breeder name |
| min_thc | number | Minimum THC percentage |
| max_thc | number | Maximum THC percentage |
| min_cbd | number | Minimum CBD percentage |
| max_cbd | number | Maximum CBD percentage |
| effects | string | Comma-separated effects (e.g., "Relaxed,Happy") |
| sort | string | "name", "rating", "thc_desc", "thc_asc" |
| page | number | Page number (default: 1) |
| limit | number | Results per page (max: 100, default: 20) |
{"data":[{"slug":"blue-dream","name":"Blue Dream","type":"hybrid","thc":21.0,"cbd":0.1,...}],"meta":{"total":150,"page":1,"limit":20,"pages":8}}/api/v1/strains/:slugGet detailed information about a specific strain.
| Name | Type | Description |
|---|---|---|
| slug | string | Strain slug (URL parameter) |
{"data":{"slug":"og-kush","name":"OG Kush","type":"hybrid","thc":23.0,"cbd":0.3,"effects":["Relaxed","Happy"],"growing":{"flowering_days":56,...},...}}/api/v1/studiesSearch and filter scientific studies.
| Name | Type | Description |
|---|---|---|
| q | string | Search by title |
| condition | string | Filter by condition name |
| result | string | "positive", "negative", or "inconclusive" |
| type | string | Filter by study type |
| year | number | Filter by publication year |
| page | number | Page number (default: 1) |
| limit | number | Results per page (max: 100, default: 20) |
{"data":[{"id":1,"slug":"cbd-anxiety-2023","title":"...","year":2023,"result":"positive","conditions":["Anxiety"],...}],"meta":{"total":500,...}}/api/v1/conditionsList all medical conditions with strain and study counts.
{"data":[{"slug":"pain","name":"Pain","strain_count":2145,"study_count":890},...]}/api/v1/breedersList and search cannabis breeders.
| Name | Type | Description |
|---|---|---|
| q | string | Search by name |
| page | number | Page number (default: 1) |
| limit | number | Results per page (max: 100, default: 50) |
{"data":[{"slug":"barney-s-farm","name":"Barney's Farm","strain_count":45},...]}curl "https://budprofiles.com/api/v1/strains?type=indica&min_thc=20&limit=5"
const res = await fetch(
"https://budprofiles.com/api/v1/strains?type=indica&min_thc=20"
);
const { data, meta } = await res.json();
console.log(`Found ${meta.total} strains`);import requests
resp = requests.get(
"https://budprofiles.com/api/v1/strains",
params={"type": "indica", "min_thc": 20}
)
data = resp.json()
print(f"Found {data['meta']['total']} strains")