Roland APIroland.com ↗
Search Roland's US product catalog and retrieve full specs, features, colors, and breadcrumbs for any Roland instrument or accessory via 3 structured endpoints.
What is the Roland API?
The Roland.com API gives developers access to Roland's US product catalog through 3 endpoints covering product search, site-wide search, and detailed specifications. The get_product_details endpoint returns a product's name, tagline, feature list, available colors, and a grouped specifications object for any model identified by its URL slug — covering pianos, synthesizers, drum machines, and more.
curl -X GET 'https://api.parse.bot/scraper/027bbe0d-ac58-4db3-b0bf-746166184c87/search_products?page=1&query=piano&page_size=10' \ -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 roland-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: Roland Products SDK — search, browse, and inspect product details."""
from parse_apis.roland_products_api import Roland, ProductNotFound
client = Roland()
# Search for synthesizers in the catalog
for product in client.productsummaries.search(query="synthesizer", limit=5):
print(product.name, product.category, "discontinued" if product.discontinued else "available")
# Drill into the first result for full specifications
summary = client.productsummaries.search(query="piano", limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.tagline, detail.colors)
# Fetch a product directly by slug
product = client.products.get(slug="fp-30x")
print(product.name, product.tagline)
if product.specifications:
for section, specs in list(product.specifications.items())[:2]:
print(section, specs)
# Site-wide search across all Roland content
for result in client.siteresults.search(query="drum tutorial", limit=3):
print(result.title, result.url)
# Handle a product that doesn't exist
try:
client.products.get(slug="nonexistent-model-xyz")
except ProductNotFound as exc:
print(f"Product not found: {exc.product_path}")
print("exercised: productsummaries.search / details / products.get / siteresults.search")
Search Roland products by keyword. Returns product listings with name, slug, category, description, image URL, product page URL, and discontinued status. All matching products are fetched from the Roland search page and paginated client-side.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based) |
| queryrequired | string | Search keyword (e.g., 'piano', 'synthesizer', 'drum') |
| page_size | integer | Number of results per page |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"query": "string, the search keyword used",
"products": "array of product objects with keys: name, slug, category, description, url, image, discontinued",
"page_size": "integer, results per page",
"total_pages": "integer, total number of pages",
"total_results": "integer, total number of matching products"
},
"sample": {
"data": {
"page": 1,
"query": "piano",
"products": [
{
"url": "https://www.roland.com/us/products/roland_piano_app/",
"name": "Roland Piano App",
"slug": "roland_piano_app",
"image": "https://static.roland.com/assets/images/products/main/roland_piano_app_tn.jpg",
"category": "iOS/Android App",
"description": "Unified practice and remote control app for Roland home pianos.",
"discontinued": false
}
],
"page_size": 50,
"total_pages": 4,
"total_results": 200
},
"status": "success"
}
}About the Roland API
Product Search and Catalog Browsing
The search_products endpoint accepts a query string (e.g., 'synthesizer', 'drum', 'piano') and returns a paginated list of matching Roland products. Each result includes the product name, category, description, image URL, product page url, and a discontinued boolean flag. Pagination is controlled via page and page_size parameters, and the response reports total_results and total_pages so you can walk through full result sets programmatically.
Site-Wide Search
The search_site endpoint queries the entire roland.com/us domain — not just product listings but also articles, support pages, and other content. Results return up to 100 items (10 pages of 10) and include title, url, snippet, image, and og_description for each match. This endpoint is useful when you need to surface support documentation, FAQs, or editorial content alongside product pages.
Detailed Product Specifications
The get_product_details endpoint accepts a product_path slug (e.g., 'fp-30x', 'juno-d7', 'td-17kvx2') and returns the full product record. Response fields include name, description, tagline, image, colors (an array of available color options), features (an array of feature heading strings), breadcrumbs for navigation context, and a specifications object grouped by section with key-value pairs. This makes it straightforward to compare spec tables across multiple Roland models without visiting individual pages.
The Roland API is a managed, monitored endpoint for roland.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when roland.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 roland.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 Roland instrument comparison tool using the
specificationsobject fromget_product_detailsto display spec tables side by side. - Filter a product catalog by discontinued status using the
discontinuedfield returned bysearch_products. - Populate a gear database with Roland model names, categories, images, and product URLs from paginated
search_productsresults. - Surface Roland support articles and manuals by querying
search_sitefor a model number and filtering results by URL pattern. - Generate structured product pages for a music retailer site using
name,tagline,features,colors, anddescriptionfromget_product_details. - Track available color variants for Roland products using the
colorsarray inget_product_detailsresponses. - Build a Roland product lookup tool that resolves a model slug to full specifications for use in a customer-facing configurator.
| 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 Roland have an official public developer API?+
What does the `get_product_details` endpoint return for specifications, and how are they structured?+
specifications field is an object grouped by section — for example, a piano might have sections for 'Sound Generator', 'Keyboard', and 'Connectivity'. Within each section, specs are stored as key-value pairs (e.g., 'Polyphony': '256 voices'). The exact sections and keys vary by product model.Does `search_products` return pricing or stock availability?+
search_products endpoint returns name, category, description, url, image, and discontinued status. You can fork this API on Parse and revise it to add a pricing or retailer availability endpoint if that data is accessible from the Roland site.Does `search_site` cover Roland's regional sites outside the US?+
search_site and search_products endpoints are scoped to roland.com/us. Other regional Roland domains (e.g., roland.com/gb, roland.com/de) are not covered. You can fork this API on Parse and revise it to target a different regional path if you need coverage for another locale.