---
title: "Get Product Alternatives"
method: GET
path: "/api/products/{slug}/alternatives"
tags: ["products"]
---

# Get Product Alternatives

`GET /api/products/{slug}/alternatives`

## Request

- Base URL: `https://api.supp.co`
- URL: `https://api.supp.co/api/products/{slug}/alternatives`
- Auth: none required

## Path parameters

- `slug` string, required

## Response `200`

Successful operation

- ProductAlternatives: ProductAlternatives.find. Each pick is null when the product has no category, the product is not found, or no product in the category carries that flag.
  - `highest_trust_product` CachedProduct, required: Product payload served from ProductCache (ProductSerializer.find_all + ProductDto#as_json). Every key is always emitted.
    - `active_fda_recall` boolean, nullable, required
    - `active_fda_recall_body` string, nullable, required
    - `active_fda_recall_header` string, nullable, required
    - `active_fda_recall_url` string, nullable, required
    - `added_to_tested_by_suppco_at` string, date-time, nullable, required
    - `additional_categories` object[], required
      - `id` string, required
      - `name` string, required
    - `additional_category_ids` string[], required
    - `archived` boolean, nullable, required
    - `average_excipient_risk_rating` string, nullable, required
    - `best_value` boolean, required
    - `brand` string, required
    - `brand_active_fda_recall` boolean, nullable, required
    - `brand_id` string, nullable, required
    - `brand_practitioner_grade_integration` boolean, nullable, required
    - `brand_supple100` boolean, nullable, required
    - `brand_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_percentile` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_state` string, nullable, required
    - `brand_trust_score_updated_at` string, date-time, nullable, required
    - `category` string, nullable, required
    - `category_name` string, nullable, required
    - `certified` boolean, nullable, required
    - `community_insights` object, required: Sections are emitted only when category and percentile data are available; the object can be empty.
      - `cost` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentile` number, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `quality` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `popularity` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `show_trophy` boolean, required
      - `trending` object
        - `percentage_30d` number, required
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
    - `contains_proprietary_blend` boolean, nullable, required
    - `country_of_manufacture` string, nullable, required
    - `eurofins_certified_supplement` boolean, nullable, required
    - `eurofins_clean_sport_certified` boolean, nullable, required
    - `excipients` object[], required
      - `id` string, uuid, required
      - `name` string, required
      - `categories` string[], required
      - `risk_rating` string, nullable, required
      - `score_details` object, required
        - `allergenic` boolean, required
        - `gi_issues` boolean, required
        - `insulin_resistance` boolean, required
        - `potential_carcinogen` boolean, required
        - `potential_other_chronic_serious` boolean, required
        - `artificial_synthetic` boolean, required
        - `potential_heavy_metals` boolean, required
        - `fd_c_color_dye` boolean, required
        - `no_list` boolean, required
    - `failed_any_tests` boolean, required
    - `faq_questions` string, required: JSON-encoded array of FAQ entries (the raw jsonb column text, not a decoded array).
    - `fda_warning_letter_url` string, nullable, required
    - `featured` boolean, nullable, required
    - `format` string, nullable, required
    - `free_from_artificial_colors_flavors_fillers` boolean, nullable, required
    - `gluten_free_certified` boolean, nullable, required
    - `gluten_free_ingredients` boolean, nullable, required
    - `health_goals` string[], nullable, required
    - `heavy_metals_testing` string, nullable, required
    - `heavy_metals_testing_public_explanation` string, nullable, required
    - `id` string, uuid, required
    - `identity_potency_testing` string, nullable, required
    - `identity_potency_testing_public_explanation` string, nullable, required
    - `igen_non_gmo_tested` boolean, nullable, required
    - `image_url` string, nullable, required
    - `informed_choice_certified` boolean, nullable, required
    - `informed_sport_certified` boolean, nullable, required
    - `intro_paragraph` string, nullable, required
    - `label_url` string, nullable, required
    - `mislabeled_principal_display_panel` boolean, nullable, required
    - `most_popular` boolean, required
    - `most_trusted` boolean, required
    - `msrp` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `name` string, required
    - `non_gmo_certified` boolean, nullable, required
    - `non_gmo_ingredients` boolean, nullable, required
    - `nsf_certified_for_sport` boolean, nullable, required
    - `nsf_contents_certified` boolean, nullable, required
    - `off_market` boolean, nullable, required
    - `organic_ingredients` boolean, nullable, required
    - `other_ingredients` string, nullable, required
    - `patented_or_trademarked_ingredients` boolean, nullable, required
    - `price` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving_percentile_in_category` number, nullable, required
    - `product_ingredients` object[], required
      - `ancestry` string, nullable, required
      - `category` string, nullable, required
      - `from` string, nullable, required
      - `id` string, uuid, required
      - `name` string, required
      - `units` string, nullable, required
      - `amount` number, required
      - `nutrient_id` string, nullable, required
      - `converted_amount` number, nullable, required
      - `converted_units` string, nullable, required
      - `supplement` object, nullable, required
        - `id` string, uuid, required
        - `description` string, nullable, required
        - `featured` boolean, nullable, required
        - `health_goals` string[], required
        - `group` string, nullable, required
        - `keywords` string[], required
        - `name` string, nullable, required
        - `slug` string, required
        - `do_not_exceed_amount` string, nullable, required
        - `do_not_exceed_not_known` boolean, nullable, required: Currently null: the SQL mapper reads a result key with trailing spaces.
        - `recommended_lower_end_daily_dose_amount` string, nullable, required
        - `recommended_upper_end_daily_dose_amount` string, nullable, required
    - `product_line` string, nullable, required
    - `product_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `product_trust_score_complete` boolean, nullable, required
    - `product_trust_score_complete_at` string, date-time, nullable, required
    - `product_trust_score_percentile_in_category` number, nullable, required
    - `product_trust_score_status` string, required
    - `purchase_links` object[], required
      - `clicks` integer, nullable, required
      - `currency` string, nullable, required
      - `id` string, uuid, required
      - `price` string, nullable, required
      - `state` string, nullable, required
      - `url` string, required
      - `updated_at` string, date-time, required
    - `received_fda_warning_letter` boolean, nullable, required
    - `resolved_fda_warning_letter` boolean, required
    - `serving_size` string, nullable, required
    - `servings_per_container` number, nullable, required
    - `similar_products` object[], required: Currently always empty: ProductSerializer.find_all assigns an empty array to every product.
    - `slug` string, nullable, required
    - `stacks_count_percentile_in_category` number, nullable, required
    - `suggested_use` string, nullable, required
    - `suppco_testing_headline` string, nullable, required
    - `suppco_testing_sub_header` string, nullable, required
    - `supplement_count` integer, nullable, required
    - `supplement_names` string[], nullable, required
    - `tested_by_suppco` boolean, nullable, required
    - `transparent_batch_specific_coas` boolean, required
    - `trending_percentage_30d` number, nullable, required
    - `trust_clinical_study_url` string, nullable, required
    - `trust_clinical_study_url2` string, nullable, required
    - `trust_clinical_study_url3` string, nullable, required
    - `trust_clinically_studied_product` boolean, nullable, required
    - `trust_score_details` object[], required
      - `category` string, required
      - `rank` 'high' | 'okay' | 'low' | 'unknown', required
    - `trust_score_suppressed` boolean, required
    - `upc` string, nullable, required
    - `usda_organic_certified` boolean, nullable, required
    - `usp_verified` boolean, nullable, required
    - `validated` boolean, nullable, required
    - `vegan_action_certified` boolean, nullable, required
    - `vegan_friendly_ingredients` boolean, nullable, required
  - `best_value_product` CachedProduct, required: Product payload served from ProductCache (ProductSerializer.find_all + ProductDto#as_json). Every key is always emitted.
    - `active_fda_recall` boolean, nullable, required
    - `active_fda_recall_body` string, nullable, required
    - `active_fda_recall_header` string, nullable, required
    - `active_fda_recall_url` string, nullable, required
    - `added_to_tested_by_suppco_at` string, date-time, nullable, required
    - `additional_categories` object[], required
      - `id` string, required
      - `name` string, required
    - `additional_category_ids` string[], required
    - `archived` boolean, nullable, required
    - `average_excipient_risk_rating` string, nullable, required
    - `best_value` boolean, required
    - `brand` string, required
    - `brand_active_fda_recall` boolean, nullable, required
    - `brand_id` string, nullable, required
    - `brand_practitioner_grade_integration` boolean, nullable, required
    - `brand_supple100` boolean, nullable, required
    - `brand_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_percentile` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_state` string, nullable, required
    - `brand_trust_score_updated_at` string, date-time, nullable, required
    - `category` string, nullable, required
    - `category_name` string, nullable, required
    - `certified` boolean, nullable, required
    - `community_insights` object, required: Sections are emitted only when category and percentile data are available; the object can be empty.
      - `cost` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentile` number, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `quality` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `popularity` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `show_trophy` boolean, required
      - `trending` object
        - `percentage_30d` number, required
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
    - `contains_proprietary_blend` boolean, nullable, required
    - `country_of_manufacture` string, nullable, required
    - `eurofins_certified_supplement` boolean, nullable, required
    - `eurofins_clean_sport_certified` boolean, nullable, required
    - `excipients` object[], required
      - `id` string, uuid, required
      - `name` string, required
      - `categories` string[], required
      - `risk_rating` string, nullable, required
      - `score_details` object, required
        - `allergenic` boolean, required
        - `gi_issues` boolean, required
        - `insulin_resistance` boolean, required
        - `potential_carcinogen` boolean, required
        - `potential_other_chronic_serious` boolean, required
        - `artificial_synthetic` boolean, required
        - `potential_heavy_metals` boolean, required
        - `fd_c_color_dye` boolean, required
        - `no_list` boolean, required
    - `failed_any_tests` boolean, required
    - `faq_questions` string, required: JSON-encoded array of FAQ entries (the raw jsonb column text, not a decoded array).
    - `fda_warning_letter_url` string, nullable, required
    - `featured` boolean, nullable, required
    - `format` string, nullable, required
    - `free_from_artificial_colors_flavors_fillers` boolean, nullable, required
    - `gluten_free_certified` boolean, nullable, required
    - `gluten_free_ingredients` boolean, nullable, required
    - `health_goals` string[], nullable, required
    - `heavy_metals_testing` string, nullable, required
    - `heavy_metals_testing_public_explanation` string, nullable, required
    - `id` string, uuid, required
    - `identity_potency_testing` string, nullable, required
    - `identity_potency_testing_public_explanation` string, nullable, required
    - `igen_non_gmo_tested` boolean, nullable, required
    - `image_url` string, nullable, required
    - `informed_choice_certified` boolean, nullable, required
    - `informed_sport_certified` boolean, nullable, required
    - `intro_paragraph` string, nullable, required
    - `label_url` string, nullable, required
    - `mislabeled_principal_display_panel` boolean, nullable, required
    - `most_popular` boolean, required
    - `most_trusted` boolean, required
    - `msrp` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `name` string, required
    - `non_gmo_certified` boolean, nullable, required
    - `non_gmo_ingredients` boolean, nullable, required
    - `nsf_certified_for_sport` boolean, nullable, required
    - `nsf_contents_certified` boolean, nullable, required
    - `off_market` boolean, nullable, required
    - `organic_ingredients` boolean, nullable, required
    - `other_ingredients` string, nullable, required
    - `patented_or_trademarked_ingredients` boolean, nullable, required
    - `price` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving_percentile_in_category` number, nullable, required
    - `product_ingredients` object[], required
      - `ancestry` string, nullable, required
      - `category` string, nullable, required
      - `from` string, nullable, required
      - `id` string, uuid, required
      - `name` string, required
      - `units` string, nullable, required
      - `amount` number, required
      - `nutrient_id` string, nullable, required
      - `converted_amount` number, nullable, required
      - `converted_units` string, nullable, required
      - `supplement` object, nullable, required
        - `id` string, uuid, required
        - `description` string, nullable, required
        - `featured` boolean, nullable, required
        - `health_goals` string[], required
        - `group` string, nullable, required
        - `keywords` string[], required
        - `name` string, nullable, required
        - `slug` string, required
        - `do_not_exceed_amount` string, nullable, required
        - `do_not_exceed_not_known` boolean, nullable, required: Currently null: the SQL mapper reads a result key with trailing spaces.
        - `recommended_lower_end_daily_dose_amount` string, nullable, required
        - `recommended_upper_end_daily_dose_amount` string, nullable, required
    - `product_line` string, nullable, required
    - `product_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `product_trust_score_complete` boolean, nullable, required
    - `product_trust_score_complete_at` string, date-time, nullable, required
    - `product_trust_score_percentile_in_category` number, nullable, required
    - `product_trust_score_status` string, required
    - `purchase_links` object[], required
      - `clicks` integer, nullable, required
      - `currency` string, nullable, required
      - `id` string, uuid, required
      - `price` string, nullable, required
      - `state` string, nullable, required
      - `url` string, required
      - `updated_at` string, date-time, required
    - `received_fda_warning_letter` boolean, nullable, required
    - `resolved_fda_warning_letter` boolean, required
    - `serving_size` string, nullable, required
    - `servings_per_container` number, nullable, required
    - `similar_products` object[], required: Currently always empty: ProductSerializer.find_all assigns an empty array to every product.
    - `slug` string, nullable, required
    - `stacks_count_percentile_in_category` number, nullable, required
    - `suggested_use` string, nullable, required
    - `suppco_testing_headline` string, nullable, required
    - `suppco_testing_sub_header` string, nullable, required
    - `supplement_count` integer, nullable, required
    - `supplement_names` string[], nullable, required
    - `tested_by_suppco` boolean, nullable, required
    - `transparent_batch_specific_coas` boolean, required
    - `trending_percentage_30d` number, nullable, required
    - `trust_clinical_study_url` string, nullable, required
    - `trust_clinical_study_url2` string, nullable, required
    - `trust_clinical_study_url3` string, nullable, required
    - `trust_clinically_studied_product` boolean, nullable, required
    - `trust_score_details` object[], required
      - `category` string, required
      - `rank` 'high' | 'okay' | 'low' | 'unknown', required
    - `trust_score_suppressed` boolean, required
    - `upc` string, nullable, required
    - `usda_organic_certified` boolean, nullable, required
    - `usp_verified` boolean, nullable, required
    - `validated` boolean, nullable, required
    - `vegan_action_certified` boolean, nullable, required
    - `vegan_friendly_ingredients` boolean, nullable, required
  - `most_stacked_product` CachedProduct, required: Product payload served from ProductCache (ProductSerializer.find_all + ProductDto#as_json). Every key is always emitted.
    - `active_fda_recall` boolean, nullable, required
    - `active_fda_recall_body` string, nullable, required
    - `active_fda_recall_header` string, nullable, required
    - `active_fda_recall_url` string, nullable, required
    - `added_to_tested_by_suppco_at` string, date-time, nullable, required
    - `additional_categories` object[], required
      - `id` string, required
      - `name` string, required
    - `additional_category_ids` string[], required
    - `archived` boolean, nullable, required
    - `average_excipient_risk_rating` string, nullable, required
    - `best_value` boolean, required
    - `brand` string, required
    - `brand_active_fda_recall` boolean, nullable, required
    - `brand_id` string, nullable, required
    - `brand_practitioner_grade_integration` boolean, nullable, required
    - `brand_supple100` boolean, nullable, required
    - `brand_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_percentile` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `brand_trust_score_state` string, nullable, required
    - `brand_trust_score_updated_at` string, date-time, nullable, required
    - `category` string, nullable, required
    - `category_name` string, nullable, required
    - `certified` boolean, nullable, required
    - `community_insights` object, required: Sections are emitted only when category and percentile data are available; the object can be empty.
      - `cost` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentile` number, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `quality` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `bar_percentage` number, required
        - `bar_color` string, required
      - `popularity` object
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
        - `show_trophy` boolean, required
      - `trending` object
        - `percentage_30d` number, required
        - `label` string, required
        - `label_color` string, required
        - `copy` string, required
    - `contains_proprietary_blend` boolean, nullable, required
    - `country_of_manufacture` string, nullable, required
    - `eurofins_certified_supplement` boolean, nullable, required
    - `eurofins_clean_sport_certified` boolean, nullable, required
    - `excipients` object[], required
      - `id` string, uuid, required
      - `name` string, required
      - `categories` string[], required
      - `risk_rating` string, nullable, required
      - `score_details` object, required
        - `allergenic` boolean, required
        - `gi_issues` boolean, required
        - `insulin_resistance` boolean, required
        - `potential_carcinogen` boolean, required
        - `potential_other_chronic_serious` boolean, required
        - `artificial_synthetic` boolean, required
        - `potential_heavy_metals` boolean, required
        - `fd_c_color_dye` boolean, required
        - `no_list` boolean, required
    - `failed_any_tests` boolean, required
    - `faq_questions` string, required: JSON-encoded array of FAQ entries (the raw jsonb column text, not a decoded array).
    - `fda_warning_letter_url` string, nullable, required
    - `featured` boolean, nullable, required
    - `format` string, nullable, required
    - `free_from_artificial_colors_flavors_fillers` boolean, nullable, required
    - `gluten_free_certified` boolean, nullable, required
    - `gluten_free_ingredients` boolean, nullable, required
    - `health_goals` string[], nullable, required
    - `heavy_metals_testing` string, nullable, required
    - `heavy_metals_testing_public_explanation` string, nullable, required
    - `id` string, uuid, required
    - `identity_potency_testing` string, nullable, required
    - `identity_potency_testing_public_explanation` string, nullable, required
    - `igen_non_gmo_tested` boolean, nullable, required
    - `image_url` string, nullable, required
    - `informed_choice_certified` boolean, nullable, required
    - `informed_sport_certified` boolean, nullable, required
    - `intro_paragraph` string, nullable, required
    - `label_url` string, nullable, required
    - `mislabeled_principal_display_panel` boolean, nullable, required
    - `most_popular` boolean, required
    - `most_trusted` boolean, required
    - `msrp` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `name` string, required
    - `non_gmo_certified` boolean, nullable, required
    - `non_gmo_ingredients` boolean, nullable, required
    - `nsf_certified_for_sport` boolean, nullable, required
    - `nsf_contents_certified` boolean, nullable, required
    - `off_market` boolean, nullable, required
    - `organic_ingredients` boolean, nullable, required
    - `other_ingredients` string, nullable, required
    - `patented_or_trademarked_ingredients` boolean, nullable, required
    - `price` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `price_per_serving_percentile_in_category` number, nullable, required
    - `product_ingredients` object[], required
      - `ancestry` string, nullable, required
      - `category` string, nullable, required
      - `from` string, nullable, required
      - `id` string, uuid, required
      - `name` string, required
      - `units` string, nullable, required
      - `amount` number, required
      - `nutrient_id` string, nullable, required
      - `converted_amount` number, nullable, required
      - `converted_units` string, nullable, required
      - `supplement` object, nullable, required
        - `id` string, uuid, required
        - `description` string, nullable, required
        - `featured` boolean, nullable, required
        - `health_goals` string[], required
        - `group` string, nullable, required
        - `keywords` string[], required
        - `name` string, nullable, required
        - `slug` string, required
        - `do_not_exceed_amount` string, nullable, required
        - `do_not_exceed_not_known` boolean, nullable, required: Currently null: the SQL mapper reads a result key with trailing spaces.
        - `recommended_lower_end_daily_dose_amount` string, nullable, required
        - `recommended_upper_end_daily_dose_amount` string, nullable, required
    - `product_line` string, nullable, required
    - `product_trust_score` string, nullable, required: Decimal column serialized as a string (for example "0.95").
    - `product_trust_score_complete` boolean, nullable, required
    - `product_trust_score_complete_at` string, date-time, nullable, required
    - `product_trust_score_percentile_in_category` number, nullable, required
    - `product_trust_score_status` string, required
    - `purchase_links` object[], required
      - `clicks` integer, nullable, required
      - `currency` string, nullable, required
      - `id` string, uuid, required
      - `price` string, nullable, required
      - `state` string, nullable, required
      - `url` string, required
      - `updated_at` string, date-time, required
    - `received_fda_warning_letter` boolean, nullable, required
    - `resolved_fda_warning_letter` boolean, required
    - `serving_size` string, nullable, required
    - `servings_per_container` number, nullable, required
    - `similar_products` object[], required: Currently always empty: ProductSerializer.find_all assigns an empty array to every product.
    - `slug` string, nullable, required
    - `stacks_count_percentile_in_category` number, nullable, required
    - `suggested_use` string, nullable, required
    - `suppco_testing_headline` string, nullable, required
    - `suppco_testing_sub_header` string, nullable, required
    - `supplement_count` integer, nullable, required
    - `supplement_names` string[], nullable, required
    - `tested_by_suppco` boolean, nullable, required
    - `transparent_batch_specific_coas` boolean, required
    - `trending_percentage_30d` number, nullable, required
    - `trust_clinical_study_url` string, nullable, required
    - `trust_clinical_study_url2` string, nullable, required
    - `trust_clinical_study_url3` string, nullable, required
    - `trust_clinically_studied_product` boolean, nullable, required
    - `trust_score_details` object[], required
      - `category` string, required
      - `rank` 'high' | 'okay' | 'low' | 'unknown', required
    - `trust_score_suppressed` boolean, required
    - `upc` string, nullable, required
    - `usda_organic_certified` boolean, nullable, required
    - `usp_verified` boolean, nullable, required
    - `validated` boolean, nullable, required
    - `vegan_action_certified` boolean, nullable, required
    - `vegan_friendly_ingredients` boolean, nullable, required

---

[API](https://skmtc.dev/supp/apis/suppco-public-api.md) · [All operations](https://skmtc.dev/supp/apis/suppco-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/supp/apis/suppco-public-api/revisions/e088e6cdcb6b?raw)
