payoff.ch APIwww.payoff.ch ↗
Access 177,000+ Swiss structured financial products from payoff.ch. Search by issuer, category, and exchange. Retrieve terms, market data, and underlyings by ISIN.
curl -X GET 'https://api.parse.bot/scraper/e15ba936-6e49-4751-8934-eba9b7399c0e/search_products?page=1&categories=12¤cies=CHF' \ -H 'X-API-Key: $PARSE_API_KEY'
Search and list structured products with filtering and pagination. Returns 20 products per page. Page 1 includes structured JSON data with filter counters; pages 2+ return parsed HTML listings.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). 20 products per page. |
| issuers | string | Issuer ref code (e.g., 'UBS', 'VT' for Vontobel, 'BAER' for Julius Bär). Use get_filter_options for all codes. |
| sort_by | string | Sort field (e.g., 'lastTradingDate'). |
| language | string | Language code: 'en' or 'de'. |
| sort_dir | string | Sort direction: 'asc' or 'desc'. |
| callables | string | Callable filter: 'callable' or 'notcallable'. |
| exchanges | string | Exchange filter ref code: 'XQMH' for SIX, 'XBRN' for BX Swiss, 'DOTS' for Swiss DOTS. |
| categories | string | Category filter ref code: '11' for Capital Protection, '12' for Yield Enhancement, '13' for Participation, '14' for Credit Risk, '20' for Leverage. |
| currencies | string | Currency filter code (e.g., 'CHF', 'EUR', 'USD'). Use get_filter_options for all codes. |
| guarantors | string | Guarantor ref code. Use get_filter_options for all codes. |
| maturities | string | Maturity filter: 'open', '1m', '3m', '1j', '1jp'. |
| underlying | string | Underlying search term (e.g., 'Nestle'). |
| asset_classes | string | Asset class filter: 'equities', 'forex', 'crypto', 'commodities', 'preciousmetals', 'various', 'moneymarket', 'bonds', 'altinvestments', 'realestate'. |
| multiple_underlyings | string | Single or multiple underlyings: '0' for single, '1' for multiple. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"counters": "object with filter counts (page 1 only)",
"per_page": "integer, products per page (20)",
"products": "array of product objects with isin, symbol, name, issuerName, categoryName, tradingCurrencyCode, lastTradingDate, ask",
"total_pages": "integer, total available pages",
"total_records": "integer, total matching products"
},
"sample": {
"data": {
"page": 1,
"counters": {
"categories": [
{
"num": "656",
"ref": "11",
"name": "Capital Protection"
}
]
},
"per_page": 20,
"products": [
{
"id": 36341247,
"ask": null,
"isAd": false,
"isin": "CH1474813578",
"name": "Barrier Reverse Convertible on Euro STOXX 50 / S&P 500 / SMI",
"symbol": "Z0BLEZ",
"issuerId": null,
"issuerName": "Zürcher Kantonalbank",
"categoryName": "Yield Enhancement",
"lastTradingDate": "07.09.2027",
"tradingCurrencyCode": "CHF"
}
],
"total_pages": 8973,
"total_records": 179455
},
"status": "success"
}
}About the payoff.ch API
The payoff.ch API covers 177,000+ structured financial products across five SVSP categories — Capital Protection, Yield Enhancement, Participation, Credit Risk, and Leverage — via three endpoints. Use search_products to filter and paginate the full product catalog, get_product_detail to pull complete terms, market data, key figures, and underlying instruments for a specific ISIN, and get_filter_options to discover every valid filter value with live product counts.
What the API covers
All three endpoints draw from the payoff.ch product finder, which indexes structured products listed on Swiss exchanges including SIX (XQMH), BX Swiss (XBRN), and Swiss DOTS (DOTS). Products span SVSP category codes 11 through 15 (Capital Protection, Yield Enhancement, Participation, Credit Risk, Leverage). Each product carries an ISIN and valor number that serve as stable identifiers across endpoints.
Searching and filtering with search_products
search_products accepts filters for issuers (ref codes like UBS, VT for Vontobel, BAER for Julius Bär), categories, exchanges, callables, and sort controls (sort_by, sort_dir). Results are paginated at 20 products per page; page 1 includes a counters object showing how many products match each active filter dimension. Pages 2 and beyond return the same product array fields: isin, symbol, name, issuerName, categoryName, tradingCurrencyCode, lastTradingDate, and ask. The total_records and total_pages fields on every response let you iterate the full result set programmatically.
Retrieving product detail with get_product_detail
Pass any active ISIN to get_product_detail to receive a structured object with seven distinct data groups: basic (isin, valor, symbol, termsheet URLs), terms (strikeRate, barrierRate, lastTradingDate, issuerName, categoryName), market_data (bid, ask, last, performance), key_figures (daysToMaturity, barrierHitProbMaturity), highlights, events, and underlyings. The underlyings array lists each underlying instrument with its own ISIN, name, strikeLevel, and last price. A similar_products array is also returned. If the ISIN is delisted or invalid, the response includes a stale_input object with kind input_not_found rather than an error.
Discovering filter values with get_filter_options
get_filter_options returns the full taxonomy used by search_products: categories, subcategories, issuers, exchanges, currencies, asset_classes, maturities, guarantors, and callables. Each entry includes a ref (the code to pass as a filter), a human-readable name, and a num count of matching products. The total_products field reflects the live catalog size. Both en and de language codes are accepted across all endpoints.
- Screen for barrier reverse convertibles from a specific issuer by combining
issuersandcategoriesfilters insearch_products - Build a maturity calendar by sorting
search_productsresults bylastTradingDateascending across the full product set - Monitor barrier proximity for capital-at-risk products by polling
get_product_detailforbarrierRateandbarrierHitProbMaturity - Populate an issuer or category dropdown in a filter UI using
refandnumvalues fromget_filter_options - Fetch termsheet URLs and underlying instrument details for a watchlist of ISINs via
get_product_detail - Compare ask prices and performance across similar structured products using the
similar_productsarray andmarket_datafields - Identify callable vs. non-callable products on a specific exchange by combining
callablesandexchangesfilters
| 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 | 250 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 payoff.ch offer an official developer API?+
What does `get_product_detail` return for a delisted or invalid ISIN?+
stale_input object with kind set to input_not_found. ISINs must be active and obtainable from search_products; the endpoint does not return historical data for delisted products.Does the API cover structured products listed outside Switzerland?+
How does pagination work in `search_products`, and is there a difference between page 1 and later pages?+
total_records and total_pages for iteration. Page 1 additionally includes a counters object containing per-filter match counts, which is useful for building faceted filter UIs. Pages 2 and beyond omit counters but are otherwise identical in structure.Can I retrieve historical price time-series data for a structured product?+
get_product_detail returns current market data fields (bid, ask, last, performance) and computed figures like daysToMaturity and barrierHitProbMaturity, but no historical price series. You can fork this API on Parse and revise it to add a historical data endpoint if payoff.ch exposes that data elsewhere on the site.