Você monitora preços para um varejista que opera em uma dúzia de países? No Lidl, a mesma referência de ERP pode ser vendida por €17,99 na França, €29,99 na Alemanha e 119 PLN na Polônia no mesmo dia, com ou sem promoção, às vezes sem nenhuma listagem.
Para as equipes de precificação e dados, o desafio não é apenas coletar esses números: é comparar ofertas regionais distintas sem misturar moedas, promoções assíncronas e lacunas no sortimento. O Piloterr exibe cada loja Lidl como é apresentada ao cliente local, via a Lidl API, em 27 mercados.
Este artigo explica como estruturar um pipeline de monitoramento de preços multirregional, por que as diferenças de preço existem (e não são erros de dados), e como observá-las na prática com chamadas de API e um script em Python.
Um produto, muitas ofertas comerciais
Na teoria econômica, discriminação de preços significa cobrar de cada segmento de acordo com sua disposição para pagar. Online, a segmentação geográfica é trivial: lidl.fr e lidl.de são contextos comerciais distintos, mesmo quando compartilham a mesma marca.
Na prática, cada loja nacional calibra o preço com base em:
- Concorrência local (Castorama na França, OBI na Alemanha, etc.)
- Posicionamento percebido da marca naquele mercado
- Calendário de promoções da subsidiária
- Poder de compra e âncoras de preço locais
O resultado: mesma identidade do produto, oferta econômica diferente. Isso não é uma anomalia a ser corrigida no seu pipeline. É o dado a ser capturado.
O que faz o preço variar de um país para outro
Custos e restrições locais
Duas regiões podem vender o mesmo SKU enquanto enfrentam estruturas de custos diferentes:
| Fator | Impacto |
|---|---|
| Regras de IVA e impostos | Exibição com impostos inclusos, taxas variáveis |
| Alfândega e importação | Especialmente fora de blocos de mercado único |
| Logística e última milha | Contratos com transportadoras, mão de obra |
| Conformidade (embalagem, rotulagem) | Custos de conformidade local |
| Fraude e métodos de pagamento | Risco e taxas específicos do mercado |
O preço exibido incorpora essas restrições. Comparar França e Polônia sem conversão de moeda ou contexto local diz pouco sobre a estratégia comercial real.
Promoções não são sincronizadas
Os mecanismos de promoção (preços riscados, selos "−44%", rótulos "mega oferta") são decididos país por país. Um produto em promoção na França pode estar com preço cheio na Alemanha no mesmo dia. Isso não é uma inconsistência da API: os calendários de promoções são descentralizados.
Para análise, duas consequências:
- Preço à vista e preço de referência devem ser armazenados separadamente.
discount_percentageé um campo derivado: pode estar ausente quando nenhuma promoção local estiver em vigor.
O sortimento nunca é 100% idêntico
Algumas referências de ERP são pan-europeias. Outras são listadas apenas onde a demanda, regulamentação ou logística permitem. Títulos, slugs e páginas de produtos também variam de acordo com o local.
Uma listagem ausente é em si um sinal: produto não distribuído, falta temporária de estoque ou remoção do catálogo. Não confunda isso com um erro de solicitação.
A moeda faz parte da oferta legal
Lojas multirregionais expõem a moeda nativa de sua jurisdição. Em alguns mercados (Bulgária, por exemplo), uma moeda secundária pode aparecer ao lado da primária.
Na análise, sempre armazene (preço, moeda, região, carimbo de data/hora). Converta offline quando precisar de comparabilidade. A API não deve normalizar tudo para EUR: o preço exibido é a oferta comercial e legal como o cliente a vê.
O modelo mental correto para seus dados
Pense em ofertas regionais, não em um único preço:
Identidade global do produto (ERP / SKU)
│
┌────┼────┐
▼ ▼ ▼
Oferta Oferta Oferta
FR DE PL
€17,99 €29,99 119 PLN
promo — —
Cada par (erp_id, região) é uma oferta distinta. A chave do seu registro deve ser:
(erp_id, região, observado_em) → { preço, moeda, preço_antigo, em_estoque, url, localidade }
Esse modelo evita comparações enganosas e painéis que misturam alhos com bugalhos.
Estudo de caso: uma furadeira PARKSIDE em 8 países
Vamos pegar a referência de ERP 100397447, a furadeira de percussão PARKSIDE PSBM 750 B3. Mesmo produto, observado em várias lojas Lidl em junho de 2026:
| Região | Preço | Moeda | Preço antigo | Leitura |
|---|---|---|---|---|
| França | 17,99 | EUR | 31,99 | Promoção ativa (~−44%) |
| Espanha | 19,99 | EUR | — | Sem preço riscado no momento da observação |
| Eslováquia | 19,99 | EUR | 29,99 | Promoção |
| Bélgica (FR/NL) | 24,99 | EUR | 34,99 | Mesmo preço em ambas as localidades BE |
| Polônia | 119,00 | PLN | — | ≈ €27 em taxa de câmbio típica |
| Alemanha | 29,99 | EUR | — | ~67% mais alto em EUR nominal do que na FR |
| Países Baixos | 29,99 | EUR | — | Alinhado com a Alemanha |
| República Tcheca | 999,90 | CZK | — | ≈ €40 em taxa de câmbio típica |
Não listado no momento do teste: Reino Unido, Itália, Portugal, Hungria, Romênia. Mesmo ERP, sortimento parcial.
Quatro lições de uma única página de produto:
- O euro não garante uniformidade: €17,99 vs €29,99 dentro da zona do euro.
- Promoções são assíncronas: FR, SK e BE com desconto; DE e NL com preço cheio.
- Moedas exigem conversão para qualquer comparação séria.
- A cobertura do catálogo varia: um produto "europeu" não está necessariamente em todos os lugares.
O que a API retorna (França vs Alemanha)
Na França, a loja mostra uma promoção:
{
"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
}
Na Alemanha, mesma referência, título diferente, preço diferente, sem promoção:
{
"product_id": "100397447",
"title": "PARKSIDE® Schlagbohrmaschine »PSBM 750 B3«",
"price": 29.99,
"currency": "EUR",
"locale": "de-de",
"in_stock": true
}
A API não tenta harmonizar. Ela exibe o que cada loja mostra. A variação que você vê nas respostas é a mesma variação que um cliente veria ao alternar entre os sites nacionais.
Exemplos da API Piloterr
Dois endpoints cobrem o caso de uso: product para uma oferta regional precisa, search para descobrir referências em um catálogo nacional. O parâmetro query aceita uma referência de ERP, uma URL completa do Lidl ou uma palavra-chave; region direciona a loja quando nenhuma URL é fornecida.
curl: mesmo ERP, duas regiões
Substitua YOUR-API-KEY pela sua chave do painel Piloterr.
França (promoção ativa no momento da observação):
curl -G "https://api.piloterr.com/v2/lidl/product" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=100397447" \
--data-urlencode "region=fr"
Alemanha (mesma referência, preço diferente):
curl -G "https://api.piloterr.com/v2/lidl/product" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=100397447" \
--data-urlencode "region=de"
Você também pode passar uma URL nacional: a região é inferida a partir do domínio e o parâmetro region é ignorado.
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"
Search para encontrar referências de ERP em um determinado mercado:
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: comparar uma referência em várias regiões
Este script consulta várias lojas para a mesma referência de ERP e imprime um instantâneo comparativo. Listagens ausentes são tratadas como ofertas nulas, não como erros fatais.
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 em {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} erro {exc}")
continue
if offer is None:
print(f"{region.upper():<4} — não listado")
continue
price = offer.get("price")
currency = offer.get("currency", "?")
old_price = offer.get("old_price")
promo = f" (era {old_price})" if old_price else ""
stock = "em estoque" if offer.get("in_stock") else "fora de estoque"
print(f"{region.upper():<4} {price} {currency}{promo} {stock}")
if __name__ == "__main__":
main()
Exemplo de saída (junho de 2026):
ERP 100397447 — observado em 2026-06-15T09:00:00+00:00
FR 17.99 EUR (era 31.99) em estoque
DE 29.99 EUR em estoque
PL 119.0 PLN em estoque
ES 19.99 EUR em estoque
NL 29.99 EUR em estoque
CS 999.9 CZK em estoque
Para comparação entre moedas, converta offline com suas taxas de câmbio do dia. A API retorna o preço como exibido na loja local, que é a granularidade correta para monitoramento compatível e arquivamento de promoções.
Documentação completa: Lidl Search e Lidl scraper.
O que isso significa para o monitoramento de preços
Se você monitora preços multirregionais (Lidl ou outros), alguns princípios simples se aplicam:
Faça
- Defina uma chave global do produto (ERP, GTIN, SKU do fabricante) para unir ofertas.
- Consulte cada região explicitamente:
region=fr,region=de, etc. - Mantenha carimbo de data/hora, moeda e localidade em cada instantâneo.
- Trate listagens ausentes como ofertas nulas, não como erros.
- Separe preço à vista, preço de referência e disponibilidade.
Evite
- Comparar 119 PLN e €17,99 sem conversão de moeda.
- Usar uma única região como "o preço do Lidl".
- Esperar que as flags de promoção sejam idênticas entre países.
- Confundir ausência de produto com uma falha técnica.
Especificamente para o Lidl, o Piloterr cobre 27 lojas nacionais (fr, de, pl, gb, ch, cs, be, etc.).
Casos extremos que surpreendem as equipes em produção
| Fenômeno | Interpretação |
|---|---|
price: null em algumas listagens austríacas | Produto visível, mas sem preço online no payload |
| Moeda dupla (ex.: Bulgária) | Moeda primária segue as regras de exibição da loja |
Produto ausente em lidl.co.uk | Lacuna no sortimento, não falha da API |
| Títulos e slugs diferentes FR/DE | Mesmo ERP, merchandising localizado |
old_price inconsistente em algumas categorias | Valide a semântica por categoria de produto |
Esses casos não invalidam o princípio geral: cada região é uma oferta autônoma.
Em resumo
As diferenças de preços entre países no comércio eletrônico são estruturais e intencionais. Elas decorrem da segmentação de mercado, custos locais, moedas, promoções descentralizadas e escolhas de sortimento.
O Lidl é uma ilustração clara: uma referência de ERP, oito ofertas regionais diferentes para a mesma ferramenta. Com o Piloterr, você acessa cada uma como apresentada ao cliente local, pronta para alimentar um pipeline de monitoramento de preços ou análise de posicionamento competitivo.
Para mais informações sobre conformidade de preços promocionais na Europa, consulte nosso artigo sobre a diretiva Omnibus.
Preços e disponibilidade mencionados refletem observações de junho de 2026. Eles mudam com promoções e reajustes de preços.