Ir para o conteúdo principal
Piloterr
Voltar ao blog
2 de julho de 2026

€17,99 na França, €29,99 na Alemanha: monitoramento de preços por país

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:

FatorImpacto
Regras de IVA e impostosExibição com impostos inclusos, taxas variáveis
Alfândega e importaçãoEspecialmente fora de blocos de mercado único
Logística e última milhaContratos com transportadoras, mão de obra
Conformidade (embalagem, rotulagem)Custos de conformidade local
Fraude e métodos de pagamentoRisco 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.

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:

Texto simples
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ãoPreçoMoedaPreço antigoLeitura
França17,99EUR31,99Promoção ativa (~−44%)
Espanha19,99EURSem preço riscado no momento da observação
Eslováquia19,99EUR29,99Promoção
Bélgica (FR/NL)24,99EUR34,99Mesmo preço em ambas as localidades BE
Polônia119,00PLN≈ €27 em taxa de câmbio típica
Alemanha29,99EUR~67% mais alto em EUR nominal do que na FR
Países Baixos29,99EURAlinhado com a Alemanha
República Tcheca999,90CZK≈ €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:

  1. O euro não garante uniformidade: €17,99 vs €29,99 dentro da zona do euro.
  2. Promoções são assíncronas: FR, SK e BE com desconto; DE e NL com preço cheio.
  3. Moedas exigem conversão para qualquer comparação séria.
  4. 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:

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
}

Na Alemanha, mesma referência, título diferente, preço diferente, sem promoção:

JSON
{
  "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):

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"

Alemanha (mesma referência, preço 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"

Você também pode passar uma URL nacional: a região é inferida a partir do domínio e o parâmetro region é ignorado.

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"

Search para encontrar referências de ERP em um determinado mercado:

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: 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.

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 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):

Texto simples
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ômenoInterpretação
price: null em algumas listagens austríacasProduto 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.ukLacuna no sortimento, não falha da API
Títulos e slugs diferentes FR/DEMesmo ERP, merchandising localizado
old_price inconsistente em algumas categoriasValide 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.

Mais para ler

Guias e notícias sobre web scraping, proxies e extração de dados.

Web Scraping

Migrando do NetNut: o que fazer após a desativação da rede

O Google tomou medidas contra a rede de proxies NetNut/Popa em conjunto com o FBI e a Lumen. Como repensar sua stack de scraping sem gerenciar proxies por conta própria.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

Melhor Scraper para Leboncoin 2026

Piloterr vs Apify vs lobstr.io para scraping no Leboncoin em 2026. Preços, endpoints e dados de produtos verificados a partir de fontes oficiais em 29 de junho de 2026 — incluindo a lacuna legal entre scraping público e autenticado.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

Como Extrair Dados de Salários de Empresas com Python

Aprenda a extrair dados de salários do Comparably com Python e Piloterr. Tutorial completo com código, tratamento de Angular e extração de JSON estruturado.

Josselin Liebe
Josselin Liebe
Ler

Pronto para começar?

Sua API de web scraping está a um clique. Comece com +500 créditos, sem infraestrutura para configurar, sem proxies para gerenciar e sem cartão de crédito necessário.

  • +500 créditos
  • Sem cartão de crédito
  • Todos os endpoints incluídos