Saltar al contenido principal
Piloterr
Volver al blog
2 de julio de 2026

€17.99 en Francia, €29.99 en Alemania: monitoreo de precios por país

¿Monitoreas precios para un minorista que opera en una docena de países? En Lidl, la misma referencia de ERP puede venderse por €17.99 en Francia, €29.99 en Alemania y 119 PLN en Polonia el mismo día, con o sin promoción, a veces sin listado alguno.

Para los equipos de precios y datos, el desafío no es solo recolectar esos números: es comparar ofertas regionales distintas sin mezclar monedas, promociones asincrónicas y brechas en el surtido. Piloterr muestra cada tienda de Lidl como se muestra al cliente local, a través de la API de Lidl, en 27 mercados.

Este artículo explica cómo estructurar un pipeline de monitoreo de precios multirregional, por qué existen las diferencias de precios (y no son errores de datos), y cómo observarlas en la práctica con llamadas a la API y un script en Python.

Un producto, muchas ofertas comerciales

En la teoría económica, la discriminación de precios significa cobrar a cada segmento según su disposición a pagar. En línea, la segmentación geográfica es trivial: lidl.fr y lidl.de son contextos comerciales distintos incluso cuando comparten la misma marca.

En la práctica, cada tienda nacional calibra el precio en función de:

  • La competencia local (Castorama en Francia, OBI en Alemania, etc.)
  • El posicionamiento percibido de la marca en ese mercado
  • El calendario de promociones de la subsidiaria
  • El poder adquisitivo y los anclajes de precios locales

El resultado: misma identidad de producto, oferta económica diferente. Esto no es una anomalía que deba corregirse en tu pipeline. Son los datos que debes capturar.

Qué hace que el precio varíe de un país a otro

Costos y restricciones locales

Dos regiones pueden vender el mismo SKU mientras enfrentan estructuras de costos diferentes:

FactorImpacto
Normas de IVA e impuestosVisualización con impuestos incluidos, tasas variables
Aduanas e importaciónEspecialmente fuera de bloques de mercado único
Logística y última millaContratos con transportistas, mano de obra
Cumplimiento (empaque, etiquetado)Costos de cumplimiento local
Fraude y métodos de pagoRiesgo y tarifas específicas del mercado

El precio mostrado incorpora estas restricciones. Comparar Francia y Polonia sin conversión de divisas o contexto local dice poco sobre la estrategia comercial real.

Las promociones no están sincronizadas

Los mecanismos de promoción (precios tachados, insignias de "−44%", etiquetas de "mega oferta") se deciden país por país. Un producto en oferta en Francia puede estar a precio completo en Alemania el mismo día. Esto no es una inconsistencia de la API: los calendarios de promociones son descentralizados.

Para el análisis, dos consecuencias:

  • El precio spot y el precio de referencia deben almacenarse por separado.
  • discount_percentage es un campo derivado: puede estar ausente cuando no hay promoción local en curso.

El surtido nunca es 100% idéntico

Algunas referencias de ERP son paneuropeas. Otras solo se listan donde la demanda, la regulación o la logística lo permiten. Los títulos, slugs y páginas de productos también varían según la localidad.

Un listado faltante es en sí mismo una señal: producto no distribuido, agotamiento temporal o deslistado del catálogo. No lo confundas con un error de solicitud.

Las tiendas multirregionales exponen la moneda nativa de su jurisdicción. En algunos mercados (Bulgaria, por ejemplo), puede aparecer una moneda secundaria junto a la primaria.

En análisis, siempre almacena (precio, moneda, región, marca de tiempo). Convierte fuera de línea cuando necesites comparabilidad. La API no debe normalizar todo a EUR: el precio mostrado es la oferta comercial y legal como la ve el cliente.

El modelo mental adecuado para tus datos

Piensa en ofertas regionales, no en un solo precio:

Texto plano
Identidad global del producto (ERP / SKU)

   ┌────┼────┐
   ▼    ▼    ▼
Oferta Oferta Oferta
 FR     DE     PL
€17.99 €29.99 119 PLN
 promo   —      —

Cada par (erp_id, región) es una oferta distinta. La clave de tu registro debe verse así:

(erp_id, región, observado_en) → { precio, moneda, precio_anterior, en_stock, url, locale }

Ese modelo evita comparaciones engañosas y paneles que mezclan peras con manzanas.

Caso de estudio: un taladro PARKSIDE en 8 países

Toma la referencia de ERP 100397447, el taladro percutor PARKSIDE PSBM 750 B3. Mismo producto, observado en varias tiendas de Lidl en junio de 2026:

