A API do Registro.br que não existe: endpoints, status e limites
Atualizado em
Não existe API HTTP documentada para o processo de liberação. O que existe são cinco coisas: o endpoint que a caixa de busca do site usa, o serviço ISAVAIL por trás dele, o RDAP, três arquivos de texto e o painel autenticado. Esta página é o que aprendemos sondando cada um, com a data de cada medição, e no fim os arquivos que o Liberados publica. Se você vai escrever código em cima disso, leia inteira antes: três das armadilhas abaixo produzem resultado errado com HTTP 200.
O endpoint de disponibilidade
É o mesmo que a caixa de busca de registro.br chama. Devolve
JSON, não é documentado nem versionado, e pode mudar sem aviso. Os testes
deste projeto guardam respostas reais justamente para que uma mudança de
formato quebre um teste em vez de passar despercebida.
GET https://registro.br/v2/ajax/avail/raw/<dominio>
Respostas reais, uma por situação (nomes e tickets ilustrativos):
Livre para registro imediato:
{"status": 0, "fqdn": "exemplolivre.com.br", "exempt": false}
Registrado e no ar:
{"status": 2, "fqdn": "google.com.br", "publication-status": "published",
"expires-at": "2027-05-18T00:00:00-03:00",
"hosts": ["ns1.google.com", "ns2.google.com"]}
Em liberação, sem candidato visível (o alvo do garimpo):
{"status": 6, "fqdn": "anabolizantes.com.br",
"begins-at": "2026-09-09T15:00:00-03:00",
"ends-at": "2026-09-16T15:00:00-03:00"}
Em liberação, já com candidatos:
{"status": 7, "fqdn": "medidas.com.br",
"tickets": [30001101, 30001102],
"begins-at": "2026-09-09T15:00:00-03:00",
"ends-at": "2026-09-16T15:00:00-03:00"}
Em processo competitivo (leilão):
{"status": 9, "fqdn": "combustiveis.com.br",
"tickets": [30002201, 30002202],
"ends-at": "2026-09-16T15:00:00-03:00",
"accepting-new-tickets-until": "2026-09-16T15:00:00-03:00"}
No leilão, ends-at e accepting-new-tickets-until
são o fim da rodada, não o das ofertas, que o Registro.br
não publica (conferido em 16/09/2026, com a rodada já fechada e o leilão
aberto).
Nome travado, esperando a rodada seguinte (resposta real de 17/09/2026):
{"status": 5, "fqdn": "one.com.br", "fqdnace": "", "exempt": false}
Bloqueado por excesso de consultas. Repare: HTTP 200.
{"status": 8, "fqdn": "", "fqdnace": "", "exempt": false,
"reasons": ["Taxa máxima de consultas excedida"]}
O CORS deste endpoint é fechado (access-control-allow-origin:
https://registro.br). Um site em outra origem não consegue
chamá-lo do navegador, e no-cors, iframe, popup e JSONP
também não passam. Medido em 10/09/2026.
O campo status é uma enumeração, não um bitmask
Até 11/09/2026 esta página dizia "bitmask, confirmado por sondagem":
0x1 tickets, 0x2 existe, 0x4
liberação, 0x8 competitivo. Os valores observados (0, 2, 3, 6,
7, 8, 9) batiam com essa leitura, e foi coincidência. Em 12/09/2026
encontramos a tabela oficial em Protocolo-ISAVAIL.txt, no FTP
do Registro.br (ver ISAVAIL):
status | Oficial | Leitura |
|---|---|---|
0 | disponível | livre para registro imediato |
1 | disponível, com tickets concorrentes | fora da rodada, mas alguém tem pedido pendente. Nunca visto |
2 | registrado | registrado e publicado |
3 | indisponível, com motivo | equivalente já registrado, reserva, transição EDU.BR... ver abaixo |
4 | consulta inválida | erro de quem perguntou |
5 | aguardando processo de liberação | nome travado esperando a rodada seguinte. Hipótese até 16/09/2026; naquele dia, 15 minutos depois do fechamento, os nomes travados passaram a responder 5 |
6 | em liberação | em liberação, sem candidato visível (zero ou um) |
7 | em liberação, com tickets | em liberação, com candidatos |
8 | erro | com fqdn vazio: bloqueio por excesso de consultas |
9 | processo competitivo | leilão em andamento |
Por que a diferença importa: lido como bits, o 5 é
4|1, "em liberação com tickets", e como não vem array
tickets, cairia em "em liberação, sem candidato". Um nome que
nem está na rodada apareceria como joia. É o mesmo tipo de
erro que produziu 28 joias falsas em 10/09/2026, esperando para acontecer.
Desde 12/09/2026 o código mapeia os dez valores um a um.
Três armadilhas: status 8, status 3 e o RDAP vazio
Status 8: o bloqueio que parece leilão
O bloqueio por excesso de consultas volta com HTTP 200,
não 429, e com status: 8 no corpo. Na tabela oficial, 8 é
simplesmente "erro"; mas quem lê o status como bitmask vê em
0x8 o bit de processo competitivo, e um mapeamento ingênuo
transforma toda resposta bloqueada num falso "domínio em leilão". Foi o que aconteceu
aqui em 09/09/2026: 370 nomes rotulados como leilão que eram respostas de
bloqueio. O sintoma é "leilão" com zero tickets e sem ends-at;
leilão de verdade sempre traz os dois.
Como distinguir, nesta ordem:
- se vier o campo
reasons, é erro ou indisponibilidade: não classifique pelo número; - resposta válida sempre traz
fqdnpreenchido; - só então aplique a tabela.
Status 3: hífen e acento não criam nome novo
Sondado em 10/09/2026. O status: 3 não traz tickets: vem com
reasons e significa que o nome colide com um equivalente já
registrado por outro titular.
café.com.br → status 3, fqdnace xn--caf-dma.com.br,
reasons ["Domínio já registrado sob sintaxe similar"]
cafe.com.br → status 2, registrado
casa-verde.com.br → status 3, "Domínio já registrado sob sintaxe similar"
casaverde.com.br → status 2, registrado
A regra é oficial: para comparar nomes, o Registro.br converte acentos e
cedilha para as versões sem acento e descarta os hífens.
aventura-esportes e aventuraesportes são o mesmo
nome, e só coexistem se forem do mesmo dono. Duas consequências:
- Hífen e acento não são inventário. Em
.com,casa-verde.comecasaverde.comsão dois ativos. Em.brsão um só. A varredura confirma: nos 125.453 nomes da rodada de setembro de 2026 há zero rótulos com hífen. - O
3também aparece com outros motivos (açaí.com.brresponde "Domínio reservado para a transição EDU.BR"). Trate-o como "bloqueado, leiareasons", não como um motivo único.
RDAP 200 vazio: o nome travado que parece registrado
Desde 16/09/2026, 15 minutos depois do fechamento da rodada, um nome
travado responde no RDAP com HTTP 200 e um objeto
domain vazio (sem status, eventos nem
publicIds), e no endpoint de disponibilidade com
status: 5. Quem lê "200 no RDAP = registrado" rotula como
registrado um nome que volta na rodada seguinte. O que separa é o
cabeçalho Nicbr-Resource: release-process-waiting
(ver RDAP).
O array tickets: público, com dois cortes
É a informação mais valiosa do endpoint: diz quantas candidaturas já existem antes de você gastar a sua, sem autenticação. Com dois cortes que mudam a leitura:
- Candidato único é invisível. O array só aparece com dois ou mais candidatos. Isso é documentado pelo próprio Registro.br, e os dados batem: em 1.657 nomes verificados em 09/09/2026, nenhum tinha exatamente 1; dezenas tinham exatamente 2. Portanto "0" quer dizer "zero ou um", e candidatar-se num nome com candidato oculto trava o nome para os dois. O RDAP esconde do mesmo jeito.
- A lista para em 10. Medido em 11/09/2026:
one.com.brmostrava 10 tickets aqui e 67 no RDAP;vacina.com.br, 10 contra 42. Contagem acima de 10 só pelo RDAP. É a especificação: o ISAVAIL defineticket1|...|ticket10.
ISAVAIL: o serviço oficial por trás do endpoint
Encontrado em 12/09/2026 em ftp.registro.br/pub/isavail/
(versão 0.10, de janeiro de 2025). É um protocolo de texto sobre
UDP, porta 43, em avail.registro.br, com
especificação (Protocolo-ISAVAIL.txt) e clientes-exemplo em
Python, Perl, PHP, Java, C++ e Ruby. O README oficial lista três formas de
uso: "o proxy no site do Registro.br" (o endpoint acima), os
clientes-exemplo, ou "implementação própria". A "API que não existe"
existe; só não é HTTP.
pergunta 2 <cookie> 1 <qid> vacina.com.br 0
resposta % Copyright Nic.br
ST 9 727976103
vacina.com.br
2026-09-26 15:00:00|2026-09-26 15:00:00|2026-09-26 15:00:00
90000001|90000002|...|90000010
- Sem cookie válido a resposta é
CK <cookie> <qid>: guarda-se o cookie e repete-se a pergunta. - O último campo (
0, "não sugerir outras extensões") é obrigatório da versão 1 em diante. Sem ele,ST 4 consulta inválidapara qualquer nome. - Confere com o endpoint web, nos mesmos nomes no mesmo minuto: status, fqdn com o ACE de nomes acentuados, os tickets (também cortados em 10) e o motivo do 3.
- Não confere: as datas. Para a rodada de 09/09 a
16/09, o ISAVAIL devolveu
2026-09-26 15:00:00nos três campos de vacina.com.br e nos dois de one.com.br, enquanto o endpoint web devolvia 09/09 e 16/09. - Limite não publicado. O bloqueio vem como
ST 8com "Query rate limit exceeded". Não medimos, de propósito: medir é bater. Este canal é contingência para o dia em que o endpoint web mudar, risco que o próprio Registro.br apontou (issue #98 do módulo oficial para WHMCS, julho de 2025).
RDAP: o único caminho a partir do navegador
GET https://rdap.registro.br/domain/<nome>
- CORS aberto (
*), então uma página em qualquer origem consulta direto. É o que o botão conferir deste site usa. Medido em 10/09/2026, em 45 nomes batendo com o endpoint de disponibilidade. - O cabeçalho
Nicbr-Resourceé exposto pelo CORS e separa as fases:release-process-running(liberação) ecompetitive-release-process-running;date=...(leilão). Depois que a rodada fecha aparecem mais dois:competitive-release-process-closed;date=...(leilão com ofertas até o dia seguinte) erelease-process-waiting(nome travado, com HTTP 200 e um objeto vazio, sem tickets). Conferido em 16/09/2026. Repare na terceira armadilha: nome travado responde HTTP 200, e quem lê "200 = registrado" erra aqui. Nome fora desses comobjectClassName: domainé registrado. HTTP 404 é nome que não existe no cadastro: livre, se o rótulo for válido. Rótulo com menos de 2 ou mais de 26 caracteres, ou só de números, também dá 404, e não é livre: o endpoint de disponibilidade respondestatus 3, "Domínio inválido" (a.com.br, conferido em 15/09/2026). Nome acentuado cuja versão sem acento existe responde 303 para ela. - Os tickets vêm em
publicIds, comtype: ticket. Todos, sem o corte em 10. Candidato único continua escondido. - Nome registrado traz os eventos
registration,last changedeexpiration, e ostatus:activeno ar,inactivevencido e fora do ar (congelado),nicbr inactive court orderounicbr inactive CGfora do ar por decisão. Nome na rodada vem compending create, sem eventos, e a data do cabeçalhoNicbr-Resourceé o fim da rodada, também no leilão — e não o fim do leilão, que o Registro.br não publica: as ofertas seguem pelo menos 24 h além disso, e podem ir muito mais (em 17/09/2026, com a rodada de setembro fechada, ainda havia leilão aberto da rodada de julho). Conferido em 14/09/2026 emgaloegolo.com.br,google.com.br,one.com.brevacina.com.br. É a leitura da ficha Quando volta, que também abre direto em/quando-volta/?d=nome.com.br. - Acabado o leilão, o RDAP diz quem levou em cerca de um
minuto. Em 17/09/2026, dos 9 leilões conferidos, os 6 que
tiveram oferta estavam
active, com titular eregistrationum minuto depois do fim previsto. Os 3 sem oferta voltaram arelease-process-waiting: ticket sem oferta não vira domínio. O valor da oferta vencedora não aparece em lugar nenhum do RDAP. - A resposta traz um link por ticket
(
domain/<nome>?ticket=<n>, umrel: archivespor concorrente, todos, sem o corte em 10). Cada um devolve o que a busca do Registro.br mostra ao clicar num ticket, conferido em 12/09/2026: um objetodomaincom handle<nome>#<ticket>, um eventoregistrationcom o instante exato em que o ticket foi emitido, e a entidade do candidato com nome, documento mascarado, endereço e, no contato técnico, e-mail. O botão quem disputa lê isso no seu navegador e mostra nome, documento, hora e, para empresas, quantos domínios têm; endereço e e-mail não. O caminho/ticket/<n>da biblioteca oficial responde 403. - Limite não publicado, mas sinalizado. Fontes de
terceiros falam em 20 a 30 consultas por 5 minutos por IP; 45 em 4
minutos passaram sem bloqueio. O CORS expõe o cabeçalho
Nicbr-Rate-Limit-Exceeded(visto em 12/09/2026 emaccess-control-expose-headers): é o sinal oficial do bloqueio, e o site para ao vê-lo. Conferência: no máximo 20 nomes por abertura, um a cada 2,5 s; quem disputa: dez tickets por vez. - O corpo traz um aviso de uso que proíbe distribuição e uso comercial do dado. Por isso o resultado de uma conferência fica só no aparelho de quem conferiu: nada volta ao servidor.
A extensão NIC.br do RDAP: DNS conferido e tamanho do titular
O RDAP do .br implementa os RFCs 7480 a 7484 e uma extensão
própria, documentada em ftp.registro.br/pub/doc/br-rdap-extensions-02.txt
e tipada em github.com/registrobr/rdap. Conferida em
12/09/2026 contra respostas reais. O que ela acrescenta:
- Por servidor de DNS, a conferência do próprio registro.
Cada item de
nameserverstraz um eventodelegation checkcom status (ns aaquando responde com autoridade;ns timeout,ns udn,ns uh,ns fail... quando não) e umlast correct delegation checkcom a data da última resposta certa. Para um nome que não resolve, essa data é o "desde quando", sem precisar do Internet Archive. - Status só do NIC.br:
nicbr inactive court orderenicbr inactive CGmarcam nome tirado do ar por ordem judicial ou pelo CGI.br. nicbr_arbitration: o titular aceitou a política de arbitragem (o SACI-Adm). Verdadeiro nos domínios recentes que conferimos, ausente emgoogle.com.br, provavelmente por ser anterior à política (não conferido).- Na entidade (
/entity/<cnpj>):nicbr_domainCount, quantos domínios o titular tem. A titular depneus.com.brtem 166. Um dono com 1 domínio é uma empresa com seu nome; com 166 é uma carteira. A mesma resposta traz o nome de uma pessoa (legalRepresentative); esta ferramenta não o lê, não o guarda e não o exibe.
As três listas da rodada
São três arquivos, e a diferença entre o segundo e o terceiro é sutil o bastante para ter custado um erro de leitura neste projeto:
| Arquivo | O que é |
|---|---|
lista-processo-liberacao.txt |
todos os nomes da rodada, cerca de 125 mil |
lista-processo-competitivo.txt |
os elegíveis ao leilão, por já terem acumulado rodadas travadas. A maioria está na rodada normal, muitos sem candidato visível. Não é quem está em leilão |
lista-competicao.txt |
os que estão com leilão acontecendo agora |
- Todas vêm em ISO-8859-1, não UTF-8.
- A terceira é regerada a cada 5 minutos durante a rodada (cabeçalho "Arquivo gerado em", medido em 10/09/2026), enquanto as outras duas ficam paradas desde a véspera. Ela manda sobre qualquer leitura antiga: uma requisição resolve a situação de todos os elegíveis.
- Em 09/09/2026 a classificação pelo bitmask concordou com ela em 58 de 59 nomes, sem falso positivo. Serve de conferência independente.
- Todo elegível entrou em leilão em cerca de 30 horas de rodada. Depois disso, "elegível fora do leilão" é lista vazia.
lista-competicao.txté agrupada por rodada, e o leilão não acaba junto com ela. Cada grupo abre com uma linha# Processo de liberação no período de .... Em 17/09/2026, uma hora depois do fim da rodada de setembro, o arquivo tinha 28 nomes: 1 da rodada de julho, 25 da de agosto e 2 da de setembro. O parser precisa pular as linhas com#e não pode supor que todo nome é da rodada atual; "ainda está em leilão?" só se responde por este arquivo, nunca pela data da rodada.
O painel autenticado
- As páginas são renderizadas por JavaScript:
curldevolve uma casca vazia. Para ler, Chromium headless com--dump-dome orçamento de tempo virtual, ou os chunks em/assets/. Medido em 09/09/2026. - A CSP e os cabeçalhos fecham os atalhos:
connect-srcsó para a própria origem, o RDAP e o provedor de pagamento;frame-ancestors 'none'; COOPsame-origin. Um bookmarklet não consegue mandar dado para fora. - Não existe cancelar candidatura, nem no painel, nem na documentação. A vaga fica travada até a rodada resolver.
- O painel não avisa quando você é ultrapassado num leilão. A recomendação oficial é acompanhar os 10 minutos finais.
- O preço de um leilão só existe para quem tem ticket nele. O painel recebe, por WebSocket, uma linha por ticket do próprio usuário, com a maior oferta, a próxima oferta válida, o incremento e o fim. O servidor confere a origem no handshake (403 para origem estranha), e o feed inclui o documento do titular, que nunca deve sair da aba. Não há endpoint que liste todos os leilões com preço, nem página pública de resultados. Medido em 11/09/2026.
- Existe um endpoint que envia oferta. A oferta é vinculante, e não pagar gera restrição de 6 meses que o Registro.br correlaciona entre contas. Esta ferramenta nunca o chama, e nenhuma automação deveria.
- Sem histórico público de preços. O que existe são as estatísticas que o NIC.br publicou da primeira rodada, em setembro de 2017: mediana das ofertas vencedoras R$ 750, valor mais frequente R$ 250.
Limite de consultas, medido
O Registro.br limita por IP, e o limite vale para a máquina inteira, não só para o script. Medido em 09/09/2026, já com o detector de bloqueio correto:
| Ritmo | Taxa | Resultado |
|---|---|---|
| 2,0 s, uma conexão | 0,46 req/s | limpo |
| 1,0 s, uma conexão | 0,87 req/s | começam a aparecer falhas |
| 1,0 s, três conexões | 2,7 req/s | bloqueia |
A 2,7 req/s o site passou a responder "Taxa máxima de consultas excedida" para o navegador do próprio usuário, não só para o script. As regras de convivência que saíram disso:
- 2 segundos entre consultas, no mínimo;
- uma conexão só, nada de paralelizar;
- filtrar a lista antes: nunca consultar os 125 mil nomes da rodada;
- em bloqueio, pausar 60 segundos e reconsultar o nome.
.br inteiro: se você for
bloqueado por excesso de requisições, o problema foi seu.
Os arquivos do Liberados, documentados
O Registro.br não publica API; nós publicamos. Os arquivos abaixo são os mesmos que as páginas usam, sem chave e sem cadastro. Eles são derivados das listas oficiais: a fonte é o Registro.br, a nota e as categorias são nossas.
/dados.json— os nomes de melhor nota que já consultamos no Registro.br, com a situação de cada um. É o que a lista da página mostra. Regerado a cada execução da varredura, algumas vezes por dia (a hora está emgerado_em). Cerca de 950 KB, ou 120 KB comprimido (setembro de 2026)./todos.json— a rodada inteira (~125 mil nomes) com nota e categoria, mas sem situação: ninguém consultou esses nomes um a um. Serve para busca e recorte. Muda uma vez por rodada. Cerca de 3,8 MB, ou 880 KB comprimido (setembro de 2026).
Os arquivos não mandam cabeçalho CORS (conferido em
17/09/2026): um script, um servidor ou um agente baixam normalmente, mas o
fetch de uma página em outra origem é barrado pelo navegador.
Os dois são posicionais de propósito: cada domínio é uma
lista, e valor que se repete vira índice num vocabulário no topo do
arquivo. Em objetos nomeados, os 15 mil itens passariam de 3 MB.
Leia sempre o campo versao antes de
interpretar as colunas.
Os vocabulários do topo são listas, e o índice de cada coluna aponta para
a posição nelas. Em status, as oito situações possíveis:
LIBERACAO_LIVRE (na rodada, sem candidato visível),
LIBERACAO_DISPUTADA (dois ou mais),
COMPETITIVO (leilão), LIVRE,
REGISTRADO, AGUARDANDO_LIBERACAO (o
status 5, nome travado),
INDISPONIVEL (o status 3) e LIVRE_COM_TICKET (o
status 1, nunca visto). Sempre pelo nome, nunca pela posição: a ordem da
lista pode mudar entre versões.
dados.json, versão 11
Cada item de itens tem 16 posições, nesta ordem:
| # | Campo | O que é |
|---|---|---|
| 0 | domínio | o nome completo, com extensão |
| 1 | situação | índice em status (ex.: LIBERACAO_LIVRE, COMPETITIVO) |
| 2 | candidatos | quantos aparecem na consulta pública. 0 e 1 são indistinguíveis na fonte: veja o catálogo |
| 3 | nota | 0 a 100, critério nosso (como calculamos) |
| 4 | elegível | 1 se está na lista de elegíveis ao leilão |
| 5 | motivos | lista de índices em motivos |
| 6 | risco de marca | índice em marcas: ok, atenção, risco |
| 7 | em leilão | 1 se está na lista-competicao.txt mais recente |
| 8 | verificado em | epoch UTC da nossa consulta; 0 = desconhecido |
| 9 | classe de frescor | índice em frescor.classes: com que prioridade o nome é reconferido |
| 10 | categorias | bitmask; o bit n é a categoria n de categorias |
| 11 | chegada do 1º | epoch estimado do primeiro concorrente; 0 = desconhecido |
| 12 | chegada do último | idem, do último visível |
| 13 | links | [referentes, muito citados] pelo grafo do CommonCrawl (links/), ou 0 quando o nome não está no índice |
| 14 | sinal | o sinal ruim mais recente do Cloudflare ("Apostas", "Estacionado ou à venda"…), do índice categorias/, ou 0 |
| 15 | .com | o .com do mesmo nome no grafo de links do CommonCrawl: 6, 5, 4, 3 e 2 entre os 100, 1 mil, 10 mil, 100 mil e 1 milhão de domínios mais citados, 1 no grafo, 0 fora dele (o CommonCrawl não viu; não quer dizer que o .com está livre) |
As posições 11 e 12 são estimativa pelo ritmo de emissão
de tickets da rodada, não leitura direta: o número do ticket de cada nome
nunca vai para o site. No topo do arquivo vêm ainda rodada (início e
fim), gerado_em, em_leilao_em (quando lemos a
lista de leilões), total_rodada, total_elegiveis,
nao_verificados (nomes da seleção ainda sem consulta),
criterios, frescor (as classes de reconferência,
com o prazo de cada uma em horas), grafo_com (de que grafo
sai a posição 15 e quantos domínios ele tem, {"grafo", "total"})
e ritmo: a curva do contador
de tickets do .br ao longo da rodada, pares
[epoch, maior ticket visto]. Esse contador numera todo pedido
de registro .br, não só candidaturas (A11),
e não diz nada sobre um nome em particular.
Os dois arquivos trazem no topo o mesmo campo previa: os
nomes que a prévia do leilão prevê na
lista de elegíveis da rodada seguinte, como
{"alvo": "AAAA-MM", "publicado_em": "AAAA-MM-DD", "nomes": [...]}
(alvo é o mês da rodada do leilão), ou null
quando não há prévia para ela. É previsão, não a lista oficial.
todos.json, versão 7
Seis posições (de sete a nove nos nomes com links, sinal ou .com no grafo), e o formato é diferente do outro arquivo:
| # | Campo | O que é |
|---|---|---|
| 0 | rótulo | sem a extensão (padaria, não padaria.com.br) |
| 1 | extensão | índice em extensoes |
| 2 | nota | 0 a 100 |
| 3 | motivos | índices; aqui só o tipo ("composto"), sem o detalhe |
| 4 | risco de marca | índice em marcas |
| 5 | categorias | bitmask, como no outro arquivo |
| 6 | links | [referentes, muito citados]; só existe nos ~5 mil nomes que estão no índice de links (0 quando só há sinal) |
| 7 | sinal | o sinal ruim do Cloudflare, como no outro arquivo; só nos nomes que têm (0 quando só há o .com) |
| 8 | .com | a faixa do .com do mesmo nome, como no outro arquivo; só nos nomes cujo .com está no grafo |
A série histórica e os índices da ficha
Em /dados/historico/ ficam as contagens das rodadas guardadas
desde 2017 (a origem de cada uma está em F5, abaixo) e os índices que a
ficha Quando volta lê. Mudam a cada lista
nova, não a cada varredura.
| Arquivo | O que é |
|---|---|
rodadas.json |
uma linha por rodada guardada (início e tamanho) e os totais por ano |
travas.json, bumerangues.json, modas.json |
as contagens por trás dos gráficos da aba Dados e dos Insights |
disputas.json |
desde setembro de 2026, por rodada: quantos candidatos cada nome
conferido tinha no fim, e em que fase. nomes mapeia o
domínio para [candidatos, índice em fases]. Só
número: quem disputou não é gravado |
passagens/<xx>.txt |
em que rodadas cada nome esteve na lista, só para quem passou duas
vezes ou mais (~1 milhão de nomes). Uma linha por nome,
nome⇥i,j,k: posições na lista rodadas
de passagens/rodadas.json, com e no fim
quando o nome era elegível ao leilão naquela rodada.
com_elegiveis, no mesmo arquivo, diz quais rodadas
têm cópia da lista de elegíveis: sem ela, "não era elegível" é
desconhecido |
arquivo/<xx>.txt |
"este domínio já teve site?", pelo Internet Archive: sendo
preenchido desde 18/09/2026, começando pelos nomes de melhor nota.
Uma linha por nome, 7 colunas separadas por tabulação: nome,
primeira e última captura (AAAAMM), capturas, meses
servindo página, meses redirecionando, dia da consulta
(AAAAMMDD). Nome ausente é "ainda não consultado",
nunca "sem site" |
links/<xx>.txt |
"quem aponta para este domínio?", pelo grafo de domínios do
CommonCrawl (um por trimestre; o atual é de jul-set/2026). Uma
linha por nome da lista presente no grafo, 10 colunas separadas
por tabulação: nome, grafo, total de domínios no grafo, posição
pela centralidade harmônica, posição pelo PageRank, referentes,
referentes .br, referentes muito citados (entre os
1 milhão mais centrais, sem contar plataforma), referentes que são
plataforma onde qualquer um publica (Blogspot, Google, redes) e
até 5 principais separados por vírgula. Nome ausente é "o
CommonCrawl não viu link", nunca "sem links": ele amostra a
web |
referentes/<xx>.txt |
a lista inteira de quem aponta para cada nome:
nome⇥c:globo.com,:blog.net,p:blogspot.com, do mais
central para o menos (c muito citado, p
plataforma) |
trafego/<xx>.txt |
visita de verdade pelo CrUX (o relatório de uso do Chrome), só
Brasil: nome, melhor faixa (1 mil a 1 milhão), meses presentes,
retratos guardados, primeiro e último mês, série
AAAAMM:faixa |
citacoes/<xx>.txt |
nome, sites de notícia que linkaram (GDELT, 2016 a 2019), até 5
deles, páginas da Wikipédia em português e as entidades de que
ele é o site oficial na Wikidata (separadas por
| ) |
categorias/<xx>.txt |
a classificação do Cloudflare com data: nome, dia da consulta,
períodos r:Apostas:202512: separados por
; (r = sinal ruim; fim vazio = até
hoje). Linha sem período é "consultado, sem histórico" |
<xx> é a fatia do nome, de 00 a
ff: FNV-1a de 32 bits sobre os bytes UTF-8 do nome em
minúsculas, módulo 256, em hexadecimal com dois dígitos. Assim o
navegador baixa só a fatia do nome consultado.
def fatia(nome):
h = 0x811C9DC5
for b in nome.strip().lower().encode("utf-8"):
h = ((h ^ b) * 0x01000193) & 0xFFFFFFFF
return f"{h % 256:02x}"
Para agentes de IA há ainda /llms.txt,
/llms-full.txt e, em cada página,
um espelho em Markdown (/<página>/index.md, como
o desta). Os lembretes das rodadas
são arquivos de calendário em /lembretes/rodadas/AAAA-MM-DD.ics.
Se você for consumir isso num script ou agente
- Baixe o JSON, não raspe a página. É o mesmo dado, num arquivo só, e não custa nada a ninguém.
- Para conferir a situação na hora, use o RDAP (acima),
nome a nome, e pare no primeiro
Nicbr-Rate-Limit-Exceeded(ou HTTP 429). O limite é por IP e derruba o navegador de quem estiver usando junto. Para poucos nomes, 2 s entre consultas bastam; numa varredura longa o ritmo sustentável ficou perto de 3 por minuto (12 a 15 s entre consultas, 14 e 15/09/2026), e a janela do limite não zera em 5 minutos. - Nunca colete o diretório em massa nem guarde dado de
titular: a Política de Uso do Registro.br proíbe, e
/entity/bloqueia quase de imediato. - "0 competindo" não quer dizer sem concorrente. A fonte não distingue nenhum de um; um candidato único fica invisível. Não prometa "livre" a partir desse número.
- Acento e hífen não criam nome novo no
.br, e algumas extensões só aceitam CPF ou CNPJ (med.breadv.brsão só CPF,ind.brsó CNPJ, sem comprovação da profissão). Já as extensões de fato restritas, comoorg.bregov.br, exigem documento ou autorização, e nome livre nelas não é registrável por qualquer um.
Catálogo de limitações
Uma linha por limitação, para consulta rápida. O detalhe de cada uma está nas seções acima.
| # | Limitação | Consequência |
|---|---|---|
| A1 | O endpoint de disponibilidade não é API documentada (09/09/2026) | guardar respostas reais em teste para detectar mudança de formato |
| A2 | Candidato único é invisível: tickets só com 2 ou mais (09/09/2026, 1.657 nomes) | "0" significa "zero ou um" |
| A3 | tickets para em 10 (11/09/2026) | contagem acima de 10 só pelo RDAP |
| A4 | Bloqueio volta como HTTP 200 e status: 8, com fqdn vazio e reasons (09/09/2026, 370 falsos leilões) | tratar reasons e fqdn vazio antes do bitmask |
| A5 | status: 3 é colisão por equivalência: acento, cedilha e hífen não criam nome (10/09/2026) | hífen e acento não são inventário |
| A6 | Limite por IP, para a máquina inteira (09/09/2026) | uma conexão, 2 s de pausa, nunca a lista inteira |
| A7 | CORS fechado (10/09/2026) | site em outra origem não consulta; sem atalho por iframe, popup ou JSONP |
| A8 | status é a enumeração do ISAVAIL, não um bitmask (12/09/2026) | o 5, "aguardando liberação", lido como bits vira joia falsa |
| A9 | O 5 é o nome travado: confirmado em 16/09/2026, 15 minutos depois do fechamento. O 1 nunca foi visto | nome travado não é registrado nem livre; volta na rodada seguinte |
| A10 | O endpoint é o "proxy no site" do ISAVAIL, e o Registro.br avisou que pode mudar (12/09/2026) | ISAVAIL e RDAP são as contingências |
| A11 | O número do ticket conta todo pedido de registro .br, não só candidaturas: 24.785 no contador contra 1.187 tickets visíveis em 15.167 nomes (12/09/2026) | o maior ticket é um teto para a rodada; a hora de chegada por nome continua valendo |
| R1 | RDAP com CORS aberto e Nicbr-Resource exposto (10/09/2026) | o único caminho para conferir ao vivo do navegador |
| R2 | RDAP também esconde o candidato único (10/09/2026) | mesma leitura "zero ou um" |
| R3 | Links por ticket no RDAP devolvem dado pessoal do candidato (10/09/2026) | fora de qualquer varredura; o site só consulta no navegador de quem pediu, mostra nome, documento mascarado e hora, e não guarda nada |
| R4 | Limite do RDAP não publicado; 45 em 4 min passaram | no máximo 20 por abertura, uma a cada 2,5 s, parar no primeiro erro |
| R5 | Aviso de uso proíbe distribuição e uso comercial (11/09/2026) | resultado fica no aparelho de quem conferiu |
| R6 | Cada servidor de DNS vem com a conferência do registro e a data da última resposta certa (12/09/2026) | o "desde quando" de um nome em branco, sem Internet Archive |
| R7 | A entidade traz quantos domínios o titular tem, e o nome de uma pessoa (12/09/2026) | a contagem é sinal; o nome nunca é lido |
| R8 | nicbr_arbitration e status de ordem judicial ou do CGI.br (12/09/2026) | nome fora do ar por decisão é exclusão |
| R9 | Consulta por ticket também existe como tipo próprio (12/09/2026) | mesma regra do R3 |
| R10 | O RDAP mostra o ciclo de vida de um nome registrado (active, inactive, pending create), mas o prazo do congelamento não é publicado (14/09/2026) | não publicar prazo em dias sem medir mais casos |
| R11 | 404 também para rótulo inválido (menos de 2 ou mais de 26 caracteres, só números); acento equivalente dá 303 (14 e 15/09/2026) | 404 só é "livre" com rótulo válido |
| R12 | Acabado o leilão, o RDAP mostra quem levou em cerca de um minuto; leilão sem oferta volta a release-process-waiting (17/09/2026, 9 nomes) | dá para acompanhar o resultado sem acesso privilegiado; o valor nunca aparece |
| I1 | ISAVAIL: serviço oficial e documentado, UDP 43 (12/09/2026) | contingência e consulta pontual, não varredura |
| I2 | As datas do ISAVAIL não batem com o endpoint web (12/09/2026) | datas só pelo endpoint web ou pelas listas |
| I3 | Limite do ISAVAIL não publicado; bloqueio é ST 8 (12/09/2026) | 2 s de pausa, parar no primeiro erro |
| I4 | Sem o campo "sugerir" no fim da pergunta, tudo é "consulta inválida" (12/09/2026) | o cliente sempre manda 0 |
| L1 | Listas em ISO-8859-1 (09/09/2026) | converter antes de ler |
| L2 | lista-processo-competitivo.txt são os elegíveis, não os leilões (09/09/2026) | quem está em leilão é lista-competicao.txt |
| L3 | lista-competicao.txt é regerada a cada 5 min (10/09/2026) | ela manda sobre qualquer leitura antiga |
| L4 | Todo elegível entra em leilão em ~30 h (10/09/2026) | depois disso, "elegível fora do leilão" é lista vazia |
| L5 | lista-competicao.txt é agrupada por rodada, e o leilão dura mais que a rodada (17/09/2026: um de julho ainda aberto) | pular as linhas #; "está em leilão?" só por este arquivo |
| S1 | Páginas do site renderizadas por JavaScript (09/09/2026) | ler com navegador headless |
| S2 | CSP e cabeçalhos fecham bookmarklet e iframe (10 e 11/09/2026) | nada sai da aba por fetch |
| S3 | Não existe cancelar candidatura (09/09/2026) | vaga travada até a rodada resolver |
| S4 | O painel não avisa quando você é ultrapassado (09/09/2026) | lembrete do fim é responsabilidade sua |
| S5 | Preço do leilão só para quem tem ticket, por WebSocket, uma linha por ticket (11/09/2026) | não há lista pública de leilões com preço |
| S6 | O WebSocket confere a origem (11/09/2026) | só código na aba do Registro.br lê o feed |
| S7 | O feed traz o documento do titular (11/09/2026) | nunca sai da aba |
| S8 | Existe endpoint de oferta, e a oferta é vinculante (11/09/2026) | nenhuma automação deve chamar |
| S9 | Sem histórico público de preços (11/09/2026) | só as estatísticas do NIC.br de 2017 |
| S10 | O registro reserva nomes por marca conhecida, ordem judicial, CGI.br e baixo calão; a especificação EPP também tem a mensagem de reserva por mais de 6 processos de liberação (12/09/2026), mas essa regra (Res. CGI.br 2008/008) foi revogada pela Res. 2017/031 (17/09/2026) | um status: 3 pode ser qualquer um; ler reasons; "mais de 6 processos" na mensagem é regra revogada, não vigente |
| S11 | O limite de tickets do processo de liberação por organização existe no protocolo (12/09/2026) | é o limite de 3 a 200, visto do outro lado |
| S12 | Nome travado cancela todos os tickets, que não passam para a rodada seguinte (12/09/2026, texto do e-mail de resultado em duas fontes públicas) | candidatar de novo; a vaga volta porque o limite conta tickets pendentes |
| S13 | Três travas e o nome vira elegível ao leilão na quarta rodada: 99,4% de 12.375 elegíveis (13/09/2026; refeito com a série completa em 02/10/2026) | a resolução não dá o número; o NIC.br disse três em entrevista de 2017 (17/09/2026) |
| S14 | Do vencimento à lista passam cerca de 5 meses (13/09/2026, série histórica) | dá para prever quando um domínio não pago volta |
| S15 | Nenhuma fonte pública guarda o passado de uma disputa: quantos se candidataram numa rodada que acabou (15/09/2026) | a contagem só existe se alguém gravar durante a rodada (disputas.json) |
| S16 | Às 15h do último dia mudam as respostas: status 5 e RDAP vazio para nome travado, competitive-release-process-closed para leilão, datas do leilão presas ao fim da rodada (16/09/2026) | tratar os dois cabeçalhos novos; nunca "200 = registrado" |
| C4 | A Política de Uso bloqueia a coleta em massa do diretório; a consulta é "de forma individual" (15/09/2026) | dado de titular, um por vez e a pedido de quem olha |
| T1 | Troca de titular não é online: procedimento administrativo, com assinatura gov.br ou ICP-Brasil (12/09/2026) | não existe API de transferência no .br |
| T2 | O EPP não transfere titularidade: transfer é "comando não implementado" (12/09/2026) | nem um provedor credenciado automatiza a troca |
| F1 | INPI sem API pública; o e-INPI exige sessão | checagem de marca é heurística; a final é manual |
| F2 | Cadastro de CNPJ da Receita é CC BY-ND | tabela derivada não pode ser redistribuída |
| F3 | Limite do Wayback: os "60 por minuto" que circulam não são publicados pelo Internet Archive nem foram medidos aqui (17/09/2026) | regra conservadora, não número documentado |
| F4 | RDAP e DNS mostram o presente | para dizer que um nome "nunca foi usado" é preciso o Wayback |
| F5 | O Registro.br não guarda as listas antigas. O Internet Archive tem 87 de 109 listas de liberação desde set/2017 e 69 de elegíveis; as 22 de liberação que faltavam vieram de listas cedidas por um leitor (02/10/2026) | a série de liberação está completa; a de elegíveis segue com buracos |
| F6 | O Wayback sai do ar em rajadas (HTTP 503) e demora até 33 s (14 e 15/09/2026) | erro nunca vira "sem capturas" |
| F7 | O .com tem RDAP público com CORS aberto na Verisign, e o dono mora no RDAP do registrador (15/09/2026) | dá para mostrar o dono do .com do navegador, com CSP larga |
| F8 | Nenhum endpoint do Internet Archive tem CORS; o __wb/sparkline responde "já teve site?" em ~1 KB e ~1 s (17/09/2026) | a consulta ao Wayback não pode sair do navegador de quem olha |
| F9 | Do GitHub Actions o Internet Archive recusa a conexão (Errno 111, sem 429), e mais devagar é pior; o IP de casa também é barrado numa coleta longa (18/09/2026) | coleta local, recuando e retomando; o resultado vira índice permanente |
Tudo acima foi medido com comandos públicos (curl e navegador headless) nas datas indicadas, e pode mudar sem aviso. Este projeto não tem vínculo com o Registro.br, o NIC.br ou o CGI.br.