Proven Winners
Proven Winners' own Container Recipe Finder (1,074+ real container-planting recipes, filterable by season, pot style, pot size, color scheme, exposure and…
Proven Winners' own Container Recipe Finder (1,074+ real container-planting recipes, filterable by season, pot style, pot size, color scheme, exposure and keyword) plus a recipe's exact plant list off its own combination page.
Domain: provenwinners.com
Also known as: Proven Winners, provenwinners.com, Proven Winners ColorChoice
Call it directly
bowmark.providers.provenwinners.searchContainerRecipes(filters?: ContainerRecipeFilters): Promise<ContainerRecipeSearchResult>
bowmark.providers.provenwinners.getRecipeDetails(slug: string): Promise<ContainerRecipeDetails>Functions
| Function | What it does |
|---|---|
searchContainerRecipes | Runs Proven Winners' own Container Recipe Finder — season, pot style, pot size (with an operator), color scheme, exposure and free-text keyword — and returns the matching recipes with their… |
getRecipeDetails | Reads one container recipe's own combination page — season(s), container size, and the exact plant list with each plant's role (Filler/Spiller/Thriller), quantity and buy-page link. |
Types
interface ContainerRecipeFilters {
keyword?: string;
season?: "early_spring" | "spring" | "summer" | "fall" | "winter";
potStyle?: "hanging_basket" | "upright_container" | "wall_sconce" | "window_box";
colorScheme?: "complementary" | "accented_neutral" | "analogous" | "earth_tones" | "monochromatic" | "neutral" | "pastel_mix" | "patriotic" | "split_analogous" | "split_complementary" | "tetradic" | "triadic" | "tropical" | "vibrant_mix" | "warm_and_cool";
exposure?: "bright_light" | "full_shade" | "high" | "low" | "medium" | "part_shade" | "part_shade_to_shade" | "part_sun_to_shade" | "part_sun_to_sun" | "sun" | "sun_or_shade";
potSizeInches?: number;
potSizeOp?: "lt" | "lte" | "eq" | "neq" | "gte" | "gt";
page?: number;
}
interface ContainerRecipeSummary {
slug: string;
title: string;
url: string;
potSizeInches: number | null;
plants: Array<{ quantity: number; name: string; url: string }>;
}
interface ContainerRecipeSearchResult {
recipes: ContainerRecipeSummary[];
totalCount: number;
}
interface ContainerRecipeDetails {
slug: string;
title: string;
url: string;
description: string;
seasons: string[];
potSizeInches: number | null;
plants: Array<{ role: string; quantity: number; name: string; url: string }>;
}Examples
// a hanging basket recipe for full sun, red-and-white, 12"+ pot
const { recipes, totalCount } = await bowmark.providers.provenwinners.searchContainerRecipes({
potStyle: "hanging_basket",
exposure: "sun",
colorScheme: "patriotic",
potSizeInches: 12,
potSizeOp: "gte",
});
log(`${totalCount} recipes match; first: ${recipes[0]?.title} -> ${recipes[0]?.url}`);// the exact plant list for one recipe found above
const details = await bowmark.providers.provenwinners.getRecipeDetails(recipes[0].slug);
log(details.plants.map(p => `${p.quantity}x ${p.name} (${p.role})`).join(", "));