RegiónPrecioMonedaPrecio anteriorLectura
Francia17.99EUR31.99Promoción activa (~−44%)
España19.99EURSin tachado en el momento de la observación
Eslovaquia19.99EUR29.99Promoción
Bélgica (FR/NL)24.99EUR34.99Mismo precio en ambas localidades BE
Polonia119.00PLN≈ €27 a tipo de cambio típico
Alemania29.99EUR~67% más alto en EUR nominal que FR
Países Bajos29.99EURAlineado con Alemania
República Checa999.90CZK≈ €40 a tipo de cambio típico

No listado en el momento de la prueba: Reino Unido, Italia, Portugal, Hungría, Rumanía. Mismo ERP, surtido parcial.

Cuatro lecciones de una sola página de producto:

  1. El euro no garantiza uniformidad: €17.99 vs €29.99 dentro de la zona euro.
  2. Las promociones son asincrónicas: FR, SK y BE con descuento; DE y NL a precio completo.
  3. Las monedas requieren conversión para cualquier comparación seria.
  4. La cobertura del catálogo varía: un producto "europeo" no está necesariamente en todas partes.

Lo que devuelve la API (Francia vs Alemania)

En Francia, la tienda muestra una promoción:

JSON
{
  "product_id": "100397447",
  "title": "PARKSIDE® Perceuse à percussion PSBM 750 B3, 10 Nm, 750 W",
  "price": 17.99,
  "old_price": 31.99,
  "discount_percentage": 43.0,
  "currency": "EUR",
  "locale": "fr-fr",
  "in_stock": true
}

En Alemania, misma referencia, título diferente, precio diferente, sin promoción:

JSON
{
  "product_id": "100397447",
  "title": "PARKSIDE® Schlagbohrmaschine »PSBM 750 B3«",
  "price": 29.99,
  "currency": "EUR",
  "locale": "de-de",
  "in_stock": true
}

La API no intenta armonizar. Muestra lo que muestra cada tienda. La diferencia que ves en las respuestas es la misma diferencia que vería un cliente al cambiar de sitios nacionales.

Ejemplos de la API de Piloterr

Dos endpoints cubren el caso de uso: product para una oferta regional precisa, search para descubrir referencias en un catálogo nacional. El parámetro query acepta una referencia de ERP, una URL completa de Lidl o una palabra clave; region apunta a la tienda cuando no se proporciona una URL.

curl: mismo ERP, dos regiones

Reemplaza YOUR-API-KEY con tu clave de la panel de Piloterr.

Francia (promoción activa en el momento de la observación):

Bash
curl -G "https://api.piloterr.com/v2/lidl/product" \
  -H "x-api-key: YOUR-API-KEY" \
  --data-urlencode "query=100397447" \
  --data-urlencode "region=fr"

Alemania (misma referencia, precio diferente):

Bash
curl -G "https://api.piloterr.com/v2/lidl/product" \
  -H "x-api-key: YOUR-API-KEY" \
  --data-urlencode "query=100397447" \
  --data-urlencode "region=de"

También puedes pasar una URL nacional: la región se infiere del dominio y el parámetro region se ignora.

Bash
curl -G "https://api.piloterr.com/v2/lidl/product" \
  -H "x-api-key: YOUR-API-KEY" \
  --data-urlencode "query=https://www.lidl.pl/p/parkside-wiertarka-udarowa-750-w-psbm-750-b3/p100397447"

Búsqueda para encontrar referencias de ERP en un mercado determinado:

Bash
curl -G "https://api.piloterr.com/v2/lidl/search" \
  -H "x-api-key: YOUR-API-KEY" \
  --data-urlencode "query=drill" \
  --data-urlencode "region=de"

Python: compara una referencia en varias regiones

Este script consulta varias tiendas para la misma referencia de ERP e imprime una instantánea comparativa. Los listados faltantes se tratan como ofertas nulas, no como errores fatales.

Python
import requests
from datetime import datetime, timezone

PILOTERR_API_KEY = "YOUR-API-KEY"
ERP_ID = "100397447"
REGIONS = ["fr", "de", "pl", "es", "nl", "cs"]

def fetch_lidl_offer(erp_id: str, region: str) -> dict | None:
    response = requests.get(
        "https://api.piloterr.com/v2/lidl/product",
        headers={"x-api-key": PILOTERR_API_KEY},
        params={"query": erp_id, "region": region},
        timeout=30,
    )
    if response.status_code == 404:
        return None
    response.raise_for_status()
    return response.json()

