CaixaBank APIcaixabank.es ↗
Access CaixaBank's product catalogue, TAE/TIN rates, stock price, and branch/ATM locations across Spain via 14 structured endpoints.
What is the CaixaBank API?
The CaixaBank API covers 14 endpoints exposing Spain's largest retail bank product catalogue — accounts, cards, loans, mortgages, savings, investments, insurance, and pension plans — alongside live stock price data and branch/ATM geolocation. The get_product_detail endpoint returns structured rate data (TAE and TIN arrays), fees, conditions, and taxes for any individual product page, making it straightforward to compare financial products programmatically.
curl -X GET 'https://api.parse.bot/scraper/3b546883-db32-4534-8cd7-d1d547d9029e/search_products?query=hipoteca' \ -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 caixabank-es-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: CaixaBank SDK — search products, list categories, get stock info, find branches."""
from parse_apis.caixabank_api import CaixaBank, ProductNotFound
client = CaixaBank()
# Search for mortgage products by keyword
for result in client.products.search(query="hipoteca", limit=3):
print(result.title, result.url)
# Get full details for the first search result
product = client.products.search(query="cuenta", limit=1).first()
if product:
detail = product.detail()
print(detail.name, detail.description)
if detail.rates.tae:
print("TAE:", detail.rates.tae)
# List checking account products
for account in client.accountproducts.list(limit=5):
print(account.name, account.url)
# Get current stock price
stock = client.stockprices.get()
print(stock.price, stock.change, stock.raw_text)
# Find branches near central Madrid
for branch in client.branches.nearby(lat=40.4167, lng=-3.7033, limit=3):
print(branch.name, branch.address, branch.city)
# Typed error handling when fetching a product detail
try:
bad = client.products.search(query="nonexistent_xyz_product", limit=1).first()
if bad:
bad.detail()
except ProductNotFound as exc:
print(f"Product not found: {exc.url}")
print("exercised: products.search / detail / accountproducts.list / stockprices.get / branches.nearby")
Search for CaixaBank products by keyword using the pre-search suggestion API. Returns matching product pages with titles, URLs, descriptions, and category types. Paginates as a single page of results.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'hipoteca', 'cuenta', 'tarjeta') |
{
"type": "object",
"fields": {
"query": "string - the search query used",
"results": "array of product result objects with title, url, description, and type"
},
"sample": {
"data": {
"query": "hipoteca",
"results": [
{
"url": "https://www.caixabank.es/particular/hipotecas/casafacil.html",
"type": "ProductosServicios",
"title": "Hipoteca CasaFácil tipo fijo | Hipotecas| CaixaBank",
"description": "Tu hipoteca fija con una...ti. Conoce la hipoteca fija CasaFácil, y...ventajas de tu hipoteca con CaixaBank."
}
]
},
"status": "success"
}
}About the CaixaBank API
Product Catalogue Endpoints
Nine dedicated listing endpoints cover every major retail category: get_current_accounts, get_cards, get_personal_loans, get_mortgages, get_savings_products, get_investment_funds, get_insurance_products, get_pension_plans, and get_empresas_products for business customers. Each returns an array of objects with name and url fields. The get_all_products_overview endpoint consolidates all categories into a single response keyed by Spanish category names (Ahorro, Cuentas, Seguros, Tarjetas, Hipotecas, Inversión, Préstamos).
Product Detail and Search
get_product_detail accepts a full CaixaBank product page URL and returns structured fields: name, description, rates (with tae and tin sub-arrays), fees, taxes, features, and conditions. When a product URL no longer resolves, the endpoint returns a stale_input signal with kind input_not_found. search_products accepts a free-text query parameter (e.g. hipoteca, cuenta, tarjeta) and returns matching results with title, url, description, and type — useful for discovery before fetching full details.
Market Data and Branch Locator
get_stock_price returns CaixaBank's current share price, percentage change, and raw ticker text. The get_branch_and_atm_locator endpoint accepts optional lat and lng coordinates and returns branches and ATMs within a 2 km bounding box, with each result including name, address, city, postal_code, phone, type, latitude, longitude, and hours. If no coordinates are provided, it defaults to central Madrid.
The CaixaBank API is a managed, monitored endpoint for caixabank.es — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when caixabank.es 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 caixabank.es 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 Spanish mortgage comparison tool using
get_mortgagesandget_product_detailto surface TAE and TIN rates - Aggregate retail banking product lists for a financial product aggregator covering Spanish banks
- Display CaixaBank's live stock price on a financial dashboard using
get_stock_price - Power a branch or ATM finder app using
get_branch_and_atm_locatorwith user-provided GPS coordinates - Monitor changes to product fees or conditions over time by polling
get_product_detailfor specific product URLs - Index CaixaBank business products for SME financial advisory tools via
get_empresas_products - Implement autocomplete-style product search for a fintech app using
search_productsquery results
| 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 CaixaBank have an official public developer API?+
What does `get_product_detail` return and what happens if the product no longer exists?+
get_product_detail takes a full product page URL and returns name, description, rates (with tae and tin arrays), fees, taxes, features, and conditions as structured arrays. If the URL resolves to a 404, the endpoint returns a stale_input object with kind input_not_found rather than an error, so your code can handle removed products gracefully.Does the branch locator cover all of Spain or only major cities?+
get_branch_and_atm_locator returns results within a 2 km bounding box of any lat/lng coordinates you supply, so coverage follows CaixaBank's actual branch and ATM network across Spain. You can query any location — the default is central Madrid when no coordinates are provided. Pagination over larger areas is not currently supported; for broader geographic sweeps you would need to tile requests across a grid of coordinates. You can fork this API on Parse and revise it to add tiled or larger-radius queries.Are personal finance features like account balances or transaction history covered?+
How specific is the rate data returned for loans and mortgages?+
get_product_detail returns tae and tin as arrays of strings as published on the product page, which may include multiple rate tiers or conditions (e.g. promotional vs. standard). It does not return a single normalised numeric value, so you will need to parse the strings for numerical comparisons. Historic rate data is not exposed; the response reflects whatever is currently published on the product page.