Uma empresa local existe online em dezenas de lugares que ela não controla: aplicativos de mapas, sites de avaliação, diretórios setoriais, agregadores de dados, perfis sociais. Cada um guarda sua própria cópia do nome, endereço e telefone da empresa, conhecido em SEO local como NAP. Quando a empresa muda de endereço, troca de número ou faz um rebranding, a maioria dessas cópias permanece como estava.
O resultado é um cliente ligando para um número desconectado, um entregador no endereço antigo, e mecanismos de busca e aplicativos de mapas com fatos conflitantes sobre a mesma empresa. Muitos sites menores copiam seus dados de sites maiores, então uma listagem errada tende a se espalhar.
Uma auditoria de NAP encontra essas inconsistências de forma sistemática. Este guia cobre o que coletar, como comparar listagens para que ruído de formatação não afogue problemas reais, o código para fazer isso e como priorizar correções.
O que uma auditoria de NAP verifica
Para cada lugar em que uma empresa está listada, uma auditoria responde a três perguntas:
- Nome: é o nome real da empresa, como usado em sua fachada e site, sem palavras-chave adicionadas ou uma marca antiga?
- Endereço: é o endereço atual, incluindo a sala ou unidade, com o CEP correto?
- Telefone: é o número principal atual, em vez de uma linha antiga ou um número de rastreamento que ninguém atende?
Muitas auditorias também verificam a URL do site, o horário de funcionamento e a categoria principal, já que esses dados também ficam desatualizados da mesma forma. O método abaixo se estende facilmente a eles.
Passo 1: anote o registro canônico
Tudo é comparado com um único registro: o NAP da empresa como deveria aparecer em todos os lugares. Obtenha-o da própria empresa, não de um diretório, e escreva-o por completo: sufixos legais removidos, o endereço exatamente como consta nos Correios, o número de telefone principal. Para uma empresa com múltiplas unidades, mantenha um registro canônico por unidade, com um ID estável.
Isso parece óbvio, e é onde a maioria das auditorias erra. Se o registro canônico em si estiver desatualizado, toda comparação erra na mesma direção.
Passo 2: colete as listagens
As listagens a coletar se dividem em três grupos:
| Fonte | Exemplos | Como coletar |
|---|---|---|
| Plataformas principais | Google Business Profile, Apple Business Connect, Bing Places, Facebook | Os próprios painéis e APIs oficiais da empresa |
| Sites de avaliação e diretórios | Diretórios gerais e setoriais, plataformas de avaliação | APIs oficiais quando existirem, caso contrário a página pública da listagem |
| Agregadores de dados | As empresas que abastecem muitos diretórios menores | Seus portais empresariais |
Use APIs oficiais e as próprias contas da empresa sempre que existirem: são mais confiáveis e permitidas. Para diretórios sem API, a página da listagem é pública, e coletar uma página por empresa por diretório é uma tarefa leve e ocasional. As listagens também podem diferir por país e cidade, então verifique-as como um cliente local as veria; nosso guia sobre coleta de dados de empresas locais cobre o lado da coleta.
Registre os valores brutos exatamente como listados, junto com a URL e a data. A auditoria compara valores normalizados, mas a correção precisa saber exatamente o que está errado em cada site.
Passo 3: compare sem se afogar em ruído
Uma comparação ingênua sinaliza quase tudo. “St” contra “Street”, “(312) 555-0142” contra “312-555-0142”, “LLC” ou sem “LLC”: nenhum desses é um problema real, e uma auditoria cheia deles esconde a listagem que ainda tem o número de telefone do ano passado.
A solução é normalizar cada campo antes de comparar, e classificar o resultado:
| Status | Significado | Prioridade |
|---|---|---|
| match | Idêntico ao registro canônico | Nenhuma |
| format | Texto diferente, mesmo valor após normalização | Baixa: ajustar quando conveniente |
| close | Quase igual, como um número de sala faltando ou um erro de digitação | Média: verificar e corrigir |
| mismatch | Um valor diferente: outro endereço, outro número, outro nome | Alta: corrigir primeiro |
| missing | O campo está vazio nessa listagem | Média: adicionar |
O código abaixo normaliza cada campo de uma forma adequada a ele. Nomes descartam pontuação, acentos, um “The” inicial e sufixos legais. Endereços são expandidos para abreviações padrão (“Street” para “st”, “Suite” para “ste”) e descartam a extensão ZIP+4. Números de telefone são analisados com phonenumbers, a versão em Python da biblioteca de números de telefone do Google, e comparados em formato internacional, de modo que qualquer formatação do mesmo número corresponda.
import re
import unicodedata
from difflib import SequenceMatcher
import phonenumbers
LEGAL_SUFFIXES = {"llc", "inc", "ltd", "co", "corp", "gmbh", "plc", "sl", "srl"}
ADDRESS_WORDS = {
"street": "st", "avenue": "ave", "boulevard": "blvd", "road": "rd", "drive": "dr",
"lane": "ln", "court": "ct", "place": "pl", "suite": "ste", "floor": "fl",
"north": "n", "south": "s", "east": "e", "west": "w", "apartment": "apt", "unit": "ste",
}
def _words(text):
text = unicodedata.normalize("NFKD", text).encode("ascii", "ignore").decode().lower()
text = text.replace("&", " and ").replace("#", " ste ")
return re.sub(r"[^a-z0-9 ]+", " ", text).split()
def norm_name(name):
words = [w for w in _words(name) if w not in LEGAL_SUFFIXES]
return " ".join(words[1:] if words[:1] == ["the"] else words)
def norm_address(address):
# Descarta a extensão ZIP+4, para que "60607-1234" corresponda a "60607".
address = re.sub(r"\b(\d{5})-\d{4}\b", r"\1", address)
return " ".join(ADDRESS_WORDS.get(w, w) for w in _words(address))
def norm_phone(phone, region="US"):
try:
number = phonenumbers.parse(phone, region)
except phonenumbers.NumberParseException:
return None
if not phonenumbers.is_valid_number(number):
return None
return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164)
def compare(field, canonical, listed, region="US"):
"""'match', 'format' (igual após normalização), 'close', 'mismatch' ou 'missing'."""
if not listed:
return "missing"
if listed.strip() == canonical.strip():
return "match"
if field == "phone":
a, b = norm_phone(canonical, region), norm_phone(listed, region)
return "format" if a and a == b else "mismatch"
normalise = norm_name if field == "name" else norm_address
a, b = normalise(canonical), normalise(listed)
if a == b:
return "format"
return "close" if SequenceMatcher(None, a, b).ratio() >= 0.9 else "mismatch"
def audit(canonical, listings, region="US"):
"""Uma linha por diretório: o status de nome, endereço e telefone."""
rows = []
for source, listing in listings.items():
row = {"source": source}
for field in ("name", "address", "phone"):
row[field] = compare(field, canonical[field], listing.get(field), region)
rows.append(row)
return rows
O argumento region indica ao analisador de telefones qual país assumir para números escritos sem código de país, de modo que o mesmo código funciona para uma empresa alemã ou brasileira com region="DE" ou region="BR". As abreviações de endereço são em inglês; estenda ADDRESS_WORDS para outros mercados.
Executando uma auditoria
Aqui está uma auditoria de uma empresa contra quatro listagens de diretórios (um exemplo ilustrativo, não listagens reais):
from nap import audit
canonical = {
"name": "Corner Bakery",
"address": "123 North Main Street, Suite 4, Chicago, IL 60607",
"phone": "(312) 555-0142",
}
listings = {
"Directory A": {"name": "Corner Bakery", "address": "123 N Main St #4, Chicago IL 60607",
"phone": "312-555-0142"},
"Directory B": {"name": "The Corner Bakery LLC", "address": "123 North Main Street, Suite 4, Chicago, IL 60607",
"phone": "(312) 555-0142"},
"Directory C": {"name": "Corner Bakery", "address": "88 West Lake Street, Chicago, IL 60601",
"phone": "(312) 555-0199"},
"Directory D": {"name": "Corner Bakery & Cafe", "address": "123 N Main St, Chicago, IL 60607"},
}
print(f"{'source':<12} {'name':<9} {'address':<9} phone")
for row in audit(canonical, listings):
print(f"{row['source']:<12} {row['name']:<9} {row['address']:<9} {row['phone']}")
source name address phone
Directory A match format format
Directory B format match match
Directory C match mismatch mismatch
Directory D mismatch close missing
Lendo linha por linha:
- Directory A formata o endereço e o telefone de forma diferente, mas todos os valores estão corretos. Nada a corrigir.
- Directory B adiciona “The” e “LLC” ao nome. Também está tudo certo, embora valha a pena ajustar.
- Directory C tem o nome correto com um endereço antigo e um número de telefone antigo. Essa é a listagem que manda clientes para o lugar errado, e a primeira a corrigir.
- Directory D tem um nome diferente (“Corner Bakery & Cafe”), está sem o número da sala e não tem telefone algum.
Passo 4: corrija na ordem certa
- Mismatches nas plataformas principais primeiro. Essas listagens alcançam mais pessoas, e muitos sites menores copiam delas.
- Mismatches em todo o resto, começando pelos diretórios mais relevantes para o setor da empresa e os que aparecem bem na busca pelo nome da empresa.
- Campos ausentes, especialmente o telefone.
- Correspondências próximas (close), como um número de sala faltando.
- Diferenças de formatação por último, se é que serão corrigidas.
Algumas listagens podem ser editadas diretamente pela própria conta da empresa. Outras exigem um processo de reivindicação ou uma solicitação de suporte, e agregadores de dados frequentemente precisam de correções enviadas por meio de seus próprios portais, após o que a mudança se propaga para os sites que eles abastecem. Espere que correções em alguns diretórios levem semanas para aparecer.
Passo 5: reaudite periodicamente
As listagens voltam a ficar desatualizadas. Agregadores podem sobrescrever correções, usuários podem sugerir edições em algumas plataformas, e dados antigos ressurgem de fontes que ninguém mais lembrava. Execute a auditoria novamente mensalmente para as plataformas principais e trimestralmente para a cauda longa, e sempre após uma mudança de endereço, troca de telefone ou rebranding.
Mantenha os resultados de cada auditoria com sua data. A tendência importa mais do que qualquer execução isolada: uma listagem que volta ao endereço antigo depois de cada correção aponta para uma fonte a montante que ainda guarda o dado errado.
Para empresas em que o ranqueamento em mapas importa, combine a auditoria com a medição de ranqueamento em toda a área que a empresa atende. Nosso guia sobre rastreamento de ranqueamento em grade geográfica mostra como medir isso, e como saber se a visibilidade melhora depois que as listagens são corrigidas.
Causas comuns de NAP inconsistente
- Mudanças de endereço e trocas de telefone que foram atualizadas no perfil principal, mas em nenhum outro lugar.
- Números de rastreamento de chamadas adicionados para uma campanha publicitária e nunca removidos.
- Rebrandings em que o nome antigo sobrevive em diretórios de cauda longa.
- Números de sala e unidade descartados por diretórios que não têm campo para eles.
- Listagens duplicadas, frequentemente criadas automaticamente, cada uma com seus próprios dados ligeiramente diferentes.
- Empresas com múltiplas unidades em que os dados de uma unidade foram copiados para a listagem de outra.
Perguntas frequentes
O que é consistência de NAP?
NAP significa nome, endereço e telefone (name, address, phone number). Consistência de NAP significa que o NAP de uma empresa é o mesmo, e correto, em todos os lugares em que está listado online: aplicativos de mapas, diretórios, sites de avaliação e seu próprio site.
Diferenças de formatação como “St” e “Street” importam?
Muito menos do que dados errados. Uma auditoria deve normalizar a formatação antes de comparar, para que as listagens com um endereço ou telefone antigo se destaquem em vez de se perderem em meio a diferenças inofensivas.
Com que frequência devo auditar listagens de empresas?
Mensalmente para as plataformas principais e trimestralmente para outros diretórios é um ritmo razoável, além de uma auditoria extra após qualquer mudança de endereço, troca de telefone ou rebranding.
Devo usar números de telefone de rastreamento em listagens de diretórios?
Use-os com cuidado. Um número de rastreamento removido após uma campanha deixa uma listagem com um número morto. Se você usar um, certifique-se de que o número principal também esteja listado onde a plataforma permitir, e registre qual listagem carrega qual número.
Conclusão
Uma auditoria de NAP é um trabalho de qualidade de dados: um registro canônico, cada listagem coletada com sua fonte e data, valores normalizados antes de serem comparados, e resultados classificados para que os problemas reais se destaquem. Corrija os mismatches nas maiores plataformas primeiro, depois siga descendo, e reaudite periodicamente porque as listagens ficam desatualizadas. O código acima cuida da comparação; a disciplina está em manter o registro canônico correto e agir sobre o que a auditoria encontra.