Garmin APIgarmin.com ↗
Access Garmin's full product catalog via API. Search devices, retrieve specs, pricing, accessories, and compare models across all Garmin categories.
What is the Garmin API?
The Garmin API exposes 12 endpoints covering product search, category browsing, technical specifications, pricing, accessories, and side-by-side comparisons across the entire Garmin US catalog. You can retrieve detailed product data via get_product_detail, which returns SKU codes, pricing tiers, and color swatch arrays, or use search_products to run free-text queries and get back product IDs, names, descriptions, images, and URLs in a single response.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/2c3c4455-6d80-416f-90e1-67970af98db1/get_homepage_featured_products' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace garmin-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Garmin Product API — search, drill into specs, compare models."""
from parse_apis.garmin_product_api import Garmin, CategoryKey, ProductNotFound
client = Garmin()
# Search for running watches — limit caps total items fetched.
for product in client.products.search(query="running", limit=3):
print(product.name, product.sku, product.url)
# Drill into one product's sub-resources: specs, overview, accessories.
product = client.products.search(query="forerunner", limit=1).first()
if product:
specs = product.specs.get()
print(specs.specs.get("Battery life (smartwatch mode)", "N/A"))
overview = product.overview.get()
print(overview.description)
for feat in overview.features[:2]:
print(feat.description)
for acc in product.accessories.list(limit=3):
print(acc.displayName, acc.partNumber)
# Browse categories and list products in one.
cat = client.categories.list(limit=1).first()
if cat:
print(cat.name)
for sub in cat.subcategories[:2]:
print(sub.name, sub.url)
# Compare two products side-by-side with typed error handling.
try:
for detail in client.productdetails.compare(product_ids="782585,866191", limit=2):
print(detail.productName, detail.sku, detail.pricing.pid)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
# Check current sale items.
for sale in client.saleproducts.list(limit=3):
print(sale.name, sale.url)
print("exercised: products.search / specs.get / overview.get / accessories.list / categories.list / productdetails.compare / saleproducts.list")
Extracts featured and highlighted products from the Garmin homepage. Returns product links found on the main page including promotional items and featured devices. Results vary as Garmin rotates homepage content.
No input parameters required.
{
"type": "object",
"fields": {
"products": "array of featured product objects with name, url, and id"
},
"sample": {
"data": {
"products": [
{
"id": "1941179",
"url": "https://www.garmin.com/en-US/p/1941179/",
"name": "FORERUNNER® 70 & 170"
},
{
"id": "730831",
"url": "https://www.garmin.com/en-US/p/730831",
"name": "Cycling Maps"
}
]
},
"status": "success"
}
}About the Garmin API
Product Search and Catalog Browsing
The search_products endpoint accepts a query string and an optional limit integer, returning a results array where each item includes id, sku, name, variation_name, description, url, and image. To browse without a specific query, get_category_products takes a numeric category_key extracted from Garmin category URLs and paginates automatically to return all matching products. Use get_subcategories first to map the navigation tree — it returns every top-level category and its subcategories with names and URLs, making it straightforward to derive the right category key.
Product Detail and Specifications
get_product_detail combines product metadata, pricing, and color swatches for a given product_id into a single response, surfacing fields like productName, sku, a pricing object containing pricedSkus, and a swatches array with swatchName, imageUrl, and sku per color option. For technical depth, get_product_specs parses the specs tab and returns a flat key-value specs object. get_product_overview provides the meta description and a features array of marketing descriptions. get_product_in_the_box returns an items string array listing everything included in the package.
Comparisons, Accessories, and Promotions
compare_products accepts a comma-separated list of product_ids and returns a comparison array — each element mirrors the get_product_detail shape with productId, productName, sku, pricing, and swatches. This makes model-to-model comparison straightforward without multiple round trips. get_product_accessories fetches compatible accessories for a product, returning associationProducts with displayName, partNumber, productId, and mainImageUrl. get_sales_and_promotions retrieves all currently discounted items with full pagination, and get_new_products surfaces recently added catalog entries, both returning the same product array shape as search_products.
Homepage and Featured Content
get_homepage_featured_products extracts whatever Garmin is currently featuring on their main page, returning product name, url, and id for each highlighted item. Because Garmin rotates homepage content, results from this endpoint will vary over time and should not be treated as a stable product list.
The Garmin API is a managed, monitored endpoint for garmin.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when garmin.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official garmin.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Garmin product comparison tool using
compare_productsto surface side-by-side specs, pricing, and color options for GPS watches - Aggregate Garmin sale listings via
get_sales_and_promotionsfor a deal-tracking or price-alert application - Populate a structured product database by iterating categories with
get_subcategoriesandget_category_products - Generate accessory upsell recommendations by calling
get_product_accessoriesfor any given device product ID - Monitor new Garmin device launches by polling
get_new_productsand diffing the returned catalog entries - Build a spec comparison sheet for fitness trackers by extracting
specskey-value pairs fromget_product_specs - Track which products Garmin features on its homepage over time using
get_homepage_featured_products
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Garmin have an official developer API?+
What does `get_product_detail` return versus `get_product_specs`?+
get_product_detail returns commercial data: productName, sku, a pricing object with pricedSkus, and a swatches array with color options. get_product_specs returns the technical specification tab as a flat key-value specs object — things like display resolution, battery life, and connectivity fields. They are separate calls and complement each other.How do I find the numeric category key needed for `get_category_products`?+
get_subcategories first. It returns the full navigation tree with category names and URLs. The numeric key appears in the URL path of each subcategory — extract it from the url field and pass it as the category_key parameter. Unrecognized keys return an empty product list.