GET /brands

Brands

List the brand names Mercadona sells with their product counts, across all hubs or for one warehouse or postal code, filtered by name or category.

Mercadona API

Returns the brand vocabulary for the brand filter used by Brand Products , Search and the discovery endpoints. Brands have no ids: the exact brand string returned here is the value to pass. Names are case-sensitive (Como Tú and Como tú are different brands) and never translated. Without warehouse or postal_code, the list is the union over the 7 online hubs, so it can include brands a given warehouse does not stock. Pass the same warehouse or postal_code you will use on /brand-products to get that warehouse’s brands and counts.

HTTP Request

GET /brands

Parameters

ParameterTypeRequiredDefaultDescription
qstringNo-Case- and accent-insensitive substring match on the brand name (dan matches Danone and Danacol; hac matches Hacendado and La Hacienda del Ibérico). Omit for the full list
warehousestringNo-Restrict to one warehouse’s assortment and counts. Omit for the union over the 7 hubs
postal_codestringNo-Spanish 5-digit postal code, resolved to the warehouse that serves it. Takes precedence over warehouse
category_idintegerNo-Only brands with products in this category (any level, see /categories )
freshbooleanNofalseBypass the 15-minute cache. Only affects answers with source: live; catalog_index answers come from the daily catalog snapshot and refresh once a day
languageenumNoeses, en or ca. Echoed only: brand names are not translated, so the list is the same in every language

Response

Example for q=hacendado:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "status": true,
  "request_id": "45eca9f3-c344-3df9-0b26-0bdfe23c",
  "cached_at": null,
  "data": {
    "results": [
      {
        "brand": "Hacendado",
        "products_count": 1974
      }
    ],
    "total": 1,
    "source": "catalog_index",
    "snapshot_date": "2026-10-14",
    "resolved_filters": {
      "warehouse": null
    },
    "language": "es"
  },
  "request_params": {
    "q": "hacendado"
  }
}

Response Fields

FieldTypeDescription
statusbooleantrue when the request succeeded
request_idstringUnique request identifier
cached_atstring | nullISO timestamp when served from cache, null when fetched for this request
dataobjectResponse payload
data.results[]arrayMatching brands
data.results[].brandstringExact brand name. Pass it verbatim as brand on other endpoints
data.results[].products_countintegerProducts of this brand in the warehouse, or across the 7 hubs when no warehouse is set
data.totalintegerBrands matched
data.sourcestringcatalog_index (daily catalog snapshot) or live
data.snapshot_datestringDate of the catalog snapshot used
data.resolved_filters.warehouseobject | nullWarehouse used for the counts. null when no warehouse filter was sent (union of the hubs)
data.languagestringLanguage echoed back
request_paramsobjectQuery parameters you sent, echoed back as strings

When you pass warehouse or postal_code, data.resolved_filters.warehouse is an object with input, resolved (the warehouse code) and source (postal_code or param).

Error Responses

Invalid input returns HTTP 400, and error is a plain string:

1
2
3
4
5
{
  "status": false,
  "request_id": "...",
  "error": "Invalid parameter 'warehouse': String should match pattern '^(?:[a-z]{3}[0-9]|[0-9]{4})$'"
}
Status CodeCauseDescription
400Invalid warehouseMust be a hub code like vlc1 or a 4-digit store code from /warehouses
400Invalid parameter valueFor example a language other than es, en or ca

Code Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import requests

url = "https://mercadona-api.p.rapidapi.com/brands"

params = {
    "q": "hacendado"
}

headers = {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "mercadona-api.p.rapidapi.com"
}

response = requests.get(url, headers=headers, params=params)
data = response.json()["data"]

print(f"{data['total']} brands (snapshot {data['snapshot_date']})")
for row in data["results"]:
    print(f"{row['brand']}: {row['products_count']} products")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
const url = "https://mercadona-api.p.rapidapi.com/brands";

const params = new URLSearchParams({
  q: "hacendado"
});

const response = await fetch(`${url}?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "mercadona-api.p.rapidapi.com"
  }
});

const { data } = await response.json();
for (const row of data.results) {
  console.log(`${row.brand}: ${row.products_count} products`);
}
1
2
3
4
curl -G "https://mercadona-api.p.rapidapi.com/brands" \
  --data-urlencode "q=hacendado" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: mercadona-api.p.rapidapi.com"
  • Brand Products : list every product of a brand, passing the exact brand string from this endpoint
  • Product Search : keyword search restricted to one or more brands with brand
  • Category Tree : get a category_id to list only the brands present in a category
Start building today

Get your API key and make your first request in under a minute.

Get Your API Key on RapidAPI