def main():
    observed_at = datetime.now(timezone.utc).isoformat()
    print(f"ERP {ERP_ID} — observado en {observed_at}\n")

    for region in REGIONS:
        try:
            offer = fetch_lidl_offer(ERP_ID, region)
        except requests.HTTPError as exc:
            print(f"{region.upper():<4}  error  {exc}")
            continue

        if offer is None:
            print(f"{region.upper():<4}  —      no listado")
            continue

        price = offer.get("price")
        currency = offer.get("currency", "?")
        old_price = offer.get("old_price")
        promo = f" (antes {old_price})" if old_price else ""
        stock = "en stock" if offer.get("in_stock") else "agotado"

        print(f"{region.upper():<4}  {price} {currency}{promo}  {stock}")

if __name__ == "__main__":
    main()

Salida de ejemplo (junio de 2026):

Texto plano
ERP 100397447 — observado en 2026-06-15T09:00:00+00:00

FR    17.99 EUR (antes 31.99)  en stock
DE    29.99 EUR  en stock
PL    119.0 PLN  en stock
ES    19.99 EUR  en stock
NL    29.99 EUR  en stock
CS    999.9 CZK  en stock

Para la comparación entre monedas, convierte fuera de línea con tus tasas de cambio del día. La API devuelve el precio tal como se muestra en la tienda local, que es la granularidad adecuada para el monitoreo conforme y el archivo de promociones.

Documentación completa: Búsqueda en Lidl y scraper de Lidl.

Qué significa esto para el monitoreo de precios

Si monitoreas precios multirregionales (Lidl o en otros lugares), se aplican algunos principios simples:

Haz

  • Fija una clave global del producto (ERP, GTIN, SKU del fabricante) para unir ofertas.
  • Consulta cada región explícitamente: region=fr, region=de, etc.
  • Mantén marca de tiempo, moneda y locale en cada instantánea.
  • Trata los listados faltantes como ofertas nulas, no como errores.
  • Separa el precio spot, el precio de referencia y la disponibilidad.

Evita

  • Comparar 119 PLN y €17.99 sin conversión de divisas.
  • Usar una sola región como "el precio de Lidl".
  • Esperar banderas de promoción idénticas en todos los países.
  • Confundir la ausencia del producto con una falla técnica.

Para Lidl específicamente, Piloterr cubre 27 tiendas nacionales (fr, de, pl, gb, ch, cs, be, etc.).

Casos extremos que sorprenden a los equipos en producción

FenómenoInterpretación
price: null en algunos listados austriacosProducto visible, pero sin precio en línea en la carga útil
Doble moneda (ej. Bulgaria)La moneda principal sigue las reglas de visualización de la tienda
Producto faltante en lidl.co.ukBrecha en el surtido, no fallo de la API
Títulos y slugs diferentes FR/DEMismo ERP, merchandising localizado
old_price inconsistente en algunas categoríasValida la semántica por categoría de producto

Estos casos no invalidan el principio general: cada región es una oferta autónoma.

En resumen

Las diferencias de precios entre países en el comercio electrónico son estructurales e intencionales. Provienen de la segmentación de mercados, costos locales, monedas, promociones descentralizadas y elecciones de surtido.

Lidl es una ilustración clara: una referencia de ERP, ocho ofertas regionales diferentes en la misma herramienta. Con Piloterr, accedes a cada una como se presenta al cliente local, lista para alimentar un pipeline de monitoreo de precios o un análisis de posicionamiento competitivo.

Para más información sobre el cumplimiento de precios promocionales en Europa, consulta nuestro artículo sobre la directiva Omnibus.

Los precios y la disponibilidad mencionados reflejan observaciones de junio de 2026. Cambian con las promociones y los reajustes de precios.

Más para leer

Guías y noticias sobre web scraping, proxies y extracción de datos.

Web Scraping

Migración desde NetNut: qué hacer tras el cierre de la red

Google tomó medidas contra la red de proxies NetNut/Popa junto al FBI y Lumen. Cómo replantear tu stack de scraping sin gestionar proxies por tu cuenta.

Josselin Liebe
Josselin Liebe
Leer
Web Scraping

Mejor Scraper para Leboncoin 2026

Piloterr vs Apify vs lobstr.io para scraping en Leboncoin en 2026. Precios, endpoints y datos de productos verificados de fuentes oficiales el 29 de junio de 2026 — incluyendo la brecha legal entre el scraping público y el autenticado.

Josselin Liebe
Josselin Liebe
Leer
Web Scraping

Cómo extraer datos de salarios de empresas con Python

Aprende a extraer datos de salarios de Comparably con Python y Piloterr. Tutorial completo con código, manejo de Angular y extracción de JSON estructurado.

Josselin Liebe
Josselin Liebe
Leer

¿Listo para empezar?

Tu API de web scraping está a un clic. Comienza con +500 créditos, sin infraestructura que configurar, sin proxies que gestionar y sin necesidad de tarjeta de crédito.

  • +500 créditos
  • Sin tarjeta de crédito
  • Todos los endpoints incluidos