Documentation Index Fetch the complete documentation index at: https://docs.sherlocker.com.br/llms.txt
Use this file to discover all available pages before exploring further.
Após vencer uma ação judicial, o próximo desafio é localizar bens do devedor para garantir o pagamento. O Sherlocker permite mapear patrimônio de pessoa física ou jurídica — e expandir a busca para cônjuge, empresas vinculadas e sócios.
O problema
O devedor raramente tem bens em nome próprio. Patrimônio pode estar em nome do cônjuge, de empresas, de parentes ou em estados diferentes. Um levantamento manual exige consultas em dezenas de cartórios, Detrans e portais IPTU.
Estratégia de busca
Patrimônio direto do devedor
Imóveis, veículos, aeronaves, rural e patentes em nome do CPF/CNPJ
Identificar cônjuge e parentes
Buscar parentes — especialmente cônjuge (comunhão de bens)
Patrimônio do cônjuge
Repetir busca patrimonial no CPF do cônjuge
Empresas vinculadas
Sociedades onde o devedor é sócio — podem ter bens penhoráveis
Patrimônio das empresas
Imóveis e veículos em nome dos CNPJs vinculados
Consolidar e avaliar
Montar relatório com todos os bens encontrados e valores estimados
Implementação
Passo 1 — Patrimônio direto
import requests
from concurrent.futures import ThreadPoolExecutor
BASE = "https://221b-api.sherlocker.com.br/api/v1"
TOKEN = "SEU_TOKEN"
def get ( endpoint , ** params ):
params[ "token" ] = TOKEN
return requests.get( f " { BASE }{ endpoint } " , params = params).json()
cpf_devedor = "12345678901"
# 5 consultas em paralelo
with ThreadPoolExecutor( max_workers = 5 ) as pool:
fut_imoveis = pool.submit(get, f "/imoveis/cpf/ { cpf_devedor } " )
fut_veiculos = pool.submit(get, f "/veiculos/cpf/ { cpf_devedor } " )
fut_aeronaves = pool.submit(get, f "/aeronaves/cpf/ { cpf_devedor } " )
fut_rural = pool.submit(get, f "/rural/cpf/ { cpf_devedor } " )
fut_patentes = pool.submit(get, f "/patentes/cpf/ { cpf_devedor } " )
patrimonio = {
"imoveis" : fut_imoveis.result(),
"veiculos" : fut_veiculos.result(),
"aeronaves" : fut_aeronaves.result(),
"rural" : fut_rural.result(),
"patentes" : fut_patentes.result(),
}
Passo 2 — Cônjuge e parentes
perfil = get( f "/pessoas/cpf/ { cpf_devedor } " )
parentes = perfil.get( "parentes" , [])
conjuge = next (
(p for p in parentes if p.get( "vinculo_nome" ) == "Cônjuge" ),
None
)
# Se tem conjuge, buscar patrimonio dele tambem
if conjuge and conjuge.get( "cpf" ):
cpf_conjuge = conjuge[ "cpf" ]
with ThreadPoolExecutor( max_workers = 3 ) as pool:
fut_im = pool.submit(get, f "/imoveis/cpf/ { cpf_conjuge } " )
fut_ve = pool.submit(get, f "/veiculos/cpf/ { cpf_conjuge } " )
fut_ru = pool.submit(get, f "/rural/cpf/ { cpf_conjuge } " )
patrimonio[ "imoveis_conjuge" ] = fut_im.result()
patrimonio[ "veiculos_conjuge" ] = fut_ve.result()
patrimonio[ "rural_conjuge" ] = fut_ru.result()
Passo 3 — Empresas vinculadas
sociedades = get( f "/empresas/cpf/ { cpf_devedor } " )
for socio in sociedades.get( "socios" , []):
cnpj = socio[ "cnpj" ]
# Patrimonio da empresa
with ThreadPoolExecutor( max_workers = 2 ) as pool:
fut_im = pool.submit(get, f "/imoveis/cnpj/ { cnpj } " )
fut_ve = pool.submit(get, f "/veiculos/cnpj/ { cnpj } " )
patrimonio[ f "imoveis_empresa_ { cnpj } " ] = fut_im.result()
patrimonio[ f "veiculos_empresa_ { cnpj } " ] = fut_ve.result()
Passo 4 — Consolidar relatório
def contar_bens ( patrimonio ):
imoveis = patrimonio.get( "imoveis" , {}).get( "imoveis" , [])
veiculos = patrimonio.get( "veiculos" , {}).get( "veiculos" , [])
valor_total = sum ( float (im.get( "valor_venal" , 0 ) or 0 ) for im in imoveis)
return {
"imoveis" : len (imoveis),
"valor_imoveis" : valor_total,
"veiculos" : len (veiculos),
"aeronaves" : len (patrimonio.get( "aeronaves" , {}).get( "aeronaves" , [])),
"rurais" : len (patrimonio.get( "rural" , {}).get( "propriedades_sncr" , [])),
}
relatorio = contar_bens(patrimonio)
# Adicionar bens do conjuge
if conjuge:
relatorio[ "conjuge" ] = {
"cpf" : cpf_conjuge,
"nome" : conjuge.get( "nome" ),
"imoveis" : len (patrimonio.get( "imoveis_conjuge" , {}).get( "imoveis" , [])),
"veiculos" : len (patrimonio.get( "veiculos_conjuge" , {}).get( "veiculos" , [])),
}
# Adicionar bens das empresas
relatorio[ "empresas" ] = []
for socio in sociedades.get( "socios" , []):
cnpj = socio[ "cnpj" ]
relatorio[ "empresas" ].append({
"cnpj" : cnpj,
"razao_social" : socio.get( "razao_social" ),
"imoveis" : len (patrimonio.get( f "imoveis_empresa_ { cnpj } " , {}).get( "imoveis" , [])),
"veiculos" : len (patrimonio.get( f "veiculos_empresa_ { cnpj } " , {}).get( "veiculos" , [])),
})
Dica: triagem rápida antes do levantamento completo
Antes de iniciar todas as consultas, verifique imóveis e veículos para saber se vale prosseguir:
with ThreadPoolExecutor( max_workers = 2 ) as pool:
fut_im = pool.submit(get, f "/imoveis/cpf/ { cpf_devedor } " )
fut_ve = pool.submit(get, f "/veiculos/cpf/ { cpf_devedor } " )
imoveis_rapido = fut_im.result().get( "imoveis" , [])
veiculos_rapido = fut_ve.result().get( "veiculos" , [])
total_bens = len (imoveis_rapido) + len (veiculos_rapido)
if total_bens == 0 :
print ( "Nenhum bem detectado — considere priorizar outros devedores" )
else :
print ( f " { total_bens } bens encontrados — prosseguir com levantamento completo" )
APIs utilizadas
Imóveis Propriedades urbanas por CPF/CNPJ
Rural Imóveis rurais e SNCR
Aeronaves Aeronaves e drones
Pessoas Parentes e cônjuge
Empresas Sociedades vinculadas
Propriedade Intelectual Propriedade intelectual