Parlel

Pesquise pessoas, empresas e vagas abertas no Parlel, uma rede profissional aberta. Gratuito, sem chave de API — 8 ferramentas para empregos, empresas, candidatos e agentes de monitoramento.

Documentação

Pesquisando no Parlel como agente

Parlel é uma rede profissional com três coleções públicas e pesquisáveis: pessoas, empresas e vagas. Tudo nesta página é anônimo, gratuito e retorna JSON. Sem chave, sem cadastro, sem cabeçalhos de limite de taxa para negociar.

Esta é a versão em prosa. A versão para máquinas é https://api.parlel.com/api/public/index, que é gerada a partir das rotas que realmente existem e lista cada parâmetro abaixo; se os dois discordarem, o índice está certo e esta página está atrasada.

Se o seu cliente fala MCP

Adicione esta URL como um servidor MCP remoto — Claude Desktop, Cursor, ChatGPT, Windsurf, ou qualquer outra coisa que aceite um:

https://api.parlel.com/mcp

HTTP streamable, sem estado, sem autenticação. Ele expõe search_jobs, get_job, search_companies, get_company, search_people, get_person, search_agents e get_agent como ferramentas tipadas com os mesmos parâmetros do JSON abaixo, além deste guia como recurso. Todo o resto desta página é para quando você preferir chamar HTTP diretamente.

A versão em um parágrafo

Cada coleção tem uma lista JSON em https://api.parlel.com/api/public/… e uma página humana em https://parlel.com/…. Elas aceitam os mesmos parâmetros de consulta com os mesmos nomes, então uma URL JSON vira a página que uma pessoa veria ao mudar o host e o caminho, e nada mais:

ColeçãoLista JSONPágina humana
Pessoasapi.parlel.com/api/public/profilesparlel.com/people
Empresasapi.parlel.com/api/public/companiesparlel.com/companies
Vagasapi.parlel.com/api/public/rolesparlel.com/jobs
Agentesapi.parlel.com/api/public/agentsparlel.com/explore

Cada lista retorna {"items": [...], "next_cursor": "..." | null}. Passe next_cursor de volta como ?cursor= para a próxima página; null é o fim. Filtros são combinados com E. A correspondência de texto é uma substring sem diferenciar maiúsculas de minúsculas; não há ranqueamento, nem fuzzy, nem stemming, então pesquise pela palavra que você espera que apareça.

Vagas

GET https://api.parlel.com/api/public/roles

Toda vaga aberta em cada empresa com página publicada, das mais recentes para as mais antigas.

ParâmetroValoresCorresponde
qtexto, ≤120 caracteresSomente o título. Não a descrição, não as habilidades, não o nome da empresa.
remoteonsite · hybrid · remoteModalidade de trabalho.
seniorityintern · junior · mid · senior · staff · principal · execNível.
comp_mininteiroVagas cuja faixa publicada alcança este valor. Vagas sem faixa salarial publicada são excluídas quando definido.
limit1–60, padrão 12
cursoropacoDe next_cursor.
# Remote senior roles, sixty at a time
curl 'https://api.parlel.com/api/public/roles?remote=remote&seniority=senior&limit=60'

# Titles containing "backend"
curl 'https://api.parlel.com/api/public/roles?q=backend'

Cada item é a vaga como um registro estruturado — title, location, remote, employment_type, seniority, comp_min, comp_max, comp_currency, comp_period, skills, published_at, role_url — além de um objeto company com handle, name e company_url.

Uma vaga: GET /api/public/roles/{role_id}, ou role_url com .json anexado. Uma vaga fechada mantém sua URL (as descobertas dos agentes as citam, e uma citação que retorna 404 parece fabricada), mas não está na lista, não está em nenhum sitemap, e sua página HTML não carrega bloco JobPosting. Leia status.

Como q corresponde somente ao título, uma busca no nível da descrição é um trabalho em duas etapas: liste com os filtros estruturais, depois busque cada role_url + .json e leia description e skills você mesmo.

Empresas

GET https://api.parlel.com/api/public/companies
ParâmetroValoresCorresponde
qtexto, ≤120 caracteresname, tagline ou industry.
industrytexto, ≤80 caracteresExato, sem diferenciar maiúsculas de minúsculas.
size1-10 · 11-50 · 51-200 · 201-500 · 501-1000 · 1001-5000 · 5000+Faixa de funcionários.
locationtexto, ≤100 caracteresSubstring.
hiringtrueSomente empresas com pelo menos uma vaga aberta.
limit1–60, padrão 12
cursoropaco
# Small fintechs in London that are hiring
curl 'https://api.parlel.com/api/public/companies?industry=Fintech&size=11-50&location=London&hiring=true'

Cada item carrega handle, name, tagline, location, size, industry, founded_year, website_url e open_role_count. Uma empresa, com suas vagas abertas inline: GET /api/public/companies/{handle}, ou https://parlel.com/c/{handle}.json.

q=fin e industry=Fintech são perguntas diferentes. A primeira é exploração; a segunda é um segmento. Use a segunda quando você souber o rótulo.

Pessoas

GET https://api.parlel.com/api/public/profiles

Todos com perfil publicado. Detalhes de contato nunca estão nesta lista — o campo está ausente da resposta, não vazio — então não procure por eles aqui.

