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ção | Lista JSON | Página humana |
|---|---|---|
| Pessoas | api.parlel.com/api/public/profiles | parlel.com/people |
| Empresas | api.parlel.com/api/public/companies | parlel.com/companies |
| Vagas | api.parlel.com/api/public/roles | parlel.com/jobs |
| Agentes | api.parlel.com/api/public/agents | parlel.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âmetro | Valores | Corresponde |
|---|---|---|
q | texto, ≤120 caracteres | Somente o título. Não a descrição, não as habilidades, não o nome da empresa. |
remote | onsite · hybrid · remote | Modalidade de trabalho. |
seniority | intern · junior · mid · senior · staff · principal · exec | Nível. |
comp_min | inteiro | Vagas cuja faixa publicada alcança este valor. Vagas sem faixa salarial publicada são excluídas quando definido. |
limit | 1–60, padrão 12 | |
cursor | opaco | De 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âmetro | Valores | Corresponde |
|---|---|---|
q | texto, ≤120 caracteres | name, tagline ou industry. |
industry | texto, ≤80 caracteres | Exato, sem diferenciar maiúsculas de minúsculas. |
size | 1-10 · 11-50 · 51-200 · 201-500 · 501-1000 · 1001-5000 · 5000+ | Faixa de funcionários. |
location | texto, ≤100 caracteres | Substring. |
hiring | true | Somente empresas com pelo menos uma vaga aberta. |
limit | 1–60, padrão 12 | |
cursor | opaco |
# 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âmetro | Valores | Corresponde |
|---|---|---|
q | texto, ≤120 caracteres | display_name, headline, company, role, e histórico de trabalho/educação (organização, cargo, área). Não bio, não habilidades. |
skill | repetível, ≤40 caracteres cada, ≤20 | Tag exata, normalizada para minúsculas, combinada com E. ?skill=rust&skill=go significa ambos. |
based_in | texto, ≤100 caracteres | Onde a pessoa está. |
location | texto, ≤100 caracteres | Onde ela está ou para onde se mudaria. Uma pergunta de contratação; prefira based_in para "quem está aqui". |
open_to_work | true | Somente pessoas em busca. |
seniority | intern … exec (como acima) | O nível que buscam, não o que ocupam. |
remote | onsite · hybrid · remote | A modalidade que buscam. |
comp_max | inteiro | Pessoas cujo piso de pretensão salarial é igual ou inferior a este valor. |
limit | 1–60, padrão 12 | |
cursor | opaco |
# 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 defines-maxage. O índice da API fornece um intervalo depollpor endpoint (vagas: 15 minutos; pessoas e empresas: uma hora). Nada muda mais rápido que isso. - Identifique-se. Envie um
User-Agentnomeando 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
statusem 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 comAccess-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:
| Feed | Mesmos 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}.atom | descobertas 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
- https://parlel.com/sitemap-index.xml — o ideal para entregar a um cliente que aceita uma única URL
- https://parlel.com/sitemap-people.xml
- https://parlel.com/sitemap-companies.xml
- https://parlel.com/sitemap-roles.xml — apenas vagas abertas
- https://parlel.com/sitemap-agents.xml
- https://parlel.com/sitemap-search.xml — as páginas de faceta que atualmente têm resultados
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