Ottobock APIottobock.com ↗
Access Ottobock's prosthetic and orthotic product catalog, technical specs, clinic finder, and newsroom articles via 9 structured API endpoints.
What is the Ottobock API?
The Ottobock API covers 9 endpoints that expose the full product catalog, technical specifications, media assets, newsroom content, and a clinic locator from ottobock.com. Use search_products to query prosthetics and orthotics by keyword and get paginated results including product codes, English descriptions, category paths, and preview image URLs. Product detail endpoints return structured specs, gallery images, and document links tied to each product's unique onlineCode slug.
curl -X GET 'https://api.parse.bot/scraper/7004377f-f0b7-4e84-9856-103b2244c366/search_products?page=0&limit=5&query=knee' \ -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 ottobock-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: Ottobock SDK — search products, get specs, find clinics."""
from parse_apis.ottobock_api import Ottobock, NavSection, ProductNotFound
client = Ottobock()
# Search for prosthetic knee products, capped at 5 total items.
for product in client.products.search(query="knee", limit=5):
print(product.name, product.online_code)
# Drill into the first result's specifications and images.
product = client.products.search(query="prosthetic hand", limit=1).first()
if product:
specs = product.specifications()
print(specs.table_technical_data[:100])
media = product.images()
for img in media.gallery_items[:3]:
print(img.detail_url, img.alt_text)
# Browse clinics — no filtering, full US list; take first 3.
for clinic in client.clinics.list(limit=3):
print(clinic.location_name, clinic.city, clinic.state)
# Navigate the site's category tree with the NavSection enum.
for nav in client.navcategories.list(type=NavSection.SOLUTIONS, limit=5):
print(nav.label, nav.url)
# Typed error handling on a constructible product with bad slug.
try:
bad_product = client.product(online_code="INVALID-00000")
bad_specs = bad_product.specifications()
print(bad_specs.table_technical_data)
except ProductNotFound as exc:
print(f"Product not found: {exc.slug}")
print("exercised: products.search / specifications / images / clinics.list / navcategories.list")
Search for products on Ottobock by keyword using Algolia index. Returns paginated results with product names, codes, descriptions, and category paths.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-based) |
| limit | integer | Results per page |
| queryrequired | string | Search keyword (e.g. 'knee', 'prosthetic hand') |
{
"type": "object",
"fields": {
"hits": "array of product objects with code, onlineCode, name_en, description_en, categoryPath_en, previewImageUrl",
"page": "integer current page number",
"nbHits": "integer total number of matching products",
"nbPages": "integer total number of pages"
},
"sample": {
"data": {
"hits": [
{
"code": "3R93",
"name_en": "Knee joint with friction brake, monocentric, with lock",
"onlineCode": "3R93-60877",
"previewImageUrl": "https://res.cloudinary.com/ottobock-se/image/upload/..."
}
],
"page": 0,
"nbHits": 42,
"nbPages": 3
},
"status": "success"
}
}About the Ottobock API
Product Catalog and Search
The search_products endpoint accepts a query string (e.g. 'knee', 'prosthetic hand') and returns paginated hits with fields including code, onlineCode, name_en, description_en, categoryPath_en, and previewImageUrl. Pagination uses 0-based page and a limit parameter; the response also returns nbHits and nbPages so you can walk the full result set. To browse by category instead of keyword, get_product_category accepts a category_id (e.g. '32355' for Knees) and returns the same hit shape filtered to that branch of the taxonomy.
Product Detail, Specs, and Media
Once you have a product's onlineCode slug, three endpoints give progressively deeper data. get_product_detail returns the full HTML description, a categoryPath array, and a customerData object that bundles gallery items, documents, tableTechnicalData, and functionalities. get_product_specifications isolates the spec tables—tableTechnicalData, tableTaxonomyAttributes (product type, mobility grade, user group), and tableHighlightAttributes—all as HTML strings. get_product_images returns galleryItems (each with thumbnailUrl, detailUrl, zoomUrl, altText), galleryVideo objects, and a productImage map with primary, zoom, thumbnail, and cart-sized URLs.
Clinic Finder and Navigation
find_clinics queries the Ottobock certified clinic directory. Pass a query string (city, state, or zip code) to filter results; omit it to retrieve all clinics. Each hit includes locationName, street, city, state, zipCode, phone, websiteLink, and _geoloc with latitude and longitude suitable for map rendering. list_categories returns the full site navigation tree for a given type ('Solutions', 'Services', 'Resources', or 'Newsroom'), with nested label, url, and children arrays—useful for building category browsers or feeding category IDs into get_product_category.
Newsroom
get_newsroom_articles returns a list of press releases and news entries, each with a headline, topline date/label, rich-text body, and a primaryButton link to the full article. To retrieve a complete article, get_newsroom_article_detail accepts an article slug and returns the full fields object including pageTitle, metaDescription, pageContent rich text, stage imagery, and sys timestamps for creation and last update.
The Ottobock API is a managed, monitored endpoint for ottobock.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ottobock.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 ottobock.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 product comparison tool using
get_product_specificationsto pulltableTaxonomyAttributeslike mobility grade and user group side-by-side. - Populate a prosthetics catalog app by paginating
search_productsresults and displayingpreviewImageUrlandcategoryPath_en. - Render a clinic locator map using
find_clinicswith the_geoloclat/lng fields from each clinic hit. - Monitor Ottobock press releases by polling
get_newsroom_articlesfor newheadlineandtoplineentries. - Seed a product database with full media assets by combining
get_product_imagesgallery and video fields for eachonlineCodeslug. - Generate a browsable category tree for a rehab-tech directory using
list_categorieswith the'Solutions'type and its nestedchildren. - Enrich a rehabilitation provider platform by cross-referencing
find_clinicsresults withget_product_categoryitems relevant to a patient's device type.
| 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 Ottobock offer an official public developer API?+
What does `get_product_detail` return beyond what `search_products` provides?+
search_products returns a lightweight hit with code, name_en, description_en, categoryPath_en, and previewImageUrl. get_product_detail adds the full HTML description, a structured categoryPath array, and the customerData object, which includes galleryItems, documents, tableTechnicalData, and functionalities—data that is not included in search results.How does pagination work across the product endpoints?+
search_products and get_product_category use 0-based page indexing. The response always includes nbHits (total matching records) and nbPages (total pages at the current limit), so you can iterate through the full result set by incrementing page until you reach nbPages - 1.Does the API return product pricing or availability/stock status?+
Are non-English product names and descriptions available?+
name_en, description_en, categoryPath_en). Localized variants in other languages are not currently exposed. You can fork this API on Parse and revise it to surface additional language fields if they are available in the underlying data.