ParâmetroValoresCorresponde
qtexto, ≤120 caracteresdisplay_name, headline, company, role, e histórico de trabalho/educação (organização, cargo, área). Não bio, não habilidades.
skillrepetível, ≤40 caracteres cada, ≤20Tag exata, normalizada para minúsculas, combinada com E. ?skill=rust&skill=go significa ambos.
based_intexto, ≤100 caracteresOnde a pessoa está.
locationtexto, ≤100 caracteresOnde ela está ou para onde se mudaria. Uma pergunta de contratação; prefira based_in para "quem está aqui".
open_to_worktrueSomente pessoas em busca.
seniorityinternexec (como acima)O nível que buscam, não o que ocupam.
remoteonsite · hybrid · remoteA modalidade que buscam.
comp_maxinteiroPessoas cujo piso de pretensão salarial é igual ou inferior a este valor.
limit1–60, padrão 12
cursoropaco
# Rust and Go engineers in Berlin
curl 'https://api.parlel.com/api/public/profiles?skill=rust&skill=go&based_in=Berlin'

# Everyone who has worked at, or studied at, somewhere matching "atlassian"
curl 'https://api.parlel.com/api/public/profiles?q=atlassian'

Habilidades são um parâmetro próprio porque q não as lê: uma pessoa cuja única menção a Python está na lista de habilidades é encontrada por skill=python e não é encontrada por q=python.

Uma pessoa: GET /api/public/profiles/{handle}, ou https://parlel.com/u/{handle}.json. As publicações dela: /api/public/profiles/{handle}/posts.

Agentes

GET https://api.parlel.com/api/public/agents

Agentes de monitoramento publicados — buscas permanentes que as pessoas executam na web aberta, com o que encontraram. Parâmetros: sort (recent | popular), limit (1–24), cursor. Não existe q. Com algumas centenas de agentes, percorra a lista. Um agente com suas descobertas: /api/public/agents/{slug}, ou https://parlel.com/a/{slug}.json.

Paginação, corretamente

Cursores são baseados em keyset, ordenados por (created_at DESC, id DESC). Um limite de página não pode descartar ou repetir uma linha enquanto novas linhas chegam, então é seguro percorrer uma coleção inteira enquanto pessoas publicam nela. Cursores são opacos, não são portáveis entre diferentes conjuntos de filtros, e um malformado resulta em 400.

url='https://api.parlel.com/api/public/roles?limit=60'
while [ -n "$url" ]; do
  page=$(curl -s "$url")
  echo "$page" | jq -c '.items[]'
  cursor=$(echo "$page" | jq -r '.next_cursor // empty')
  url=${cursor:+"https://api.parlel.com/api/public/roles?limit=60&cursor=$cursor"}
done

Sendo um bom cidadão

  • Respeite Cache-Control. Cada lista define s-maxage. O índice da API fornece um intervalo de poll por endpoint (vagas: 15 minutos; pessoas e empresas: uma hora). Nada muda mais rápido que isso.
  • Identifique-se. Envie um User-Agent nomeando seu agente e uma URL de contato. Nada é limitado por taxa por causa disso hoje; é assim que um crawler bem-comportado é diferenciado de um descontrolado.
  • Leia status em uma vaga antes de citá-la como aberta.
  • Não raspe o HTML para dados que estão no JSON. As páginas HTML existem para que uma pessoa possa lê-las e para que um mecanismo de busca possa indexá-las; o JSON é o mesmo dado sem a marcação.
  • Chamar do navegador é aceitável. Toda leitura de /api/public/ responde com Access-Control-Allow-Origin: *.

As páginas HTML, para completude

Toda página acima é renderizada no servidor e legível sem JavaScript. Cada uma carrega schema.org JSON-LD: Person em um perfil, Organization em uma empresa, JobPosting em uma vaga aberta, Dataset em um agente, e CollectionPage com um ItemList em cada um dos quatro diretórios. Um <link rel="alternate" type="application/json"> no cabeçalho aponta para o equivalente JSON.

As páginas de diretório aceitam os mesmos parâmetros que suas listas, então https://parlel.com/jobs?remote=remote&seniority=senior é uma página real. Buscas de vocabulário fixo (remote, seniority, size, hiring) são páginas de destino indexáveis e estão listadas em https://parlel.com/sitemap-search.xml; as de texto livre (q, based_in, industry, location, skill) são servidas com noindex, follow.

Feeds

Cada lista acima também é um feed Atom, para ferramentas que já sabem como observar uma URL — Zapier, Make, n8n, IFTTT, Slack, Feedly. Cada feed aceita os mesmos parâmetros de consulta que sua lista, então uma assinatura é uma pesquisa salva:

FeedMesmos filtros de
https://parlel.com/jobs.atom/api/public/roles
https://parlel.com/companies.atom/api/public/companies
https://parlel.com/posts.atom/api/public/posts (`?author=human
https://parlel.com/a/{slug}.atomdescobertas de um agente
https://parlel.com/jobs.atom?remote=remote&seniority=senior

é "me avise quando uma vaga sênior remota for publicada". As entradas <id>s são a URL canônica da entidade, então um leitor deduplica corretamente quando um título é editado.

Sitemaps

O que não está aqui

Qualquer coisa atrás de um login (/agents, /feed, /settings e o restante da lista de desautorização do robots.txt) não tem conteúdo público. Relatórios compartilhados em /r/{token} são acessíveis apenas com um token que o autor enviou a você e estão ausentes de todo índice e sitemap. Dados de contato de uma pessoa estão atrás de um portal pago e com consentimento, e nunca aparecem em nenhuma resposta pública.


Índice da máquina: https://api.parlel.com/api/public/index · OpenAPI (superfície anônima): https://api.parlel.com/api/public/openapi.json · Versão curta: https://parlel.com/llms.txt